实证方法教程 / threshold

门槛效应

看均值之外的门槛、分位数和局部变化

这节课解决什么用于均值效应不足以描述关系时,考察分位数、门槛、空间、动态或非参数结构。
先准备哪些变量因变量 / 核心解释变量
会看到哪张表threshold_results.csv
论文里怎么克制解释把复杂模型写成补充证据,说明它回答了基准 OLS 回答不了的哪一部分。

门槛效应是什么?

门槛效应回答的是核心关系是否在某个阈值两侧发生改变。它不是随便把样本分组,而是让数据估计或检验一个临界点,例如收入水平、市场化程度或污染强度超过某点后效应不同。

先用一句话理解

把门槛模型想成水温到 100 度才沸腾。水温从 20 到 80 度变化是一种状态,跨过 100 度后机制可能完全不同。门槛模型问的就是这种状态切换是否存在。

什么时候用

判断项教科书式判断
适合用在理论上存在非线性分段关系,且有明确的门槛变量。
先不要用在只是想把样本随意分成高低组,或者阈值完全事后挑选。
最关键的前提门槛变量应在机制上能解释状态切换。
读表顺序先看门槛变量和估计阈值,再看不同区间的系数。
论文表述边界门槛不是证明机制本身,只说明关系在区间上不同。

把它和相近方法分清楚

容易混淆的对象怎么区分初学者记法
线性模型假设 X 的边际效应恒定。没有状态切换。
交互项预先指定分组或连续调节。阈值通常人为给定。
门槛模型估计或检验临界点。关系按 q 是否跨过 c 分段。

核心直觉和模型公式

分段效应

一个简单门槛模型可写成:

\[Y_i=\beta_1X_iI(q_i\le c)+\beta_2X_iI(q_i>c)+\gamma W_i+\varepsilon_i\]

q 是门槛变量,c 是阈值;X 的效应在阈值两侧分别为 beta1 和 beta2。

公式里的符号怎么读

符号含义在本页怎么理解
q_i门槛变量决定样本进入哪个状态的变量。
c阈值状态切换的临界点。
I(q<=c)指示函数低门槛区间。
β1, β2分段系数阈值两侧的核心效应。
W_i控制变量其他协变量。

专业使用口径

专业门槛分析要把阈值当作理论问题,而不是显著性分组工具。

口径专业写法
门槛变量解释为什么它会触发机制变化。
阈值估计报告阈值、置信区间或检验方法。
分段系数比较阈值两侧的方向和量级。
稳健性检验单门槛、双门槛或替代门槛变量。

一步一步做:从问题到结果的五步

步骤这一页具体做什么做到什么程度才算读懂
1. 提出非线性机制为什么会有临界点。没有机制不要硬做门槛。
2. 选择门槛变量q 要能代表状态转换。不要只选最显著变量。
3. 搜索或检验阈值估计 c 并评估不确定性。阈值也有估计误差。
4. 估计分段效应分别读取阈值两侧 β。重点是差异是否有意义。
5. 做稳健性替代 q、区间、样本和门槛数量。避免事后分组。

结果怎么读:先读口径,再读数字

本页案例读表时,先记住这个口径:low_segment = x;1.0889789534321794。

读表顺序本页怎么读不要这样读
先看 q门槛变量是否有理论基础。q 不合理,阈值无意义。
再看 c阈值在哪里,是否落在样本密集区。尾部阈值不稳。
然后看 β1/β2两侧效应是否真的不同。只一侧显著不等于门槛成立。
最后看检验门槛效应和阈值不确定性。阈值要能复核。

初学者最容易错在哪里

误读为什么错
把中位数分组叫门槛错。门槛应被估计或有理论依据。
只看一侧显著错。核心是两侧效应差异。
阈值落在极端尾部还强解释风险高。样本支撑不足。
把门槛写成机制证明不够。机制还需要额外证据。

先看这个案例的结论

  • low_segment = x;1.0889789534321794。
  • threshold_difference = iv_x_high_threshold;0.33187448558783844。
  • 这些数字来自页面里的结果表;写论文时先解释数值含义,再讨论理论含义。

变量要求和案例口径

字段口径
数据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
输出文件threshold_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

xthreg $y $x $controls, rx($x) qx(cashflow) thnum(1) bs(300)
export delimited using "$JOB_DIR/threshold_results.csv", replace

实际输出表

这张表是本方法页配套案例的输出结果,用来把前面的公式、变量口径和代码对应到实际数字。

modeltermcoefsepvalueNR2statusthreshold_varthreshold
low_segmentx1.08897895343217940.0137201762662814774.177625535888817e-85960.9985459809661258estimatedthreshold5.43
threshold_differenceiv_x_high_threshold0.331874485587838440.019677680269851691.3189293285325684e-29960.9985459809661258estimatedthreshold5.43

案例图

这是一张由同一份案例数据生成的页面内诊断图。

门槛效应 的共用案例输出图。
门槛效应 的共用案例输出图。

论文里怎么写

本文在共用企业面板样本上报告门槛效应,核心输出见 threshold_results.csv。结果解释时同时关注样本口径、变量构造、系数方向、标准误和适用前提,避免只凭单个 p 值完成方法选择。

检查清单

  • 先说明门槛变量为何可能改变 X 对 Y 的作用。
  • 报告门槛值、置信区间和 bootstrap 检验,不要只报告分段系数。
  • 门槛附近样本太少时,分段效应可能非常不稳定。

返回教程库 · 查看共用案例