示例数据集 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")
在 ggplot
您可以修复 x/y
的比例与 +coord_fixed(ratio=1)
关于r - 通过回归截距对格子面板进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24492468/