稳健性检验
这个方法是做什么的
这个模块做的不是“稳健估计”,而是“换设定重跑”。 它不给你一个抗离群点的新估计量,而是先跑一个普通 OLS 基线,再自动在几个替代设定下把同一个回归重做一遍,然后逐个自变量比较系数的符号与显著性有没有变——也就是论文里“稳健性检验”那一小节要交代的事。想要抗离群点的估计量本身,那是另一个模块。
变体固定为三类:缩尾(对 Y 与各连续自变量在 1%/99% 分位 Winsorize 后重跑,查异常值敏感性)、滞后一期(按时间/排序变量排序后对自变量整体取一阶滞后,缓解同期反向因果)、分组(按分类变量的每个取值各跑一次子样本回归)。报告给出基线的完整系数表与残差诊断、把全部设定并排的对比表、聚焦关键自变量的系数变动图,以及量化指标:系数极差、变异系数 CV、相对基线的最大偏离、落在基线 95% 置信区间内的比例、显著设定占比,最后按规则给出稳健 / 部分稳健 / 不稳健 / 无法判定的判定。
需要准备什么数据
- 因变量 Y (定量):定量变量(数值)
- 自变量 X (定量):至少 1 个,定量变量(数值)
- 分组变量 (定类, 可选)(可选):定类变量(分组/标签)
- 时间/排序变量 (定量, 可选)(可选):定量变量(数值)
数据要求
- 数据表至少 30 行。
- 单列缺失率不超过 20%。
- 不接受取值全都一样的列(零方差列没有可分析的变异)。
- 「分组变量 (定类, 可选)」的类别数需在 2~10 之间。
- 「分组变量 (定类, 可选)」的每一组至少 10 个样本。
以上条目由系统从该方法的校验规则直接生成,与上传数据时的实际拦截规则一致。
什么时候用它
- 论文或报告需要一节稳健性检验,要说明主回归结论不是某个设定下的偶然产物
- 担心少数极端观测在驱动结果,想看看剔除它们的影响后结论还在不在
- 想知道结论在不同子样本(对照组 / 试验组、地区、年份)里是否一致
- 有时间维度,想用滞后自变量粗略缓解同期双向因果的质疑
因变量与自变量都必须是定量列,分组变量为定类(每组至少 10 例、组内自变量要有变异,否则该组被跳过),时间/排序变量为定量。有两点要留意:不提供排序变量时按数据的行序做滞后,此时滞后的含义完全取决于你上传数据时的排列顺序;另外排序变量可以与某个自变量共用同一列——“回归里控制时间趋势”与“按时间滞后一期”可以用同一个时间列。
什么时候不要用它
- 你要的是抗离群点的估计量本身(Huber 之类的 M 估计),而不是换设定重跑:用「稳健回归(Huber M估计)」,它直接给出对厚尾误差更可靠的系数。
- 因变量不是定量的:本模块的基线是 OLS。两分类用「逻辑回归」或「二分类概率单位回归(Probit)」,等级用「有序逻辑回归」,计数用「计数数据回归」。
- 模型里有分类自变量:本模块的自变量区只收定量列,不做哑变量编码——需要把分类变量放进模型时用「线性回归 (最小二乘法)」,它按 drop_first 自动编码。
- 数据是面板或分层嵌套结构:分组变体只是把样本切开分别跑,并没有处理组内相关,标准误仍会被低估——个体—时间两维结构用「面板模型」,重复测量或嵌套结构用「混合模型」。
- 真正的问题是内生性:滞后一期只能缓解同期反向因果,它不是工具变量、也识别不了遗漏变量——用「两阶段回归」;有政策冲击与对照组的用「双重差分(DID)」;想做证伪式检验的用「安慰剂检验(Placebo)」。
- 你想检验的是“换一组控制变量 / 换函数形式结论还成不成立”:本模块只做上述三类变体,不会替你换自变量集合——逐步加入变量块看系数变化用「分层回归」,按统计判据筛变量用「逐步回归」或「特征筛选」。
容易误读的地方
- 数据里本来就没有极端值时,缩尾变体与基线一致什么也证明不了。 卡① 会实测各变量 3×IQR 外的占比,占比接近 0 时它会直接写明“缩尾变体与基线的差异预期很小,其一致不足以证明对异常值稳健”,卡⑤ 的学术表述段也会把这句话写进去。这是最容易被当成利好读反的一条:一致是因为压根没动数据,不是因为结论顽强。
- 没有排序变量时的“滞后一期”滞后的是行号,不是时间。 这时结果依赖你上传数据时的排列顺序——按姓名排过序的表,滞后出来的是“上一个人”而不是“上一期”,得到的系数没有任何含义却照样会被列进对比表。要用滞后变体,就把真正的时间列放进排序区。
- 滞后变体和基线本来就不是同一个模型,系数变了不一定是结论脆弱。 它回答的是“上一期的 X 能不能预测这一期的 Y”,与“同期 X 与 Y 的关联”是两个问题;变量若没有跨期持续性,滞后模型的 R² 大幅下降、系数变得不显著是预期之中的,不能直接读成“基线结论不稳健”。判定表把这类差异一并算进了显著性稳定性,要结合具体变体逐个看,不能只看最后那个标签。
- “关键自变量”是本模块按基线里最显著的那个自动挑的,不是你的研究焦点。 卡③ 的第二张图与卡④ 的关键变量判定都围绕它展开。如果你真正关心的变量不是基线中 p 最小的那个,别把这个自动选出来的结论当成对你那个变量的判断——去对比表里纵向读你自己那一列。
- “稳健”只覆盖已经跑过的那几个设定。 卡⑤ 写明了这条方法学边界:没做的设定(不同函数形式、工具变量、其它控制变量集合)不在保证范围内。更要紧的是“无法判定”:可对比的模型少于 2 个时判定就是无法判定,不会默认成稳健;被跳过的变体在卡① 会逐条列出原因,那意味着该维度上的证据缺失,不是该维度上没问题。
- 系数在所有设定下都稳定,仍然只是关联稳定。 稳健性检验没有原假设,也没有传统意义上的效应量,量化的只是系数在各设定间的离散程度。一个被遗漏的混杂变量会在每一个变体里同样地把系数带偏——它偏得非常稳定。因果解读靠的是研究设计,不是靠多跑几个设定。
看到 r = 0.62,X 导致 Y、Y 导致 X、第三个变量同时影响两者、纯属巧合这四种情况都可能,相关系数本身分不清它们。能分清的是研究设计——随机化、工具变量、断点,而不是往模型里多塞几个控制变量。
报告里有什么
- 输出结果一:数据概览与前提检验
- 输出结果二:基线模型主结果与跨设定稳健性对比表
- 输出结果三:跨设定系数对比可视化
- 输出结果四:稳健性量化指标与判定
- 输出结果五:结论与学术表述
第一张图并排比较全部自变量在各设定下的系数;第二张图聚焦关键自变量,并以基线模型的 95% 置信区间为参考带——变体系数落在带内即视为与基线无实质差异。