正在加载中...

展开本页目录
算法教程IV_2SLS-工具变量和两阶段最小二乘

IV_2SLS-工具变量和两阶段最小二乘

No.048 · 在线教程

IV/2SLS(Instrumental Variables / Two-Stage Least Squares)用于解决回归中内生性问题。当解释变量与误差项相关时,OLS 估计有偏。IV/2SLS通过引入工具变量,在第一阶段提取外生变化,再在第二阶段估计结构关系,从而得到一致…

IV_2SLS-工具变量和两阶段最小二乘

1. 方法概述

IV/2SLS(Instrumental Variables / Two-Stage Least Squares)用于解决回归中内生性问题。当解释变量与误差项相关时,OLS 估计有偏。IV/2SLS通过引入工具变量,在第一阶段提取外生变化,再在第二阶段估计结构关系,从而得到一致估计。

设样本集为 $$ \mathcal{D}=\{(y_i, x^{(e)}_i, x^{(x)}_i, z_i)\}_{i=1}^{n} \tag{1} $$ 其中 \(y_i\) 为因变量,\(x^{(e)}_i\) 为内生解释变量,\(x^{(x)}_i\) 为外生解释变量,\(z_i\) 为工具变量向量。

2. 模型设定与识别条件

2.1 结构方程

$$ y = X_{e}\beta + X_{x}\gamma + u \tag{2} $$ 其中 \(X_e\) 为内生解释变量矩阵,\(X_x\) 为外生解释变量矩阵,\(u\) 为误差项。

2.2 工具变量条件

外生性(有效性) $$ \mathbb{E}(Z^\top u)=0 \tag{3} $$

相关性(相关性/秩条件) $$ \text{rank}\big(\mathbb{E}(Z^\top X_{e})\big)=\dim(X_e) \tag{4} $$

满足式(3)–(4)时,IV/2SLS 的估计一致。

2.3 符号说明

符号 含义
\(y\) 因变量向量
\(X_e\) 内生解释变量矩阵
\(X_x\) 外生解释变量矩阵
\(Z\) 工具变量矩阵
\(\beta,\gamma\) 回归系数
\(u\) 误差项
\(W\) 合并工具矩阵(含 \(Z\) 与 \(X_x\))
\(P_W\) 投影矩阵
\(n\) 样本数量
\(k\) 回归参数个数
\(\alpha\) 显著性水平

3. 两阶段最小二乘(2SLS)

3.1 第一阶段回归

用工具变量与外生变量解释内生变量: $$ X_{e}=Z\Pi+X_{x}\Gamma+v \tag{5} $$

构造合并工具矩阵 $$ W=[Z,\ X_x],\quad P_W=W(W^\top W)^{-1}W^\top \tag{6} $$

得到内生变量的拟合值 $$ \hat X_{e}=P_W X_{e} \tag{7} $$

弱工具变量检验(第一阶段 F 统计量,近似) $$ F=\frac{(R^2/k_{\text{inst}})}{(1-R^2)/(n-k)} \tag{8} $$ 其中 \(k_{\text{inst}}\) 为工具变量个数(不含常数),常用阈值为 10。

3.2 第二阶段回归

$$ y=\hat X_e\beta+X_x\gamma+\varepsilon \tag{9} $$

3.3 2SLS 矩阵形式

设 \(X=[X_e,\ X_x]\),则 2SLS 估计量为 $$ \hat\theta_{\text{2SLS}}=(X^\top P_W X)^{-1}X^\top P_W y \tag{10} $$ 其中 \(\theta=(\beta,\gamma)\)。

4. 统计推断与区间估计

残差: $$ e=y-X\hat\theta \tag{11} $$

误差方差估计: $$ \hat\sigma^2=\frac{e^\top e}{n-k} \tag{12} $$

参数协方差: $$ \text{Var}(\hat\theta)=\hat\sigma^2 (X^\top P_W X)^{-1} \tag{13} $$

t 统计量与置信区间: $$ t_j=\frac{\hat\theta_j}{\text{se}(\hat\theta_j)} \tag{14} $$

$$ \hat\theta_j \pm t_{1-\alpha/2,\ n-k}\cdot \text{se}(\hat\theta_j) \tag{15} $$

决定系数(第二阶段): $$ R^2=1-\frac{\sum_{i=1}^n (y_i-\hat y_i)^2}{\sum_{i=1}^n (y_i-\bar y)^2} \tag{16} $$

5. 诊断检验

5.1 Hausman 内生性检验

$$ H=(\hat\beta_{\text{OLS}}-\hat\beta_{\text{IV}})^\top \big[\text{Var}(\hat\beta_{\text{OLS}})-\text{Var}(\hat\beta_{\text{IV}})\big]^{-1} (\hat\beta_{\text{OLS}}-\hat\beta_{\text{IV}}) \sim \chi^2_q \tag{17} $$

5.2 Sargan-Hansen 过度识别检验

$$ J=n\cdot R^2_{e\sim Z} \sim \chi^2_{m-k} \tag{18} $$ 其中 \(R^2_{e\sim Z}\) 是“残差对所有工具变量回归”的 \(R^2\),\(m\) 为工具变量数。

