分层回归

所属分类:回归分析

这个方法是做什么的

按理论把自变量分成若干块,一块一块地往模型里加,每加一块就看解释力比上一块多了多少(ΔR²),并用 ΔF 检验这一块新变量的系数是不是同时为 0。它回答的问题和同族其他方法不一样:不是“哪些变量该留下”(那是「Lasso回归」与「逐步回归」的活),而是“在已经控制住前面那些变量之后,我关心的这一组还有没有额外贡献”。第一个拖拽区是控制层,后面依次是层次1、层次2……可以继续增加层次;顺序由你定,模块不替你排。这也是本族里唯一直接收定类自变量的模块,定类列按 drop_first 规则自动编码成哑变量并丢掉一个基准水平。

主结果是两张表。系数表把每一层的模型并排成列(B、标准误、t、p、β 与 95% 置信区间,尚未进入的变量记“—”),可以直接看同一个变量的系数在后续变量加进来之后怎么变。层次汇总表给每层的 R²、调整 R²、整体 F、ΔR²、ΔF 及其自由度,以及 Holm 校正后的 p。第四张卡把两件事分开量化:每一层带来多少额外解释力(ΔR²、占最终 R² 的比例、增量 f²),以及最终模型里每个变量各自贡献多少(偏 η²、半偏 r²、VIF);最终 R² 还配有由非中心 F 反解得到的 95% 置信区间。第三张卡是最终模型的系数森林图与逐层的累计 R²/ΔR² 图。

需要准备什么数据

  • 放入 [定量] 变量Y (变量数=1):定量变量(数值)
  • 控制层: 放入 [定量] 或 [定类] 变量 (变量数≥0)(可选):不限
  • 层次1: 放入 [定量] 或 [定类] 变量 (变量数≥1)(可选):不限

数据要求

  • 数据表至少 30 行。
  • 单列缺失率不超过 30%。
  • 不接受取值全都一样的列(零方差列没有可分析的变异)。

以上条目由系统从该方法的校验规则直接生成,与上传数据时的实际拦截规则一致。

什么时候用它

  • 想论证“把我关心的这组变量加进来之后,模型解释力显著提升”——控制变量放第一层,关注变量放后面
  • 想观察某个变量的系数在控制了后续变量之后怎么变化,作为混杂或中介的线索
  • 需要论文里常见的那种“模型1 / 模型2 / 模型3”并排系数表
  • 自变量里有定类列,又不想自己动手做哑变量编码

因变量必须是定量列;控制层与各层次合计至少放 1 个自变量。同一个变量不能出现在两个层次里,否则后一层的 ΔR² 恒为 0,入口会直接拒绝。列表删除缺失后各层使用的是同一批完整样本——这是 ΔR² 与 ΔF 可比的前提,第一张卡专门核查这一条并给出实测结果。有效样本量必须大于编码后自变量总数加一,经验上每个自变量需要 10~20 个观测,第一张卡会列出实测的 n/k。

什么时候不要用它

  • 层次顺序没有理论依据,你只是想让数据决定谁进谁不进:那是筛选不是增量,用「逐步回归」按显著性增删(但它的 p 值因选择效应失真),或用「Lasso回归」按惩罚做选择并给出入选频率。
  • 只有一组自变量、根本不需要分块:用「线性回归 (最小二乘法)」,它的输出与本模块最后一层等价,还多给 Ramsey RESET 设定检验与 Cook's D 强影响点。
  • 你要检验的是交互效应(某变量的作用随另一个变量而变):本模块不会替你生成交互项,把乘积项手工塞进最后一层也容易与主效应共线,直接用「调节作用分析」。
  • 你要检验的是中介路径(X 通过 M 影响 Y):看系数在层间的变化只能提供线索,不构成中介检验,用「平行中介效应」或「链式中介效应」。
  • 层内共线严重:逐变量效应量分解会失真,先用「VIF共线性诊断」查清是哪几个变量凑成的;要保留全部变量并稳住系数用「岭回归(Ridge)」,几个同源指标想压成一个维度再进模型用「主成分分析(PCA)」。
  • 因变量不是数值型:是 / 否用「逻辑回归」,等级用「有序逻辑回归」,计数用「计数数据回归」。

