r - 通过回归截距对格子面板进行排序

标签 r ggplot2 lattice

示例数据集 here

让我们根据这些数据构建一个简单的格子图以进行线性回归,每个主题都有单独的面板

 xyplot(Measurement~HOL|Subject,groups=Treatment,data=Data,
 type=c('p','r'),auto.key=T,aspect="xy")

问题是,我想目视检查斜率和截距是否相关。因此,我想按线性回归截距而不是按主题对面板进行排序(这是在 Douglas Bates 的书“lme4:使用 R 进行混合效果建模”图 3.1 中完成的,但我找不到示例代码)。我知道我可以通过添加

手动更改面板的顺序
index.cond=list(c(1,2,3, etc))

但是这是非常低效的,特别是因为我想对多个响应变量执行此操作。

有人有自动化的方法来做到这一点吗?如果 ggplot2 有任何内置函数,我也愿意在 ggplot2 中尝试此操作,但据我了解,没有办法轻松地将宽高比更改为 45 度,例如

aspect="xy"

在莱迪思中是这样的。

提前感谢您的任何想法

最佳答案

如果您想按回归截距排序,最好运行回归。例如,利用您的数据,我们可以做到

cf<-sapply(Data$Subject, function(x) 
    coef(lm(Measurement~HOL, data=subset(Data, Subject==x))))

这将为每个人提供一个斜率/截距,然后我们可以创建一个按截距排序的新主题因子

Sx<-reorder(Data$Subject, cf[1,])

然后使用该变量作为图中的分组变量

xyplot(Measurement~HOL|Sx,groups=Treatment,data=Data,
 type=c('p','r'),auto.key=T,aspect="xy")

enter image description here

ggplot您可以修复 x/y 的比例与 +coord_fixed(ratio=1)

关于r - 通过回归截距对格子面板进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24492468/

相关文章:

r - crosstable() 导出到 csv

R - 以 < 1 秒的间隔使用 cut 对日期时间进行分组

r - 在 ggplot2 中堆积条形图的顶部显示每组的总(和)值

r - 是什么导致了这个 ggplot2 方面的错误?

r - 如何(最低限度地)调整 geom_text() 标签以避免在堆叠的 geom_col() 上重叠

r - 当最后一行的面板数少于列数时 xyplot 底轴

r - 更改格子图中标题面板的大小

R CMD 检查 : no visible binding for global variable (when using a data/dataset in the package)

r - 如何更改使用 R 中的 Lattice 包制作的直方图中 x 轴的比例?

r - 如何从 R 中的栅格中提取值