使用stargazer()为多lm()模型输出稳健标准误的问题求助
问题描述
我使用stargazer()展示两个OLS模型m3adj和m4adj的结果,要求包含稳健标准误,代码如下:
model.lst <- list(m3adj, m4adj) stargazer(model.lst, title = "Initial Results", type = "html", align = TRUE, no.space=TRUE, column.labels = c("Model 1 (Main effect)", "Model 2 (Main effect of sub dimensions)"), omit.stat=c("LL","ser", "f"), ord.intercepts = TRUE, notes.append=TRUE, se = c(list(NULL,robust_se3, NULL, robust_se4)), #include robust standard errors single.row = TRUE, report = "vcs*", notes="Heteroscedasticity-robust standard errors in parantheses.", add.lines=list(c('Year-quarter fixed effects', 'Yes','Yes')), star.cutoffs = c(0.05, 0.01, 0.001) )
但预先计算好的稳健标准误robust_se3和robust_se4仅部分生效:仅Model1显示正确的标准误,Model2仅部分变量显示随机数值。求修正代码,使两个模型均能正确显示稳健标准误。
修正方案
问题出在se参数的格式上——stargazer要求给每个模型单独传入对应的稳健标准误列表,而不是把所有标准误混在一个扁平化的向量里。
修正后的代码如下:
model.lst <- list(m3adj, m4adj) stargazer(model.lst, title = "Initial Results", type = "html", align = TRUE, no.space=TRUE, column.labels = c("Model 1 (Main effect)", "Model 2 (Main effect of sub dimensions)"), omit.stat=c("LL","ser", "f"), ord.intercepts = TRUE, notes.append=TRUE, # 给每个模型单独指定稳健标准误:列表的每个元素对应一个模型的标准误向量 se = list(robust_se3, robust_se4), single.row = TRUE, report = "vcs*", notes="Heteroscedasticity-robust standard errors in parentheses.", add.lines=list(c('Year-quarter fixed effects', 'Yes','Yes')), star.cutoffs = c(0.05, 0.01, 0.001) )
关键说明
se参数需要是一个列表,列表的长度和模型数量一致,每个列表元素对应一个模型的稳健标准误向量,顺序要和model.lst中的模型顺序完全匹配。- 原代码中
c(list(NULL,robust_se3, NULL, robust_se4))的格式错误,会导致标准误和模型变量不匹配,进而出现Model2标准误乱码的问题。 - 确保
robust_se3和robust_se4的长度分别与m3adj、m4adj的变量数量(包括截距项)完全一致,否则仍会出现匹配错误。
内容的提问来源于stack exchange,提问作者Soph2010
相关产品推荐
相关产品推荐

