我已经使用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)))