使用 lapply 中的列表将因变量名称分配给 stargazer table
Assign dependent variable names to stargazer table with list from lapply
我 运行 使用 lm 和 lapply 进行了几次回归,以便我得到一个模型列表。从那里我想创建一个观星者 table。我遇到的问题是观星者。我可以毫无问题地创建 table,但我不知道如何包含多个因变量名称。这是一些示例代码:
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 在所有模型中都是 "x"。按照我在上面的代码中所做的那样指定因变量名称,然后仅使用 dep_vars 向量中的名字。
这是此 post 的后续行动,但在该线程中,OP 似乎对完全排除因变量标签感到满意。如果可能的话,我想拥有它们。我尝试了他们在公式文本中粘贴的解决方案,但结果相同。
如有任何帮助,我们将不胜感激。
我建议使用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
我 运行 使用 lm 和 lapply 进行了几次回归,以便我得到一个模型列表。从那里我想创建一个观星者 table。我遇到的问题是观星者。我可以毫无问题地创建 table,但我不知道如何包含多个因变量名称。这是一些示例代码:
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 在所有模型中都是 "x"。按照我在上面的代码中所做的那样指定因变量名称,然后仅使用 dep_vars 向量中的名字。
这是此 post
如有任何帮助,我们将不胜感激。
我建议使用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