老王在城郊有一座苹果园。他最想弄明白一件事:那壶昂贵的有机肥,到底让苹果变甜了多少?他翻出三年记录,发现施过肥的树结的果子平均甜度高 0.8 度。但他很快冷静下来——他施肥不是抛硬币决定的,而是总挑光照好、树龄长的树施肥。这些树本来就甜,多出来的 0.8 度,究竟是肥料的功劳,还是树本身的底子?因果推断的答案不是把果树劈成两半,而是接受一个思想实验:每棵树都藏着两个平行世界的甜度——一个吃过肥,一个没吃过肥。现实只让我们看到其中一个,另一个叫反事实。倾向得分,就是根据树的年龄、光照、土质等特征,估算它被选去吃肥的概率。有了这个概率,老王可以把两群不对等的树重新配对、重新加权,让比较变成一场虚拟随机实验。

岗位关联

掌握倾向得分,你就能在无法做随机实验的现实数据里,用可复现的推理路径得到接近随机实验的因果结论,这是数据可信层与可解释 AI 的硬核能力。

目录
  1. 可视化演示
  2. 因果推断基础
  3. 倾向得分原理
  4. 匹配算法
  5. 加权估计
  6. 性能评估
  7. 实战优化
  8. AI 应用场景
  9. Python 演示
  10. 常见误区
  11. 面试题

可视化演示

展示系统处理流水线、实时性能指标曲线及多方案对比分析,包含数据流转、吞吐延迟监控与方案评估。

本节配有交互动效(进入视口后自动加载,约 3KB)。

系统可视化 处理流程:输入→处理→模型→输出 性能监控:实时指标 P=L×T

因果推断基础

想象老王真的拿到一台时光机。他可以让同一棵树在 2019 年吃肥,在 2020 年不吃肥,然后比较两次甜度。机器当然不存在,但潜在结果框架让老王的脑子里多了这台机器。它告诉老王:每一棵树 i 都同时拥有两个身份,一个是“施肥后的甜度”,一个是“不施肥的甜度”,就像一个人同时活在两个平行世界里。

我们把这两个身份记为 Y_i(1) 和 Y_i(0)。1 代表吃了肥,0 代表没吃肥。两者之间的差 Y_i(1) - Y_i(0),就是这棵树个体的因果效应。可惜现实是一个残酷的剪辑师,只保留一个镜头:吃了肥的树你无法知道它不吃肥有多甜,没吃肥的树你无法知道它吃了肥有多甜。那个消失的镜头,就叫反事实。

为了得到全园的整体结论,因果推断关心平均处理效应 ATE:把所有树的个体效应取平均。如果老王像抛硬币一样随机决定施肥,那么两组树在年龄、光照、土质上不会有系统性差别,均值的差异就能直接归因于肥料。随机化是因果推断的金标准。

老王收起时光机的幻想,却很受用这套语言:所有因果推断努力,本质上都是在补全那个被现实剪掉的反事实镜头。接下来要做的,不是造机器,而是找一杆能在两组树之间称出公平的秤。

τ=E[Yi(1)−Yi(0)]\displaystyle \tau = \mathbb{E}\left[ Y_i(1) - Y_i(0) \right]
平均处理效应就是“所有树都吃肥”与“所有树都不吃肥”两个平行世界里,甜度总平均的差距。
  1. 潜在结果变量Y_i(1) 表示个体 i 接受处理后的潜在结果,Y_i(0) 表示未接受处理时的潜在结果,它们像同一颗苹果在平行世界中的两个版本。
    Yi(1), Yi(0)Y_i(1),\,Y_i(0)
  2. 个体因果效应同一棵树在两种平行世界中的甜度差值,差值为正说明肥料有效。
    Yi(1)−Yi(0)Y_i(1) - Y_i(0)
  3. 取期望得到 ATE对所有个体的个体效应求平均,就是群体层面的平均处理效应。
    E[Yi(1)−Yi(0)]\mathbb{E}\left[ Y_i(1) - Y_i(0) \right]

倾向得分原理

老王没有时光机,但他在果园里发现了一个规律:施肥并不是随便执行的,而是受树龄、光照、土质这些“协变量”摆布。于是他想:如果我能算出每一棵树被选去施肥的概率,这个概率是不是就能概括这棵树的全部偏心之处?

