☰
排污权交易与企业全要素生产率:顶刊DID复现全流程解析
2026/10/24 2:40:20 网站建设 项目流程

"顶刊复现:排污权交易机制是否提高了企业全要素生产率 ——来自中国上市公司的证据(论文+数据)"这标题一语道破了三重关键信息:顶刊方法、经典政策评估问题、可复现的数据实证。这类研究在环境经济学领域极具代表性,用排污权交易试点这一准自然实验,结合上市公司财务数据,通过双重差分法来评估政策对企业全要素生产率的影响。对于经济学研究者、硕士博士生乃至从业者,掌握这一整套复现流程,相当于是学会了政策评估类实证研究的标准范式,往后遇到类似选题都能直接套用。这篇博客就把整个复现过程从头拆到尾,包括研究设计逻辑、数据口径处理、模型设定、稳健性检验以及我实测中踩过的坑,一次性说透。

1. 研究背景与复现价值评估

先说清楚这篇论文到底干了什么事。排污权交易机制是我国环境规制领域的一项市场化政策工具,核心思路是在总量控制前提下给企业分配排污配额,允许配额在市场上流转,借此把减排从行政命令变成经济激励。理论上,这种机制能让减排成本低的企业多减排、成本高的企业少减排,实现全社会减排成本最小化。但政策效果不能只盯着排放数据,还要看它是否影响了企业生产效率——如果企业为了达标反而背上沉重负担,全要素生产率可能被拖累;如果倒逼企业技术升级、淘汰落后产能,TFP反而可能提升。这篇论文要回答的正是这一问题,数据用的是中国上市公司面板数据,识别策略是排污权交易试点政策在不同城市分批次推行带来的外生变动,属于典型的准自然实验框架。

复现这类研究的价值不只是"照跑一遍代码"。我拆过不少顶刊论文,最核心的收获往往是方法论层面的:你怎么定义处理组和对照组、怎么构造TFP、怎么取政策的预期效应窗口、怎么处理序列相关和异方差,这套环节每一步都容易出错,也恰恰是审稿人最爱攻击的地方。不夸张地说,弄懂这篇论文的复现流程,约等于掌握了现代因果推断在微观面板数据上的一套完整落地姿势。

另外,论文的数据来源和口径也是复现中的一块硬骨头。上市公司财务数据相对公开,但将排污权交易试点城市名单与上市公司所在地做匹配、剔除样本期间内被特殊处理的公司、处理IPO效应等问题,都需要仔细对照原始数据文件逐一确认。这篇文章的价值不仅在于结果,更在于数据整理过程本身——任何一步口径偏差都会实质性影响估计系数的大小和显著性。

还有一个容易忽略但值得重视的点:这篇论文用到的数据时间跨度覆盖了排污权交易试点的多轮扩容。不同批次试点城市加入的时间点不同,这为差分模型提供了天然的多期冲击结构,也就需要用到多期DID或者事件研究法,而不是简单的前后对比。复现时要把政策冲击时间这个变量建准确,否则处理组和对照组的划分就会出现系统性偏差。

2. 研究设计与因果识别逻辑

搞懂设计逻辑是成功复现的第一步。这篇论文要识别的是排污权交易政策对上市企业TFP的因果效应,而不仅仅是相关关系。现实中的问题是,企业是否位于试点城市并非随机决定,早期申报试点的地方政府往往经济基础较好、产业结构更先进,如果直接比较试点和非试点城市的企业TFP,得到的差异可能是政策之外的地方禀赋差异导致的,这就是典型的选择性偏误。论文采用双重差分法的优势在于,它同时差分掉不随时间变化的地方固定效应和随时间变化的全局冲击,只要满足平行趋势假定,就能把政策效应从混杂因素中剥离出来。

从具体设计看,核心解释变量的构造是一条清晰的逻辑链:先判断企业所在城市在各年度是否处于排污权交易试点范围,再乘以政策实施前后的时间虚拟变量,得到政策处理变量。这个变量取1的样本就是"在试点城市、在政策实施之后"的企业,取0的则是三种情况——非试点城市的企业、试点城市政策实施前、以及自始至终未被政策覆盖的样本。需要注意的是,试点城市并非一次全部纳入,存在分批扩容,所以处理变量在不同城市之间有不同的发生时间,这要求模型不能简单用两期DID,而是应该采用交错DID结构,把政策相对时间纳入估计框架。

被解释变量全要素生产率的估计方法同样值得细看。TFP不能直接从报表里读到,需要通过生产函数来估计。常见的做法包括固定效应法、OP法、LP法和GMM法。复现时需要确认原文具体用了哪种方法,并且最好在稳健性检验中把不同方法的结果都跑一遍。OP法利用企业投资决策作为生产率的代理变量,解决联立性偏误;LP法用中间投入作为代理变量,在投资为0的样本中更稳定。两家方法各有适用场景,结果也会有细微差异,论文的结论是否在不同TFP测度下保持一致,本身就是稳健性的重要组成部分。

控制变量的选取也是识别策略的一部分。不能把所有可观测变量一股脑塞进回归方程,盲目控制后可能导致坏控制变量问题。例如,企业规模、资产负债率、盈利能力这些企业层面特征应当控制,因为它们同时影响企业TFP和可能影响企业是否受到政策冲击;但政策的效果本身可能通过企业退出、产业转移等渠道发挥作用,这些中间机制变量不应该被当作条件变量控制进来。复现时要注意原文在表注或数据附录中披露的变量清单,精准对齐他们的选择。

平行趋势检验是DID模型成立与否的直接证据。常见做法是构建事件研究模型,把政策实施前各期的虚拟变量与处理组虚拟变量的交互项纳入回归,观察这些交互项系数是否在政策前显著不为零。如果政策前若干期的系数基本落在置信区间内且不显著,说明处理组和对照组在政策前没有明显不同的时间趋势,差分估计量才可信。复现时要画出事件时间图并检查系数置信区间,这是审稿人一定会看的关键证据。

3. 数据来源、匹配口径与关键变量构造

复现过程中最耗时、也最容易出错的就是数据整理环节。论文的数据通常来自几个部分:上市公司财务数据来自公开披露的年度报告和数据库,TFP估计需要的营业收入、从业人员数、固定资产净值、中间投入或投资额等关键变量都得从原始报表里清洗出来;试点城市名单和对应年份需要根据政策文件整理;上市公司所在地则要通过注册地址或者办公地址匹配到地级市层面,进而把企业数据和城市层面的政策状态合并到一起。

这里有一个实操中极易踩坑的匹配问题:一家上市公司可能在多个城市拥有子公司或生产基地,但论文中企业归属地的定义一般以注册地为准,而排污权交易的政策约束更多落在实际生产所在地。如果一个企业注册在高新区但工厂在试点城市,单看注册地会把处理状态记错。复现时要仔细核对原文的样本筛选说明,看他们有没有剔除跨区域经营比重较大的样本,或者有没有采用母公司所在地归属。通常情况下,由于数据可获得性限制,研究者会选择注册地所在城市作为处理状态的分配依据,这一点要在综述里讲清楚。

TFP的估计需要额外注意样本区间和数据处理的一惯性。比如在用LP法时,中间投入的计算口径在不同行业之间存在差异,金融业和制造业的报表科目不一样,直接把所有行业放入同一生产函数估计是不合适的。常见的处理方式是只保留制造业样本,或者至少分行业估计生产函数后使用残差作为TFP的估计值。复现时建议查看原文样本的描述性统计,看行业分布和样本量的划分标准,对齐行业筛选条件后再动工。

核心解释变量的时间维度也要小心处理。排污权交易试点有一批明确的启动年份,但上市公司年报的会计年度截止到12月31日,如果政策在年中实施,当年企业实际暴露于政策的时间不足一年,直接给全年赋值为1会有测量误差。严谨的做法是:上半年实施则当年计为1,下半年实施则从次年开始计为1。我复现时习惯同时保留两种口径,一种按政策公告年份直接赋值,另一种按实际运行月份加权处理,然后对比主回归结果是否敏感。如果两种口径下结论一致,可以增强结果的说服力。

