结构方程模型
一、直观理解:把“路径图”变成可估计的方程组
结构方程模型(Structural Equation Modeling, SEM)把实质理论画成路径:哪些潜变量影响哪些潜变量,哪些指标测量哪些潜变量,然后一次性估计测量模型与结构模型。
它适合这类问题:
- “满意度”不可直接观测,由多个问卷题测量;
- 既想看 的中介,又想允许测量误差;
- 多个方程、互为反馈或相关误差需要系统估计。
SEM 的双层结构:
- 测量模型:观测指标 = 载荷 × 潜变量 + 误差;
- 结构模型:潜变量之间的回归/路径。
注意:SEM 中的“因果箭头”首先是研究者的设定;统计拟合好并不自动证明箭头方向正确。识别来自理论约束、时间顺序、实验或外生性论证。
二、适用场景与优缺点
| 类型 | 说明 |
|---|---|
| 适用场景 | 多指标潜变量;中介/路径分析;验证性因子分析(CFA)+ 结构路径;问卷与心理、管理、教育数据。 |
| 核心优点 | 显式处理测量误差;可同时估计多方程;拟合指数体系完善;路径图利于沟通。 |
| 局限与缺点 | 强依赖模型设定;等价模型可拟合同样好但解释不同;样本需求较大;默认线性、正态假设需检查;横截面 SEM 的因果薄弱。 |
三、核心原理与识别
1. 一般形式(LISREL 思想)
测量:
结构:
由参数推出观测协方差 ,与样本协方差 比较,最小化拟合函数(ML、ULS、ADF 等)。
2. 识别
参数必须由 唯一确定。经验规则:t 规则、参照指标固定载荷、避免同时自由估计所有残差相关等。不可识别时优化会失败或给出任意尺度。
3. 拟合评价
常用:、CFI、TLI、RMSEA、SRMR。
拟合好 = 协方差被再现得好 ≠ 因果真。还应报告路径系数、间接效应与 bootstrap 区间。
4. 中介
间接效应 的推断用乘积分部或 Bootstrap,比 Sobel 更稳妥。
四、关键决策
1. 先 CFA 后结构
测量模型不合格时,不要急着解释结构路径。
2. 修正指数
按理论改,而不是为降低 无加相关。
3. 因果增强
时间顺序、工具变量、实验操纵、敏感性分析,比单纯 SEM 拟合更关键。
4. 软件
专业常用 lavaan、Mplus;MATLAB 可用自定义 ML 或通过接口。赛题中也可用“多方程 + 因子分析”分步实现并讲清。
五、MATLAB 示例
下面用可观测变量路径 + 简单中介演示结构思想;完整潜变量 SEM 可用逐步:先 PCA/因子得分,再系统估计(或外部工具)。目标是把识别与间接效应说清。
rng(26);
n = 500;
% 真模型: X -> M -> Y 与 X -> Y
X = randn(n,1);
M = 0.7*X + randn(n,1)*0.7;
Y = 0.4*M + 0.3*X + randn(n,1)*0.7;
% 结构方程(观测 SEM / 路径分析)
% M = a X + e1
% Y = b M + c X + e2
mdl_M = fitlm(X, M);
mdl_Y = fitlm([M X], Y);
a = mdl_M.Coefficients.Estimate(2);
b = mdl_Y.Coefficients.Estimate(2);
c = mdl_Y.Coefficients.Estimate(3);
indirect = a*b;
direct = c;
total = direct + indirect;
fprintf("a=%.3f, b=%.3f, c'=%.3f\n", a, b, c);
fprintf("间接=%.3f, 直接=%.3f, 总计=%.3f\n", indirect, direct, total);
% Bootstrap 间接效应 CI
B = 1000;
ind_boot = zeros(B,1);
for i = 1:B
id = randi(n, n, 1);
a_i = X(id)\M(id); % 无截距简化?更稳用 fitlm
% 用协方差公式含截距
biM = [ones(n,1) X(id)]\M(id);
biY = [ones(n,1) M(id) X(id)]\Y(id);
ind_boot(i) = biM(2)*biY(2);
end
ci = quantile(ind_boot, [0.025 0.975]);
fprintf("间接效应 95%% Bootstrap CI: [%.3f, %.3f]\n", ci(1), ci(2));
% 简易“测量模型”示意:潜变量 F 的 3 个指标
F = randn(n,1);
x1 = 0.9*F + 0.4*randn(n,1);
x2 = 0.8*F + 0.5*randn(n,1);
x3 = 0.7*F + 0.6*randn(n,1);
% 验证性思路:单因子 PCA 载荷
[coeff, score, ~, ~, explained] = pca(zscore([x1 x2 x3]));
fprintf("第一主成分解释 %.1f%%,载荷:\n", explained(1));
disp(coeff(:,1)');
% 路径图数据(供报告)
fprintf("路径: X-a->M-b->Y, X-c'->Y\n");
若需完整 ML-SEM,可在报告中说明使用外部 lavaan 脚本,或在 MATLAB 中对参数 写 并 fminunc 最小化 (样本需足够、模型需识别)。
六、如何解释结果
- 理论路径图与识别约束;
- 测量模型:载荷、信度、拟合;
- 结构路径:标准化/非标准化系数;
- 间接与总效应及 CI;
- 拟合指数与残差相关;
- 等价模型与因果假设的局限;
- 稳健性(交叉验证、增删路径)。
七、常见误区
1. 拟合好 = 因果真
最大误区。
2. 未识别还强行解释
标准误巨大或无法收敛时不要美化结果。
3. 根据 MI 无理论改模型
过拟合样本协方差。
4. 小样本高复杂模型
不稳定,应简化或贝叶斯正则。
5. 把探索性因子分析当成验证性结论
EFA 与 CFA/SEM 的推断强度不同。
八、小结
结构方程模型的核心是:
用测量方程与结构方程系统再现变量的协方差结构,从而估计路径与潜变量关系。
它擅长多指标与多方程理论,但因果效力取决于识别假设而非拟合指数。规范用法是:理论图 → 识别 → 测量合格 → 结构估计 → 间接效应与等价模型讨论。