【问题标题】:Print R-squared for all of the models fit with lmList打印适合 lmList 的所有模型的 R 平方
【发布时间】:2014-06-23 11:44:13
【问题描述】:

我使用lmList 来拟合 480 个关系,我想要每个关系的 R2。

这是一个示例数据集和模型,它非常接近它的真实外观,除了我有 480 eu(实验单位):

eu  mass  day
11  .02    1
11  .03    2
11  .04    3
11  .06    4
12  .01    1
12  .03    2
12  .04    3
12  .05    4

fit<-lmList(mass ~ day | eu, data=df)

打印fitsummary 无法提供我想要的信息。我最终试图制作一个新的数据框,如下所示:

eu    intercept    slope    R2
11     .01          .95     .98
12     .01          .96     .98

我已经通过coef 得到了系数,现在我需要 R 平方。

【问题讨论】:

    标签: r lm nlme


    【解决方案1】:

    给你:

    sapply(fit,function(x) summary(x)$r.squared)
           11        12 
    0.9657143 0.9657143 
    

    或者一次做所有事情:

    sumfun <- function(x) c(coef(x),summary(x)$r.squared)
    t(sapply(fit,sumfun))
    

    (您需要转置来自sapply 的结果以获取上面指定的表格)。然后使用names() &lt;-setNames() 以您想要的方式获取列名。

    【讨论】:

    • 谢谢!我什至无法判断 R2 是否在某个地方。
    • 在 SO:stackoverflow.com/questions/5587676/… 上找到该信息并不难(您可能应该阅读那里的所有答案,有很多有用的信息)
    • 那里有很多有用的信息!特定于lmList 的搜索结果并不多。
    【解决方案2】:

    使用 Ben Bolker 的代码,您可以创建一个函数,一次转置结果并给出表格:

    sumfun <- function(x) 
    {
      aux <- function(x) c(coef(x), summary(x)$r.squared)
      t(sapply(x,aux))
    }
    sumfun(fit)
    

    【讨论】:

      猜你喜欢
      • 2018-01-01
      • 2018-11-06
      • 1970-01-01
      • 2020-02-12
      • 2011-10-08
      • 2021-02-15
      • 2015-06-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多