这个概率就是倾向得分 e(X)。树龄大、光照好的树被选中的概率高,处在冷角落、土质贫的树概率低。e(X) 把年龄、光照、土质等一堆特征压缩成一个 0 到 1 之间的数字,把高维的“找相似”问题,变成一维的“比概率”问题。

Rosenbaum 和 Rubin 在 1983 年证明了一个关键性质:在条件可忽略性假设下(即给定 X 时,处理分配与潜在结果独立),倾向得分是一个平衡得分。只要两组树在 e(X) 上相同,它们的协变量分布也趋于相同,处理分配就像随机化一样。这个结论把观测数据变成一场准实验。

老王终于松了口气:只要把每棵树被选去吃肥的概率算出来,就相当于找到了果园里的“偏心度”。剩下的工作,就是让偏心度相同的树走到一起比甜度。

e(X)=P(T=1∣X)\displaystyle e(\mathbf{X}) = P(T=1 \mid \mathbf{X})
倾向得分不是“谁该施肥”的预测标签,而是一把压缩高维特征的钥匙。
  1. 处理变量T 表示是否接受处理,T=1 表示施肥,T=0 表示未施肥。
    T∈{0,1}T \in \{0,1\}
  2. 条件概率给定协变量向量 X 时,个体接受处理的概率,这是倾向得分的定义式。
    P(T=1∣X)P(T=1 \mid \mathbf{X})
  3. 概率取值范围e(X) 是概率,因此一定落在 0 和 1 之间,越接近 1 说明该个体越像“被选去施肥的人”。
    0≤e(X)≤10 \le e(\mathbf{X}) \le 1

匹配算法

老王想给每棵施肥树找一位“影子兄弟”——看起来条件相似但没吃肥的树。最朴素的办法是最邻近匹配:对每一位处理组个体,在对照组里找一个倾向得分最接近的个体。倾向得分越接近,说明两张“偏心名片”长得越像。

卡钳匹配给这个“最近”加上一道警戒线:如果两个个体倾向得分差得太大,宁可不匹配也不硬凑。分层匹配则先把全体样本按倾向得分切成若干层,再在每一层内比较结果;核匹配则用加权平均给一个处理个体匹配多个对照,让“影子兄弟”变成“影子兵团”。

影子兄弟不是完美的,但至少让比较不再像“校花与全年级比身高”。老王从一维的相似度入手,躲开了高维空间的度量灾难。

d(i,j)=∣e(Xi)−e(Xj)∣\displaystyle d(i,j) = | e(\mathbf{X}_i) - e(\mathbf{X}_j) |
最邻近匹配就是在一维倾向得分轴上,找绝对距离最短的一对个体。
  1. 两个个体i 是处理组个体(吃了肥的树),j 是候选对照组个体(没吃肥的树)。
    i∈T, j∈Ci \in T,\, j \in C
  2. 距离度量两个个体倾向得分绝对差越小,说明它们被选到处理组的概率越接近,协变量分布也越相似。
    ∣e(Xi)−e(Xj)∣| e(\mathbf{X}_i) - e(\mathbf{X}_j) |
  3. 最邻近选择在对照组候选中选择距离最小的 j;若再加卡钳,则只有当 d 小于卡钳时才接受该匹配。
    min⁡jd(i,j)\min_j d(i,j)

加权估计

匹配是一对一联姻,加权则是给所有样本重新称重。老王发现,与其辛苦地一对一配对,不如直接给每一棵树一个“纠偏权重”:那些明明条件很像对照组却吃了肥的树,权重应该大一些;那些条件很像处理组却没吃肥的树,也应该大一些。这样加权之后,两组的协变量分布会重新变得均衡。

逆概率加权(IPW)正是这个思路。处理组每个个体的权重取倾向得分的倒数 1/e,对照组每个个体取 1/(1-e)。本质是让样本分布“变回”一个处理分配完全随机的伪总体。稳定权重进一步在分子上乘上处理率或对照组比例,降低极端权重带来的方差。

老王想象把每一筐苹果按概率的“反概率”加水倒水,最终天平恢复平衡。他还可以把结果回归和倾向得分模型结合,这就是双重稳健估计:只要其中一个模型正确,估计依然保持一致。

