【问题标题】:Running several regressions with clustering in R在 R 中使用聚类运行多个回归
【发布时间】:2020-04-17 04:43:52
【问题描述】:

当我需要运行多个回归时,我通常使用以下代码。

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)

然后,这为我提供了所有结果变量在 covariate1 + covariate2 上的回归输出。

我正在尝试做同样的事情,但使用聚集的稳健标准错误。我使用了 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 并添加了一个参数,用于指定我想要集群的级别。当上面的代码有效时,为什么这不起作用?您建议修改什么以使此代码运行?

我也对同时运行集群和非集群回归的全新方法持开放态度。

【问题讨论】:

    标签: r regression cluster-analysis tidyverse


    【解决方案1】:

    lmlm_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)
    

    公式[[2]]中的错误:下标超出范围

    只需要一个公式对象

    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))
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-08-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-09-30
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多