我已经使用lm()来拟合多个回归模型,以用于R中的多个(〜1百万)响应变量。

allModels <- lm(t(responseVariablesMatrix ~ modelMatrix)

这将返回一个“mlm”类的对象,就像一个包含所有模型的巨大对象。我想获取每种模型的残差平方和,可以使用以下方法完成:
summaries <- summary(allModels)
rss1s <- sapply(summaries, function(a) return(a$sigma))

我的问题是我认为“摘要”功能也计算了很多其他内容,因此速度很慢。我想知道是否有更快的方法来仅提取模型的残差平方和?

谢谢!

最佳答案

lm对象的输出中存在分量残差,因此您可以通过sum(output$residuals^2)获得残差平方和。

编辑:您实际上是从摘要中提取sigma,这是sqrt(sum(output$residuals^2)/output$df.residuals)
适用于所有型号
sapply(allModels, function(a) sqrt(sum(a$residuals^2)/a$df.residuals)))

10-01 20:20