代码之家  ›  专栏  ›  技术社区  ›  Jeremy K.

用许多因变量进行估计,然后用Stargazer制表

  •  3
  • Jeremy K.  · 技术社区  · 7 年前

    我试图:(1)估计只有因变量变化的多个模型(2)用Stargazer软件包将结果制成表格

    以下代码有效,但我必须为每个模型重复一行代码:

        library(stargazer)
        data(mtcars)
    
        reg1 <- lm(mpg ~ am + gear + carb, data=mtcars)
        reg2 <- lm(cyl ~ am + gear + carb, data=mtcars)
        reg3 <- lm(disp ~ am + gear + carb, data=mtcars)
    
        stargazer(reg1, reg2, reg3,
                  title="Regression Results", type="text", 
                  df=FALSE, digits=3)
    

    你可以看到 (修剪后的)输出具有因变量(mpg、cyl、disp)的正确标题 :

    Regression Results
    ==================================================
                             Dependent variable:      
                        ------------------------------
                           mpg       cyl       disp   
                           (1)       (2)       (3)    
    --------------------------------------------------
    am                   3.545*    -0.176    -40.223  
                         (1.897)   (0.615)   (48.081) 
    

    如果我使用lappy和paste,它最终会更改stargazer中因变量的标题:

    dependents <- c('mpg', 'cyl', 'disp')
    outs <- lapply(dependents, function(x) {
      fit <- lm(paste(x,'~', 'am + gear + carb'), data=mtcars)})
    
    stargazer(outs[[1]], outs[[2]], outs[[3]],
              title="Regression Results", type="text", 
              df=FALSE, digits=3)
    

    给予 输出,其中x是因变量的标题:

    Regression Results
    ==================================================
                             Dependent variable:      
                        ------------------------------
                                      x               
                           (1)       (2)       (3)    
    --------------------------------------------------
    am                   3.545*    -0.176    -40.223  
                         (1.897)   (0.615)   (48.081) 
    

    我有没有办法解决这个问题?非常感谢。

    1 回复  |  直到 7 年前
        1
  •  5
  •   Niklas    7 年前

    如果在运行回归之前创建公式,它应该会起作用。我只是将公式创建和回归分离开来。

    dependents <- c('mpg', 'cyl', 'disp')
    outs <- lapply(dependents, function(x) {
      formula <- as.formula(paste(x,'~', 'am + gear + carb'))
      fit <- lm(formula, data=mtcars)})
    
    stargazer(outs[[1]], outs[[2]], outs[[3]],
          title="Regression Results", type="text", 
          df=FALSE, digits=3)