如何将Stata ivreg2的Sanderson-Windmeijer检验结果导出到LaTeX并支持扩展?
Stata导出ivreg2的Sanderson-Windmeijer F检验并生成可扩展双面板LaTeX表格
核心需求
你需要从ivreg2的工具变量回归结果中提取Sanderson-Windmeijer工具变量排除性多变量F检验值,生成一个双面板LaTeX表格:
- 上面板:展示内生变量(educ、hours)、外生变量(exper、expersq)及截距项的回归系数
- 下面板:展示模型R²和每个内生变量的Sanderson-Windmeijer F检验值
同时要求支持随时追加新回归列,此前用eststo时找不到F检验值,解决方案如下:
关键说明
ivreg2执行后,Sanderson-Windmeijer F检验值并不在常规的ereturn标量中,而是存储在e(swindmeijer)矩阵里,需要手动提取后与回归结果结合。
完整可扩展代码
* 加载示例数据 use http://fmwww.bc.edu/ec-p/data/wooldridge/mroz.dta, clear * ---------------------- * 步骤1:存储回归结果与F检验值 * ---------------------- * 回归1:包含expersq的基准模型 ivreg2 lwage exper expersq (educ hours = age kidslt6 kidsge6), first eststo reg1 // 存储系数结果 * 提取Sanderson-Windmeijer F值和R²,存入当前estimates集合 estadd scalar sw_educ = e(swindmeijer)[1,1] estadd scalar sw_hours = e(swindmeijer)[2,1] estadd scalar r2 = e(r2) * 回归2:不含expersq的扩展模型(示例追加列) ivreg2 lwage exper (educ hours = age kidslt6 kidsge6), first eststo reg2 // 存储第二个回归的系数结果 * 重复提取F值和R² estadd scalar sw_educ = e(swindmeijer)[1,1] estadd scalar sw_hours = e(swindmeijer)[2,1] estadd scalar r2 = e(r2) * ---------------------- * 步骤2:生成双面板LaTeX表格 * ---------------------- esttab reg1 reg2 using "iv_results.tex", /// replace /// se star(* 0.1 ** 0.05 *** 0.01) /// keep(educ hours exper expersq _cons) /// 指定上面板展示的变量 stats(r2 sw_educ sw_hours, /// 指定下面板展示的统计量 labels("R²" "Sanderson-Windmeijer F (educ)" "Sanderson-Windmeijer F (hours)") /// layout(@ @)) /// 保证统计量与系数列对齐 prehead("\begin{table}[htbp]" /// "\centering" /// "\begin{tabular}{lcc}" /// "\toprule" /// "\multicolumn{3}{c}{IV Regression Results} \\ \midrule" /// "\textbf{Panel A: Coefficients} \\ \midrule") /// posthead("\\" /// "\midrule" /// "\textbf{Panel B: Diagnostic Statistics} \\ \midrule") /// postfoot("\bottomrule" /// "\end{tabular}" /// "\caption{IV Regression with Sanderson-Windmeijer F Tests}" /// "\label{tab:iv_results}" /// "\end{table}") /// nomtitles /// collabels("Model 1" "Model 2")
代码细节解释
- F检验值提取:
e(swindmeijer)是行数等于内生变量数的矩阵,第1行对应第一个内生变量(educ)的F值,第2行对应第二个(hours),用estadd scalar将这些值存入当前estimates集合,方便esttab调用。 - 可扩展性:新增回归时,只需重复
ivreg2 + eststo + estadd的流程,esttab会自动追加列,仅需调整collabels的标签即可适配新列。 - 双面板设置:通过
prehead和posthead手动划分Panel A(系数)和Panel B(诊断统计量),stats()选项指定下面板展示的内容,确保表格结构清晰。
内容的提问来源于stack exchange,提问作者Andrew
相关产品推荐
相关产品推荐

