2013-03-06 11 views
6

Ho usato lm() per adattarsi a più modelli di regressione, per più variabili di risposta (~ 1 milione) in R. Es.Ottieni gli errori standard residui di un oggetto "mlm" restituito da `lm()`

allModels <- lm(t(responseVariablesMatrix ~ modelMatrix) 

Questo restituisce un oggetto di classe "mlm", che è simile a un oggetto enorme contenente tutti i modelli. Voglio ottenere la somma residua dei quadrati per ogni modello, che posso fare utilizzando:

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

Il mio problema è che penso che la funzione "Riepilogo" calcola un sacco di altre cose, troppo, ed è quindi piuttosto lento. Mi chiedo se c'è un modo più veloce di estrarre solo la somma residua dei quadrati per il modello?

Grazie!

risposta

5

c'è un componente residuo in uscita dell'oggetto lm, quindi si ottiene la somma residua dei quadrati di sum(output$residuals^2).

edit: In realtà si sta assumendo sigma di sintesi, che è sqrt(sum(output$residuals^2)/output$df.residuals)

Per tutti i modelli utilizzano

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

0
residuals(summary(allModels))) 

vi darà matrice dei residui

+0

Questo doesn rispondi davvero alla domanda Stai utilizzando la funzione di riepilogo che il richiedente ha detto è piuttosto lenta. Chiedono se c'è un modo più rapido per estrarre solo la somma residua dei quadrati per il modello? ' – Ren

+0

La mia colpa. Grazie – eFinance