通过回归截距来排序晶格面板

时间:2014-06-30 14:28:14

标签: r ggplot2 lattice

示例数据集here

让我们根据这些数据建立一个简单的格子图,用于线性回归,每个主题单独的面板

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

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

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

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

有没有人有自动方式来做到这一点?如果它有任何内置函数,我也愿意在ggplot2中尝试这个,但据我所知,没有办法轻易地将方面改为45度,如

aspect="xy"

在莱迪思。

提前感谢您的任何想法

1 个答案:

答案 0 :(得分:2)

如果您想通过回归截距进行排序,则最好运行回归。例如,我们可以使用您的数据

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)的比率