2013-03-06 15 views
6

Użyłem lm() do dopasowania wielu modeli regresji, dla wielu (~ 1 milion) zmiennych odpowiedzi w R. Na przykład.Uzyskaj pozostałe standardowe błędy obiektu "mlm" zwróconego przez `lm()`

Powoduje zwrócenie obiektu klasy "mlm", który jest jak ogromny obiekt zawierający wszystkie modele. Chcę uzyskać resztkowa suma kwadratów dla każdego modelu, co mogę zrobić, używając:

summaries <- summary(allModels) 
rss1s <- sapply(summaries, function(a) return(a$sigma)) 

Moim problemem jest to, że myślę, że funkcja „Podsumowanie” wylicza całą masę innych rzeczy, także i to stąd całkiem wolno. Zastanawiam się, czy istnieje szybszy sposób wyodrębniania tylko resztowej sumy kwadratów dla modelu?

Dzięki!

Odpowiedz

5

Na obiekcie wyjściowym obiektu lm znajduje się reszta składnika, więc otrzymasz resztkową sumę kwadratów przez sum(output$residuals^2).

edit: to są rzeczywiście biorąc sigma z podsumowań, która jest sqrt(sum(output$residuals^2)/output$df.residuals)

dla wszystkich modeli użyć

sapply(allModels, function(a) sqrt(sum(a$residuals^2)/a$df.residuals)))

0
residuals(summary(allModels))) 

daje macierz reszt

+0

To nie robi Naprawdę nie odpowiadam na pytanie. Używasz funkcji podsumowania tam, o której pytający pytał, jest dość powolna. Pytają, czy istnieje "szybszy sposób wyodrębnienia tylko resztkowej sumy kwadratów dla modelu?" – Ren

+0

Moja wina. Dziękuję Ci – eFinance

Powiązane problemy