运行 R 中聚类的几个回归
Running several regressions with clustering in R
当我需要 运行 多个回归时,我通常使用以下代码。
outcomes <- colnames(df[,1:10]) #specifies column names for variables
form <- paste(outcomes, "~ covariate1 + covariate2)
model <- form %>%
set_names(outcomes) %>%
map(~lm(.x, data = df))
map(model, summary)
然后这会给出所有结果变量对协变量 1 + 协变量 2 的回归输出。
我正在尝试做同样的事情,但是有聚集的稳健标准错误。我使用了 estimatr 包中的 lm_robust 。这是我对上述代码所做的修改。
outcomes <- colnames(df[,1:10])
form <- paste(outcomes, "~ covariate1 + covariate2)
model <- form %>%
set_names(outcomes) %>%
map(~lm_robust(.x, data = df, clusters = id))
map(model, summary)
如您所见,我已将 lm 更改为 lm_robust 并添加了一个参数来指定我想要聚类的级别。当上面的代码有效时,为什么这不起作用?您建议修改什么以使此代码 运行?
我也乐于接受 运行 同时进行聚类和非聚类回归的全新方法。
lm
和 lm_robust
的主要区别在于第一个参数,lm
接受一个公式对象 或 一个对象是胁迫于一。
library(estimatr)
library(purrr)
因此将公式对象作为字符串传递给 lm
lm("mpg~gear+carb", data = mtcars)
与
相同
lm(mpg~gear+carb, data = mtcars)
但这不适用于 lm_robust
lm_robust("mpg~gear+carb", data = mtcars)
Error in formula[[2]] : subscript out of bounds
它只需要一个公式对象。
lm_robust(mpg~gear+carb, data = mtcars)
# Estimate Std. Error t value Pr(>|t|) CI Lower CI Upper DF
#(Intercept) 7.28 2.984 2.44 2.11e-02 1.17 13.38 29
#gear 5.58 0.933 5.98 1.69e-06 3.67 7.48 29
#carb -2.75 0.366 -7.53 2.64e-08 -3.50 -2.01 29
所以在您的代码中将字符串更改为公式对象,它应该可以工作。
model <- form %>%
set_names(outcomes) %>%
map(~lm_robust(as.formula(.x), data = df, clusters = id))
当我需要 运行 多个回归时,我通常使用以下代码。
outcomes <- colnames(df[,1:10]) #specifies column names for variables
form <- paste(outcomes, "~ covariate1 + covariate2)
model <- form %>%
set_names(outcomes) %>%
map(~lm(.x, data = df))
map(model, summary)
然后这会给出所有结果变量对协变量 1 + 协变量 2 的回归输出。
我正在尝试做同样的事情,但是有聚集的稳健标准错误。我使用了 estimatr 包中的 lm_robust 。这是我对上述代码所做的修改。
outcomes <- colnames(df[,1:10])
form <- paste(outcomes, "~ covariate1 + covariate2)
model <- form %>%
set_names(outcomes) %>%
map(~lm_robust(.x, data = df, clusters = id))
map(model, summary)
如您所见,我已将 lm 更改为 lm_robust 并添加了一个参数来指定我想要聚类的级别。当上面的代码有效时,为什么这不起作用?您建议修改什么以使此代码 运行?
我也乐于接受 运行 同时进行聚类和非聚类回归的全新方法。
lm
和 lm_robust
的主要区别在于第一个参数,lm
接受一个公式对象 或 一个对象是胁迫于一。
library(estimatr)
library(purrr)
因此将公式对象作为字符串传递给 lm
lm("mpg~gear+carb", data = mtcars)
与
相同lm(mpg~gear+carb, data = mtcars)
但这不适用于 lm_robust
lm_robust("mpg~gear+carb", data = mtcars)
Error in formula[[2]] : subscript out of bounds
它只需要一个公式对象。
lm_robust(mpg~gear+carb, data = mtcars)
# Estimate Std. Error t value Pr(>|t|) CI Lower CI Upper DF
#(Intercept) 7.28 2.984 2.44 2.11e-02 1.17 13.38 29
#gear 5.58 0.933 5.98 1.69e-06 3.67 7.48 29
#carb -2.75 0.366 -7.53 2.64e-08 -3.50 -2.01 29
所以在您的代码中将字符串更改为公式对象,它应该可以工作。
model <- form %>%
set_names(outcomes) %>%
map(~lm_robust(as.formula(.x), data = df, clusters = id))