Stata: konfound&pkonfound

type
Post
status
Published
date
slug
summary
tags
category
遗漏变量偏误检验
icon
password
网址
作者
标签
文章链接
发布时间
来源
本文介绍Stata中关于ITCV与RIR的计算操作。

1. 引言

未控制的混淆变量或非随机选取样本可能会导致偏差,为了评估因果推断偏差的稳健性,许多敏感性分析方法应运而生。然而,之前的多数方法要么仅仅控制某一特定来源的偏差(如遗漏变量),要么是仅适用于特定类型的数据(如分类变量)。
本文主要介绍 konfound 命令,用以在 Stata 中执行如下两个检验:
  • 使用 Rubin 因果模型解释偏差导致因果推断失效的程度(使推断无效的偏差百分比,所谓偏差百分比为能够被原假设替代从而使推论无效的可观测样本比例);
  • 根据回归模型中其他变量与不可观测变量的相关系数量化因果推断的稳健性。
具体而言,konfound 中使用了两种基本的敏感性分析框架:
  • 第一种是遗漏变量影响阈值法(Impact Threshold for a Confounding Variable,ITCV)Frank (2000)。该方法产生类似这样的结论:"要使推断无效,遗漏变量必须与关注的预测变量和结果变量之间存在__的相关性。"
  • 第二种是替换推断稳健性(Robustness of Inference to Replacement,RIR)—Frank等(20132021)。RIR产生类似这样的结论:"要使推断无效,估计效应中需要有__%是由偏差造成的。也就是说,要使推断无效,预计需要将__%的样本替换为预测变量对结果没有影响的样本。

2. konfound

2.1 概述

在选取模型后(线性回归模型),用户提供一系列变量名称,konfound 命令将会计算遗漏变量对每一个变量的影响(即ITCV),以此来判断因果推断的有效性。 此外,konfound 还可以计算在估计中因果推断有效性偏差的大小(即RIR)。konfound 还可以提供用户模型中在统计意义上显著的变量的灵敏度图(P.S. 只有统计意义上显著的变量才能产生条形图)。

2.2 konfound命令

注意:
  1. 首次使用 konfound 命令的用户需要安装ssc install mossindeplist 和 matsort三个命令。
  1. konfound命令必须在回归之后立刻运行,中间不能有其他命令。
  1. konfound在不指定指数类型时,默认输出RIR。
  1. 可以同时评价多个变量因果推断的稳健性

