我使用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,它近似于我想要的内容。
我想要做的是编辑变量标签。也就是说,我想从&#34;(拦截)&#34;中删除括号,并将两个不同斜率的标签更改为调用glmer()
的变量名称以外的其他标签。那可能吗?我确定它是,它可能是一个&#34; strip&#34;选项,虽然我不确定它究竟是什么。
我也对ggplot2
解决方案持开放态度。只要达到我想要的水平,就可以了。实际上,如果允许我将条件方差的边界调整为1.645 * se,那么ggplot2
解决方案可能会更好。我不认为lattice
会给我这个选择。
感谢您的帮助。
答案 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
中使用此功能。