3

由于先前的答案,我已经使用 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)
4

3 回答 3

7

而不是使用lmList,我会推荐更通用的 plyr 包。

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))

predictions是一个常规的 R 数据框,因此很容易绘制。

于 2009-08-19T12:14:46.097 回答
2

我不确定您是否可以轻松地将其放入格子中。您拥有的fits是一个 S4 对象,其中包含一个带有标准 lm对象列表的 .Data 插槽:

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))

最后一个图只是为您绘制了lm两次标准的 2x2 对象图,一次用于拟合对象列表的每个元素。使用which参数来plot选择这些的子集或用于其他回归诊断。

如果您实际上想要lattice预测与实际的图,则可能必须对此进行编程。

于 2009-08-19T04:01:42.997 回答
-1

我在使用 lme4::lmList 时遇到了一些问题。例如,摘要似乎不起作用。因此,您可能会因此遇到一些问题。

因此,即使我使用 lmer 而不是 lme,我也一直明确地调用 nlme::lmList。然后摘要等将起作用。

于 2010-02-14T07:06:50.270 回答