我有一个包含3个相关(LHS)变量和4个独立(RHS)变量的数据框 . 我想在每个RHS变量上运行每个LHS变量的线性回归,并将每个回归的结果作为一行存储在数据框中,列为:lhs,rhs,Estimate,Std . 错误,t值,Pr(> | t |) .
例如,使用mtcars,我考虑了一个嵌套循环:
lhs <- c('mpg', 'cyl', 'disp')
rhs <- c('hp', 'drat', 'wt', 'qsec')
reg_count <- 1
for (i in lhs){
for (j in rhs){
model <- lm(i ~ j, data = mtcars)
results[reg_count] <- coef(summary(model))
reg_count <- reg_count + 1
}
}
然而,由于许多原因,这失败了 . 有一种简单的方法可以做到这一点吗?理想情况下使用apply()函数而不是循环?
2 回答
我就是这样做的 . 我稍微缩短了你的例子,但这无关紧要:
如果你想使用
apply
,你需要以matrix
开头 . 运行时间的差异可以忽略不计 .两种方法都给出了相同的结果 . 现在我们可以用
broom::tidy
拉取系数等我们还可以提取模型摘要统计信息:
您可以从
expand.grid
开始,为相关/自变量对提供一个很好的数据帧 . 然后将公式和模型添加到数据中 .结果: