跳转至

第09章:Causal Inference and Machine Learning – from Matching to Meta-Learners

作者

本章由 Aleksander Molak 撰写。涉及的核心方法参考 Künzel et al. (2019) Meta-learners 论文、LaLonde (1986) 训练项目评估的 LaLonde dataset、Stuart (2010) Matching 综述、King & Nielsen (2019) "Why Propensity Scores Should Not Be Used for Matching"。代码部分使用 DoWhy 0.8 的 backdoor.distance_matching / backdoor.propensity_score_weighting / EconML 的 SLearner / TLearner / XLearner

内容概述

本章是 Part 2 的"工程化因果 ML"开篇。从 ATE → CATE 的跃迁是本章的主线。内容分四块:(1)Matching——exact vs inexact、ATE/ATT/ATC 定义、LaLonde 训练项目 data 上 DoWhy 的 distance_matching (1.2% 误差) vs naive (33% 误差);(2)Propensity scores & IPW——Rosenbaum & Rubin (1983) 定理与 King & Nielsen (2019) 的批判——PSM 悖论:所有 propensity = 0.5 时所有点等价匹配无意义;IPW 用 \(\hat{e}(X)\) 加权构造伪总体;(3)Meta-learners——Künzel et al. (2019) 的 S/T/X 三大元学习器族:S = 单一 base-learner 把 \(T\) 当特征(会忽略 treatment);T = 强制 treatment split 的两个模型(数据效率减半);X = 5 个模型的两阶段 + propensity 加权(不平衡数据上最强);(4)Rob Donnelly 的简化 X-Learner——3 个模型替代 5 个。

核心方程与概念

  • 三种处理效应的形式化

$\(\text{ATE} = \frac{1}{N} \sum_i \tau_i, \quad \tau_i = Y_i(1) - Y_i(0)\)$

$\(\text{ATT} = \frac{1}{N_{T=1}} \sum_{i: T_i=1} \tau_i\)$

$\(\text{ATC} = \frac{1}{N_{T=0}} \sum_{i: T_i=0} \tau_i\)$

