【问题标题】:Plotting Regression results from lme4 in R using Lattice (or something else)使用 Lattice(或其他东西)在 R 中绘制 lme4 的回归结果
【发布时间】:2010-11-20 19:51:08
【问题描述】:

感谢previous answer,我已经使用 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)

【问题讨论】:

    标签: r linear-regression lme4


    【解决方案1】:

    我推荐使用更通用的 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))
    

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

    【讨论】:

    • 好吧,你刚刚卖给我学习 plyr 包。 :) 我选择了 lme4,因为我可以比 plyr 更容易理解它所做的事情。现在我看到了 plyr 的优势。谢谢。
    • 我正忙着将我的预测值加入到原始数据集。在上面的示例中,NY 在输入 data.frame 中排在第一位,CA 在输出中排在第一位。字段 [year] 未保留在 data.frame [predictions] 中。这可能很明显,但我该如何加入这些呢?
    • 而不是 as.data.frame(predict),使用类似 function(model) { transform(d, pred = predict(model)) }
    • 这周我从这个方法中得到了很多好处。感谢您的帮助!
    【解决方案2】:

    我不确定您是否可以轻松地将其放入 lattice。您在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 图,为拟合对象列表的每个元素绘制一次。使用 plotwhich 参数选择这些子集或用于其他回归诊断。

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

    【讨论】:

      【解决方案3】:

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-09-12
        • 1970-01-01
        • 1970-01-01
        • 2023-03-14
        • 2012-08-22
        相关资源
        最近更新 更多