5.3 Jarque-Bera 正态性检验

$$ JB=\frac{n}{6}\left(S^2+\frac{(K-3)^2}{4}\right) \tag{19} $$ 其中 \(S\) 为偏度,\(K\) 为峰度。

6. 输出结果与图表说明

系统输出目录包含:

  • Excel(多表)

    • 第一阶段回归:第一阶段回归系数、标准误、t 值与 p 值;
    • 第二阶段回归:2SLS 系数、标准误、t 值、p 值、置信区间;
    • 诊断检验:弱工具变量、Hausman、Sargan-Hansen、JB 检验;
    • 参数设置:因变量、内生/工具/外生变量、截距、alpha 等;
    • 图表清单:图表文件名索引;
    • 数据预览:原始数据预览。
  • 图表

    • 第一阶段诊断图(残差直方/Q-Q/拟合-实际/残差-拟合);
    • 第二阶段诊断图(残差直方/Q-Q/拟合-实际/Scale-Location);
    • 工具变量强度(F 统计量条形图);
    • 残差综合诊断(序列图/箱线图/ACF/核密度);
    • 真实值-预测值折线图(仅有序样本且勾选输出时生成)。

7. 与代码实现的对应关系

本算法在程序中通过 具体的算法2/IV_2SLS-工具变量和两阶段最小二乘 下的计算与绘图模块共同完成。程序不仅输出第二阶段系数,还会分别输出第一阶段回归、诊断检验和图表清单,因此论文应按“第一阶段强度 + 第二阶段结构效应 + 诊断检验”组织。

7.1 程序实际导出的工作表

  • 第一阶段回归第一阶段_内生变量名:第一阶段系数与统计量;
  • 第二阶段回归:2SLS 结构方程结果;
  • 诊断检验:弱工具、Hausman、过度识别、JB 等;
  • 参数设置:变量配置、显著性水平等;
  • 图表清单:图表路径;
  • 数据预览:输入数据预览。

7.2 程序实际生成的图表

  • 第一阶段诊断图;
  • 第二阶段诊断图;
  • 工具变量强度条形图;
  • 残差综合诊断图;
  • 真实值-预测值折线图(可选)。

7.3 程序实现中应写明的点

  • 若存在多个内生变量,第一阶段可能拆成多个 sheet;
  • 诊断检验表已经整合弱工具、Hausman 与过度识别结果,正文不必再手工拼接;
  • 图表清单用相对路径保存,适合论文附录统一管理;
  • 论文若解释工具变量有效性,应同时引用第一阶段强度与过度识别检验;
  • 当前模块真实结果目录形如 results/IV2SLS_<时间戳>/,目录内会落盘:
    • IV2SLS分析结果_<时间戳>.xlsx
    • 01_first_stage_diagnostics.png
    • 02_second_stage_diagnostics.png
    • 03_instrument_strength.png
    • 04_residual_diagnostics.png
    • 05_true_vs_pred_line.png
    • repro_iv2sls_template_<时间戳>.py
  • 因此,这个模块当前并不是只输出回归表,而是“第一阶段 + 第二阶段 + 诊断图 + repro”的完整证据链。

8. 变量—公式对应关系

  • 公式(1):样本定义 \((y_i, x^{(e)}_i, x^{(x)}_i, z_i)\)。
  • 公式(2):结构方程与 \(\beta,\gamma\)。
  • 公式(3)–(4):工具变量有效性与识别条件。
  • 公式(5)–(8):第一阶段回归与弱工具变量 F 检验。
  • 公式(9)–(10):第二阶段回归与 2SLS 估计量。
  • 公式(11)–(16):残差、方差、t 统计量与 \(R^2\)。
  • 公式(17)–(19):Hausman、Sargan-Hansen、JB 检验。

9. 公式—输出表格(Excel sheet)映射说明

公式编号 主要内容 Excel Sheet
(1) 样本与变量定义 数据预览
(2)–(4) 结构方程与识别条件 参数设置
(5)–(8) 第一阶段回归与弱工具检验 第一阶段回归 / 诊断检验
(9)–(16) 第二阶段回归、残差与 \(R^2\) 第二阶段回归
(17)–(19) Hausman / Sargan-Hansen / JB 诊断检验
图表路径索引 图表清单

10. 实验流程图(可选)

图 1 IV/2SLS 实验流程图
数据导入 → 变量选择(因变量/内生/工具/外生) → 第一阶段回归 → 第二阶段回归 → 诊断检验 → 图表与 Excel 输出 → 论文结果整理。

11. 示例参数表模板(可选)

表 1 IV/2SLS 参数设置示例(数值仅作演示)

参数 符号 示例值 说明
因变量 \(y\) wage 结果变量
内生变量 \(X_e\) educ 内生解释变量
工具变量 \(Z\) mother_educ, father_educ 与内生变量相关但外生
外生变量 \(X_x\) exper, age 控制变量
是否含截距 True 建议保留
显著性水平 \(\alpha\) 0.05 置信区间/检验阈值
诊断检验 Weak IV / Hausman / Sargan / JB 可勾选