关系:ATE 是 ATT 和 ATC 的加权平均。注意\(\tau_i\) 不可直接观测(fundamental problem of causal inference, Holland 1986)。

  • Matching estimator for ATT: $\(\hat{\tau}_{\text{ATT}} = \frac{1}{N_{T=1}} \sum_{i: T_i=1} (Y_i - Y_{j(i)})\)$ 其中 \(j(i)\)\(i\) 在未处理组中匹配到的样本。关键点:匹配的相似性度量——Euclidean / Mahalanobis / Minkowski;阈值 "how close is close enough" 是核心超参。

  • Matching estimator for ATE: $\(\hat{\tau}_{\text{ATE}} = \frac{1}{N} \sum_i (2T_i - 1)(Y_i - Y_{j(i)})\)$ \((2T_i - 1)\) 的技巧:\(T_i = 1\) 时值为 1,\(T_i = 0\) 时值为 \(-1\)——符号翻转使差分方向对所有 unit 一致。仅适用于二元 treatment

  • King vs King & Nielsen 的标准化之争:作者提到 Harvard 的 Gary King 反对标准化 matching 变量——"扔掉了实质"(King 2018, p. 12)。ML 实践者通常推荐标准化(避免尺度大的变量主导距离),但 King 强调"匹配时不要标准化"的反主流立场。

  • Matching 的高维诅咒:在 18 维二元独立 Bernoulli 数据上,找到 exact match 的概率几乎为 0。这一观察为 propensity score matching 的流行提供了 motivation——降维到一维 propensity。

  • Propensity score(Rosenbaum & Rubin 1983): $\(\hat{e}(X) = P(T = 1 | X)\)$ 关键定理:如果 unconfoundedness 在 \(X\) 上成立,则在 \(\hat{e}(X)\) 上也成立(假设 positivity)。:从高维 \(X\) 降到一维 \(\hat{e}(X)\) 必然丢信息——两个原始 \(X\) 完全不同的样本可以有相同 propensity。

  • PSM 悖论(King & Nielsen 2019):在二元 treatment 下,最优 propensity = 0.5——即所有样本的 propensity 相同。这时所有样本是"equally good match",匹配失去区分度。King 的著名论述:"propensity scores should not be used for matching"。

  • 其他 matching 替代

  • CEM(coarsened exact matching, Iacus et al. 2012):把连续变量分层。
  • DAME(dynamic almost matching exactly, Liu et al. 2018)。
  • AHB(adaptive hyper-box matching, Morucci et al. 2020)。

  • PSM 的常见误解:Dehejia & Wahba (2002) 早期论文用 PSM 处理"hidden confounding"——但 PSM 同样要求 unconfoundedness;hidden confounding 不会被 PSM 解决。

  • IPW 公式(Aronow & Samii 经典): $\(\hat{\tau}_{\text{ATE}}^{\text{IPW}} = \frac{1}{N_{T=1}} \sum_{i: T=1} \frac{y_i}{\hat{e}(X_i)} - \frac{1}{N_{T=0}} \sum_{j: T=0} \frac{y_j}{1 - \hat{e}(X_j)}\)$ 直觉:构造一个"伪总体"——被处理者按 \(1/\hat{e}(X_i)\) 加权(被处理但本不易被处理者获高权重),对照者按 \(1/(1-\hat{e}(X_j))\) 加权。DoWhy 内部用 WLS\(T=1\) 样本权重 \(1/\hat{e}\)\(T=0\) 样本权重 \(1/(1-\hat{e})\)

  • IPW 实践陷阱

  • 极端 propensity 的爆炸权重\(\hat{e} \to 0\)\(\hat{e} \to 1\) 时权重失控;常见阈值 \(0.01 < \hat{e} < 0.99\)\(0.05 < \hat{e} < 0.95\)
  • propensity 模型选择:logistic regression 概率通常 well-calibrated;复杂 ML 模型(如 LightGBM)的概率需要 Platt scaling / isotonic regression 后处理。Gutman, Karavani & Shimoni (2022) 表明好校准显著降低因果估计误差
  • propensity 模型要包含所有 confounders——否则 IPW 与 OLS 一样偏。

  • HTE / CATE: $\(\text{CATE} = \mathbb{E}[Y | T=1, X] - \mathbb{E}[Y | T=0, X]\)$ CATE ≠ ITE:Künzel et al. (2019) p. 3 把 CATE 当 ITE 估计;Vegetabile (2021) 与 Mueller & Pearl (2020) 强调二者不同。CATE 是"条件组"均值,ITE 是个体级不可估量

  • Uplift model matrix(四象限):

  • Persuadable(蓝):无 treatment 不购买,有 treatment 购买——最佳目标
  • Sure thing(绿):不依赖 treatment 购买——浪费预算。
  • Lost cause(灰):两种条件下都不购买——浪费预算。
  • Do not disturb(红):无 treatment 购买,有 treatment 不购买(反向因果)——应避开。 当 outcome 是连续或概率值时,没有离散分组,转而寻找"treatment 增量 \(\Delta Y\) 最大的样本"。

  • Meta-learners(Künzel et al. 2019):把一个或多个 base-learner 组合起来估计 causal effect。Base-learner 可以是任何 ML 模型(树、神经网络等),只要复杂度足以表达treatment × 协变量交互

  • S-Learner(Single): $\(\hat{\tau}_i^{\text{CATE}} = \mu(X_i, T=1) - \mu(X_i, T=0)\)$ 单一模型 \(\mu\) 训练在 \((X, T, Y)\) 上。优势:简单;致命弱点:可能完全忽略 treatment(如果 \(T\)\(Y\) 的预测贡献小,模型会舍弃 \(T\),导致 \(\hat{\tau} = 0\))。5% MAPE on full data, 35.9% MAPE on 100 samples。

  • T-Learner(Two): $\(\hat{\tau}_i^{\text{CATE}} = \mu_1(X_i) - \mu_0(X_i)\)$ 两个模型 \(\mu_1\)(仅在 treated 上训练)+ \(\mu_0\)(仅在 untreated 上训练)。优势强制 treatment 不可忽略代价:每个模型只看到一半数据,数据效率减半——T-Learner 在作者的 LaLonde 数据上 MAPE = 8.1%,比 S-Learner 5.2% 差

  • X-Learner(Künzel et al. 2019,5 个模型):

  • 拟合 first-stage base learners \(\mu_1, \mu_0\)(同 T-Learner)。
  • 计算 imputed treatment scores:
    • 治疗组:\(\hat{d}_i^1 = y_i - \mu_0(X_i)\)
    • 对照组:\(\hat{d}_j^0 = \mu_1(X_j) - y_j\)
  • 拟合 second-stage base learners \(\nu_1, \nu_0\) 预测 \(\hat{d}^1, \hat{d}^0\) from \(X\)
  • Propensity score 加权综合: $\(\hat{\tau}_i^{\text{CATE}} = \hat{e}(X_i) \nu_0(X_i) + (1 - \hat{e}(X_i)) \nu_1(X_i)\)$ \(\hat{e}(X_i)\) 大(unit 易被处理)时,\(\nu_0\)(基于 untreated 训练)对之更可靠;反之 \(\nu_1\) 优先。优势:不平衡数据上极强(online A/B test 5% vs 95%);代价:5 个模型需要大量数据。作者数据上 MAPE = 3.6%——最佳。

  • Rob Donnelly 简化 X-Learner(3 个模型):省去 second-stage base learners 和 propensity weighting——

  • 拟合 \(\mu_1, \mu_0\)
  • 计算 \(\hat{d}\) = imputed scores。
  • 拟合 \(\eta\) 直接预测 \(\hat{d}\) from \(X\)。 简单得多,工程上更友好。

  • RCT 数据的 leakage 检查:训练 HTE 模型前应做 \(T \sim X\) 的 surrogate model——若 surrogate 的预测效果远好于随机(高 AUC),则 RCT 设计有 leakage(treatment assignment 不随机)。surrogate AUC ≈ 0.5 是健康 RCT 的标志。

  • Meta-learners 的样本量:作者数据中 \(N=100\) 时所有 meta-learner 表现都很差(S-Learner MAPE 35.9%,X-Learner 39%)。对样本量的经验法则:A/B test 框架用样本量计算器(https://bit.ly/SampleSizeCalc);复杂模型用 G*Power(https://bit.ly/GPowerCalc)+ 经验调整。

  • Donnelly's X-Learner 替代(2022 LinkedIn 帖):参见 https://www.linkedin.com/posts/robert-donnelly-4376579_evaluating-the-econometric-evaluations-of-activity-6979849583241609216-7iXQ。

关键结论

  • Matching 是因果推断的"老炮"方法:在高维 / 混杂严重时表现有限(exact match 几乎不可能);Minkowski / Mahalanobis 距离 + "近邻阈值" 是核心超参。
  • PSM 应该被弃用作为 matching 方法(King & Nielsen 2019)——PSM 悖论 + 信息损失 + 同样需要 unconfoundedness。但 IPW 仍然有用——把 propensity 用作权重构造伪总体。
  • IPW 的工程要点:propensity 模型要 well-calibrated(Platt scaling / isotonic regression);极端 propensity 要截断;Gutman et al. (2022) 表明校准质量显著影响估计精度
  • HTE 是 ATE 的精细化:CATE 捕捉"treatment 效应的协变量依赖"——医学(不同病人药物响应不同)、营销(不同人群 uplift 不同)是核心应用。Uplift model matrix 的 4 象限是经典心智模型。
  • S-Learner 的致命弱点:treatment ignored——单 base-learner 可能因为正则化 / 树剪枝完全忽略 treatment 特征,输出 \(\hat{\tau} = 0\)。T-Learner 用结构性拆分强制 treatment 不可忽略,代价是数据效率减半。
  • X-Learner 在不平衡数据上最佳——propensity weighting 让它能利用"小处理组 + 大对照组"或反之的结构。5 个模型 + 需要大样本是工程代价。
  • LaLonde 数据集是因果推断 benchmark 的经典——作者用其展示了 matching (1.2% MAPE) vs naive (33% MAPE) 的巨大差距。

挑战和开放性问题

  • PSM 的工程惯性:尽管 King & Nielsen 2019 明确反对 PSM,社区中仍有大量论文用 PSM 作 deconfounding 工具。作者希望"这本书能促进对 PSM 的健康认识"——这一目标 4 年后仍未完全实现。
  • Meta-learners 的样本量敏感性:作者数据中 \(N=100\) 时所有 meta-learner 几乎不可用;真实医学数据常 \(N < 200\)——meta-learners 在生产中的实用性受限。Neural-net CATE(Ch 11 的 CATENets)需要更大样本。
  • S-Learner 的 "treatment ignored" 现象:除加深树深度 / 减少正则化外,没有根治方法——这是 S-Learner 的固有弱点。生产中应同时用 S + T + X 三种估计作为 sanity check。
  • CATE ≠ ITE 的哲学争议:Künzel et al. (2019) 把 CATE 当 ITE 估计;Vegetabile (2021) 与 Mueller & Pearl (2020) 强调二者不同。生产报告中应明确:报告的是 CATE(条件均值差),不是 ITE。
  • X-Learner 的"4 折 + 5 模型"工程复杂度:5 个 base-learner 的超参调优 + cross-fitting + propensity 模型——生产代码中需要严格的版本控制 + reproducibility 检查
  • 多 treatment 的扩展:作者提了一句"meta-learners can be extended to multi-level treatment scenarios"——但具体怎么做(X-Learner 多 treatment 变体)需要查 Lopez & Gutman (2017) 的细节。
  • Matching 在小数据上完全失败:在 \(N \leq 30\) 时,matching 的"找到相似配对"几乎不可能;应改用 simple linear regression + 严格假设验证。

个人反思与批判性分析

本章是因果 ML 工程化的"主菜"——把 ATE 升级到 CATE,把 matching 升级到 meta-learners。值得讨论的几个层面:

  • King & Nielsen 2019 vs Dehejia & Wahba 2002 的 17 年辩论:PSM 在 2002–2010 年间被广泛推崇(Dehejia & Wahba 似乎"成功"地 deconfound LaLonde 数据),但 King & Nielsen 2019 的严谨分析表明这是错觉——把"对照组 vs 处理组的 covariate 平衡"做对了 ≠ 因果效应估计做对了。计量经济学的"PSM 复兴"在 2019 后被反复重审——但 PSM 的工程惯性极强,2026 年的 ML 论文仍常见 PSM 用作"deconfounding 工具"。作者选择明确批判 PSM 是对社区的重要贡献,但现实中学术 / 工业的接受度仍不均匀。
  • "Matching 是 preprocessing step vs 完整 estimator"之争:Stuart (2010) 和 Sizemore & Alkurdi (2019) 把 matching 视为"preprocessing"——在 matching 后的样本上跑任何 estimator。作者选择"完整 estimator"立场(与 DoWhy 集成)。两种立场在不同场景下有差异:在样本量充足时,preprocessing 让 matching 与现代 ML 兼容;在样本量小时,matching as estimator 更直接。生产中"完整 estimator"更易部署
  • S/T/X 三种 meta-learners 的"数据效率"梯度:S(1 模型)→ T(2 模型)→ X(5 模型)。每个升级都增加数据需求——但也增加处理复杂 HTE 的能力。作者的实际 benchmark(LaLonde)显示 X > S > T——这与"数据效率优先"的直觉相反。关键原因:X 用 imputed treatment scores 直接学习 CATE,避免了 S/T 间接学习 potential outcomes 后的差分——直接学 CATE 在真实数据上更有效。但作者也指出 \(N=100\) 时 X-Learner 表现不如 S-Learner——小样本下 X 的多模型方差爆炸
  • "T-Learner 在作者数据上比 S-Learner 差"的反直觉:T-Learner 设计目的是"强制 treatment 不可忽略"——这在 S-Learner 的"treatment 忽略"风险下是合理设计。但作者数据中 S-Learner 用了 deeper LightGBM(500 trees, depth 10),T-Learner 用了两个 200-tree 模型——T-Learner 每个模型的数据量 + 模型容量都比 S-Learner 小生产中:用 T-Learner 时应给两个模型都加更多容量(如 500 trees each),不能简单复制 S 的超参。
  • Meta-learners 的多 treatment 扩展:作者提到但未展开。对医学的现实意义:癌症治疗常有多线方案(一线、二线、三线);个性化处方需要 multi-treatment CATE。Künzel et al. 2019 的多 treatment 扩展需要 6+ 模型\(\mu_0, \mu_1, \mu_2, \mu_3\) 等),工程复杂度爆炸。Lopez & Gutman (2017) 给出多 treatment 的不同视角——生产中通常用 multinomial propensity + 多 dummy treatment 处理
  • 作者的 "S 5% / T 8% / X 3.6% MAPE" 在多大程度上可推广?——这些数字高度依赖 LaLonde 数据。Curth et al. (2021) 的 NeurIPS 论文显示CATE 估计器的 benchmark 实践问题很多——不同 simulation 设定下方法排名会反转。生产中应做 multiple simulation experiments + sensitivity analysis——单一数据集的 benchmark 结论不可靠。
  • "Naive estimate 33% 误差"作为因果推断的"销售话术":作者对比 matching (1.2%) vs naive (33%)——这 27 倍改进是 marketed headline。但实践中:如果数据真这么简单(年龄是唯一 confounder),naive 估计者也会自然想到加 age 调整——真实复杂数据中 naive 估计的误差更大,但对应的"正确估计"也难做因果推断的价值不是"用 matching 替代 OLS"——而是整套 model → identify → estimate → refute 流程
  • RCT leakage check 的工程价值:作者提的 \(T \sim X\) surrogate AUC 检查简单但常被忽视——很多 RCT 报告的"成功"实际上是 leakage 的伪效果。生产中应把这一检查作为 RCT 报告的标准步骤
  • 对个人研究的启发:我在做血管生物力学时,常遇到"治疗 X 对病人 A 的响应 vs 病人 B 的响应" 的异质性问题——这正是 CATE 的应用场景。用 EconML 的 X-Learner + 患者基线特征(年龄、性别、合并症、影像组学)估计 CATE 能为个性化处方提供量化依据。但样本量 \(N=200\) 时 X-Learner 表现差——真实临床研究需要多中心数据汇集。
  • "用 DoWhy 集成 Meta-learners"的工程哲学:作者通过 'backdoor.econml.metalearners.XLearner' 字符串命名空间展示了声明式因果推断——用户不直接 import EconML,只指定方法名。这一设计哲学是"工具栏优于全栈"——让因果工具箱与 ML 生态无缝集成,避免"因果工具箱 = 另一套 API"的迁移成本。DoWhy / EconML 团队的这一设计值得敬佩。

