Получить остаточные стандартные ошибки объекта "mlm", возвращаемого функцией "lm()"
Я использовал lm()
чтобы соответствовать множественным регрессионным моделям, для множественных (~1 миллиона) переменных отклика в R. Например.
allModels <- lm(t(responseVariablesMatrix ~ modelMatrix)
Это возвращает объект класса "mlm", который похож на огромный объект, содержащий все модели. Я хочу получить Остаточную сумму квадратов для каждой модели, которую я могу сделать, используя:
summaries <- summary(allModels)
rss1s <- sapply(summaries, function(a) return(a$sigma))
Моя проблема в том, что я думаю, что функция "итоги" вычисляет целую кучу других вещей, и, следовательно, довольно медленно. Мне интересно, есть ли более быстрый способ извлечения только Остаточной суммы квадратов для модели?
Спасибо!
2 ответа
Есть компонент остатков в выходе lm
объект, так что вы получите остаточную сумму квадратов по sum(output$residuals^2)
,
редактировать: вы на самом деле вынимаете сигма из резюме, которое sqrt(sum(output$residuals^2)/output$df.residuals)
Для всех моделей используйте
sapply(allModels, function(a) sqrt(sum(a$residuals^2)/a$df.residuals)))
Редко известная многим, универсальная функция deviance
может вычислить остаточную сумму квадратов для моделей "lm" и "mlm". Позволять fit
будьте подходящей моделью, вы можете сделать
sqrt(deviance(fit) / fit$df.residual)
Здесь есть два преимущества:
- универсальная функция полностью "векторизована" (используя
colSums
), а не на основе петель (например, решение черезsapply
); - универсальная функция знает, как обращаться со случаем взвешенной регрессии.