使用R / Lattice编辑(g)lmer对象的dotplot的变量标签

时间:2015-07-14 15:49:07

标签: r lattice

我使用glmer()包中的lme4函数来估算具有多个随机效果的复杂混合效果模型。在估算模型之后,我使用dotplot()包中的lattice函数创建随机效果的点图,其中包括变化的斜率。我的询问涉及如何在点图中编辑变量标签

我的问题的一个简单可重复的例子如下。

library(lattice)
library(lme4)
data(sleepstudy)
sleepstudy$x <- rnorm(180)
M1 <- lmer(Reaction ~ Days + x + (Days + x | Subject), sleepstudy)

dotplot(ranef(M1, condVar=TRUE), ylab="Levels", main=FALSE,
    scales = list(x =list(relation = 'free')))[["Subject"]]

这会生成以下的dotplot,它近似于我想要的内容。

enter image description here

我想要做的是编辑变量标签。也就是说,我想从&#34;(拦截)&#34;中删除括号,并将两个不同斜率的标签更改为调用glmer()的变量名称以外的其他标签。那可能吗?我确定它是,它可能是一个&#34; strip&#34;选项,虽然我不确定它究竟是什么。

我也对ggplot2解决方案持开放态度。只要达到我想要的水平,就可以了。实际上,如果允许我将条件方差的边界调整为1.645 * se,那么ggplot2解决方案可能会更好。我不认为lattice会给我这个选择。

感谢您的帮助。

1 个答案:

答案 0 :(得分:2)

假设没有本机重命名功能,一种简单的方法是添加一个您指定ranef(M1,condVar=TRUE)的中间变量,我称之为model。然后,您可以使用colnames()重命名标签。

解决方案:

library(lattice)
library(lme4)
data(sleepstudy)
sleepstudy$x <- rnorm(180)
M1 <- lmer(Reaction ~ Days + x + (Days + x | Subject), sleepstudy)

model <- ranef(M1,condVar=TRUE)
colnames(model[[1]]) <- c("Intercept","Days","x") # Add your labelshere

dotplot(model, ylab="Levels", main=FALSE,
        scales = list(x =list(relation = 'free')))[["Subject"]]

或者,您可以将此强制转换为data.frame()data.table(),并在您提到的ggplot2中使用此功能。

enter image description here