τ^IPW=1n∑i=1n(TiYiei−(1−Ti)Yi1−ei)\displaystyle \hat{\tau}_{IPW} = \frac{1}{n} \sum_{i=1}^{n} \left( \frac{T_i Y_i}{e_i} - \frac{(1-T_i)Y_i}{1-e_i} \right)
IPW 估计量把每个观测结果按“被选进当前组的概率倒数”加权,再用加权后的两组均值之差估计处理效应。
  1. 处理组项当 T_i=1 时,这一项为 Y_i / e_i。个体被选中概率越低,权重倒数越大,就越能代表那些“条件相似但没被选中”的群体。
    TiYiei\frac{T_i Y_i}{e_i}
  2. 对照组项当 T_i=0 时,这一项为 Y_i / (1-e_i),用来放大那些实际上很像处理组的对照个体。
    (1−Ti)Yi1−ei\frac{(1-T_i)Y_i}{1-e_i}
  3. 相减取平均对所有个体的加权结果差取平均,就得到总体平均处理效应的估计值。
    1n∑i=1n(TiYiei−(1−Ti)Yi1−ei)\frac{1}{n}\sum_{i=1}^{n}\left( \frac{T_i Y_i}{e_i} - \frac{(1-T_i)Y_i}{1-e_i} \right)

性能评估

老王担心自己的“公平独木桥”是否真的公平,需要用尺子量。最常见的尺子是标准化差异(SMD):比较每个协变量在匹配或加权前后的均值差,再除以合并标准差。它不像显著性检验那样受样本量影响,能更真实地反映两组差异有多大。

标准化差异的绝对值小于 0.1,通常被认为协变量已经得到良好平衡。与此同时还要做重叠诊断:看两组倾向得分分布是否有足够重叠。如果处理组的倾向得分都集中在 0.9 附近,对照组都集中在 0.1 附近,那么“影子兄弟”根本找不到同一片生活区域。敏感性分析则用来回答:如果存在一个未观测混杂变量,它要强到什么程度才能推翻当前结论?

老王知道了,光有影子兄弟还不够,还要给兄弟俩量身高、测体重,确认真的很像。匹配不是结束,验证平衡才是真正把话说到实处的时刻。

d=XˉT−XˉC(sT2+sC2)/2\displaystyle d = \frac{\bar{X}_T - \bar{X}_C}{\sqrt{(s_T^2 + s_C^2)/2}}
标准化差异把两组均值差放到“标准差”这把尺子上,消除量纲影响,便于统一判断平衡性。
  1. 两组均值差处理组与对照组在某个协变量上的均值之差,比如平均树龄或平均光照时长。
    XˉT−XˉC\bar{X}_T - \bar{X}_C
  2. 合并标准差两组方差取平均再开根号,相当于把两个组的波动幅度合成一把尺子。
    (sT2+sC2)/2\sqrt{(s_T^2 + s_C^2)/2}
  3. 标准化差异阈值用均值差除以合并标准差,绝对值小于 0.1 通常视为该协变量已平衡。
    ∣d∣<0.1|d| < 0.1

实战优化

老王开始调配方:不能把影响施肥但不会影响甜度的“工具变量”放进去,否则会放大方差;也不能放入处理后变量,否则会引入对撞偏倚。一个好的倾向得分模型,应该纳入同时影响处理分配和结局的混杂变量。

倾向得分最常用的拟合方式是 Logistic 回归:把处理变量对协变量做回归,得到每个个体进入处理组的概率。在协变量关系复杂时,还可以用广义加性模型、梯度提升等非参数方法拟合倾向得分。拟合之后,若发现极端倾向得分,例如小于 0.05 或大于 0.95,通常需要修剪,因为这些样本的权重会爆炸、匹配会失真。

经过这轮打磨,老王终于可以说:我的结论不再是猜测,而是一场深思熟虑的“虚拟随机实验”。从变量选择、倾向得分修剪、非参数拟合到成熟的软件实现,每一步都在提升结论的可信度。

log⁡e(X)1−e(X)=β0+βTX\displaystyle \log\frac{e(\mathbf{X})}{1-e(\mathbf{X})} = \beta_0 + \boldsymbol{\beta}^T \mathbf{X}
倾向得分的 Logistic 模型先把概率转换成对数优势比,用协变量的线性组合去拟合,再反解出概率。
  1. 优势比处理概率与未处理概率之比的自然对数,称为 logit 变换,把 [0,1] 的概率映射到实数轴。
    ln⁡e1−e\ln\frac{e}{1-e}
  2. 线性预测用协变量的线性组合来表达 logit 值,β 表示每个协变量对处理分配的影响强度。
    β0+β1X1+⋯+βkXk\beta_0 + \beta_1 X_1 + \cdots + \beta_k X_k
  3. 反解得分由 logit 值反解出概率,就得到了倾向得分。实际工作中可直接调用 sklearn 等工具完成。
    e(X)=11+e−(β0+βTX)e(\mathbf{X}) = \frac{1}{1 + e^{-(\beta_0 + \boldsymbol{\beta}^T \mathbf{X})}}

AI 应用场景

医疗真实世界研究中的用药效果评估

阶段:观察性研究的因果推断 / 数据可信层验证

解决的问题:直接比较用药与不用药患者的复发率,会被病情严重程度等混杂因素带偏。AI 团队用倾向得分匹配或 IPW 构造可比的用药对照组,让“医生为什么开药”这一机制不再成为结论的干扰项。

具体案例:某医院评估新降压药对 30 天再入院率的影响。医生更倾向给重症患者开新药,而重症本身也推高再入院率。团队把重症程度、年龄、并发症纳入 Logistic 模型,对每个用药患者匹配一个倾向得分最接近的未用药患者,再比较再入院率。

营销场景中的优惠券效果归因

阶段:用户增长效果评估 / 策略算法审计

解决的问题:满减券的发送策略偏向高活跃用户,而高活跃用户本来就更容易复购,直接对比会高估券的效果。倾向得分加权可以还原“人人都有可能收到券”的伪随机世界。

具体案例:电商平台评估“满 300 减 50”是否提升复购。平台用用户活跃度、历史客单价等特征估计倾向得分,再用 IPW 加权:高活跃用户被发券概率高,权重取 1/e 压低其影响;低活跃用户被发券概率低,权重放大,从而得到更真实的券效估计。

公共政策评估中的职业培训项目

阶段:政策效果审计 / 可解释 AI 决策支持

解决的问题:参加职业培训的人与未参加者往往在动机、工作经历上存在系统性差异,简单对比就业率会把“选择偏差”误认为“培训效果”。双重稳健估计能同时利用结果回归和倾向得分模型,降低单一模型误设的风险。

具体案例:就业局评估一项职业技能培训是否提高就业率。参与者多为失业较久者,这类人本身就业难度更大。数据团队用双重稳健估计:既建立就业率的结果回归,又建立参与培训的倾向得分模型,只要其中一个模型设定合理,就能得到较稳健的因果效应。

Python 演示

python46 行
import numpy as npfrom sklearn.linear_model import LogisticRegressionfrom sklearn.neighbors import NearestNeighbors def generate_data(n=600, seed=42):    rng = np.random.default_rng(seed)    age = rng.normal(40, 10, n)    income = rng.normal(8, 3, n)    X = np.c_[age, income]    p_score = 1 / (1 + np.exp(-(0.04 * age - 0.2 * income + 1.2)))    t = rng.binomial(1, p_score)    y0 = 50 + 0.5 * age + 0.3 * income + rng.normal(0, 5, n)    y1 = y0 + 1.5    y = np.where(t == 1, y1, y0)    return X, t, y def estimate_ps(X, t):    model = LogisticRegression(max_iter=1000)    model.fit(X, t)    return model.predict_proba(X)[:, 1] def ipw_ate(y, t, ps):    w = t / ps + (1 - t) / (1 - ps)    return np.average(y[t == 1], weights=w[t == 1]) - np.average(y[t == 0], weights=w[t == 0]) def psm_ate(X, t, y, caliper=0.05):    ps = estimate_ps(X, t)    treated = np.where(t == 1)[0]    control = np.where(t == 0)[0]    nn = NearestNeighbors(n_neighbors=1).fit(ps[control].reshape(-1, 1))    dist, idx = nn.kneighbors(ps[treated].reshape(-1, 1))    dist = dist.flatten()    idx = control[idx.flatten()]    mask = dist < caliper    matched_t = treated[mask]    matched_c = idx[mask]    print('匹配对数:', matched_t.size)    return y[matched_t].mean() - y[matched_c].mean() if __name__ == '__main__':    X, t, y = generate_data()    naive = y[t == 1].mean() - y[t == 0].mean()    ps = estimate_ps(X, t)    print('朴素差异:', naive)    print('IPW估计:', ipw_ate(y, t, ps))    print('PSM估计:', psm_ate(X, t, y))
目的:用模拟数据演示“朴素比较”如何被选择偏差干扰,再分别用 IPW 和倾向得分匹配(PSM)还原真实的平均处理效应。
  1. def generate_data(n=600, seed=42):生成模拟数据:年龄和收入同时影响处理与否和结果,制造选择偏差。
  2. p_score = 1 / (1 + np.exp(-(0.04 * age - 0.2 * income + 1.2)))用逻辑函数生成处理概率,让概率依赖于协变量。
  3. model.fit(X, t)用 Logistic 回归估计每个个体的倾向得分。
  4. w = t / ps + (1 - t) / (1 - ps)构造 IPW 权重:处理组取 1/e,对照组取 1/(1-e)。
  5. nn.kneighbors(ps[treated].reshape(-1, 1))对每个处理组个体,在倾向得分轴上找最近的对照组。
  6. mask = dist < caliper卡钳筛选:距离过大的匹配对被丢弃,避免“远房亲戚”硬配对。
  7. naive = y[t == 1].mean() - y[t == 0].mean()朴素比较结果均值,通常会偏离真实效应。
  8. print('IPW估计:', ipw_ate(y, t, ps))输出加权修正后的平均处理效应,更接近真实值。

