将依赖变量名称分配给stargazer表,并使用lapply

时间:2018-03-22 15:11:01

标签: r lapply stargazer

我正在使用lm和lapply运行几个回归,以便获得模型列表。从那里我想创建一个观星表。我遇到的问题是与观星者有关。我可以创建一个没有问题的表,但我无法弄清楚如何包含多个因变量名。以下是一些示例代码:

library(stargazer)
library(magrittr)
x1 <- rnorm(1000,0,1)
x2 <- rnorm(1000,0,1)
x3 <- rnorm(1000,0,1)
x4 <- rnorm(1000,0,1)
x5 <- rnorm(1000,0,1)
x6 <- rnorm(1000,0,1)

data <- cbind(x1, x2, x3, x4, x5, x6) %>%
  as.data.frame()

mod_list_test <- lapply(data[, 1:4], function(x) lm(x ~ data$x5 + data$x6))
dep_vars_test <- c("A", "B", "C", "D")
stargazer(mod_list_test, header = F,
          dep.var.labels = dep_vars_test,
          type = "text")

我认为这个问题是当使用lapply调用公式时,它会显示:

Call: lm(formula = x ~ data$x5 + data$x6))

所以stargazer似乎认为dep var是&#34; x&#34;在所有型号中。在上面的代码中指定因变量名称,只使用dep_vars向量中的第一个名称。

这是对这篇文章here的后续跟进,但在该主题中,似乎OP对完全排除因变量标签感到满意。如果可能的话我想拥有它们。我尝试了他们在公式文本中粘贴的解决方案,但这给了我相同的结果。

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

我建议使用lapply,如下所示:

mod_list_test <- lapply(data[, 1:4], function(x) {
     df <- data.frame(y = x, x5=data$x5, x6=data$x6)
     lm(y ~ x5 + x6, data=df)
 })

或:

mod_list_test <- lapply(1:4, function(k) {
     frm <- as.formula(paste(names(data)[k],"~ x5+x6"))
     lm(frm, data=data)
 })

stargazer(mod_list_test, header = F, type = "text")

输出结果为:

=================================================================
                                      Dependent variable:        
                               ----------------------------------
                                 x1      x2       x3       x4    
                                 (1)     (2)     (3)       (4)   
-----------------------------------------------------------------
x5                             -0.041   0.011  -0.077**  -0.002  
                               (0.033) (0.033) (0.033)   (0.033) 

x6                             -0.021   0.027   0.027   -0.095***
                               (0.033) (0.034) (0.033)   (0.033) 

Constant                       -0.013  -0.016   0.014     0.016  
                               (0.033) (0.033) (0.033)   (0.033) 

-----------------------------------------------------------------
Observations                    1,000   1,000   1,000     1,000  
R2                              0.002   0.001   0.006     0.008  
Adjusted R2                    -0.0001 -0.001   0.004     0.006  
Residual Std. Error (df = 997)  1.035   1.041   1.029     1.036  
F Statistic (df = 2; 997)       0.939   0.377  3.145**   4.016** 
=================================================================
Note:                                 *p<0.1; **p<0.05; ***p<0.01