qqmath 函数使用 lmer 包的输出制作了很棒的随机效应毛毛虫图。也就是说,qqmath 非常擅长绘制分层模型的截距及其在点估计周围的误差。下面是使用 lme4 包中名为 Dyestuff 的内置数据的 lmer 和 qqmath 函数的示例。该代码将使用 ggmath 函数生成层次模型和漂亮的绘图。
library("lme4")
data(package = "lme4")
# Dyestuff
# a balanced one-way classiï¬cation of Yield
# from samples produced from six Batches
summary(Dyestuff)
# Batch is an example of a random effect
# Fit 1-way random effects linear model
fit1 <- lmer(Yield ~ 1 + (1|Batch), Dyestuff)
summary(fit1)
coef(fit1) #intercept for each level in Batch
# qqplot of the random effects with their variances
qqmath(ranef(fit1, postVar = TRUE), strip = FALSE)$Batch
最后一行代码生成了一个非常漂亮的每个截距图,每个估计值都有误差。但是格式化qqmath函数似乎很困难,我一直在努力格式化绘图。我提出了一些我无法回答的问题,我认为其他人如果使用 lmer/qqmath 组合也可以从中受益:
- 有没有办法使用上面的 qqmath 函数并添加一些选项,例如使某些点为空与填充,或者不同的点使用不同的颜色?例如,您能否将 Batch 变量的 A、B 和 C 点填满,但其余点为空?
- 是否可以为每个点添加轴标签(例如,可能沿着顶部或右侧 y 轴)?
- 我的数据有接近 45 个截距,所以可以在标签之间添加间距,这样它们就不会相互碰撞?主要是,我对区分/标记图表上的点感兴趣,这在 ggmath 函数中似乎很麻烦/不可能。
到目前为止,在 qqmath 函数中添加任何附加选项都会产生错误,如果它是标准图,我不会得到错误,所以我很茫然。
另外,如果您觉得有一个更好的包/功能可以从 lmer 输出中绘制截距,我很想听听!(例如,你能用 dotplot 做第 1-3 点吗?)
编辑:如果可以合理格式化,我也愿意接受替代点图。我只是喜欢 ggmath 情节的外观,所以我从一个关于它的问题开始。