容易误读的地方

  • 控制层那一行的 ΔR² 就是它自己的 R²,不要当成“控制变量的贡献”来汇报。 第一个模型前面没有东西可比,所以它的 ΔR² 与 ΔF 和它自身的 R² 与整体 F 是同一组数。控制变量本来就是挑那些与因变量有关的,这一行通常又大又显著,但那不是研究发现。真正要看的是你关心的那一层的 ΔR² 与校正后的 ΔF。
  • 换一个进入顺序就是另一套 ΔR²,事后按结果挑顺序是 p-hacking。 只要变量之间相关,先进的那一层就会把共享的解释力先吃掉,后进的一层只剩残余。所以“层次1 的 ΔR² 是 0.33”这句话,离开“控制层里放的是哪两个变量”就没有意义。论文里必须写明层次顺序及其理论依据——模块在数据要求和表注里反复强调的就是这一条。
  • 增量 f² 的分母统一取最终模型的 R²,中间层的 f² 因此与你单独拿两个模型算出来的不同。 表里的公式是 ΔR² 除以 (1 − 最终模型 R²)。只有最后一层与常见教科书口径重合;中间层因为分母用了更大的 R²,f² 会偏大。引用这个数字之前先把口径说清楚。
  • ΔF 显著和 ΔR² 有实际意义是两回事,而且逐层判定要看 Holm 校正后的 p。 大样本下 ΔR² = 0.005 也可能显著,小样本下 ΔR² = 0.10 也可能不显著,判断“这一层值不值得加”要同时看 f² 的量级与校正后的 p。每一层都做一次 ΔF 就是多重检验,表里给了 Holm 列,未校正的那列会高估显著性。还要记住累计 R² 随变量增多单调不减,纯噪声也不会让它下降,所以第三张卡那条越走越高的蓝线本身不构成任何证据。
  • 报告的解释边界会建议“异方差可改用 HC3 稳健标准误”,但本模块没有这个开关。 一旦 Breusch-Pagan 被拒绝,系数的 p 值、95% 置信区间连同 ΔF 检验都会失真,而这里只输出普通 OLS 标准误。产品内可行的做法是先对偏态的因变量做「数据变换(Box-Cox/Yeo-Johnson)」再重跑,或者改用推断不依赖同方差的「分位数回归」——代价是不再有 ΔR² 与 ΔF 这套增量口径。另外前提表里标着“未做”的行表示该检验本次确实没执行,不能读成前提成立。
p 值不是效应量
概念图1 p 值不是效应量
同一个差异,只把样本量从 20 加到 2000:效应量 Cohen's d 始终是 0.30,p 却从 0.35 掉到小于 0.001。p 变小说明「证据变足」,不说明「差异变大」——差多少要看效应量与它的置信区间。

报告里有什么

  1. 输出结果一:数据概览与前提检验
  2. 输出结果二:分层回归系数表与层次汇总
  3. 输出结果三:系数森林图与层次增量图
  4. 输出结果四:层次增量效应量与逐变量贡献
  5. 输出结果五:结论与学术表述
hierarchical_regression
图1
因变量:月度销售额(万元)。本图展示**最终模型(层次1)**各自变量的非标准化系数 B 及其 95% 置信区间(由 statsmodels 的 t 分布区间给出,非正态近似);已略去截距,以免其量级远超斜率系数而压扁须图。
各层次的累计解释力 R² 与增量 ΔR²
图2 各层次的累计解释力 R² 与增量 ΔR²
蓝线为各层模型的累计 R²(模型能解释的因变量方差占比),绿柱为该层相对上一层的增量 ΔR²。切换到「表格」可同时看到 Holm 校正后的 ΔF 显著性。

在线统计分析平台 · 233 种分析方法 · AI 智能解读

在线使用
使用教程