调节效应是什么?
调节效应问的是 X 对 Y 的影响是否会随着 Z 的不同而改变。它回答的是“在什么条件下更强”,不是回答 X 为什么影响 Y。
先用一句话理解
把调节想成音量旋钮。X 是音乐,Z 不是音乐的来源,但它会让声音更大或更小;在回归里,这个旋钮就是交互项 X×Z。
什么时候用
| 判断项 | 教科书式判断 |
|---|---|
| 适合用在 | 理论认为某个条件、群体或环境会改变核心关系强度。 |
| 先不要用在 | 只是尝试很多分组找显著差异,缺少事前理论。 |
| 最关键的前提 | 交互项含义要清楚,连续调节变量最好中心化或说明取值范围。 |
| 读表顺序 | 先看交互项,再用边际效应或分组图解释。 |
| 论文表述边界 | 交互项显著说明斜率差异,不等于每组内部都显著。 |
把它和相近方法分清楚
| 容易混淆的对象 | 怎么区分 | 初学者记法 |
|---|---|---|
| 中介效应 | 解释 X 通过什么路径影响 Y。 | 回答为什么。 |
| 调节效应 | 解释 X 对 Y 的影响何时更强或更弱。 | 回答在什么条件下。 |
| 异质性分组 | 分组分别估计系数。 | 最好用交互项检验组间差异。 |
核心直觉和模型公式
交互项模型
调节效应通常写成:
\[Y_i=\beta X_i+\delta Z_i+\theta(X_i\times Z_i)+\boldsymbol{\gamma}'\mathbf{W}_i+\varepsilon_i\]
θ 是调节效应的核心,它表示 Z 改变 X→Y 斜率的程度。
公式里的符号怎么读
| 符号 | 含义 | 在本页怎么理解 |
|---|---|---|
| X | 核心解释变量 | 主关系的来源。 |
| Z | 调节变量 | 改变 X 对 Y 影响强度的条件。 |
| X×Z | 交互项 | 检验斜率是否随 Z 改变。 |
| β | 基准斜率 | 当 Z 为基准值时 X 的影响。 |
| θ | 调节系数 | Z 每变化一单位,X 的斜率如何变化。 |
专业使用口径
调节效应不能只贴交互项星号,必须把交互项翻译成边际效应。
| 口径 | 专业写法 |
|---|---|
| 理论条件 | 说明为什么 Z 会改变 X→Y。 |
| 变量处理 | 连续 Z 可中心化,分类 Z 要说明基准组。 |
| 边际效应 | 用图或简单斜率说明不同 Z 下的 X 效应。 |
| 组间差异 | 交互项检验的是差异,不是某组内部显著性。 |
一步一步做:从问题到结果的五步
| 步骤 | 这一页具体做什么 | 做到什么程度才算读懂 |
|---|---|---|
| 1. 写出调节假设 | 先说明 Z 为什么会改变 X 的影响。 | 不要事后找分组。 |
| 2. 构造交互项 | 把 X 和 Z 相乘,分类变量要明确基准组。 | 变量编码会影响解释。 |
| 3. 估计模型 | 同时放入 X、Z 和 X×Z。 | 不能只放交互项。 |
| 4. 解释边际效应 | 计算不同 Z 下 X 的影响。 | θ 的符号只是第一步。 |
| 5. 画图或分组对照 | 用边际效应图帮助读者理解。 | 图不能替代正式检验。 |
结果怎么读:先读口径,再读数字
本页案例读表时,先记住这个口径:main_effect = x;0.8890927936731797。
| 读表顺序 | 本页怎么读 | 不要这样读 |
|---|---|---|
| 先看交互项 | θ 是否支持调节方向。 | 不要只看分组内部星号。 |
| 再看边际效应 | 不同 Z 下 X 的影响如何变化。 | 不要把 θ 直接当某组效应。 |
| 然后看主效应 | 有交互项时,X 和 Z 主效应是基准条件下的效应。 | 不能按无交互模型解释。 |
| 最后看理论一致性 | 调节方向是否符合机制。 | 事后解释要克制。 |
初学者最容易错在哪里
| 误读 | 为什么错 |
|---|---|
| 把中介和调节混写 | 错。中介问为什么,调节问何时更强。 |
| 只看各组是否显著 | 错。异质性要检验组间差异。 |
| 不放主效应 | 错。交互模型应包含 X 和 Z 主项。 |
| 不解释边际效应 | 不够。交互项系数本身不直观。 |
先看这个案例的结论
- main_effect = x;0.8890927936731797。
- interaction = x_x_moderator;0.0602742235960366。
- 这些数字来自页面里的结果表;写论文时先解释数值含义,再讨论理论含义。
变量要求和案例口径
| 字段 | 口径 |
|---|---|
| 数据 | 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 |
| 输出文件 | moderation_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
xtreg $y c.$x##c.cashflow $controls i.year, fe vce(cluster firm_id)
export delimited using "$JOB_DIR/moderation_results.csv", replace
实际输出表
这张表是本方法页配套案例的输出结果,用来把前面的公式、变量口径和代码对应到实际数字。
| model | term | coef | se | pvalue | N | R2 | status | moderator |
|---|---|---|---|---|---|---|---|---|
| main_effect | x | 0.8890927936731797 | 0.026289473333939974 | 5.962239655454535e-53 | 96 | 0.9993316184504455 | estimated | moderator |
| interaction | x_x_moderator | 0.0602742235960366 | 0.002328291823893051 | 1.7788411395539061e-43 | 96 | 0.9993316184504455 | estimated | moderator |
案例图
这是一张由同一份案例数据生成的页面内诊断图。

论文里怎么写
本文在共用企业面板样本上报告调节效应,核心输出见 moderation_results.csv。结果解释时同时关注样本口径、变量构造、系数方向、标准误和适用前提,避免只凭单个 p 值完成方法选择。
检查清单
- 调节变量应当在理论上改变 X 对 Y 的斜率,而不是另一个普通控制变量。
- 交互项显著后要解释不同调节水平下的边际效应,不能只解释交互项符号。
- 连续调节变量最好配合边际效应图或简单斜率,避免读者看不懂系数含义。