我当前的数据集如下所示:
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)wage、work和manu是我的因变量,其余的变量是我的自变量。
目前,我正在重复语法,但只是将结果变量更改为:
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循环来运行这样的回归吗?
此外,在运行回归之后,我还想将回归系数绘制成这样的图:
library(modelsummary)
modelplot(
list(model1, model2, model3)
)但是,由于for-循环不创建新的对象,我如何绘制系数?
发布于 2022-03-31 10:07:04
多重估计是fixest中的内置功能。使用c(v1, v2)可以跨多个因变量运行回归。顺便说一下,这也会比循环快得多。
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请注意,如果在向量中有变量名,则可以将它们直接插入公式中,这要感谢点方括号运算符。
depvars = c("work", "manu", "wage")
est_multi_bis = feols(.[depvars] ~ work ~ educ + age + tce | id, df)您可以在专用守恒器中找到一些关于多个估计值的文档。
发布于 2022-03-29 12:26:36
我无法用提供的代码复制您的示例。您可以使用这样的循环:
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
}每个条件的模型将保存在可以作为对象访问或提取的列表中。
https://stackoverflow.com/questions/71661565
复制相似问题