12. 论文写作模板

“本文采用工具变量两阶段最小二乘(IV/2SLS)处理解释变量的内生性问题。首先利用工具变量与外生控制变量对内生解释变量进行第一阶段回归,检验工具变量相关性;随后在第二阶段使用第一阶段拟合值估计结构方程,并报告系数、标准误、显著性与置信区间。进一步结合弱工具变量检验、Hausman 检验与过度识别检验,综合判断识别策略的有效性与估计结果的稳健性。”

13. 示例结果表模板(可选)

表 2 第二阶段回归结果示例

变量 系数 标准误 t 统计量 p 值 95%CI 下限 95%CI 上限 显著性
const 10.20 2.15 4.73 0.000 5.95 14.43 ***
educ 0.66 0.22 3.00 0.003 0.23 1.09 **

14. 单篇终审补充

14.1 图题与表题对齐建议

  • 第一阶段回归第一阶段_<内生变量名> 表可写为:表X IV/2SLS 第一阶段回归结果。
  • 第二阶段回归 表可写为:表X IV/2SLS 第二阶段回归结果。
  • 诊断检验 表可写为:表X IV/2SLS 诊断检验结果。
  • 参数设置 表可写为:表X IV/2SLS 参数设置与变量选择。
  • 图表清单 表可写为:表X IV/2SLS 图表索引与路径。
  • 数据预览 表可写为:表X IV/2SLS 数据预览。
  • 01_first_stage_diagnostics.png 建议写为:图X 第一阶段回归诊断图。
  • 02_second_stage_diagnostics.png 建议写为:图X 第二阶段回归诊断图。
  • 03_instrument_strength.png 建议写为:图X 工具变量强度图。
  • 04_residual_diagnostics.png 建议写为:图X 第二阶段残差诊断图。
  • 05_true_vs_pred_line.png 建议写为:图X 第二阶段真实值与预测值对比图。

14.2 终审说明

  • 当前实现的第一阶段导出有两种形态:若只有一个内生变量,sheet 名通常为 第一阶段回归;若有多个内生变量,则会拆成 第一阶段_<变量名>。正文不应把第一阶段结果表写死成唯一页名。
  • 结构方程主结果应以 第二阶段回归 为准;诊断检验 用于支撑识别有效性,不应替代主回归结果表。
  • 当前图件是固定的 5 张诊断图,且围绕第一阶段、第二阶段、工具强度和残差展开,因此论文可以按这一顺序组织结果章节。
  • repro_iv2sls_template_<时间戳>.py 复用本次变量选择、显著性水平和数据路径重新导出,因此附录里若要写复现说明,应强调“变量配置级复现”,而不是仅给出命令行示意。

14.3 全量强化补充

本次全量强化绑定的主结果目录为 具体的算法2/IV_2SLS-工具变量和两阶段最小二乘/results/IV2SLS_20260329_165308。该目录内主工作簿为 IV2SLS分析结果_20260329_165308.xlsx,实际工作表为 第一阶段回归第二阶段回归诊断检验参数设置图表清单数据预览。同时目录内可直接核验到 5 张真实图件:01_first_stage_diagnostics.png02_second_stage_diagnostics.png03_instrument_strength.png04_residual_diagnostics.png05_true_vs_pred_line.png,与文档前面的图题建议一致。

需要单独说明的是,当前这轮主结果目录内没有与之同名配套的 repro_inputs/ 子目录和 repro 脚本;现有复现实物位于结果根目录 具体的算法2/IV_2SLS-工具变量和两阶段最小二乘/results/ 下的 repro_iv2sls_template_20260329_165307.py。该脚本真实参数写法为 SRC_FILE = 'iv2sls_window1_input.csv',并绑定 DEPENDENT = 'y'ENDOGENOUS = ['x1']INSTRUMENTS = ['z1']EXOGENOUS = ['x2']ALPHA = 0.05。这说明 IV/2SLS 当前已经有 repro 脚本,但输入路径仍是模块根目录侧文件口径,而不是 repro_inputs/... 相对副本口径。

因此,这篇文档在描述工程复现链时应分开写:主结果证据来自 IV2SLS_20260329_165308/ 这一轮目录,复现实物来自结果根目录模板脚本与 iv2sls_window1_input.csv。如果论文要强调“完全自包含复现包”,当前实物证据仍不应误写成已经切换到 repro_inputs 目录模式。

15. 软件实现核查补充(2026-07)

  • 当前实现的主结果目录应写作 具体的算法2/IV_2SLS-工具变量和两阶段最小二乘/results/IV2SLS_20260329_165308,主工作簿和 5 张诊断图已经形成闭环。
  • 论文正文应围绕 第一阶段回归第二阶段回归诊断检验参数设置图表清单数据预览 来写,不要把第一阶段页名写死成唯一形式。
  • 当前复现脚本在 results 根目录,且输入仍是 iv2sls_window1_input.csv,因此它属于“结果根目录模板脚本 + 同目录 CSV 快照”口径,不是 repro_inputs 子目录口径。
  • 如果后续要写附录,应该明确区分主结果目录与根目录复现脚本,不要把两者说成同一次导出。