2.3 konfound输入

  • sig(#) 指明显著性水平,默认值为 sig (0.05),也可以设置为其他值,例如 konfound x, sig(0.1)
  • nu(#) 指明与所检验估计相对立的原假设,默认值为 nu (0)
  • onetail(#) 默认双尾检验,即onetail(0),单尾则需要改为:onetail(1).
  • uncond(#)计算ITCV值时是否考虑控制变量,默认考虑 uncond (0),如不考虑则改为uncond (1)
  • indx()指定输出指数类型,indx("RIR")会输出RIR,而indx("IT")则输出ITCV。
  • rep_0(#) 控制偏差百分比替换情形下的效果,rep_0(0)(默认)意味着被替换样本的效应等于恰好让推断失效的临界值,而rep_0(1)则意味着被替换样本的效应等于0。注:目前只允许rep_0(0),而rep_0(1)已经失效。
  • non_li (#) 针对非线性模型(如 logit 或 probit 模型),指定解释偏差百分比的基础。non_li(0)(默认)使用 原始回归系数,non_li(1)使用 平均边际效应。具体而言,non_li(#)存在两种设定:其一, non_li(0)意味着使用 原始回归系数(logit/probit 的 β), 优点是与 Stata 输出一致,然而系数含义很难解释;其二,non_li(1)意味着使用平均边际效应,优点是经济含义清晰,可以解释为“概率变化” ,在实证研究中得到青睐。但对于线性回归而言,二者并没有区别。注:对于更新后的konfound命令,不能在logit命令之后直接使用konfound,作者团队更推荐使用pkonfound命令:we recommend using pkonfound for logistic regression

2.4 konfound 输出

konfound命令可以输出丰富的结果指标,在return list之后就会出现:
指标
含义
itcv
(考虑控制变量后)遗漏变量阈值
unconitcv
(不考虑控制变量)遗漏变量阈值
rir
样本替换稳健性
thr
显著性阈值
r_xcv
X 与遗漏变量相关性
r_ycv
Y 与遗漏变量相关性
RsqXZ
控制变量对 X 的解释力度(R方)
RsqYZ
控制变量对 Y 的解释力度(R方)
Rsq
微调整的原始R方
特别的,r_xcv:需要计算出CV与X之间的相关性需要达到多大程度,才能完全消除X对因变量的显著影响。这个临界相关性水平就是"最小影响"。如果需要很强的相关性才能抵消X的效应,说明即便存在CV,X的效应也是相当稳健的。反之,如果相关性很低就能消除X的效应,则表明模型结果可能不太稳健。

2.5 应用实例 - 线性回归

以 Hamilton (1992) 数据集来说明 konfound 命令的用法。第一个命令来自 Hamilton (1983) 关于用水量的调查。被解释变量是1981年夏天的家庭用水量 water81,解释变量包括1980年夏天的家庭用水量 water80,家庭收入 income,受教育年限 educ,户主是否退休 retire 和1980年家庭成员数 peop80
首先,正常进行OLS回归。
由回归结果可以看出,家庭成员数 peop80 在统计意义上显著。为了量化关于遗漏变量的因果推断稳健性或量化判断因果推断有效性的偏差百分比,我们使用konfound命令,结果如下所示。
还可以输出更详细的参数值:

2.6 结果解读

ITCV阈值为 0.269,这意味着未观察到的混杂变量与 peop80 (自变量)和 water81 (因变量)之间的相关性之积只需约为 0.519(=√0.269)即可推翻 OLS 结果。虽然根据定义,我们无法观测到混杂变量(因为不可观测之变量不可得),但我们有其他控制变量。在第二个基于偏相关系数计算的表格中,我们展示了每个独立协变量的纳入对peop80系数的影响。与 ITCV 类似,Impact被定义为 x 变量与控制变量之间的偏相关性与 y 变量与控制变量之间的相关性的乘积。Impact的符号表示控制变量的纳入如何影响peop80系数:正影响分数表示控制变量的纳入会降低peop80的系数,而负影响分数则具有相反的效果。
可以看出,对peop80系数影响最大的变量是water80,其Impact值为 0.3325,将其作为benchmark,计算比值:
该比例意味着需要存在一个比 water80peop80、water81的相关性之积高出1.561倍(或者超过56%)的遗漏变量,才能推翻peop80影响water81的回归结果。
也就是说,首先将考虑控制变量后得出的ITCV与偏相关表格中各个协变量的Impact的绝对值进行比对,如果后者全部小于前者,则认为不可观测的遗漏变量对结果的影响较弱,那么回归结果是稳健的。
💡
在使用 ITCV 评估稳健性时,关键不在于 ITCV 本身的大小,而在于将其与什么基准进行比较。通常,研究者会将 ITCV 与控制变量的Impact进行对比,这种影响通常基于偏相关(即第二张表)计算,即在控制其他变量后的独立贡献。然而,这种比较隐含一个重要假设:潜在遗漏变量与已有控制变量在相关结构上是相似的。如果该假设不成立,例如遗漏变量与现有控制变量较为独立,则使用偏相关作为基准可能过于宽松。在这种情况下,应采用原始相关(即第一张表)作为更为保守的比较标准,这通常会降低对结果稳健性的判断。尽管如此,如果模型中已经包含了关键且强有力的控制变量,那么即使存在理论上可以推翻结果的遗漏变量,其在现实中的存在可能性仍然较低。因此,ITCV 的解释应结合基准选择与研究情境进行综合判断。
值得注意的是,Stata会生成如下图片:
notion image
上述图片的纵坐标为peop80的回归系数,由两部分构成:红色区域代表回归系数中超过阈值的部分,蓝色区域为是推断失效的阈值。因此,红色区域的占比越多,代表结果越稳健。
此外,使推断无效的偏差百分比(RIR)对于线性或非线性模型都适用,如果我们想进一步了解该模型的RIR数值,那么可以输入:
结果显示,RIR=74.96%,也就是说,对变量peop80而言,为使得因果推断无效,需要被效应为0的样本替代的样本比例为74.96%

相关文献如何解读ITCV?

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个)不显著的观测样本来替换原始样本,结论才能被推翻
上一篇
遗漏变量偏误检验方法:ITCV 与 RIR
下一篇
ITCV / RIR表述摘录
Loading...
文章列表
Practice makes perfect
文献集锦
如何理论创新?
管理学理论集锦
Python实际应用
聚类标准误与固定效应
巫师3:狂猎
Stata应用技巧
Python知识与技巧
双重差分法(DID)
创新文献阅读与摘要
计量经济学
Python绘图相关
遗漏变量偏误检验