Oster(2017)的系数稳定性检验,在 Stata 里一直靠 Emily Oster 的 psacalc 实现,由 SSC 提供。SSC 那一版(2020 年 10 月 22 日)支持 regress、areg 与 xtreg,但不认 reghdfe。而做多维固定效应的实证研究,reghdfe 几乎是默认工具,于是这条链断在了最常用的地方。
这个仓库就是一个补丁:作者 Arthur Howard Morris 复制了 SSC 版的 psacalc.ado,改名 psacalc2,让它认 reghdfe。仓库里只有两个文件,一是说明,二是 634 行的 psacalc2.ado。
补的缺口在哪
psacalc 的核心是拿"不受控"与"受控"两个回归的系数与 R,反推遗漏变量要有多强才能把结果解释掉。它需要从回归结果里读出控制变量与固定效应的信息。reghdfe 把这些信息放在不同的返回项里:吸收掉的固定效应在 e(absvars),聚类变量在 e(clustvar),还要额外的 residuals 选项才能支持 predict。补丁做的就是这几处适配。
作者在说明里写清了前提:他的修改建立在一个假设上,即 areg 与 reghdfe 算出的 R 可以互相比较;他同时提醒,任何估计软件都该先验证它确实按你以为的方式在算。这句话不是客套,Oster 方法对 R 的口径很敏感。
安装与调用
两个文件(psacalc2.ado 与 README.md)里,真正要装的是 ado。把它放到 Stata 的 ado 路径下(个人 ado 目录即可),命令名就是 psacalc2。
语法是 psacalc2 后接类型与处理变量,再跟选项:
psacalc2 delta x1
psacalc2 beta x1, rmax(1.
3) delta
(2)
它必须在一次线性回归之后运行,或者在选项里用 model() 指定完整回归。如果之前没有估计结果,会直接报"Previous estimation results not found"。
四个选项
mcontrol() 指定"不相关控制变量",也就是你不想当作受控变量、而是当作冗余项处理的那几个。这在 Oster 方法里对应"只保留部分控制变量"的用法。
mcontrolFE() 是补丁新增的,允许把 reghdfe 吸收掉的固定效应整体当作冗余项,这样处理效应与选择程度就只基于固定效应来算。
rmax() 是最大可能 R,默认 1.0。代码里卡了两道:超过 1 直接报 The maximum possible R-squared is 1,低于受控回归的 R 也会报错。所以实务中要先把受控 R 读出来,再决定给多大的上限。
delta() 与 beta() 分别对应两种提问方式下的输入,默认值分别是 1 与 0。
两种问法,两种输出
第一种是 delta 型:给定 rmax 与 delta,报告系数边界估计。输出叫"Bound Estimate",给出一个 delta 值,配两张输入表:不受控与受控回归的系数与 R,以及 R_max、Delta、冗余控制变量三项。
第二种是 beta 型:给定 delta 与 rmax,反推在此选择强度下的系数,并给出与受控系数的平方差以及偏误方向。输出表有三行:Beta、Alt. sol.
1、Alt. sol. 2,后两行是备选解。原因在代码里:当 delta 不等于 1 时,方程是三次的,解可能不止一个(代码调用 dnot1cubsol 解三次方程),所以命令会返回多个根,并用 r(root_count) 告诉你解的数量。
返回项可以直接在后续计算里用:r(beta)、r(dist)、r(altsol1)、r(altdist1)、r(altsol2)、r(altdist2)、r(root_count)、r(delta)。
它会拦下哪些操作
代码里有十余处显式报错,等于一份使用约束清单:
变量给多了(超过两个)会报 Too many variables;之前没有估计结果报 301;模型没有常数项、既无控制变量也无被当作控制的固定效应、不是线性回归(例如跑完 logit 再用)、xtreg 只允许 fe 与 be、rmax 大于
1、rmax 小于受控 R、类型不是 beta 或 delta、指定的处理变量不在模型里或不是自变量、mcontrol 里列了与模型无关的控制变量、把处理变量本身写进 mcontrol。
这些错误的措辞都挺直白,照着改基本能定位问题。真正需要留意的是"不是线性回归"与"xtreg 只允许 fe 与 be"这两条,它们决定了这个方法只能用在设定干净的线性模型上。
它明确不做的事
README 的未来工作里写着:让 psacalc 把 reghdfe 吸收的固定效应当冗余项。而代码里的 mcontrolFE 已经能处理一部分,两处表述不完全一致,用之前最好自己跑一遍验证结果是否符合预期。
方法层面也有边界。Oster 方法本身依赖"可观测与不可观测选择成比例"的假设,delta 与 rmax 的取值带有研究者判断,结果应作为稳健性证据,而不是点估计的替代。
用之前要知道的三件事
第一,运行需要合法的 Stata 授权。这是本批材料里唯一需要在软件上付费的一环,仓库本身免费,但没有 Stata 就跑不起来;如果你所在机构已有授权,直接用即可。
第二,仓库没有 LICENSE 文件,README 也没写许可条款,而它本身是对 SSC 版 psacalc 的修改版,原作者是 Emily Oster。这意味着可以读、可以自己下载使用,但整包再分发或写进商业培训材料并不合适。
第三,方法引用与代码引用要分开写:方法引 Oster(2017)发表在 Journal of Business Economics and Statistics 的那篇,代码引这个仓库与 SSC 的 psacalc,并注明你用的是修改版 psacalc2。
────────────────
仓库与 ado 文件的直达地址、完整语法与六个选项、返回项与报错清单原文、Oster 原文 DOI 与 SSC 安装方式,回复本帖即可见。
把经管之家装进你常用的 AI 智能体中 一键快捷安装经管之家 MCP/技能,让 AI 帮你查教程、找数据、读论坛帖子。 检索、阅读公开帖子不收费,安装可申请领取:3 通用积分+100 论坛币+3 元论坛资金 说明: AI 算力按所用平台规则计算;附件按原帖条件获取;福利领取条件以活动页面为准。 |


雷达卡




京公网安备 11010802022788号







