结构方程模型 SEM是什么?
结构方程模型 SEM 回答的是多个潜变量和观测变量之间的测量关系与结构路径是否同时符合数据。它把“如何测量概念”和“概念之间如何影响”放在同一个框架里。
先用一句话理解
把 SEM 想成先用多道题测出一个看不见的概念,比如信任或满意度,再研究这些概念之间的路径关系。它不是一堆回归拼起来,而是测量模型和结构模型同时成立才有说服力。
什么时候用
| 判断项 | 教科书式判断 |
|---|---|
| 适合用在 | 研究含潜变量、量表题项和多条路径关系的理论模型。 |
| 先不要用在 | 每个概念只有一个清楚观测变量,普通回归已经足够。 |
| 最关键的前提 | 测量模型要可靠,结构路径要有理论顺序。 |
| 读表顺序 | 先看测量载荷和拟合指标,再看结构路径系数。 |
| 论文表述边界 | SEM 的路径显著不自动证明因果,仍需研究设计支持。 |
把它和相近方法分清楚
| 容易混淆的对象 | 怎么区分 | 初学者记法 |
|---|---|---|
| 回归 | 观测变量之间的关系。 | 不处理潜变量测量误差。 |
| CFA | 验证潜变量由哪些题项测量。 | 只看测量模型。 |
| SEM | 测量模型 + 结构路径。 | 同时估计概念和关系。 |
核心直觉和模型公式
测量模型和结构模型
SEM 可以分成两部分:
\[y=\Lambda\eta+\varepsilon\]
\[\eta=B\eta+\Gamma\xi+\zeta\]
第一式说明观测题项如何测量潜变量,第二式说明潜变量之间的结构路径。
公式里的符号怎么读
| 符号 | 含义 | 在本页怎么理解 |
|---|---|---|
| y | 观测题项 | 问卷条目或可观察指标。 |
| η | 内生潜变量 | 由题项测量、也被其他潜变量解释的概念。 |
| ξ | 外生潜变量 | 结构模型中的外生概念。 |
| Λ | 因子载荷 | 题项和潜变量的关系。 |
| B, Γ | 结构路径 | 潜变量之间的影响路径。 |
专业使用口径
专业 SEM 报告要先证明量表测得准,再讨论路径是否成立。
| 口径 | 专业写法 |
|---|---|
| 测量质量 | 载荷、信度和效度要先过关。 |
| 拟合指标 | 报告 CFI、TLI、RMSEA、SRMR 等整体拟合。 |
| 路径理论 | 结构路径不能只靠 modification index 拼凑。 |
| 模型修正 | 任何释放误差相关都要有理论理由。 |
一步一步做:从问题到结果的五步
| 步骤 | 这一页具体做什么 | 做到什么程度才算读懂 |
|---|---|---|
| 1. 定义潜变量 | 每个概念对应哪些题项。 | 概念边界要清楚。 |
| 2. 检查测量模型 | 载荷、信度、效度和拟合。 | 测量不稳,路径无意义。 |
| 3. 设定结构路径 | 按理论写出概念关系。 | 不要用数据事后画路径。 |
| 4. 读取拟合指标 | 看整体模型是否能接受。 | 单条路径显著不够。 |
| 5. 解释路径 | 在测量合格前提下读结构系数。 | 因果语言要谨慎。 |
结果怎么读:先读口径,再读数字
本页案例读表时,先记住这个口径:finance -> ln Patent 路径是 0.1266,governance -> ln Patent 路径是 0.2058。
| 读表顺序 | 本页怎么读 | 不要这样读 |
|---|---|---|
| 先看载荷 | 题项是否测到对应潜变量。 | 低载荷题项会拖累模型。 |
| 再看拟合 | 整体模型是否可接受。 | 拟合差时路径表不可靠。 |
| 然后看路径 | 理论路径是否显著且方向正确。 | 路径要服务理论。 |
| 最后看修正 | 是否有过度事后调整。 | 过度修正会损害可解释性。 |
初学者最容易错在哪里
| 误读 | 为什么错 |
|---|---|
| 测量模型没过就解释路径 | 错。潜变量都不稳,路径无意义。 |
| 只报显著路径不报拟合 | 错。SEM 要看整体拟合。 |
| 按 modification index 拼模型 | 风险高。会变成数据挖掘。 |
| 把横截面 SEM 写成因果证明 | 过强。还需要时间顺序或设计。 |
先看这个案例的结论
- finance -> ln Patent 路径是 0.1266,governance -> ln Patent 路径是 0.2058。
- 控制潜变量后的 DFI direct path 是 0.0032,模型 R² 是 0.0777。
- SEM 页不能只给路径图,至少要同时交代潜变量怎么构造、路径系数和整体拟合/解释度。
变量要求和案例口径
| 字段 | 口径 |
|---|---|
| 数据 | CSMAR 风格 A 股企业创新面板 |
| 原始样本 | 196 家上市公司,2015-2020 年,约 1200 个公司-年观测;各方法有效样本以本页输出表 N 为准 |
| 因变量 | patent_count;回归页通常使用 ln(1 + patent_count) |
| 核心解释变量 | dfi_index,数字普惠金融指数;部分案例输出展示的是标准化后的 dfi_index |
| 控制变量 | roa、lev、size、growth、cashflow、tobinq、top1、dual、board、indep、soe、age |
| 输出文件 | sem_results.csv |
| 角色要求 | 因变量、核心解释变量 |
| 依赖包 | 无额外 Stata 社区包要求 |
实际代码
下面是本页案例里的最小 Stata 代码。它的作用是帮助你看清变量怎么进入模型、结果文件怎么生成,而不是要求你在网页里手动运行。
import delimited "$DATA_PATH", clear varnames(1) encoding(UTF-8)
gen ln_patent1 = ln(1 + patent_count)
egen firm_id = group(stkcd)
xtset firm_id year
global y ln_patent1
global count_y patent_count
global x dfi_index
global controls roa lev size growth cashflow tobinq top1 dual board indep soe age
gen post = year >= 2018
bysort firm_id: egen pre_dfi = mean(cond(year < 2018, dfi_index, .))
quietly summarize pre_dfi, detail
gen treat = pre_dfi >= r(p50)
gen did = treat * post
gen high_patent = patent_count > 2
gen running_dfi = dfi_index - 260
gen rdd_treat = running_dfi >= 0
sem (finance -> roa lev cashflow) (governance -> top1 indep board) ($y <- finance governance $x)
estat gof, stats(all)
export delimited using "$JOB_DIR/sem_results.csv", replace
实际输出表
这张表是本方法页配套案例的输出结果,用来把前面的公式、变量口径和代码对应到实际数字。
| 指标 | 数值 | 解释 |
|---|---|---|
| 样本 | 1200 obs / 196 firms / 2015-2020 | 来自共用案例 CSV |
| 因变量 | ln(1 + patent_count) | 企业创新产出 |
| 核心解释变量 | dfi_index | 数字普惠金融指数 |
| 输出文件 | sem_results.csv | empirical-wizard 对应方法产物 |
| finance -> ln Patent | 0.1266 | 由 ROA/Cashflow/TobinQ/Lev 派生的财务潜变量路径 |
| governance -> ln Patent | 0.2058 | 由 Top1/Indep/Board 派生的治理潜变量路径 |
| DFI direct path | 0.0032 | 控制两个潜变量后的直接路径 |
| 模型 R² | 0.0777 | 教学路径模型的解释度 |
案例图
这是一张由同一份案例数据生成的页面内诊断图。

论文里怎么写
本文使用结构方程 SEM / 路径分析对案例派生题项进行量表/潜变量诊断。结果见 sem_results.csv。若信度、载荷或拟合指标未达到常用阈值,后续结构路径不宜直接作为强证据解释。
检查清单
- 先验证测量模型,再解释结构路径;CFA 不过时不要急着看 SEM 路径。
- 报告拟合指数、标准化载荷、路径系数和间接效应。
- 横截面 SEM 不能自动写成严格因果链,理论顺序必须交代。