我正在使用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对完全排除因变量标签感到满意。如果可能的话我想拥有它们。我尝试了他们在公式文本中粘贴的解决方案,但这给了我相同的结果。
非常感谢任何帮助。
答案 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