4

我曾经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 平方。

4

2 回答 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() <-orsetNames()以您想要的方式获取列名。

于 2014-05-06T18:09:33.500 回答
1

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

sumfun <- function(x) 
{
  aux <- function(x) c(coef(x), summary(x)$r.squared)
  t(sapply(x,aux))
}
sumfun(fit)
于 2015-06-12T09:34:56.350 回答