如何在R中运行lmer的诊断图?

5

我想在一个lmer模型上运行诊断绘图,但总是遇到困难。我不确定需要提供多少信息,但让我们来看看:

这个模型很简单:

best <- lmer(MSV_mm ~ Size_treat + (1|Rep) + (1|Patch) + (1|Trap), data= early_nopine). 

MSV_mm是数值型数据(口鼻到肛门长度),而Size_treat是一个因子,有4个水平:连续、大、中、小。 RepPatchTrap为随机效应。

当我运行plot(best)时,会出现以下错误消息:

"Error in as.double(y) : 
  cannot coerce type 'S4' to vector of type 'double'"

我猜这与lmer函数有关。我在网上搜索了很多,但仍未找到解决此问题的答案。这是lmer的问题吗?


我认为你假定既然可以在lm对象上运行plot,那么也可以在lmer对象上运行。请注意,虽然有plot.lm函数,但没有plot.lmer函数。 - Señor O
@joran 当我加载lme4时,我没有plot.merMod。此外,在我的机器上,lmer模型进入plot.default - Señor O
1
@joran 我想象那就是楼主的问题 - 我也遇到了同样的错误(这个错误来自xy.coords)。 - Señor O
可能是平台特定的问题。我使用的是OS X,截至lmer 1.0-4版本,我没有plot.merMod - John
1
好的,我需要一个可重现的例子。使用CRAN上的lme4 1.0-4的最新安装版本,以下代码可以正常运行:library(lme4); fm1 <- lmer(Reaction ~ Days + (Days | Subject), sleepstudy); plot(fm1)。虽然plot.merMod没有被导出,但您可以通过lme4:::plot.merMod来查看它。缩写sessionInfo():r-devel r63889,32位linux,lme4_1.0-4;Matrix_1.0-14;lattice_0.20-23;compiler_3.1.0;grid_3.1.0;MASS_7.3-29;minqa_1.2.1;nlme_3.1-111;splines_3.1.0;tools_3.1.0。 - Ben Bolker
显示剩余7条评论
1个回答

8

我可以用等同于CRAN早期版本(1.0.0之前)的lme4重现此错误。如果您使用最新的来自CRAN的lme4(截至2013年10月,版本为1.0-4),则应该会出现以下情况:

library(lme4)
fm1 <- lmer(Reaction ~ Days + (Days | Subject), sleepstudy)
plot(fm1)

描述图像输入在这

虽然 plot.merMod 没有被导出,但它已经被记录下来了 (?plot.merMod),您可以通过 lme4:::plot.merMod (或 getAnywhere("plot.merMod")) 来查看它。

如果您想要使用早期版本的 lme4 重现此绘图,则可以执行以下操作:

augData <- data.frame(sleepstudy,fitted=fitted(fm1),resid=residuals(fm1))
library(lattice)
xyplot(fitted~resid,data=augData)

你需要考虑是否想要偏差残差(默认来自residuals())或皮尔逊残差(plot.merMod的默认值)。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接