实证方法教程 / bartik

Bartik / shift-share IV

把内生性、稳健性和标准误问题说清楚

这节课解决什么用于处理内生性、弱识别、标准误、空间相关或多重检验等识别风险。
先准备哪些变量因变量 / 核心解释变量
会看到哪张表bartik_results.csv
论文里怎么克制解释披露校正口径和失败/不可用状态,不把补充诊断伪装成主规格显著性。

Bartik / shift-share IV是什么?

Bartik / shift-share IV 问的是能否用初始份额和外部冲击的乘积构造工具变量。它把地区或企业原本的暴露结构,与外部行业、国家或总体冲击结合起来提供外生变动。

先用一句话理解

把 Bartik 想成每个地区早就有不同产业配方,后来全国各行业受到不同冲击。同样的全国冲击落到不同地区,会因为初始配方不同而产生不同暴露。

什么时候用

判断项教科书式判断
适合用在处理变量受外部行业/地区冲击影响,且单位有事前固定的 exposure shares。
先不要用在初始份额本身可能由未来结果预期决定,或外部冲击直接影响结果。
最关键的前提外生性通常来自 shocks、shares 或两者组合,必须明确论证。
读表顺序先看 share 和 shock 定义,再看第一阶段、排除限制和稳健性。
论文表述边界Bartik 是一种 IV 构造,不是自动外生的变量名。

把它和相近方法分清楚

容易混淆的对象怎么区分初学者记法
普通 IV直接寻找一个外生工具变量。工具变量通常是单一变量。
Bartik IV用初始份额加权外部冲击。工具变量由 share × shock 构造。
固定效应控制不变差异。不能替代外生冲击识别。

核心直觉和模型公式

shift-share 工具变量

Bartik 工具变量通常写成:

\[Z_{it}^{Bartik}=\sum_s share_{is,0}\times shock_{st}\]

share 是处理前暴露结构,shock 是外部冲击;两者共同决定单位 i 在 t 的预测暴露。

公式里的符号怎么读

符号含义在本页怎么理解
share_i,s,0初始份额单位 i 在基期对行业或来源 s 的暴露。
shock_s,t外部冲击行业、来源或总体层面的时间变化。
s份额维度行业、移民来源地、贸易伙伴或其他 exposure cell。
Z_BartikBartik 工具变量初始份额加权外部冲击。
X内生变量Bartik 试图解释的处理或暴露变量。

专业使用口径

专业 Bartik 报告要说清外生性到底来自 share 还是 shock。

口径专业写法
基期份额shares 应在处理前确定,避免被预期结果污染。
外部冲击shocks 应来自本单位之外,避免直接影响本单位结果。
leave-one-out必要时排除本单位对 shock 的贡献。
第一阶段报告 Bartik 对内生变量的解释力和弱 IV 诊断。

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

步骤这一页具体做什么做到什么程度才算读懂
1. 定义 exposure cells确定 s 是行业、来源地还是贸易伙伴。维度要有经济含义。
2. 固定基期份额用处理前 shares。不能用政策后份额。
3. 构造外部冲击从本单位外部计算 shocks。必要时 leave-one-out。
4. 生成 Bartik Z对 share × shock 求和。单位和时间口径要对齐。
5. 做 IV 诊断第一阶段、弱 IV、安慰剂和份额稳健性。只报二阶段不够。

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

本页案例读表时,先记住这个口径:一阶段工具变量 = L.dfi_index;教学案例用滞后 DFI 演示 IV 流程;正式论文需要外生来源。

读表顺序本页怎么读不要这样读
先看构造式share 和 shock 分别是什么。不知道构造就无法判断外生性。
再看第一阶段Z 是否解释 X。弱第一阶段会削弱 IV。
然后看排除限制shock 是否可能直接影响 Y。这是最大争议点。
最后看稳健性不同基期、leave-one-out、share controls 是否一致。Bartik 需要大量透明披露。

初学者最容易错在哪里

误读为什么错
把 Bartik 名字当外生性证明错。外生性要具体论证。
用政策后份额错。shares 会被处理影响。
shock 含本单位贡献风险高。可能机械相关。
只报二阶段错。第一阶段和构造逻辑同样重要。

先看这个案例的结论

  • 一阶段工具变量 = L.dfi_index;教学案例用滞后 DFI 演示 IV 流程;正式论文需要外生来源。
  • 一阶段 F = 2.0575;弱工具变量诊断的核心指标。
  • 2SLS 系数 = -0.0237;第二阶段使用预测 DFI。
  • 这些数字来自页面里的结果表;写论文时先解释数值含义,再讨论理论含义。

变量要求和案例口径

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

gen bartik_z = L.dfi_index * ind
ivregress 2sls $y $controls i.year ($x = bartik_z), vce(cluster firm_id)
export delimited using "$JOB_DIR/bartik_results.csv", replace

实际输出表

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

指标数值解释
样本1200 obs / 196 firms / 2015-2020来自共用案例 CSV
因变量ln(1 + patent_count)企业创新产出
核心解释变量dfi_index数字普惠金融指数
输出文件bartik_results.csvempirical-wizard 对应方法产物
一阶段工具变量L.dfi_index教学案例用滞后 DFI 演示 IV 流程;正式论文需要外生来源
一阶段 F2.0575弱工具变量诊断的核心指标
2SLS 系数-0.0237第二阶段使用预测 DFI
2SLS p 值0.2853与 OLS/FE 方向对照,不单独当成识别证明

案例图

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

Bartik / shift-share IV 的共用案例输出图。
Bartik / shift-share IV 的共用案例输出图。

论文里怎么写

为缓解模型设定或内生性担忧,本文补充报告Bartik / shift-share IV。相关估计输出见 bartik_results.csv。该检验不替代研究设计本身,但可以说明核心结论在替代识别、标准误或稳健性口径下是否保持一致。

检查清单

  • 先拆清初始份额和外部冲击分别来自哪里,不能让本地结果反向污染冲击。
  • 报告 shift-share 工具变量的构造公式和第一阶段强度。
  • Bartik 的外生性来自份额或冲击假设,正文必须说明是哪一部分在识别。

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