常见误区

误区“我算出倾向得分 0.8,是不是说明施肥让苹果甜了 0.8 度?” 很多初学者第一次看到 0-1 之间的分数时,会把它当成效果值。

正解倾向得分只是“被选进处理组的概率”,不是处理对结果的影响。老王那棵 0.8 概率的树,指的是它的特征与“很可能施肥”的树相似;因果效应要比较 Y(1) 与 Y(0),而不是比较概率。这就像“中奖概率”不等于“奖金数额”。

为何常见:因为术语含“得分”,且数值在 0-1 之间,容易让人联想到相关系数或效果大小。

误区“倾向得分匹配之后,两组已经完全可比,可以像随机对照实验一样直接下因果结论。”

正解倾向得分只能平衡已经观测到的协变量;未观测混杂(比如老王心里那点“偏爱的眼神”)仍可能造成偏倚。倾向得分把观测性研究做成“准实验”,但做不到随机实验的百分百保险。事后需要做敏感性分析,评估未观测混杂要到多强才能推翻结论。

为何常见:因为“准实验”听起来与“随机实验”只有一步之遥,而且平衡表全部通过时,人会下意识放松警惕。

误区“两组倾向得分有一点重叠就够了,重叠区外也可以大胆比较。”

正解重叠区外的个体,比如老王的施肥树全在 0.8 以上,对照树全在 0.2 以下,把它们硬拉在一起比较,等于让苹果和橘子比甜。应该在共同支撑区内估计效应,并明确报告结论的适用范围。

为何常见:人们希望保留所有样本以增加样本量,却忽略了“保留不可比样本”会带来比样本量损失更严重的偏差。

误区“把能拿到的变量全放进 Logistic 回归,倾向得分一定会更准确。”

正解放进只影响处理、不影响结果的工具变量会增大方差;放进处理后的中介变量会引入对撞偏倚。应该选择同时影响处理分配与结果的混杂变量,并通过平衡性检验验证效果。

为何常见:机器学习给我们的直觉是特征越多模型越好,但因果推断关心的是识别路径,而不是纯预测精度。

面试题

Q1. 潜在结果框架中,“反事实”指的是什么?

单选题 · easy

  • A.未能观测到的另一种处理结果← 正确答案
  • B.历史数据中的真实结果
  • C.随机实验中的安慰剂效应
  • D.倾向得分模型的预测值

答案:A。潜在结果框架假设每个个体有 Y(1) 和 Y(0) 两个结果,现实只能观测到一个,另一个就是反事实。老王无法知道吃了肥的树如果没吃肥会多甜,这正是反事实。B 是已观测事实,C 是实验设计概念,D 与“潜在结果”无关。

Q2. 倾向得分 e(X) 的定义是?

单选题 · easy

  • A.处理后结果的条件期望值
  • B.给定协变量下接受处理的概率← 正确答案
  • C.处理组与对照组均值之差
  • D.未观测混杂变量的影响

