繁体   English   中英

R 循环回归模型的代码,从 Stata 代码开始

[英]R code for looping through regression models, starting from Stata code

来自 Stata 的新用户 R。 我的大部分工作包括运行多个具有因变量和自变量的不同组合的回归模型并存储结果。 为此,我大量使用了宏和循环,据我所知,这在 R 中不是首选。

以“mtcars”数据集为例,假设我有兴趣在 Stata 中使用mpgdispwt作为因变量, hpcar b 作为自变量并调整vsamgear的所有模型我会做是这样的:

local depvars mpg disp wt // create list of dependent variables
local indepvars hp carb // create list of independent variables
local confounders vs am gear // create list of control variables

foreach depvar of local depvars {
    foreach indepvar of local indepvars {
        reg `depvar' `indepvar' `confounders'
        estimates store `depvar'_`indepvar'
    }
}

R有办法吗? 可能使用我开始熟悉的 tidyverse 方法?

这将使 R 遵循您的 Stata 代码:

depvars <- c('mpg', 'disp', 'wt')
indepvars <- c('hp', 'carb') 
confounders <- c('vs', 'am', 'gear')

for (i in seq(length(depvars))) {
    for (j in seq(length(indepvars))) {
       my_model <- lm(as.formula(paste(depvars[i], "~", paste(c(indepvars[j], confounders), collapse = "+"))), data = mtcars)
       assign(paste0(depvars[i], "_", indepvars[j]), my_model) 
   }    
}

或者使用更短的代码:

for (i in seq_along(depvars)) {
    for (j in seq_along(indepvars)) {
       assign(paste0(depvars[i], "_", indepvars[j]), lm(as.formula(paste(depvars[i], "~", paste(c(indepvars[j], confounders), collapse = "+"))), data = mtcars)) 
   }    
}```

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM