我想对同一个回归量运行10次回归,然后拉出所有标准错误 without using a loop .
depVars <- as.matrix(data[,1:10]) # multiple dependent variables
regressor <- as.matrix([,11]) # independent variable
allModels <- lm(depVars ~ regressor) # multiple, single variable regressions
summary(allModels)[1] # Can "view" the standard error for 1st regression, but can't extract...
allModels
存储为"mlm"对象,这很难处理 . 如果我可以存储 lm
对象列表或具有感兴趣统计数据的矩阵,那就太棒了 .
同样,目标是不使用循环 . 这是一个等效的循环:
regressor <- as.matrix([,11]) # independent variable
for(i in 1:10) {
tempObject <- lm(data[,i] ~ regressor) # single regressions
table1Data[i,1] <- summary(tempObject)$coefficients[2,2] # assign std error
rm(tempObject)
}
3 回答
如果你以长格式存储数据,那么使用nlme或lme4包中的
lmList
很容易得到一堆回归结果 . 输出是回归结果列表,摘要可以为您提供系数矩阵,就像您想要的那样 .这些系数是一个简单的三维数组,所以标准误差在
[,2,2]
.给定"mlm"模型对象
model
,您可以使用我编写的以下函数来获得系数的标准误差 . 这非常有效: no loop, and no access to summary.mlm() .A simple, reproducible example
我们都知道通过以下方法提取估计系数很简单:
现在让我们应用我们的
std_mlm
:我们当然可以致电
summary.mlm
来检查我们的结果是否正确:是的,一切都正确!
这里有一个选项:
使用regressor作为id键将数据设置为长格式 .
按变量组对值进行回归 .
例如,使用mtcars数据集: