首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用for循环运行回归?

如何使用for循环运行回归?
EN

Stack Overflow用户
提问于 2022-03-29 11:56:21
回答 2查看 136关注 0票数 2

我当前的数据集如下所示:

代码语言:javascript
复制
N = 10000
wage <- rnorm(N)
educ <- rnorm(N)
age  <- rnorm(N)
tce  <- rnorm(N)

work <- rbinom(n = N, size = 1, prob = 0.05)
manu <- rbinom(n = N, size = 1, prob = 0.05)

id <- sample(10, N, replace = TRUE)

df <- data.frame(wage, educ, age, tce, work, manu, id)

wageworkmanu是我的因变量,其余的变量是我的自变量。

目前,我正在重复语法,但只是将结果变量更改为:

代码语言:javascript
复制
library(fixest)

model1 <- feols(work ~ educ + age + tce | id, data = df)

model2 <- feols(manu ~ educ + age + tce | id, data = df)

model2 <- feols(wage~ educ + age + tce | id, data = df)

有什么方法可以使用for循环来运行这样的回归吗?

此外,在运行回归之后,我还想将回归系数绘制成这样的图:

代码语言:javascript
复制
library(modelsummary)

modelplot(
 list(model1, model2, model3)
 )

但是,由于for-循环不创建新的对象,我如何绘制系数?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-03-31 10:07:04

多重估计是fixest中的内置功能。使用c(v1, v2)可以跨多个因变量运行回归。顺便说一下,这也会比循环快得多。

代码语言:javascript
复制
est_multi = feols(c(work, manu, wage) ~ educ + age + tce | id, df)
etable(est_multi)
#>                          model 1          model 2           model 3
#> Dependent Var.:             work             manu              wage
#>                                                                    
#> educ            -0.0060 (0.0031) -0.0009 (0.0023)   0.0204 (0.0139)
#> age              0.0018 (0.0028)  0.0003 (0.0030)   0.0092 (0.0053)
#> tce             -0.0013 (0.0027)  0.0036 (0.0020) -0.0174. (0.0075)
#> Fixed-Effects:  ---------------- ---------------- -----------------
#> id                           Yes              Yes               Yes
#> _______________ ________________ ________________ _________________
#> S.E.: Clustered           by: id           by: id            by: id
#> Observations              10,000           10,000            10,000
#> R2                       0.00117          0.00038           0.00175
#> Within R2                0.00083          0.00031           0.00082
#> ---
#> Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

请注意,如果在向量中有变量名,则可以将它们直接插入公式中,这要感谢点方括号运算符

代码语言:javascript
复制
depvars = c("work", "manu", "wage")
est_multi_bis = feols(.[depvars] ~ work ~ educ + age + tce | id, df)

您可以在专用守恒器中找到一些关于多个估计值的文档。

票数 2
EN

Stack Overflow用户

发布于 2022-03-29 12:26:36

我无法用提供的代码复制您的示例。您可以使用这样的循环:

代码语言:javascript
复制
variable <- c("work", "manu", "wage")
datalist <- list()

for(i in variable) {
  formula <- as.formula(paste(i, " ~ educ + age + tce | id"))
  model <- feols(formula, data = df)
  datalist[[i]] <- model
}

每个条件的模型将保存在可以作为对象访问或提取的列表中。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71661565

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档