Выведите R-квадрат для всех моделей, подходящих для lmList

Я использовал 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)

Печать fit или summary не дает мне нужной информации. В конечном итоге я пытаюсь создать новый фрейм данных, который будет выглядеть так:

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

У меня есть коэффициенты через coef, теперь мне нужен R-квадрат.


person Nazer    schedule 06.05.2014    source источник


Ответы (2)


Ну вот:

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(), чтобы получить нужные имена столбцов.

person Ben Bolker    schedule 06.05.2014
comment
Спасибо! Я просто не мог даже сказать, был ли где-нибудь R2. - person Nazer; 06.05.2014
comment
Найти информацию о SO: stackoverflow.com/questions/5587676/ (вам, вероятно, следует прочитать там все ответы, там много полезной информации) - person Ben Bolker; 06.05.2014
comment
Там много полезной информации! Поиск по lmList не дал особого результата. - person Nazer; 06.05.2014

используя код Бена Болкера, вы можете создать функцию, которая переносит результаты и выдает таблицу сразу:

sumfun <- function(x) 
{
  aux <- function(x) c(coef(x), summary(x)$r.squared)
  t(sapply(x,aux))
}
sumfun(fit)
person Sollano Rabelo Braga    schedule 12.06.2015