打印适用于lmList的所有型号的R平方

时间:2014-05-06 18:06:43

标签: r lm nlme

我使用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 个答案:

答案 0 :(得分:4)

你走了:

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()以您希望的方式获取列名称。

答案 1 :(得分:1)

使用Ben Bolker的代码,你可以创建一个转换结果的函数,并立即给出表格:

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