使用晶格(或其他东西)绘制lme4在R中的回归结果

使用晶格(或其他东西)绘制lme4在R中的回归结果,r,linear-regression,lme4,R,Linear Regression,Lme4,我用lme4拟合了一个回归,这多亏了一个。现在我对每个州都有了回归拟合,我想用lattice为每个州绘制QQ图。我还想以晶格格式绘制每个状态的错误图。如何使用lme4回归的结果制作晶格图 下面是一个使用两种状态的简单示例(是的,我喜欢好的头韵)。我想做一个由两个面板组成的格子,它是由对象拟合而成的 library(lme4) d <- data.frame(state=rep(c('NY', 'CA'), c(10, 10)), year=rep(1:10, 2), response=c(

我用lme4拟合了一个回归,这多亏了一个。现在我对每个州都有了回归拟合,我想用lattice为每个州绘制QQ图。我还想以晶格格式绘制每个状态的错误图。如何使用lme4回归的结果制作晶格图

下面是一个使用两种状态的简单示例(是的,我喜欢好的头韵)。我想做一个由两个面板组成的格子,它是由对象拟合而成的

library(lme4)
d <- data.frame(state=rep(c('NY', 'CA'), c(10, 10)), year=rep(1:10, 2), response=c(rnorm(10), rnorm(10)))
fits <- lmList(response ~ year | state, data=d)
库(lme4)

d我不确定你能很容易地把这个放到格子里。
fits
中有一个S4对象,其中包含一个.Data插槽,其中包含一个标准
lm
对象列表:

R> class(fits)
[1] "lmList"
attr(,"package")
[1] "lme4"
R> class(fits@.Data)
[1] "list"
R> class(fits@.Data[[1]])
[1] "lm"
R> op <- par(mfrow=c(2,4))
R> invisible(lapply(fits@.Data, plot))
R>等级(fits)
[1] “lmList”
属性(,“包”)
[1] “lme4”
R> 阶级(fits@.Data)
[1] “列表”
R> 阶级(fits@.Data[[1]])
[1] “lm”
R> op隐形(拉普拉)(fits@.Data(图)
最后一个绘图仅为
lm
对象绘制两次标准2x2绘图,一次用于已安装对象列表的每个元素。使用
which
参数来
plot
选择这些或其他回归诊断的子集


如果您确实想要预测与实际的
lattice
图,您可能需要对此进行编程。

我建议使用更通用的plyr软件包,而不是使用
lmList

library(plyr)

d <- data.frame(
 state = rep(c('NY', 'CA'), c(10, 10)), 
 year = rep(1:10, 2), 
 response = c(rnorm(10), rnorm(10))
)

# Create a list of models
# dlply = data frame -> list
models <- dlply(d, ~ state, function(df) { 
  lm(response ~ year, data = df)
})

# Extract the coefficients in a useful form
# ldply = list -> data frame
ldply(models, coef)

# We can get the predictions in a similar way, but we need
# to cast to a data frame so the numbers come out as rows,
# not columns.
predictions <- ldply(models, as.data.frame(predict))
库(plyr)
d名单
模型数据帧
ldply(型号,coef)
#我们可以用类似的方法得到预测,但我们需要
#要转换到数据帧,使数字显示为行,
#不是列。

预测我在使用lme4::lmList时遇到了一些问题。例如,总结似乎不起作用。所以你可能会因此遇到一些问题


所以,即使我使用lmer而不是lme,我还是显式地调用了nlme::lmList。然后总结等就行了。

你刚刚说服我学习plyr软件包。:)我选择了lme4,因为我能比plyr更容易地了解它在做什么。现在我看到了plyr的优势。谢谢。我把我的预测值重新加入到原始数据集中,真是费了好大劲。在上述示例中,NY在输入data.frame中位于第一位,CA在输出中位于第一位。data.frame[预测]中不保留字段[年]。这可能是显而易见的,但我如何将它们连接起来呢?与其使用
作为.data.frame(predict)
,不如使用函数(model){transform(d,pred=predict(model))}这周我从这个方法中得到了很多很好的使用。谢谢你的帮助!