因果分析的核心首先是因果问题,它决定了我们分析什么数据、如何分析这些数据以及我们的推断结论适用于什么人群。提出一个好的因果问题是比较难的,相对来讲,因果分析则要简单得多。本书属于方法应用性质,主要聚焦于因果推断的分析阶段。在本书前六章中,我们将讨论什么是因果问题,如何改进我们的问题,以及思考一些例子。
因果问题是我们可以通过统计方法提出的一组更广泛问题中的一部分,这些问题依据数据科学的主要目的可以大致分为:描述、预测和因果推断 (Hernán, Hsu, and Healy 2019)。然而,在实际中,受到所使用统计方法的影响(如,这三类问题都可使用回归来处理)以及我们讨论它们的方式影响,我们常常会将这三种问题混淆在一起。当我们实际想要进行的是基于非随机数据的因果推断时,我们经常使用“关联”(association)这样的委婉说法,而不是直接声明我们想要估计因果效应 (Hernán 2018)。
例如,最近一项关于流行病学研究中所使用语言的研究显示,估计效应的描述中最常见的词根是 “associate”,而许多研究人员也默认 “associate” 至少暗示了某种因果效应 (Figure 1) (Haber et al. 2022)。在分析的全部研究中,只有大约 1% 使用了 “cause” 这个词根。此外,三分之一的研究基于结论提出了相关的行动建议,而其中 80% 的建议都暗含了某种因果效应。而提出了行动建议的这些研究通常比那些只是描述效应的研究(如,使用 “associate” 和 “compare” 这样的词根)要有更强的因果效应暗示。另一方面,尽管一些研究暗示其目标是因果推断,但只有大约 4% 使用了本书将讨论的那些正式的因果推断模型,其它研究更多的做法是通过对先前相关研究或理论的引用讨论来证明他们建立的因果关系的合理性。
── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
✔ dplyr 1.1.4 ✔ readr 2.1.5
✔ forcats 1.0.0 ✔ stringr 1.5.1
✔ ggplot2 3.5.1 ✔ tibble 3.2.1
✔ lubridate 1.9.3 ✔ tidyr 1.3.1
✔ purrr 1.0.2
── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
✖ dplyr::filter() masks stats::filter()
✖ dplyr::lag() masks stats::lag()
ℹ Use the conflicted package (<http://conflicted.r-lib.org/>) to force all conflicts to become errors
因为没有明确地提出带有具体因果假设和目标的因果问题,我们最终都得到了“薛定谔的因果推断”:
我们的结果表明,“薛定谔的因果推断”是很常见的,即研究一方面避免声明(甚至明确否认)对估计因果效应的兴趣,但另一方面又充满了因果意图、推断、因果暗示和行动建议。
— Haber et al. (2022)
这种方法是随意推断(casual inference)的一个例子:在没有做必要的工作来理解因果问题并处理因果假设的情况下进行推断。
References
Citation
@online{lu2024,
author = {Lu, Zhen},
title = {从随意推断(casual {inference)到因果推断(causal}
Inference)},
date = {2024-09-04},
url = {https://leslie-lu.github.io/blog/2024/09/04/casual_inference/},
langid = {en}
}