Stata: pkonfound

type
Post
status
Published
date
slug
summary
tags
category
遗漏变量偏误检验
icon
password
网址
作者
标签
文章链接
发布时间
来源

3. pkonfound 命令

pkonfound命令的典型应用场景是文献复现或者元分析,尤其是针对已经发表的论文,找到某个回归模型及核心变量的回归数据,然后使用 pkonfound命令,依次输入:估计系数、标准误、样本量、协变量数量,即可检测该模型是否存在严重的遗漏变量内生性问题。注意: 协变量数量至关重要,因为它决定了计算临界阈值时的自由度(Degrees of Freedom),直接影响结果的精确性。

3.1 概述

pkonfound 命令根据用户输入的数值(如从已发表研究中获取的数值)(1)计算使因果推断系数无效的偏差百分比(RIR);(2)计算使因果推断系数无效的遗漏变量的影响(ITCV),以此检验某一已发表研究的稳健性。
用户必须输入四个数值,第一个数是估计的效果值(如估计的回归系数),第二个数是估计效果的标准误差,第三个数是样本规模,第四个数是模型中协变量的数量。

3.2 pkonfound参数输入

参数
含义
直觉理解
model_type(#)
模型类型,默认线性(0)
线性模型估计
est_eff
回归系数(β)
核心效应大小
std_err
标准误
估计不确定性
n_obs
样本量
数据规模
n_covariates
控制变量数
模型复杂度
sig(#)
显著性水平(默认0.05)
判断是否显著的标准
nu(#)
原假设(默认0)
检验 β 是否等于某值
onetail(#)
单/双尾检验,默认双尾(0)
显著性计算方式
far_bound(#)
推断方向
推翻(向更接近0的方向移动) or 强化结论(向更远离0的方向移动)
indx("RIR"/"IT")
输出指标类型
RIR 或 ITCV
sdx, sdy, rs
X标准差、Y标准差、 R²
用于 unconditional ITCV
eff_thr(#)
自定义阈值
不用 p 值判断

3.3 pkonfound参数输出

return list之后输出以下参数:
指标
含义
如何解读
perc_bias_to_change
所需偏误比例
需要多少 % 是偏误
RIR_primary
替换观测数
需要替换多少样本
RIR_perc
替换比例
稳健性核心指标(越大越稳健)
beta_threshold
临界系数
刚好不显著时的 β
itcv
不考虑控制变量的 ITCV
CV 需要多强才能推翻结果
itcvGz
考虑控制变量的 ITCV
更严格版本
rxcv
CV 与 X 的相关性
遗漏变量需要多相关
rycv
CV 与 Y 的相关性
同上
benchmark_corr_product
已有变量强度
当前控制变量有多强
itcv_ratio_to_benchmark
ITCV/benchmark
>1 更稳健,<1 有风险
obs_r
原始相关性
X-Y关系
act_r
调整后相关性
基于t值
critical_r
临界相关性
不显著边界
r_final
最终相关性
应≈critical_r

3.4 应用实例-线性模型

基于以上Hamilton (1983)的数据回归结果,我们已经知道peop60的相关信息,比如说系数、标准误、样本量与协变量数量,可以立即使用pkonfound命令计算ITCV,如下所示:
继续输入return list,可以得到
可以看出,pkonfound命令直接得出conditional ITCV,且与上面使用konfound命令得出的结果一致,都是0.519.
同理,也可以使用pkonfound来计算RIR,只要将indx选项设定为RIR即可。如下所示:
不难看出,pkonfound命令依然给出与konfound命令一致的RIR结果。即:要使回归结果不再显著,则需要用 74.956%(372个)不显著的观测样本来替换原始样本,结论才能被推翻.

3.5 应用实例 - 非线性回归

logit/probit的非线性模型中,遗漏变量影响阈值法(ITCV)不再适用,但偏差百分比方法(RIR)仍然适用。首先,对retire进行回归:
结果显示 peop80 的估计效应在1%的水平上显著为正。
然后,为了计算peop80 变量使推断无效的偏差百分比,先输入margins, dydx(*)计算平均边际效应:
最后,基于上述表格中peop80的系数、标准误、样本数、协变量数量,使用 konfound 命令。如下所示:
结果解读:对变量peop80而言,为使得因果推断无效,需要被效应为0的样本替代的样本比例为59.332%

3.6 特殊情况:自变量与因变量都是二分变量

对于自变量与因变量都是二分变量的情况,可以使用pkonfound命令进一步计算脆弱性(Fragility)——即需要更改的数据点数量,以使处理与结果之间的关联达到某一指定显著性水平(例如 0.05)。同时,它还计算RIR,即为了实现与“脆弱性”对应的这些数据变化,需要被替换的数据点数量。除了回归系数、标准误、样本数与协变量数量之外,还需要实验组样本的数量(number of cases in treatment condition)

输入参数

参数
含义
直觉理解
est_eff
效应值(系数或均值差)
处理变量的影响大小
std_err
标准误
估计不确定性
n_obs
样本量
数据规模
n_covariates
控制变量数
模型复杂度
n_treat
treatment 组样本数
实验/处理组大小
model_type(1)
指定 logit 模型
启用该模块
sig(#)
显著性水平
判断是否显著
onetail(#)
单/双尾检验
显著性计算方式
switch_trm(#)
是否交换处理/对照
默认交换(1)
replace(#)
替换基准
control 或全样本

输出参数


指标
含义
如何解读
fragility_primary
Fragility index
需要“翻转”的观测数
fragility_supplemental
补充fragility
边界情况
RIR_primary
替换观测数
需要替换多少数据
RIR_supplemental
补充RIR
边界情况
RIR_perc
替换比例
稳健性核心指标
starting_table
原始2×2表
final_table
调整后的2×2表
user_SE
用户输入的标准误
analysis_SE
推导得到的标准误

📌 判断标准

Fragility
稳健性
<5
很脆弱
5–20
一般
>20
较稳健

3.7 应用实例

基于educat构造一个二分变量作为自变量:
可以得出n_treat=167,随后用educat_dummyretire进行logit回归:
最后,基于回归系数(.061)、标准误(.256)、样本数(496)、协变量数量(4)以及实验组样本数量(167),使用pkonfound命令:
结果解读:
为了在5%显著性水平下维持“该效应显著不为 0”的推断,需要将 10 个数据点从“处理失败”转变为“处理成功”(即 Fragility = 10)。等价地,这意味着需要替换 13 个(占 48.148%)原本为“处理失败”的数据点,并将其视为服从对照组成功概率(82.979%)的数据(即 RIR = 13

交互效应检测

根据Busenbark et al. (2022)的建议,可以使用RIR来评估遗漏变量偏误对交互效应的影响。
首先,生成一个交互项interact,并进行回归:
上一篇
Stata: konfound
下一篇
ITCV / RIR表述摘录
Loading...
文章列表
Practice makes perfect
文献集锦
如何理论创新?
管理学理论集锦
Python实际应用
聚类标准误与固定效应
巫师3:狂猎
Stata应用技巧
Python知识与技巧
双重差分法(DID)
创新文献阅读与摘要
计量经济学
Python绘图相关
遗漏变量偏误检验