簡體   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