使用lmList拟合的所有模型的R平方打印结果

4

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

这里有一个示例数据集和模型,它们与实际情况非常接近,只是我有480个实验单位:

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平方值。

2个回答

5

好的,我会尽力为您翻译。

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() <-setNames()来获取所需的列名。

谢谢!我甚至都分不清R2是否在其中。 - Nazer
在SO上找到这些信息并不太难:https://dev59.com/8m035IYBdhLWcg3wKsqa(你可能应该阅读那里的所有答案,有很多有用的信息) - Ben Bolker
那里有很多有用的信息!搜索特定于lmList并没有找到太多东西。 - Nazer

1
使用Ben Bolker的代码,你可以制作一个函数,同时转置结果并给出表格:
sumfun <- function(x) 
{
  aux <- function(x) c(coef(x), summary(x)$r.squared)
  t(sapply(x,aux))
}
sumfun(fit)

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