答案:B。e(X)=P(T=1|X),它是“被选进处理组”的条件概率。A 是结果回归中的条件期望,C 是效应估计的朴素形式,D 与倾向得分不是同一个概念。好比一棵树“吃肥的概率”不等于它“吃了肥之后多甜”。

Q3. 随机化实验让处理效应估计更可信的主要原因是?

单选题 · easy

  • A.保证样本量必定足够大
  • B.让协变量在两组趋于可比← 正确答案
  • C.让结果变量完全保持固定
  • D.大幅减少数据采集工作量

答案:B。随机化让处理分配独立于所有协变量,包括观测到和未观测到的,因此两组在特征上可比。样本量、结果固定、数据采集量都不是随机化的核心意义。

Q4. 最邻近匹配的核心操作是?

单选题 · mid

  • A.按结果变量从小到大排序
  • B.按倾向得分距离找最近对照← 正确答案
  • C.对每个协变量逐一找相似者
  • D.直接删除所有缺失样本

答案:B。最邻近匹配在倾向得分这一维“尺子”上寻找距离最近的对照个体。它不按结果排序,也不是逐协变量匹配。删除缺失样本是数据处理清洗,与匹配无关。

Q5. 逆概率加权中,处理组个体的权重通常取?

单选题 · mid

  • A.一除以该个体的倾向得分← 正确答案
  • B.倾向得分除以未处理概率
  • C.一减去该个体的倾向得分
  • D.倾向得分乘以其观测结果

答案:A。IPW 中处理组权重取 1/e,对照组取 1/(1-e)。这能让加权后的伪总体近似随机分配。B、C、D 都不是标准权重公式,也无法起到平衡协变量的作用。

Q6. 标准化差异小于多少常视为协变量已平衡?

单选题 · mid

  • A.0.01 以下
  • B.0.10 以下← 正确答案
  • C.0.50 以下
  • D.1.96 以下

答案:B。标准化差异 |d|<0.10 是经验阈值。它不是 p 值,也不受样本量影响。0.01 过于严格,0.50 和 1.96 都说明两组差异过大。

Q7. 双重稳健估计的核心含义是?

单选题 · hard

  • A.结果回归与倾向得分模型只需一个正确← 正确答案
  • B.结果回归和倾向得分模型都要成倍增大样本
  • C.两个模型必须同时完全正确才可用
  • D.该方法仅适用于随机对照实验

答案:A。双重稳健估计把结果回归模型和倾向得分模型结合起来,只要其中至少一个模型设定正确,处理效应估计就是一致的。B 与样本量无关,C 说反了,D 错误因为它恰恰是为了处理观测性研究。

Q8. 倾向得分匹配正式估计前,通常需要确认哪些条件?

多选题 · mid

  • A.两组倾向得分分布具有重叠← 正确答案
  • B.相关协变量已被观测记录← 正确答案
  • C.结局变量必须服从正态分布
  • D.处理变量必须是连续型变量

答案:AB。共同支撑区和可忽略性(观测充分协变量)是使用倾向得分的前提。结局变量不需要正态分布,倾向得分匹配通常要求处理变量是二值的,D 说反了。

Q9. 下列哪些做法有助于降低倾向得分估计的偏差?

多选题 · hard

  • A.纳入同时影响处理与结果的变量← 正确答案
  • B.剔除倾向得分过极端的样本← 正确答案
  • C.匹配时设置合理的卡钳限制← 正确答案
  • D.只用一个协变量来建模

答案:ABC。纳入混杂变量、修剪极端得分、设置卡钳都是常见优化手段。只用单一协变量会忽略其它混杂,反而增加偏倚,因此 D 不正确。

Q10. 当倾向得分共同支撑区过窄时,正确的态度包括?

多选题 · hard

  • A.只在与对照相似的处理个体上报告效应← 正确答案
  • B.把所有个体强行匹配并给出唯一因果效应
  • C.在结论中明确说明无法外推的边界← 正确答案
  • D.完全放弃所有外推与内部效度

答案:AC。共同支撑区窄意味着很多个体找不到相似的对照,此时应在重叠区内报告效应,并明确研究结论不能外推。强行匹配会引入巨大外推偏差,完全否定方法也过于极端。A 和 C 是更审慎的做法。