城市层面的控制变量也可能是复现时容易遗漏的部分。GDP增长率、产业结构、财政支出规模、污染排放强度这些城市特征既可能影响当地企业的生产表现,又与是否成为试点城市相关,如果不在模型里控制,分量固定效应未必能完全吸收这些影响。实践中通常加入城市与年份的交互固定效应来进一步吸收城市层面随时间变化的冲击,但这样会消耗大量自由度,样本量不足时可能影响估计精度。复现时要判断原文采取的是"城市固定效应加年份固定效应"还是加入城市趋势项的策略,并考虑其背后的权衡。

4. 模型设定、估计方法与结果复现

进入正式的回归复现阶段,第一步是把基准模型跑通。基准模型的基本形式是:

[ TFP_{it} = \alpha + \beta \cdot \text{Pilot}{it} + \gamma X{it} + \mu_i + \lambda_t + \varepsilon_{it} ]

其中 (\text{Pilot}{it}) 是处理变量,(\mu_i) 是企业固定效应,(\lambda_t) 是年份固定效应,(X{it}) 是控制变量向量。企业固定效应吸收了所有不随时间变化的企业特征,比如行业属性、区位禀赋、管理层风格等,年份固定效应吸收了宏观经济波动、全国性政策变化等因素。系数 (\beta) 的估计值就是本文最关心的政策平均处理效应。复现时第一步就是用面板数据跑这个基准回归,查看 (\beta) 的符号、大小和显著性,并与原文报告的数字对比。

稳健标准误的处理是复现后容易被忽视却对显著性判断有重大影响的细节。企业层面的扰动项通常存在序列相关,同城市的企业还可能存在截面相关,如果不做处理,标准误会被低估,t值被高估,导致虚假显著的结论。常见做法是聚类到企业层面,复杂一点的做法是聚类到城市层面,因为政策的处理状态是在城市层面变化的,聚类到城市层面更符合DID的推断逻辑。不过城市数量通常远小于企业数量,聚类到城市可能因为簇数太少导致t分布近似质量下降,需要用野聚类自助法修正。复现时一定要对比不同聚类层级下的显著性变化,如果结论对聚类选择依赖过强,就要在文中如实说明。

动态效应的估计是理解政策作用时机的关键。处理效应并非全时期恒定,政策刚落地时企业可能来不及调整,几年之后效果才逐渐显现,或者存在污染企业搬迁到非试点城市的"污染避难所"效应。把处理变量拆成政策后第一年、第二年、第三年……的虚拟变量进行事件研究回归,能直观看到系数的动态路径。我复现时会顺手画一个事件研究图,以政策前一期为基期,把各期交互项系数和95%置信区间点出来,这是检查模型设定是否合理、结果是否稳健的最直观手段之一。

为了保证结果不过度依赖某一种TFP测度方法或某一种处理变量定义,还要跑多组稳健性检验。常见的做法包括用OP法替换LP法重新估计TFP、剔除直辖市样本再跑一遍、改用倾向得分匹配加双重差分方法处理样本选择问题、加入行业乘以年份的交互固定效应以控制行业层面的冲击。这些检验不一定全部显著,但要看核心系数的方向和显著性是否保持稳健,只要主结论在多种设定下方向一致,说服力就上来了。

还有一种在顶刊中常见的策略——安慰剂检验,随机生成虚假的试点时间或虚拟的处理组然后估计系数分布,如果虚假政策系数绝大多数不显著且集中分布在零附近,说明基准回归发现的效果不太可能是偶然性因素驱动。复现时可以做500次或1000次随机模拟,把估计系数的核密度分布画出来,再叠加上真实估计值的位置。如果真实估计值落在分布边缘,安慰剂检验就算通过了。

5. 常见问题与排查经验

复现论文最让人头疼的问题往往不在模型本身,而在数据清洗环节。我在这里把实操中高频出现的坑整理成一张速查表,方便你在跑数据时对照检查。

首先是TFP估计时的样本截断问题。用LP法时中间投入必须为正,但很多企业某一年购置了大量库存或者逻辑上投入为0,直接丢弃这类样本可能引入选择偏误。更稳妥的做法是保留样本但把中间投入做缩尾处理,或者在稳健性检验中用另一种TFP测度进行交叉验证。处理前建议先统计被剔除样本的占比,如果超过5%,就要疑心是不是口径问题。

