简介:中介效应检验是实证研究中解析自变量如何通过中介变量影响因变量的常用方法,该资源以Word文档形式系统梳理了逐步检验法、Sobel检验与Bootstrap检验三种主流方法的操作流程和STATA实现。内容不仅给出三类方法的适用条件、检验步骤与判定标准,还结合回归方程和输出结果示例,展示如何通过c、a、b、c'等系数判断完全/部分中介效应,并计算中介效应在总效应中的占比。文档中整理变量中心化处理、sgmediation命令安装与调用、Bootstrap重复抽样及置信区间判断等关键操作,同时说明中介效应比例的结果意义,适合正在撰写毕业论文或学术论文、尤其需要进行机制分析的经济管理及社科领域研究者参考。资源包仅包含1个docx文件,共计154KB,轻量便携。目前已有596人学习下载,其内容凝练,便于快速掌握中介效应检验的核心要点并应用于实证分析。
1. 中介效应检验为什么绕不开逐步法与Sobel:先看懂两条路径再动手
第一次跑中介效应的人,多半是在这一步卡住的:总效应显著,a 路径也显著,第三步回归表里同时出现 X 和 M,突然不知道到底该看哪个系数;到了写结论时,又被“完全中介还是部分中介”的措辞绕晕。你手里这份《中介效应(逐步检验法与Sobel检验)》文档,就是把这两条最经典的检验路径收在一起,讲清楚三步回归怎么跑、Sobel 的 z 值从哪里取数、输出结果怎么报告。它适合刚接触问卷实证的研究生,也适合被审稿人追问“中介效应的检验方法依据”的从业者——本质上它是一份能照着操作的方法学笔记,而不是泛泛的原理介绍。
2. 逐步检验法的完整操作:三步回归、系数判读与过时的完全中介分类
2.1 经典三步:先看 c,再看 a,最后看 b 与 c' 的配合
逐步检验法也叫因果步骤法,核心是不直接检验“X 通过 M 影响 Y”这个乘积,而是拆成三个回归方程,逐个看系数是否显著。这是它在教学里最容易被看懂、也最常被误用的地方。
设 X 为自变量,M 为中介变量,Y 为因变量。第一步跑 Y 对 X 的回归,得到总效应系数 c;第二步跑 M 对 X 的回归,得到系数 a;第三步把 X 和 M 同时放进方程,得到 Y 对 M 的系数 b,以及控制了 M 之后 X 对 Y 的直接效应系数 c'。每一步的判据如下表。
| 步骤 | 回归方程 | 要看的系数 | 核心判据 |
|---|---|---|---|
| 第一步 | Y = cX + e1 | c | c 显著,说明存在可被解释的总效应 |
| 第二步 | M = aX + e2 | a | a 显著,说明 X 能解释中介变量 |
| 第三步 | Y = c'X + bM + e3 | b、c' | b 显著则间接路径成立;c' 决定后续表述方向 |
这里的先后顺序不能乱,但也不代表每一步都必须是“显著”才能走下去。一个常见的操作误区是把第三步当成对前两步的重复验证:实际上第三步的作用是同时估计 b 和 c',它解决的是“控制了中介之后,X 还有没有直接效应”的问题。我一般会让新手在跑这一步之前先把变量中心化,尤其在 X 和 M 相关度较高的时候,第三步回归里的系数标准误容易膨胀,中心化能缓解一部分共线性压力,虽然它不是万能药。
还有一个容易被忽略的点:三个方程的样本量必须一致。如果你在 SPSS 里用列表删除缺失值,三步回归的有效样本可能悄悄不一样,ab 两个系数来自不同的样本,结论就失去了同一基础上的可比较性。这是比系数本身更要命的坑。
2.2 完全中介与部分中介:一个已经过时的分类
教科书里有一段经典表述:如果第三步回归中 c' 不显著,就叫完全中介;如果 c' 仍然显著,就叫部分中介。这句话在新手阶段很容易被当成结论模版直接抄进论文,但它在实操检验中已经不太被推荐了。
原因在于检验功效。c' 不显著可能是因为效应确实被完全传导,也可能只是样本量不够、把握度太低,导致本来存在的直接效应没有被检测出来。把“p 值大于 0.05”当成“没有直接效应”的证据,逻辑上站不住。现在更多实证研究直接报告间接效应 ab 的置信区间,而不是纠结于给中介状态贴标签。你如果拿一份旧论文模板照搬“完全中介”四个字,碰到较真的审稿人很可能会被追问一句:这个结论的把握度依据是什么?
另外需要知道一个叫“遮掩效应”的情形:当 ab 与 c' 符号相反时,总效应 c 反而可能不显著或很小。这时候如果你按经典流程第一步就停手,会丢掉真实存在的中介关系。所以逐步法的第一步“总效应不显著就不继续做”,在新文献里已经被明确批评过。这份文档在后半部分讲 Sobel 检验时,其实也是为这种情况留了一条后路——直接检验 ab 是否非零,而不必先等总效应过关。
2.3 用一份 SPSS 输出看懂整套检验
在 SPSS 里操作并不复杂,关键是知道每次回归要勾选什么、看哪张表。最常见的做法是连续跑三次线性回归,变量层级按 2.1 的表格放。以下参数设定是我在复现这类文档时常用的基准。
| 步骤 | 放入因变量 | 放入自变量 | 回归方法 | 需要读取的输出 |
|---|---|---|---|---|
| 1 | Y | X | Enter(强制进入) | c 的未标准化系数 B、标准误 SE、p 值 |
| 2 | M | X | Enter | a 的 B、SE、p 值 |
| 3 | Y | X、M | Enter | b、c' 的 B、SE、p 值 |
操作路径是 Analyze → Regression → Linear,因变量和自变量按表填入。回归方法默认 Enter 即可,不需要改成 Stepwise——逐步回归的变量筛选方式会引入额外的算法不确定性,在路径检验里反而给自己添乱。输出结果里真正要读的是 Coefficients 表:B 列是未标准化系数,Std. Error 列是标准误,Sig. 列是 p 值。模型摘要里的 R 方和 F 检验可以报告,但不是路径判定的核心。
这里的系数是否显著,对应 2.1 表格里的判据。我想强调的一点是:SPSS 默认的报告精度只到小数点后三位,如果你打算后续手算 Sobel 的 z 值,最好把 Coefficients 表的显示精度调高,或者直接从复制粘贴的结果里保留四位小数。很多人在这一步只抄了 p 值,没抄标准误,等到要算 Sobel 时发现数字不够,还得回头重新跑一遍,纯属给自己加工作量。
3. Sobel 检验的原理与手工计算:z 值背后的标准误从哪来
3.1 从逐步法到 Sobel:为什么需要一个乘积显著检验
逐步检验法的逻辑是间接推断:a 显著、b 也显著,所以推测 ab 这条间接路径成立。但它没有直接给 ab 一个标准误,你也无法据此写出“间接效应的 95% 置信区间”。审稿人如果要求报告效应量区间,逐步法就交不出东西。
Sobel 检验的思路很直接:把中间效应定义为乘积 ab,然后用一阶近似构造它的标准误,再算 z 统计量。公式是:
z = a × b / √(b² × SEa² + a² × SEb²)
其中 SEa 来自第二步回归 M = aX + e2 中 a 的标准误,SEb 来自第三步回归 Y = c'X + bM + e3 中 b 的标准误。注意 SEb 不能拿第二步回归的某个系数来顶替,这是手算 Sobel 时最容易翻车的地方。公式本身假设 ab 的抽样分布在样本量够大时近似正态,所以 z 值可以对照标准正态分布临界值 1.96 来判断,|z| 大于 1.96 就认为间接效应在 0.05 水平显著。
3.2 手工计算 Sobel z 值:拿回归输出就能算
我一般会建议新手先手工算一次,不是为了建议大家以后都手算,而是为了理解软件输出里那个 z 值是怎么来的。我们取一组简化的示例数据演示:
| 参数 | 数值 | 来源 |
|---|---|---|
| a | 0.40 | 第二步回归:X → M 的系数 |
| SEa | 0.12 | 第二步回归中 a 的标准误 |
| b | 0.35 | 第三步回归:M → Y 的系数 |
| SEb | 0.10 | 第三步回归中 b 的标准误 |
分子 a × b = 0.40 × 0.35 = 0.14。分母先算 b² × SEa² = 0.35² × 0.12² = 0.1225 × 0.0144 = 0.001764;再算 a² × SEb² = 0.40² × 0.10² = 0.16 × 0.01 = 0.0016。两项相加得 0.003364,开根号约等于 0.058。最后 z = 0.14 / 0.058 ≈ 2.41,大于 1.96,说明间接效应显著。
如果你嫌手算容易出错,在 Excel 里写一行也能完成:
= (A1*B1) / SQRT(B1^2*C1^2 + A1^2*D1^2)假设 A1 到 D1 分别填 a、b、SEa、SEb。注意这里的分母结构是交互的:a 的平方配 SEb 的平方,b 的平方配 SEa 的平方,很多人在这一步会配反。配反之后 z 值会变小或变大,结论可能整个颠倒。
3.3 Sobel 检验的适用边界:小样本中的正态假设陷阱
Sobel 检验看着简洁,但它的软肋在于正态近似。ab 的抽样分布并不总是对称的,尤其当中介效应较弱或样本量偏小时,分布会明显偏态。在这种情况下,Sobel 的 z 值可能给出误导性的显著性——有时候 z 大于 1.96,但真实置信区间其实包含了 0。
所以对它的定位应该是“快速筛选工具”,而不是最终裁决。如果你手上样本量在 200 以下,或者 a、b 中存在一个系数本身就不太稳的情况,我会建议直接把 Bootstrap 结果作为主要依据,Sobel 的 z 值只放在脚注或附录里参考。这份文档把逐步法和 Sobel 放在一起讲,本质上是在帮你建立一条从“经典方法”走向“现代方法”的过渡路径——先用最容易理解的工具确认逻辑,再用更稳健的工具下最终结论。
4. Bootstrap 与软件实操:用 PROCESS 和 R 把间接效应区间算出来
4.1 为什么现在普遍推荐 Bootstrap:从功效与分布两个角度看
Bootstrap 的核心思路是有放回地从原始样本中反复抽样,每抽一次就重估一遍 a 和 b,得到大量 ab 的估计值,然后用这些估计值组成一个经验分布,直接取 2.5% 和 97.5% 分位数作为 95% 置信区间。区间不含 0,判定显著。它不需要假设 ab 服从正态分布,这是它相对于 Sobel 最大的优势。
三种方法的对比,可以从检验对象、分布假设、检验力和输出内容四个维度来看。
| 方法 | 检验对象 | 分布假设 | 检验力 | 核心输出 |
|---|---|---|---|---|
| 逐步法 | a、b 分别检验 | 依赖回归 t 检验的正态假设 | 偏低 | 两个 p 值 |
| Sobel 检验 | ab 乘积 | 近似正态 | 中等,小样本不稳 | z 值、p 值 |
| Bootstrap | ab 乘积 | 无分布假设 | 较高 | 置信区间 |
你可以把 Bootstrap 看成 Sobel 的“后悔药”:Sobel 卡在正态假设上,Bootstrap 不卡;Sobel 只能给你一个点到为止的显著性判断,Bootstrap 直接给你一个区间,方便你在论文里报告效应量范围。现在不少期刊的方法学描述里,已经默认要求中介效应要带 Bootstrap 置信区间。
4.2 用 SPSS 的 PROCESS 宏跑 model 4:参数怎么设
如果你熟悉 SPSS 而不是 R,最常见的做法是安装 PROCESS 宏。装上之后,它在分析菜单里会增加一个 PROCESS 入口。跑简单中介模型时,最关键的一组参数如下。
| 参数项 | 推荐值 | 含义说明 |
|---|---|---|
| Model Number | 4 | 4 表示简单中介模型,不包含调节 |
| Bootstrap Samples | 5000 | 抽样次数越多,区间分位数越稳定 |
| Confidence Level | 95 | 对应常规显著性水平 |
| 是否输出 Sobel | 勾选 | 能同时得到 z 值,便于与其他结果对照 |
把 X、M、Y 分别拖入对应变量框后直接运行。输出文件里的关键位置在 Indirect effect(s) of X on Y 这一段,里面会列出间接效应的点估计值、标准误,以及 Bootstrap 的 LLCI(下限)和 ULCI(上限)。判定规则就是看这一行的区间是否包含 0。同时 PROCESS 也会顺带给出 Sobel 检验的 z 值和 p 值,作为正态近似下的参考。
一个实际经验:如果你的数据里存在缺失值,PROCESS 默认会做列表删除,样本量会明显缩水。跑之前先看一眼有效样本量是多少,如果删除比例超过 10%,就要在论文里如实报告,甚至考虑用多重插补后的数据集再做一遍稳健性检验。
4.3 用 R 做交叉验证:lavaan 与 mediation 的参考代码
我习惯在 SPSS 跑完之后,用 R 再做一遍交叉验证。两套工具结果一致,结论才算硬。常用的是 lavaan 包,它把中介效应写成一个结构方程模型,通过路径系数和自定义参数同时估计间接效应。示例代码如下。
library(lavaan) model <- ' M ~ a*X Y ~ b*M + c*X ab := a*b ' fit <- sem(model, data = df, se = "bootstrap", bootstrap = 5000) parameterEstimates(fit, ci = TRUE)代码里的第一行定义中介变量 M 对 X 的回归,系数命名为 a;第二行定义 Y 同时被 M 和 X 解释,系数命名为 b 和 c;第三行用 := 语法把间接效应定义为 a 与 b 的乘积。sem() 中 se = "bootstrap" 表示使用自助标准误,bootstrap = 5000 是抽样次数。输出结果里找到 label 列为 ab 的那一行,看它的 ci.lower 和 ci.upper 是否包含 0。有一点值得注意:lavaan 默认使用完整信息估计,对有缺失值的数据处理策略比列表删除更温和,但前提是变量分布满足模型假设,跑之前先看一下变量是否近似正态。
另一个选择是 mediation 包,它对中介效应的定义更贴近因果推断框架,输出里能看到平均因果中介效应和直接效应。参考代码如下。
library(mediation) set.seed(2024) med_model <- lm(M ~ X, data = df) out_model <- lm(Y ~ X + M, data = df) med_result <- mediate(med_model, out_model, treat = "X", mediator = "M", boot = TRUE, sims = 5000) summary(med_result)这里先分别用 lm 拟合两步回归模型,然后在 mediate() 里指定处理变量为 X、中介变量为 M,boot = TRUE 表示使用非参数 Bootstrap,sims = 5000 是模拟次数。set.seed(2024) 的目的是让结果可复现。输出里的 ACME(平均因果中介效应)对应的就是 ab,ADE 是直接效应 c',下面还会给出 95% 置信区间。我一般把 lavaan 和 mediation 的结果放在一起看:如果两个包的区间都包含 0,那结论基本没悬念;如果一个显著一个不显著,问题通常出在模型设定或样本分布上,需要回头检查变量。
5. 常见问题与避坑:中介效应检验中的六个高频翻车点
5.1 总效应不显著就停手,直接丢掉遮掩效应
现象是第一步回归跑完,c 的 p 值大于 0.05,于是很多人直接判定“不存在中介效应”,整篇分析到此为止。但实际情况往往没这么简单:当中介路径 ab 与直接效应 c' 符号相反时,总效应 c 会被抵消,变得不显著或数值很小,这种情形被称为遮掩效应。若按经典流程第一次筛选就淘汰,等于把真实存在的中介机制漏掉了。
解决方法是把流程改成先看间接效应本身,而不是以总效应作为守门条件。先用 Bootstrap 检验 ab 的区间是否包含 0,如果区间显著,再进行后续解释。遇到 c 不显著但 ab 显著的数据,要意识到模型里可能存在另一条方向相反的竞争路径,这不是错误,反而是值得分析的机制。
5.2 Sobel 显著但 Bootstrap 区间包含 0,两个结果打架
现象很典型:Sobel 的 z 值大于 1.96,算出来 p < 0.05,但 Bootstrap 的置信区间横跨 0,一正一负。没有经验的人会挑一个自己舒服的结果放进论文,这是最危险的做法,因为两个方法检验的是同一个效应,不可能都对。
原因在于 Sobel 的正态近似在小样本或弱效应组合下失真,ab 的经验分布偏态明显,正态理论计算的尾部概率不可靠。解决方式是明确以 Bootstrap 区间为最终判定依据,Sobel 结果只在方法学描述里作为历史参照。如果两个结果经常打架,说明样本量可能没达到模型稳定所需的水平,优先考虑扩大样本或做敏感性分析。
5.3 第三步回归出现符号反转或 VIF 超标
第三步方程同时放入 X 和 M 后,有时会发现 b 的符号与理论预期相反,或者 c' 与 c 的符号方向都变了。查看共线性诊断时,VIF 超过 10 的情况并不少见,这与 X 和 M 相关性过强直接相关。
原因通常是变量没有中心化,或 X 与 M 的相关系数超过 0.6,导致回归系数的估计方阵病态。解决方法是先做变量中心化,再看相关矩阵确认 X 与 M 的冗余程度;如果中心化之后 VIF 仍然很高,需要重新审视模型设计,是否中介变量和自变量本质上在测量同一个构念。不要强行用岭回归之类的方法掩盖共线性,那会让系数的含义更难解释。
5.4 中介变量是分类变量,还硬套线性回归路径
现象是 M 取值只有 0 和 1,仍然用 lm 或 SPSS 的线性回归做第二步,产出 a 系数。这一步的逻辑错误在于线性回归假设因变量为连续变量且误差正态分布,分类结果变量直接回归会得到异方差残差,系数标准误失效。
正确的做法是第二步改为逻辑回归,M 对 X 做 logistic 模型,Y 对 X 和 M 的第三步也需要根据 Y 的类型匹配相应模型。此时中介效应的合成不再是简单的 a × b,需要用系数尺度上的间接效应定义,最好借助专门的程序来计算。遇到这种情况,不建议手工套 Sobel 公式。
5.5 缺失值被默认删除,三步回归的样本量悄悄缩水
现象是三步回归都能正常运行,但分别看有效样本量时发现第一步 300 个,第二步 280 个,第三步只剩 260 个。间接效应 ab 的两次估计来自不同的样本子集,模型的拟合基准不一致,结论的可比性就成了问题。
原因在于 SPSS 和很多统计默认采用列表删除,任何一个变量有缺失就整行剔除。解决方式是先做缺失值报告,确认缺失模式;如果缺失比例不高,可以在论文里报告完整样本分析;如果比例超过 10%,建议用多重插补生成完整数据集,再做一次敏感期分析。至少要让三步回归基于同一样本。
5.6 用 c' 的 p 值划分完全中介与部分中介
现象是第三步回归 c' 的 p 值大于 0.05,立刻在论文里写“完全中介成立”。这个写法的风险在于,p 值大于 0.05 不能证明效应不存在,可能只是把握度不够,样本量不足以检出真实存在的微小直接效应。打着“完全中介”旗号下结论,实际上是在给随机波动背书。
解决方法是放弃完全中介这个分类标签,改为直接报告间接效应 ab 的点估计和置信区间,再单独陈述 c' 的点估计与置信区间。若 c' 区间较宽且跨越 0,应表述为“直接效应证据有限”,而不是断言它不存在。这个表述习惯能有效保护你的论文不被审稿人挑逻辑缺陷。
6. 结果报告进阶:区间、效应量与遮掩效应的表述方法
6.1 一张结果表应该放哪些值
会跑检验只是第一步,会报告才是论文能过审的关键。我平时整理中介效应结果时,最少会放下面这些字段。
| 报告项 | 值示例 | 说明 |
|---|---|---|
| 未标准化系数 a、b、c' | 0.40、0.35、0.18 | 分别来自对应回归方程 |
| 系数标准误 SEa、SEb | 0.12、0.10 | 后续算区间的基础 |
| 间接效应 ab 点估计 | 0.14 | a 与 b 的乘积 |
| Bootstrap 95% CI | [0.03, 0.26] | 区间不含 0 才可判定显著 |
| 效应量 ab/c | 0.14 / 0.32 ≈ 0.44 | 间接效应占总效应的比例 |
你会发现表格里并没有 p 值这一列,不是因为它不重要,而是因为置信区间已经包含了显著性信息,同时还能提供方向与精度。现在越来越多期刊要求报告未标准化系数而非只给标准化系数,因为标准化后的间接效应在不同量表间横向比较意义不大。
6.2 遮掩效应的报告写法
如果遇到总效应不显著但间接效应显著,报告里的措辞需要小心。一个我常用的写法是:“本研究中,X 对 Y 的总效应不显著,但 Bootstrap 检验显示间接效应显著(ab = 0.14,95% CI [0.03, 0.26]),同时直接效应方向相反,符合遮掩效应的特征。这表明 X 对 Y 存在通过 M 的负向传导路径,而其余路径效应与之方向相抵。”这样写的好处是既不回避总效应的尴尬,又清楚交代了模型里存在两条方向相反的路径,审稿人看到的不是你的指标不好看,而是你对数据机制的理解在加深。
6.3 拿到一份中介效应资料,先看什么
从那以后我每次拿到中介效应相关的文档或讲义,第一件事永远是先把 X、M、Y 三条路径画出来,在线上标好 a、b、c',然后核对变量类型、数据来源、缺失值处理方式这三项,再决定要不要读它的结果部分。能给出置信区间和效应量的资料,通常比只堆 p 值的资料含金量高。按照这个顺序走一遍,你会发现大部分所谓复杂的检验流程,本质都是在解决同一个问题:间接效应 ab 到底是不是零、区间有多宽。希望这份操作路径能帮你在论文里少几次返工。
本文还有配套的精品资源,点击获取