【问题标题】:Function to run regression model with different covariates, outcome variables, and fixed effects运行具有不同协变量、结果变量和固定效应的回归模型的函数
【发布时间】:2021-08-07 04:17:42
【问题描述】:

我想编写一个函数来有效地修改回归模型,为(至少)结果变量、治疗变量和修复效果提供参数。更深入一些会很棒,比如修改权重。例如,我经常想为许多不同的结果编写一个具有相同协变量的模型。如果我想修改协变量集,我想在一行中完成,而不是单独进行每个回归。

library(fixest)
dataset <- mtcars
covs_1 <- c("cyl", "disp","hp")
depvar_1 <- c("mpg")
treatment_1 <- c("vs")

# function to run models based on dep variable and covariate set
runmod <- function(depvar, treatment,covs) {
  feols(as.formula(paste(c(depvar, " ~ ", treatment, paste(covs, collapse = " + ")),
        data = data, cluster = "state")))
}
runmod(depvar_1, treatment_1, covs_1)

【问题讨论】:

标签: r function regression


【解决方案1】:

请注意,fixest 原生支持多重估计,您可以设置公式宏来紧凑地添加协变量:

library(fixest)

# ..cov: macro stacking all the covariates
setFixest_fml(..cov = ~ cyl + disp + hp)

# multiple estimation:
#  c(dep1, dep2): multiple dep. vars
# sw(var1, var2): multiple expl. vars (sw means step wise)
multiest = feols(c(mpg, qsec) ~ sw(vs, am) + ..cov, mtcars)
etable(multiest)
#>                           model 1           model 2            model 3            model 4
#> Dependent Var.:               mpg               mpg               qsec               qsec
#>                                                                                          
#> (Intercept)      36.01*** (4.466)  30.48*** (2.866)   17.77*** (1.441)  24.41*** (0.9152)
#> vs                -0.9692 (1.918)                     2.272** (0.6190)                   
#> cyl               -1.446 (0.9167)  -0.8345 (0.7571)   -0.0530 (0.2958) -0.8165** (0.2418)
#> disp            -0.0182. (0.0106)  -0.0077 (0.0107)   0.0088* (0.0034)    0.0031 (0.0034)
#> hp               -0.0159 (0.0151) -0.0330* (0.0156) -0.0178** (0.0049)  -0.0091. (0.0050)
#> am                                   3.445* (1.454)                    -2.199*** (0.4643)
#> _______________ _________________ _________________ __________________ __________________
#> S.E. type                Standard          Standard           Standard           Standard
#> Observations                   32                32                 32                 32
#> R2                        0.77006           0.80785            0.72765            0.77703
#> Adj. R2                   0.73600           0.77939            0.68731            0.74400

请参阅有关多重估计 here 和公式宏 there 的文档。

【讨论】:

    【解决方案2】:

    我希望这可行:

    library(fixest)
    dataset <- mtcars
    covs_1 <- c("cyl", "disp", "hp")
    depvar_1 <- c("mpg")
    treatment_1 <- c("vs")
    # function to run models based on dep variable and covariate set
    runmod <- function(depvar, treatment, covs) {
      
      formula <- paste(depvar,
                       " ~ ",
                       treatment,
                       " | ",
                       paste(covs, collapse = " + "))
      
      feols(as.formula(formula), dataset, cluster = "am")
    }
    runmod(depvar_1, treatment_1, covs_1)
    

    【讨论】:

    • 在处理后添加“|”而不是“+”,covaraites 被固定效应吸收。另外,感谢您使此可重现,我编辑了我的问题以反映此设置。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-12-24
    • 2022-01-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多