多期DID的处理组交错进入问题也不能忽视。处理组并非同时进入政策状态,如果部分企业已经受到政策影响却仍被当作对照组,传统双向固定效应估计量会存在负权重偏误,甚至可能系数方向都反了。近年的文献推荐使用异质性稳健估计量来修正,比如通过堆叠DID或者使用局部估计量进一步验证基准结果。复现顶刊论文时加这一步,既是对原文方法的补充,也能让结论更经得起拷问。

聚类层级的城市数量问题前面提过,但它是很多人复现时把显著性做没了的重灾区。如果样本城市数量只有几十个,聚类到城市层面的标准误可能非常大,此时可以对比城市层面聚类和公司层面聚类的结果,再报告基于野聚类自助法的修正p值。断然舍弃哪一层级的显著性都不合适,全面的呈现才能体现复现者对计量细节的把控能力。

固定效应模型下,控制变量不能有时变缺失。有些公司个别年份财务指标缺失,直接把观测值删掉会导致面板不平衡,较大的估计偏误或许不至于,但会改变样本构成。更细致的处理方法是对连续变量进行行业年度层面的中位数插补,并在回归中加入缺失指示变量,或者至少在主回归中使用平衡面板做一次敏感性分析。

政策冲击时间与会计年度对齐的问题在前文已经提过,但要提醒一句:即使你按公告年份赋值,也最好在文末附录中列一个敏感性分析,把政策实施时间平移一年或者滞后一年再跑,这种做法能够检验结论对政策时间选择的敏感性。

样本中的极端值对回归结果影响很大,尤其当样本量不大时。营业收入、总资产这类规模变量的分布偏态很重,TFP估计值常常有厚尾,建议对所有连续变量在1%和99%分位做缩尾处理。我跑数据时习惯分别尝试不缩尾、1%缩尾和二值缩尾三个版本,观察核心系数的变动幅度,在论文正文中报告主结果采用的一种口径,附录中放其他口径的补充表格。

PSM-DID的样本匹配阶段也有一个经典坑:倾向得分匹配之后必须重新检查匹配质量,看协变量在处理组和对照组之间的标准化差异是否都低于0.1。很多复现者只报告匹配后的DID结果,完全不提匹配变量的平衡性检验,一旦协变量不均衡,匹配就只是形式主义。复现时建议画出匹配前后标准化差异的爱心图,既直观又好写进论文。

还有关于推断的稳健性问题。政策评估类论文的样本时间跨度长,同一企业不同年份观测值之间的序列相关往往被低估,尤其TFP这类高度序列相关的被解释变量,误差项的自相关结构会让普通标准误严重失真。稳健做法是同时报告企业层面、城市层面二维聚类的标准误,或者采用块自助法。三种标准误下显著性一致,结论才算真的站稳。

6. 延伸讨论:现代因果推断对传统DID框架的修正

如果只是按原文思路跑完代码就结束,复现工作顶多算完成了一半。近些年计量经济学对多期DID的适用条件提出了不少深刻质疑,最好的复现不仅还原原文结果,还能在原文基础上做现代方法的交叉验证。最值得做的就是异质性处理效应诊断,如果一个政策对不同群体的效应方向或大小不同,传统双向固定效应模型给出的单一系数实际上是对各群体效应的加权平均,且权重可能出现负值,这在存在早处理组和晚处理组时尤为严重。

检验是否存在负权重的方法并不复杂,可以用WHITE检验那种思路考察各处理组在期数上的处理方差占比,或者直接做"好事后法"诊断——用Bacon分解把双向固定效应估计量拆解为四种基础比较的平均值,观察其中可能对应错误对照关系的组分占比多大。如果分解后发现近一半权重来自已被处理的对照组,基准估计量的可信度就大打折扣。

更干净的替代方案是用堆叠DID方法重估。基本思路是把每一个处理发生时间作为独立事件,为其构造一个干净的控制组,只包含从未被处理的样本或者尚未被处理的样本,然后把所有事件样本堆叠起来统一估计。这种方法避开了早期处理组被后期对照组污染的问题,估计出的系数解释也更直观。操作上只要生成以事件时间为中心的子样本并设置事件固定效应交互项就行,主流统计软件都有现成命令包,复现成本不高。

