这份案例接着 OLS 抽样教学,固定同一份数据与回归,只改变标准误的计算。数据完全模拟,结果由 Python 与 Stata 独立实算,便于逐项核对。
同一模拟样本,只改变协方差估计
随机数种子为 42,500 个独立观测。x 服从 Uniform(−2,2),z 服从标准正态,二者独立;y = 1 + 2x + (0.3 + 1.2|x|)z。误差条件均值为零,方差随 x 改变。两次 OLS 都带截距,使用全部 500 行,没有换样本或添加控制变量。
普通协方差使用残差均方;HC1 使用残差平方构成的 sandwich 协方差,并乘 n/(n−k),本例 k=2 包含截距。Python 直接计算矩阵式,Stata 使用 regress y x 与 regress y x, vce(robust)。
| 标准误方法 | 斜率 | 标准误 | 95% 区间 | p | N |
|---|---|---|---|---|---|
| 普通 | 1.973 | 0.066 | 1.843–2.103 | 7.65e-113 | 500 |
| HC1 | 1.973 | 0.084 | 1.807–2.138 | 4.35e-82 | 500 |
斜率保持约 1.973,HC1 的斜率标准误从约 0.066 增为 0.084,区间变宽;截距的两种标准误几乎相同且 HC1 略小,完整结果见 CSV。本次两种推断下斜率都显著,不制造显著性翻转,也不推断稳健标准误总会更大。
区间与 p 值都使用自由度 498 的 t 参考,不能当作异方差下精确有限样本保证。HC1 只处理这里的异方差推断,不修复内生性、遗漏变量、组内相关或时间相关。 Stata 官方方法说明
下载代码、数据和实际输出
- 解压到新目录并保留一份参考成果,按 README 准备 Python 依赖。安装依赖会访问软件源,分析本身离线。
- 从包根运行 python analyze.py,核对完成标记、数据行数和实际结果。默认覆写包内 results/ 同名文件。
- Stata 在新的合法会话中切换到包根,运行 do analysis.do;不需要 Python 或额外 Stata 命令。clear all 清空该会话,先保存已有工作。
本次在 macOS 使用 Python 3.11.11;异方差另用 Stata 19.5 独立核对,Windows 真机未覆盖。模拟仅用于说明方法与计算,不代表真实研究结果、真人教学效果或模型自动执行能力。