我正在尝试使用该modelsummary
包制作统计模型汇总表。
我进行了 6 次回归。我对其中 2 个进行了联合假设检验,其中包括某些变量(特别是educ
和exper
)作为解释变量。我想将这些测试的 F 统计信息包含在表中,但无法从测试中提取信息并将其导入表中。
这里有更多细节。
(1) 我做了什么,第 1 部分:包、数据和分析
library(tidyverse)
library(wooldridge) # Data
library(estimatr) # Estimation
library(car) # F test
library(modelsummary) # Table
library(kableExtra) # Table
wage2 <- wage2 %>%
mutate(lwage = log(wage))
model1 <- lm_robust(lwage ~ educ,
data = wage2, se_type = "HC1")
model2 <- lm_robust(lwage ~ exper,
data = wage2, se_type = "HC1")
model3 <- lm_robust(lwage ~ educ + exper,
data = wage2, se_type = "HC1")
F3 <- linearHypothesis(model3, test = "F",
c("educ = 0", "exper = 0"))
model4 <- lm_robust(lwage ~ educ + tenure,
data = wage2, se_type = "HC1")
model5 <- lm_robust(lwage ~ exper + tenure,
data = wage2, se_type = "HC1")
model6 <- lm_robust(lwage ~ educ + exper + tenure,
data = wage2, se_type = "HC1")
F6 <- linearHypothesis(model6, test = "F",
c("educ = 0", "exper = 0"))
联合假设检验的结果如下。
F3
## Linear hypothesis test
##
## Hypothesis:
## educ = 0
## exper = 0
##
## Model 1: restricted model
## Model 2: lwage ~ educ + exper
##
## Res.Df Df F Pr(>F)
## 1 934
## 2 932 2 67.715 < 2.2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
F6
## Linear hypothesis test
##
## Hypothesis:
## educ = 0
## exper = 0
##
## Model 1: restricted model
## Model 2: lwage ~ educ + exper + tenure
##
## Res.Df Df F Pr(>F)
## 1 933
## 2 931 2 63.592 < 2.2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
(2) 我做了什么,第 2 部分:表格
regs <- list()
regs[['Model 1']] <- model1
regs[['Model 2']] <- model2
regs[['Model 3']] <- model3
regs[['Model 4']] <- model4
regs[['Model 5']] <- model5
regs[['Model 6']] <- model6
gm <- tribble(
~raw, ~clean, ~fmt,
"adj.r.squared", "$\\bar{R}^2$", 3,
"nobs", "Sample size", 0
)
rows <- tribble(
~term, ~'Model 1', ~'Model 2', ~'Model 3',
~'Model 4', ~'Model 5', ~'Model 6',
'$F$ statstics', '', '', '', '', '', '',
'$H_0: \\beta_{\\rm{educ}} = 0, \\beta_{\\rm{exper}} = 0$',
'', '', '67.715***', '', '', '63.592***',
'', '', '', '(0.000)', '', '', '(0.000)'
)
attr(rows, 'position') <- c(9:11)
table <- msummary(regs,
estimate = "{estimate}{stars}",
gof_map = gm,
notes = list("*** p < 0.01, ** p < 0.05, * p < 0.1.
Heteroskedasticity-consistent
standard errors in brackets.
P values in brackets for F statistics."),
add_rows = rows) %>%
row_spec(c(1, 3, 5, 7, 9, 10),
extra_css = "border-bottom: hidden")
table
上面的代码给了我一张漂亮的桌子。(不幸的是,我似乎无法发布它,因为我没有获得足够的声誉。)
(3) 我想知道的
在上面,我手动输入了 F 统计量、星数和 p 值rows
来获得我想要的表,但我想知道是否有办法从表中提取信息F3
并将F6
其导入到表中。