还有一种事件研究图的做法值得强调。老式事件研究图往往把所有处理组混在一起画,这会让政策前后各期系数反映不同的样本构成,产生时间趋势的假象。更严谨的做法是按处理批次分别画或者用堆叠样本重画,两条路径得出的结论如果不一致,恰好说明基准设定存在偏误。把这类诊断做进复现报告里,是让你的工作区别于单纯"跑代码"的核心亮点。

回归系数的因果解释还必须讨论政策预期效应和溢出效应。上市公司可能提前获得政策消息并提前调整要素配置,导致政策实施前就出现TFP变动,若平行趋势检验显示政策前系数已经在爬升,预期效应就是不可忽视的解释。溢出效应则表现为非试点城市企业为了避免未来被纳入试点而提前减排,或者作为供应链上下游被迫配合整改,这种溢出会让对照组也受到政策影响,低估政策效果。虽然论文主框架未必放大处理这些问题,复现时明确它们的潜在影响是专业功底的体现。

7. 数据复现的工程化落地建议

最后聊一点非计量层面的经验。合规高效的复现流程不仅是跑代码,更涉及数据文件管理、脚本组织和结果追溯这几个环节。我建议从一开始就建立清晰的目录结构:原始数据文件夹只读不可改,清洗脚本独立存放,每次TFP估计结果单独命名并记录参数,主回归结果和稳健性检验分开输出。靠文件名记不清版本,最好在脚本开头用注释记录数据的下载日期、筛选条件和处理步骤的版本号。

为了防止代码更新后结果漂移,最好把数据清洗和回归估计拆成两个脚本。清洗脚本负责把原始数据转换成回归面板,输出中间文件;回归脚本只读取清洗后的面板数据,不直接触碰原始数据。这样,当你需要换一种TFP测度方法或者换一套控制变量时,只需改动回归脚本,不必把数据清洗重新跑一遍。这个拆分在论文修改周期长、来回折腾需求多时,能节省大量时间。

如果团队协作者比较多,或者准备把这套流程做成论文附录供审稿人复现,还要考虑环境一致性。R和Python的包版本升级可能导致结果微小差异,建议在项目根目录记录依赖包版本清单,关键结果文件生成时附带sessionInfo或包版本信息。学术诚信层面,每个生成的结果文件都要能追溯到具体代码行和原始数据,这是复现工作的底线。

还有一个实操上的建议,我复现类似顶刊论文时习惯先跑一个最简版模型,也就是不加控制变量、不做聚类标准误的朴素DID,先看系数方向和粗略显著性;确认整体趋势没问题后再逐步加入控制变量、固定效应、聚类调整和样本筛选。这种渐进式排查方法能快速定位数据匹配错误或处理变量构造问题,避免到最后一步才发现变量错位,结果全部推翻重来。

另外,同一个数据集往往有多套企业代码和行业代码。不同数据库更新版本之间的行业分类代码可能不兼容,合并时需要仔细核对转换表。像本文这样的制造业样本研究,行业代码变化可能实质影响行业固定效应的设定,一不留神就会在"复现"中产生新的结果。所有代码合并完成后一定要做一次系统性交叉验证,检查合并前后的样本量和关键变量均值是否吻合。

关于数据版本,还有一个经常被忽略的细节:很多数据库是有更新版本的,同一个变量名在不同版本里的定义可能存在细微差异。复现顶刊论文如果直接下载最新数据而原文使用的是旧版本,结果很可能对不上。最好的做法是先看原文数据附录中的变量均值、标准差、样本量等信息,与你自己数据处理后生成的描述性统计表对照,如果基本一致才说明版本口径对齐了。这个步骤虽然不直接写在论文里,却是复现成功的先决条件。

最后分享一点我个人的体会。这类政策评估论文的复现过程,表面看是提高软件操作和数据匹配能力,实际锻炼的是对识别假设的直觉。你处理试点名单、构造平行趋势检验、思考坏控制变量问题、验证异质性处理效应时,每一次选择背后都对应着一个"如果假设不成立会怎样"的反事实追问。把这一整套流程完整走过一遍以后,再看任何DID实证论文,一眼就能判断它的设计强度和数据可靠性,这比记住任何一个系数的数值都有价值得多。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询