重要参考文献

  • [X1] Künzel, S. R., Sekhon, J. S., Bickel, P. J., & Yu, B. (2019). Meta-learners for Estimating Heterogeneous Treatment Effects using Machine Learning. PNAS, 116(10), 4156–4165 — S/T/X-Learner 的原始论文;CATE 的"meta-learning"框架。
  • [X2] LaLonde, R. J. (1986). Evaluating the Econometric Evaluations of Training Programs with Experimental Data. American Economic Review, 76, 604–620 — LaLonde dataset;因果推断 benchmark 经典。
  • [X3] Rosenbaum, P. R., & Rubin, D. B. (1983). The central role of the propensity score in observational studies for causal effects. Biometrika, 70, 41–55 — Propensity score 与 unconfoundedness 定理的来源。
  • [X4] King, G., & Nielsen, R. (2019). Why Propensity Scores Should Not Be Used for Matching. Political Analysis, 27(4) — PSM 悖论与"不应用 PSM for matching"的著名论证。
  • [X5] King, G. (2018). Gary King on Simplifying Matching Methods for Causal Inference (speech transcript). http://ntupsr.s3.amazonaws.com/psr/wp-content/uploads/2018/10/02-1-Gary-King-compressed.pdf — 反对 matching 标准化的核心论述。
  • [X6] Stuart, E. A. (2010). Matching methods for causal inference: A review and a look forward. Statistical Science, 25(1), 1–21 — Matching 综述。
  • [X7] Dehejia, R. H., & Wahba, S. (2002). Propensity score-matching methods for nonexperimental causal studies. The Review of Economics and Statistics, 84(1), 151–161 — 早期 PSM 推广论文(被 King & Nielsen 2019 部分反驳)。
  • [X8] Elze, M. C., Gregson, J., Baber, U., Williamson, E., Sartori, S., Mehran, R., Nichols, M., Stone, G. W., & Pocock, S. J. (2017). Comparison of Propensity Score Methods and Covariate Adjustment: Evaluation in 4 Cardiovascular Studies. JACC, 69(3), 345–357 — IPW 在心血管研究中的比较。
  • [X9] Iacus, S., King, G., & Porro, G. (2012). Causal Inference without Balance Checking: Coarsened Exact Matching. Political Analysis, 20, 1–24 — CEM 的原始论文。
  • [X10] Liu, Y., Dieng, A., Roy, S., Rudin, C., & Volfovsky, A. (2018). Interpretable Almost Matching Exactly for Causal Inference. arXiv:1804.03685 — DAME 方法。
  • [X11] Morucci, M., Orlandi, V., Roy, S., Rudin, C., & Volfovsky, A. (2020). Adaptive Hyper-box Matching for Interpretable Individualized Treatment Effect Estimation. arXiv:2003.01805 — AHB 方法。
  • [X12] Gutman, R., Karavani, E., & Shimoni, Y. (2022). Propensity score models are better when post-calibrated. arXiv — Propensity 模型校准对因果估计精度的提升。
  • [X13] Niculescu-Mizil, A., & Caruana, R. (2005). Predicting good probabilities with supervised learning. ICML 2005 — Platt scaling / isotonic regression 的早期工作。
  • [X14] Ke, G., Meng, Q., Finley, T., Wang, T., Chen, W., Ma, W., Ye, Q., & Liu, T. (2017). LightGBM: A Highly Efficient Gradient Boosting Decision Tree. NIPS — 本章 base-learner。
  • [X15] Hernan, M. A., & Robins, J. M. (2020). Causal Inference: What If. Boca Raton: Chapman & Hall/CRC — ATT/ATC/ATE 形式化与 exchangeability 论述。
  • [X16] Pearl, J. (2009). Causality: Models, Reasoning and Inference (2nd ed.). Cambridge University Press — 反事实的"fundamental problem"。
  • [X17] Pearl, J., Glymour, M., & Jewell, N. P. (2016). Causal Inference in Statistics: A Primer. Wiley — IPW 的 Pearl 视角。
  • [X18] Pearl, J., & Mackenzie, D. (2019). The Book of Why. Penguin Books — CATE 与 ITE 区别的普及。
  • [X19] Peters, J., Janzing, D., & Schölkopf, B. (2017). Elements of Causal Inference: Foundations and Learning Algorithms. MIT Press — propensity 理论背景。
  • [X20] Angrist, J. D., & Pischke, J.-S. (2008). Mostly Harmless Econometrics. Princeton University Press — Matching 在历史 subclassification 中的应用。
  • [X21] Facure, M. (2020). Causal Inference for The Brave and True. https://matheusfacure.github.io/python-causality-handbook/landing-page.html — 实用 Python 因果推断开源书。
  • [X22] Lopez, M. J., & Gutman, R. (2017). Estimation of Causal Effects with Multiple Treatments: A Review and New Ideas. Statistical Science, 32(3), 432–454 — 多 treatment 扩展。
  • [X23] Vegetabile, B. G. (2021). On the Distinction Between "Conditional Average Treatment Effects" (CATE) and "Individual Treatment Effects" (ITE) Under Ignorability Assumptions. arXiv:2108.04939 — CATE vs ITE 的严谨区分。
  • [X24] Gelman, A., & Hill, J. (2006). Data Analysis Using Regression and Multilevel/Hierarchical Models. Cambridge University Press — Matching 作为 preprocessing 的论述。
  • [X25] Zou, D., Zhang, L., Mao, J., & Sheng, W. (2020). Feature Interaction based Neural Network for Click-Through Rate Prediction. arXiv:2006.05312 — 神经网络建模 feature interaction 的代表工作。
  • [X26] Curth, A., Svensson, D., Weatherall, J., & van der Schaar, M. (2021). Really Doing Great at Estimating CATE? A Critical Look at ML Benchmarking Practices in Treatment Effect Estimation. NeurIPS Datasets and Benchmarks — CATE 估计器 benchmark 的批判性回顾。
  • [X27] Cunningham, S. (2021). Causal Inference: The Mixtape. Yale University Press — Matching 的实践指南。
  • [X28] Sizemore, S., & Alkurdi, R. (2019). Matching Methods for Causal Inference: A Machine Learning Update. Humboldt-Universität zu Berlin — 现代 ML-based matching 综述。
  • [X29] Abrevaya, J., Hsu, Y., & Lieli, R. P. (2014). Estimating Conditional Average Treatment Effects. Journal of Business & Economic Statistics, 33, 485–505 — CATE 的早期统计学论述。
  • [X30] Donnelly, R. (2022, October 2). One of the big challenges with causal inference... [Post]. LinkedIn. https://www.linkedin.com/posts/robert-donnelly-4376579_evaluating-the-econometric-evaluations-of-activity-6979849583241609216-7iXQ — 简化 X-Learner 的来源帖。