2.14 高维统计与因果推断
前十三节的方法建立在一个共同的前提上:样本量明显大于参数个数,且数据生成机制满足模型假设。现代数据把这两条前提都推到边界。变量数常常达到数千甚至数百万(文本的词表、图像的像素、传感器阵列的通道),而样本量受限于采集成本;同时大量数据来自观测而非实验,变量之间的关联被共同原因与选择机制污染,回归系数不再等于因果效应。
本节讨论这两类问题。前一部分是高维统计:在
2.14.1 高维数据与维数灾难
高维的含义
高维数据(high-dimensional data)通常指变量数
高维带来的困难不止是计算量。维数灾难(curse of dimensionality)描述的是一组几何直觉在高维空间中的失效:
距离集中。在高维空间中,任意两点之间的距离趋于接近。若数据均匀分布在
样本稀疏。要让
体积集中。高维球体的体积集中在表面附近的薄层中,多数点靠近边界而非中心。这一现象说明均匀分布在高维空间中的行为与低维直觉相反,基于体积的抽样与数值积分方法需要相应调整。
最小二乘的失效
高维情形对回归的直接影响是设计矩阵的秩不足。
这一局面有一个重要的推论:在高维情形下过拟合是默认状态。任何模型都可以在训练集上达到零误差,样本外表现完全由额外约束决定。约束的来源有两种:稀疏性假设(少数变量起作用)与低秩假设(数据位于低维子空间附近)。本节讨论的方法都建立在其中之一上。
import numpy as np
# 高维下的最小二乘:p > n 时可以完全拟合训练集,但样本外预测完全没有价值
rng = np.random.default_rng(16)
n, p = 30, 100
X = rng.normal(size=(n, p))
y = rng.normal(size=n)
beta_ls = np.linalg.lstsq(X, y, rcond=None)[0]
resid = y - X @ beta_ls
print(f"样本量 {n},变量数 {p}")
print(f"训练残差平方和 = {(resid ** 2).sum():.6f}") # 接近零,完全拟合
# 样本外数据上的表现
X_new = rng.normal(size=(50, p))
y_new = rng.normal(size=50)
pred = X_new @ beta_ls
print(f"样本外均方误差 = {((y_new - pred) ** 2).mean():.3f}") # 远大于 1,比预测均值还差
# 各列相关矩阵的最大最小特征值,反映条件数
XtX = X.T @ X
eigs = np.linalg.eigvalsh(XtX)
print(f"X^T X 的秩 = {np.linalg.matrix_rank(XtX)},小于 p = {p}")
print(f"条件数 = {np.sqrt(eigs[-1] / max(eigs[0], 1e-12)):.2e}")2.14.2 稀疏性与正则化方法
稀疏假设
高维问题需要额外约束,最常用的约束是稀疏性(sparsity):真正影响响应变量的只有少数几个特征,其余特征的系数为零或接近零。稀疏假设在文本分类(一篇文章的主题由少数词决定)、推荐系统(少数行为特征决定偏好)、传感器网络(少数位置反映关键状态)中都有实际依据。
稀疏性把估计问题的有效参数个数从
Lasso 的选择性质
Lasso 估计满足
它的解满足最优性条件:对非零系数,梯度部分恰好抵消惩罚的次梯度;对零系数,梯度的绝对值不超过
理论结果需要设计矩阵满足一定条件,机制是防止真实非零变量与噪声变量之间出现较强的相关。不可表示条件(irrepresentable condition)要求非零变量与零变量的相关性不能太强,它是 Lasso 能够一致地识别支撑集(非零变量的位置)的关键前提。在这一条件下,选择合适的
这些条件在相关系数较高的变量组上容易不成立,此时 Lasso 会在组内随机保留一个变量,选出的支撑集不稳定。弹性网通过加入
压缩感知
压缩感知(compressed sensing)处理的是从远少于参数个数的观测中恢复稀疏信号的欠定线性系统情形:给定
恢复的可行性由受限等距性质(restricted isometry property,RIP)刻画:矩阵
算法上除了
矩阵补全与低秩结构
另一类高维结构是低秩(low rank):数据矩阵的秩远小于其维度。矩阵补全(matrix completion)在只观测到部分元素的情况下恢复低秩矩阵,典型的例子是用户对物品的评分矩阵(评分项稀疏,潜在维度少)。恢复的准则用核范数(矩阵奇异值之和)替代秩,作为秩的凸松弛:
核范数是
2.14.3 高维降维与协方差估计
主成分分析与稀疏主成分
主成分分析(principal component analysis,PCA)寻找方差最大的线性方向,计算归结为协方差矩阵的特征分解。线性代数部分已给出几何解释,此处补充高维下的两点变化。第一,
稀疏主成分分析(sparse PCA)在载荷向量上加稀疏约束,使每个主成分只涉及少数变量。求解方式包括对载荷加
其他降维方法包括因子分析(factor analysis,2.6 节)、典型相关分析与稀疏典型相关分析(2.6 节),它们分别针对协方差结构、两组变量关联与稀疏载荷的组合。
高维协方差估计
应对方式是引入结构假设。对角线假设直接用对角矩阵或其缩放形式。因子结构用低秩加对角的形式(2.6 节的因子模型)。收缩估计把样本协方差向结构简单的目标(如对角矩阵)收缩:
图模型选择
高斯图模型(Gaussian graphical model)用精度矩阵
图 Lasso(graphical Lasso)对精度矩阵刻画
求解用块坐标下降,每次更新一行一列。邻域选择(neighborhood selection)为每个变量做一次 Lasso 回归(用其余变量预测它),由回归系数的非零模式构造邻居集合,再通过对称化与一致性规则确定边。两种方法都利用稀疏假设把高维协方差估计分解为一组低维回归问题,计算复杂度显著低于直接优化。
import numpy as np
def graph_lasso_blockwise(S, lam, max_iter=100, tol=1e-5):
"""图 Lasso 的块坐标下降(简化版,用于展示更新逻辑)"""
p = S.shape[0]
W = S + lam * np.eye(p)
for _ in range(max_iter):
W_old = W.copy()
for j in range(p):
idx = np.arange(p) != j
w11 = W[np.ix_(idx, idx)]
s12 = S[idx, j]
# 对子问题做一次近端梯度更新(此处用软阈值近似)
beta = np.linalg.solve(w11, s12)
beta = np.sign(beta) * np.maximum(np.abs(beta) - lam, 0)
w12 = w11 @ beta
W[np.ix_(idx, [j])] = w12.reshape(-1, 1)
W[j, idx] = w12
if np.max(np.abs(W - W_old)) < tol:
break
return W
rng = np.random.default_rng(28)
# 构造稀疏精度矩阵:三个变量构成一个团,其余独立
p = 6
Theta = np.eye(p)
Theta[0, 1] = Theta[1, 0] = -0.4
Theta[1, 2] = Theta[2, 1] = -0.4
Theta[3, 4] = Theta[4, 3] = -0.4
Sigma_true = np.linalg.inv(Theta)
n = 2000
X = rng.multivariate_normal(np.zeros(p), Sigma_true, size=n)
S = np.cov(X.T)
W = graph_lasso_blockwise(S, lam=0.05)
Theta_hat = np.linalg.inv(W)
print("估计的精度矩阵(绝对值 > 0.05 的位置视为边):")
print(np.round(np.where(np.abs(Theta_hat) > 0.05, Theta_hat, 0), 3))
# 恢复出 0-1、1-2、3-4 三对条件依赖,与真实结构一致2.14.4 随机矩阵理论
Marchenko-Pastur 定律
高维下样本协方差矩阵的特征值行为由随机矩阵理论描述。设
上。
这一定律的含义是:即使真实协方差是单位矩阵(无任何相关性),样本协方差矩阵的特征值也不会都等于
这一结论对 PCA 有直接影响。用样本特征值判断主成分个数时,噪声本身会贡献看似显著的大特征值。
Tracy-Widom 分布与相变
最大特征值的涨落由 Tracy-Widom 分布(Tracy-Widom distribution)描述。把最大特征值标准化后,
其中
信号是否存在还取决于其强度的下限。拜雷-埃斯金定律(Baik-Ben Arous-Péché law,BBP 相变)说明:若真实协方差有一个特征值
2.14.5 高维多重检验
高维 FDR 与本地 FDR
2.11 节给出 FDR 的概念与 BH 校正。高维情形下检验数量
其中
高维下 FDR 控制的困难在于依赖结构:检验统计量之间往往正相关(相邻特征、相关指标),BH 的独立性假设不成立。应对方式是使用依赖结构下的修正(BY 方法)、重抽样校准(用置换分布估计零分布)或估计有效检验数(把相关导致的冗余折算掉)。
2.14.6 因果推断的问题与潜在结果框架
相关不等于因果
2.13 节的回归诊断已经提示过这一问题,这里给出正式的处理框架。两个直接原因使观测数据的关联偏离因果效应。混杂(confounding):存在同时影响处理与结果的变量,使两者产生非因果的关联。选择(selection):样本的处理状态与结果同时受某个变量影响,或被同一机制筛选。辛普森悖论(Simpson's paradox)是混杂导致结论反转的经典表现:分组数据中各组都显示正向关系,合并后关系反向,原因是分组变量的分布在不同处理组之间不同。
潜在结果
潜在结果(potential outcomes)框架(也称 Rubin 因果模型)为因果效应提供定义。对每个个体
根本困难在于因果推断的基本问题:每个个体只能观测到其中一个潜在结果,另一个是反事实(counterfactual)。观测到的结果是
个体效应不可观测,因此推断的目标转向总体层面的量:平均处理效应(average treatment effect,ATE)
处理组的平均处理效应(ATT)与条件平均处理效应(conditional average treatment effect,CATE,
识别假设
从观测数据估计 ATE 需要三条假设:
可忽略性(ignorability,又称无混杂性、条件可交换性):给定协变量
它的含义是所有同时影响处理与结果的变量都被观测并纳入了
正性(positivity,又称重叠性):对每个协变量取值,接受处理与不接受处理的概率都严格大于零,
违背时会出现某些类型个体只出现在一个处理组的情况,这些个体上的效应无法识别。
一致性(consistency,含 SUTVA):个体的观测结果等于其处理状态对应的潜在结果,且一个个体的结果不受其他个体处理状态的影响(无干扰)。违背的例子包括疫苗的群体免疫效应、社交网络中的溢出效应。
三条假设成立时,ATE 可以用协变量调整后的期望表示:
这就是后门调整的可估计形式,下节从图的角度重新表述。
随机化实验
随机化实验(randomized experiment)通过随机分配处理消除混杂:随机化保证
实践中的问题是随机化的完整执行与外部有效性:样本脱落、依从性不足、仅覆盖特定人群。前者破坏可忽略性(脱落往往与结果相关),后者限制结论的推广范围。
import numpy as np
# 辛普森悖论演示:分组内正效应,合并后变负
rng = np.random.default_rng(34)
group = rng.binomial(1, 0.5, size=4000) # 0 为 A 类,1 为 B 类
# 处理分配依赖分组:A 类更可能被处理
T = rng.binomial(1, np.where(group == 0, 0.8, 0.2))
# 结果依赖分组与处理,组内效应为正
Y = 2.0 * group + 1.5 * T + rng.normal(scale=1.0, size=4000)
print(f"合并数据:处理组均值 {Y[T == 1].mean():.3f},对照组均值 {Y[T == 0].mean():.3f}")
print(f" 合并差异 = {Y[T == 1].mean() - Y[T == 0].mean():+.3f}")
for g in [0, 1]:
mask = group == g
diff = Y[mask & (T == 1)].mean() - Y[mask & (T == 0)].mean()
print(f"分组 {g} 内:处理组 {Y[mask & (T == 1)].mean():.3f},"
f"对照组 {Y[mask & (T == 0)].mean():.3f},差异 {diff:+.3f}")
# 合并差异符号可能相反,分组内差异都接近 1.52.14.7 因果图与 do 算子
结构因果模型与有向无环图
2.8 节已引入结构因果模型与有向无环图的形式。因果图用箭头表示因果方向,与贝叶斯网络中箭头只表示条件依赖不同:
d-分离(d-separation)给出图与条件独立性的对应:若一条路径被某个变量集合阻断,则该路径上的信息不传递。阻断规则识别三种结构的中间节点:链式
do 算子与 do-calculus
干预分布
后门准则与前门准则
后门准则(back-door criterion)给出最常用的识别条件。变量集合
后门调整(back-door adjustment)就是按混杂变量的分布加权平均条件关系。这一公式是分层分析与回归调整的因果依据:把
前门准则(front-door criterion)处理混杂变量不可观测的情形。当
它对两个可识别的部分分别估计后组合,绕过了不可观测的混杂。前门准则的实用价值在于它说明识别路径不唯一,图的局部结构决定了哪些量可以估计。
2.14.8 识别策略
工具变量
工具变量(instrumental variable,IV)适用于存在未观测混杂的场景。有效工具需满足:与处理相关(相关性)、只通过处理影响结果(排他性)、与潜在结果的条件分布独立(外生性)。估计用两阶段最小二乘(2.13 节),弱工具的诊断用第一阶段 F 统计量。IV 给出的效应对依从者(compliers,即处理状态会随工具变化的个体)而言是局部的,这一群体往往无法明确识别,解释效应时需要说明。
倾向得分方法
倾向得分(propensity score)是接受处理的概率:
这一降维把高维协变量调整问题化为一维匹配或加权问题。倾向得分匹配(propensity score matching)为每个处理组个体寻找倾向得分接近的对照个体,常用最近邻匹配(取最近的若干个)、卡尺匹配(限制最大距离)、马氏距离匹配(在倾向得分之外加入协变量的距离)。匹配后需要检查平衡性:匹配样本中协变量的标准化差异是否足够小(经验规则是小于
逆概率加权(inverse probability weighting,IPW)用权重重构一个伪总体,使处理组与对照组在协变量上可比:
倾向得分接近
import numpy as np
from scipy import optimize
def estimate_ate_ipw(X, T, Y, l2=1.0):
"""用逻辑回归估计倾向得分,再计算逆概率加权的 ATE"""
n, p = X.shape
Xc = np.column_stack([np.ones(n), X])
def neg_loglik(beta):
eta = Xc @ beta
return -np.sum(T * eta - np.logaddexp(0, eta)) + l2 * beta @ beta / 2
beta = optimize.minimize(neg_loglik, np.zeros(p + 1), method="BFGS").x
e = 1 / (1 + np.exp(-Xc @ beta))
e = np.clip(e, 1e-3, 1 - 1e-3) # 截断极端权重,控制方差
return (T * Y / e).mean() - ((1 - T) * Y / (1 - e)).mean(), e
rng = np.random.default_rng(45)
n = 5000
# 混杂变量
x1 = rng.normal(size=n)
x2 = rng.normal(size=n)
# 处理分配依赖混杂
e_true = 1 / (1 + np.exp(-(0.8 * x1 - 0.5 * x2)))
T = rng.binomial(1, e_true)
# 结果同时依赖混杂与处理,真实 ATE = 2
Y = 1.0 * x1 + 0.5 * x2 + 2.0 * T + rng.normal(size=n)
naive = Y[T == 1].mean() - Y[T == 0].mean()
ate_ipw, e_hat = estimate_ate_ipw(np.column_stack([x1, x2]), T, Y)
print(f"朴素差异(有偏) = {naive:+.3f}")
print(f"IPW 估计 = {ate_ipw:+.3f}(真值 2.0)")
print(f"倾向得分范围 = [{e_hat.min():.3f}, {e_hat.max():.3f}]")准实验设计
部分设计利用数据生成过程中的制度性断点或时间结构来识别效应,不需要可忽略性假设。
断点回归(regression discontinuity)适用于处理由某个连续变量是否超过阈值决定的情形。阈值两侧的个体在协变量上近似可比,只有在阈值附近的一个小邻域内估计效应才可靠。模糊断点回归(fuzzy RD)处理阈值只改变处理概率而不完全决定处理状态的情形,用阈值作为工具变量。实施要点是带宽选择、断点附近的密度检验(排除操纵阈值)与协变量连续性检验。
双重差分(difference-in-differences,DID)比较处理组与对照组在处理前后的变化差异,识别假设是平行趋势:若无处理,两组的趋势相同。这一假设可以用处理前的数据部分检验。合成控制(synthetic control)在没有合适的对照组时,用多个未处理单元的加权组合构造一个反事实的对照,权重的选择使构造单元在处理前与处理单元的轨迹接近。
中介分析
中介分析(mediation analysis)把总效应分解为通过中介变量的间接效应与其余的直接效应。潜在结果框架下的定义需要引入嵌套的潜在结果
两者的和等于总效应。识别需要额外的假设:中介与结果之间没有未观测混杂,处理与中介之间没有未观测混杂。这些假设比可忽略性更强,敏感性分析尤其重要。
2.14.9 敏感性分析与因果发现
敏感性分析
可忽略性无法检验,因此需要评估结论对假设偏离的稳健程度。敏感性分析(sensitivity analysis)量化未测量混杂需要多强才能推翻结论。E 值(E-value)给出所需的效应量尺度:
它表示未测量混杂与处理和结果的关联强度至少需要达到这一水平,才能使观测到的效应完全由混杂解释。E 值远大于已知混杂的强度时,结论较为稳健;E 值接近
因果发现
因果发现(causal discovery)试图从数据推断图结构,前提假设比效应估计更强,输出也通常只能确定到马尔可夫等价类(同一等价类中的图蕴含相同的条件独立关系)。
PC 算法(Peter-Clark algorithm)基于条件独立检验:从完全图出发,逐个删除相互独立的变量对之间的边,再根据对撞结构的定向规则确定箭头方向。GES 算法(greedy equivalence search)在等价类空间中做贪心搜索,用评分(如 BIC)代替独立性检验,通常更稳定。两者都假设无未观测混杂(因果充分性)。
LiNGAM(linear non-Gaussian acyclic model)利用非高斯性识别方向:在线性、非高斯、无环的假设下,因果方向可以由独立性检验唯一确定,突破了马尔可夫等价类的限制。加性噪声模型(additive noise model)把方向识别建立在噪声独立性上:
2.14.10 本节小结与全章回顾
高维与因果:两条边界的处理方式
本节处理了经典方法的两条边界。高维情形下,
第二章的内容到此结束。回顾全章的线索:2.1 到 2.3 建立了概率论的语言,用概率空间描述不确定性、用随机变量把事件编码为数值、用数字特征概括分布;2.4 与 2.5 按生成机制整理了常见分布族,为建模提供可直接使用的构件;2.6 处理多维情形,联合分布、条件分布与协方差结构是多元统计的基础;2.7 讨论大样本行为,收敛模式、极限定理与集中不等式给出了误差的量级;2.8 把独立同分布的假设放宽为依赖结构,随机过程与概率图模型提供了描述时序与网络的语言。统计推断部分从 2.9 的问题设定出发,2.10 与 2.11 分别给出估计与检验两套工具,2.12 用先验与后验重构推断流程并讨论计算方法,2.13 把它们组织成回归建模的框架,2.14 处理高维与因果这两条现代数据的边界。
这些工具与后续章节的分工是清楚的。最优化章节处理求解问题:极大似然、变分推断与正则化估计最终都要落到数值优化上,收敛性分析与算法选择是那里的内容。信息论章节处理度量问题:熵、KL 散度与互信息给出分布的差异度量,本节与 2.3 节中出现的 Fisher 信息与距离相关在那里得到统一处理。两章的内容都与本章交叉,共同构成机器学习的理论底座。
练习题
第 1 题 概念推导
设
参考答案
解不唯一的原因:最小二乘的法方程为
其中
加入
对
除了保证唯一性,惩罚项还使解在零空间方向上被压缩到零,即所有解中范数最小的那一个(
第 2 题 计算推理
某平台有
参考答案
最小二乘的可行性:
Lasso 的非零系数上限:Lasso 的解由 KKT 条件确定,在一般位置下非零系数的个数不超过样本量
最大噪声特征值:随机矩阵理论中,真实协方差为单位矩阵(方差
即纯噪声也能产生达到真实方差
第 3 题 代码验证
构造一个含混杂的观测数据,比较三种估计方式:未调整的组间均值差、后门调整(在回归中加入混杂变量)、逆概率加权。用一个已知真值的数据生成过程验证三种估计的偏差;再演示当混杂变量未被观测时,后门调整失效的情形。
参考答案
import numpy as np
from scipy import optimize
def estimate_ate_ipw(X, T, Y, l2=1.0):
n, p = X.shape
Xc = np.column_stack([np.ones(n), X])
def neg_loglik(beta):
eta = Xc @ beta
return -np.sum(T * eta - np.logaddexp(0, eta)) + l2 * beta @ beta / 2
beta = optimize.minimize(neg_loglik, np.zeros(p + 1), method="BFGS").x
e = np.clip(1 / (1 + np.exp(-Xc @ beta)), 1e-3, 1 - 1e-3)
return (T * Y / e).mean() - ((1 - T) * Y / (1 - e)).mean()
rng = np.random.default_rng(52)
n = 20_000
u = rng.normal(size=n) # 混杂变量(可观测)
w = rng.normal(size=n) # 未观测混杂
T = rng.binomial(1, 1 / (1 + np.exp(-(1.2 * u + 1.0 * w))))
Y = 1.5 * u + 1.2 * w + 2.0 * T + rng.normal(size=n)
# 情形一:只观测到 u,w 未观测
naive = Y[T == 1].mean() - Y[T == 0].mean()
Xc = np.column_stack([np.ones(n), u, T])
coef = np.linalg.lstsq(Xc, Y, rcond=None)[0]
print(f"未调整差异 = {naive:+.3f}")
print(f"回归调整(控制 u) = {coef[2]:+.3f}")
print(f"IPW(控制 u) = {estimate_ate_ipw(u.reshape(-1, 1), T, Y):+.3f}")
print(f"真值 = +2.000")
# 三者都偏离真值,因为 w 未观测,可忽略性不成立
# 情形二:u 与 w 都观测
X2 = np.column_stack([u, w])
Xc2 = np.column_stack([np.ones(n), u, w, T])
coef2 = np.linalg.lstsq(Xc2, Y, rcond=None)[0]
print(f"\n控制 u 与 w 后的回归系数 = {coef2[3]:+.3f}")
print(f"控制 u 与 w 后的 IPW = {estimate_ate_ipw(X2, T, Y):+.3f}")两种情形对比说明可忽略性的作用:混杂变量全部观测到时,回归调整与 IPW 都接近真值
第 4 题 综合应用
某平台想评估新版推荐算法对用户停留时长的影响,但无法做随机实验。已知数据包含用户属性、历史行为与新算法是否启用(由平台的灰度策略决定,与用户的历史活跃度相关)。请设计一个估计方案:列出需要假设的条件、选择识别策略、说明必须检查的诊断项,并给出结论报告时应包含的内容。
参考答案
需要假设的条件:核心假设是可忽略性:给定用户属性与历史行为后,算法分配与潜在停留时长独立,即不存在未观测的同时影响分配与结果的因素。灰度策略按用户分组推进时,若分组依据是活跃度、地域、设备等可观测属性,这一假设有可能成立;若分组还依据运营对用户偏好的主观判断,则该判断若未被记录则假设可能违背。另外需要正性(每种用户类型在两组中都出现)与一致性(无跨用户干扰,要注意社交分享可能带来的溢出效应)。
识别策略:以用户属性与历史行为为协变量,采用双重稳健估计(结果回归加逆概率加权的 AIPW 形式),兼顾模型错配风险。若灰度策略基于某个明确的阈值(例如活跃度分数超过某个值才启用),改用它做断点回归,识别条件更弱,只在阈值附近取样本。若灰度是分批推进的,可以用双重差分比较早用组与晚用组在推进前后的变化差异,需要检验平行趋势。
必须检查的诊断项:其一,倾向得分的重叠情况,画出两组的倾向得分分布,检查是否有大量个体落在极端区域,必要时截断权重或改用匹配。其二,协变量平衡性,计算加权或匹配后各协变量的标准化差异,应小于
报告内容:给出效应的点估计与区间;说明识别假设的内容与论证依据;列出平衡性与重叠性的诊断结果;报告敏感性分析的结论,说明需要多强的未观测混杂才能推翻结论;说明效应针对的群体(若用 IV 则是依从者,若用断点回归则是阈值附近的个体),避免把局部效应当作全平台效应;最后给出结论对假设偏离的稳健性评估,而非单一的显著性判断。
常见错误
错误 1 · 在高维下用
原因:
解决:评价一律使用交叉验证或独立的留出集,报告样本外误差。特征筛选必须放在交叉验证的每一折内部进行,否则选择过程本身会泄漏信息,使误差估计偏乐观。
错误 2 · 用样本特征值的大小判断主成分个数
原因:高维下噪声本身会产生较大的样本特征值。Marchenko-Pastur 定律说明即使真实协方差为单位矩阵,最大样本特征值也可达
解决:用噪声分布的上界作为阈值(按
错误 3 · 把关联直接解释为因果而不检查识别条件
原因:混杂存在时回归系数会系统偏离因果效应,偏离方向与大小取决于混杂结构,样本量增加不能消除偏差。对撞变量被当作混杂控制进去时,反而会引入偏倚,甚至使原本存在的效应消失或反转。
解决:给出因果结论前明确写出识别假设,并用图结构判断应控制哪些变量:控制共因与链式结构的中间变量,避免控制对撞变量与中介变量。无法确定时报告多种控制方案下的结果,说明结论对变量选择的敏感性,并做敏感性分析。
错误 4 · 把倾向得分的极端权重直接代入估计
原因:倾向得分接近
解决:先检查倾向得分的分布与重叠性,对超出范围的值截断(如限制在