
在科学研究中,尤其是在医学和公共政策等领域,确定因果关系是最基本的挑战之一。我们不断面临“如果……会怎样”的问题——如果采用了不同的治疗方法或颁布了另一项政策,结果会是怎样?虽然随机对照试验是金标准,但我们常常必须依赖充满复杂性(如混杂)的观察性数据。当干预措施和混杂因素随时间演变,形成标准统计方法无法处理的反馈循环时,一个尤为棘手的问题便产生了。本文介绍 G-计算,这是一种强大的、基于模拟的方法,旨在应对这些复杂情况。在接下来的章节中,我们将首先深入探讨 G-计算的核心原理与机制,解释它如何通过序贯模拟反事实的未来来克服时变混杂的挑战。随后,我们将探索其广泛的应用与跨学科联系,展示这个“因果关系飞行模拟器”如何在从公共卫生到个性化医疗等领域提供严谨的答案。
要真正理解任何科学工具,我们必须首先领会它旨在解决的问题。通常,最深刻的工具源于最简单的问题。在因果推断中,这个问题便是:“如果……会发生什么?”如果病人服用了不同的药物会怎样?如果政府实施了不同的政策会怎样?这些都是关于反事实的问题——那些我们永远无法直接观察到的另类现实。我们的挑战是利用我们确实看到的世界的数据,对我们未曾见过的世界做出有原则的推测。
假设我们想知道一种新的他汀类药物()与不服药()对患者胆固醇水平()的影响。最直接的方法是比较服药组和未服药组。但你立刻会遇到一个问题:这两个组真的具有可比性吗?也许医生更倾向于给胆固醇水平本就高得危险的患者开这种新药。如果我们仅仅比较研究结束时两组的平均胆固醇,我们可能会错误地得出结论,认为该药物无效甚至有害,而这仅仅是因为它被给予了病情更重的人群。
这就是经典的混杂问题。那个混淆我们比较的变量——在本例中是患者的初始健康状况,我们称之为——是一个混杂因素,因为它既与治疗()相关,也与结局()相关。
处理这个问题的传统方法是标准化,一个非常简单的想法。我们不在整个群体之间进行比较,而是在更小、更相似的亚组内进行比较。让我们比较那些*具有相同初始健康状况*的已治疗和未治疗患者。在这个特定的人群切片中,比较要公平得多。我们对每一种可能的健康状况都这样做,然后将结果合并起来。
但是我们如何合并它们呢?我们想知道对整个人群的影响。所以,我们对组内结果进行平均,并根据每个组在总人口中的比例对其进行加权。我们实际上是在问:“如果人群中的每个人都接受了治疗,但他们各自的特征保持不变,那么平均结局会是怎样?”
这个直观的过程被一个极其简洁的数学公式所概括,即G-公式(或 G-计算公式)。为了找到如果每个人都接受治疗()时的平均结局(我们表示为),我们计算:
这一项是我们在现实世界中观察到的、具有特征并接受了治疗的人的平均结局。这一项仅仅是我们的总体中具有特征的人的比例。该公式告诉我们,为每个分层计算治疗下的结局,然后根据这些分层在我们原始人群中的分布对这些结局进行平均。
在实践中,我们使用一个统计模型,比如回归模型,从数据中估计。然后,对于我们研究中的每一个人,我们使用这个模型来预测他们在期望的干预下(比如,)的结局,代入他们实际的协变量值,然后对所有这些预测值求平均。这个过程,被称为参数化G-计算,为我们提供了一个对反事实世界中每个人都接受治疗时的人群平均结局的估计。这就像为我们的人群建立一个统计克隆体,然后进行一次完美的模拟实验。
这种标准化方法对于简单的、单时间点的决策非常有效。但生活,尤其是医学,很少如此简单。决策是随时间做出的,而世界会对这些决策做出反应,从而形成一个错综复杂的因果网络。
考虑一位医生在几个月内管理一位慢性病患者的情形。
在这里,变量(时间 1 的症状)扮演了一个棘手的双重角色。对于下一次治疗决策来说,它是一个混杂因素,因为它既影响治疗也影响最终结局。但它同时也是第一次治疗的中介变量,因为它位于因果路径上。
这就是受既往治疗影响的时变混杂这一巨大挑战。为什么这会破坏我们简单的调整方法呢?如果我们使用一个标准的回归模型并“调整”来估计治疗史的效果,我们实际上是在保持不变。但效果的一个关键部分恰恰是它改变的能力! 通过以为条件,我们无意中阻断了这条因果路径,从而无法再估计治疗策略的总效应。这就像试图找出投入池塘的石块能使水位升高多少,却只观察那些涟漪被完全固定的情况。你完全错过了重点。
这正是G-公式的精妙之处大放异彩的地方。它不与时间之箭抗争,而是顺应它。G-计算通过一步步地建立一个反事实世界的模拟来解决时变混杂问题。它不问在保持中间变量固定的情况下效应是什么;它问的是在干预下中间变量将如何演变,以及随之会产生什么后果。
让我们逐步了解这个模拟过程,也就是 G-计算中的“计算”部分:
这个序贯过程——干预、模拟混杂因素、干预、模拟结局——是G-计算的核心。它是G-公式的计算体现,而G-公式本身可以通过迭代期望定律从第一性原理严格推导出来。通过模拟混杂因素作为我们干预的结果而发生的演变,我们正确地解释了标准调整方法所阻断的因果路径。
这种强大的模拟技术并非魔法;它在严格的规则下运作。其有效性依赖于三个核心假设。
首先,序贯可交换性,或称无未测量混杂。在时间的每一步,我们必须已经测量并调整了所有影响下一次治疗决策()和结局()的因素()。这是一个强有力的、无法检验的假设,依赖于深厚的领域专业知识。
其次,模型设定。我们的模拟的好坏取决于我们用来构建它的模型。我们需要正确的模型来描述协变量如何随时间演变,以及最终结局如何依赖于历史。如果这些模型中有任何一个是错误的,我们的模拟将成为幻想,我们的估计也将是有偏的。与一些其他先进方法,如目标最大似然估计(TMLE)不同,标准的G-计算不是双重稳健的;如果它的某个模型是错误的,它没有第二次机会。
第三,也许是最直观的,是正性。这条规则说,你不能无中生有。要了解一种治疗对某类人的效果,你必须在你的真实数据中看到一些这类人确实接受了该治疗。假设临床指南禁止为6个月以下的婴儿接种疫苗。在我们的数据中,这个群体接种疫苗的概率为零。这是一个结构性的对正性的违反。我们无法问:“疫苗接种对婴儿的效果是什么?”因为我们没有数据来回答这个问题。
我们的G-计算算法可能仍然会产生一个数字;它会使用基于年龄较大的儿童和成人的模型,并外推到婴儿身上。但这纯粹是基于我们模型假定的数学形式的、无法检验的推测。模型不懂生物学;它只知道线条和曲线。当正性失效时,我们的数据与因果问题之间的联系就断了。在这种情况下,一个合理的科学方法是承认这一局限性,并将问题改为我们能够回答的问题,例如,“疫苗接种对那些可以选择接种的人群的效果是什么?”。
总而言之,G-计算为因果推断中最困难的问题之一提供了一个深刻而优雅的解决方案。它让我们得以窥视反事实世界,因为它尊重时间的流逝以及因果之间动态的相互作用。它证明了这样一个理念:通过仔细地为现实世界建模,我们可以开始理解它可能成为的样子。
在理解了G-计算背后的原理之后,我们现在可以踏上一段旅程,看看这个卓越的工具将我们带向何方。如果说上一章是关于学习一个强大引擎的机械原理,那么这一章就是驾驶它穿越科学探索的各种地貌。G-计算不仅仅是一个统计程序;它是一个“因果模拟机器”,一种用于医学、政策和科学的飞行模拟器。它允许我们离开观测数据的世界,飞入“如果……会怎样”的领域,并带回严谨的、定量的答案。让我们来探索其中的一些飞行之旅。
G-计算最直接的应用或许是评估政策和干预措施的潜在影响。想象一个公共卫生机构正在考虑一项全国性的反式脂肪禁令,希望能减少心脏病发作的发生率。观察性数据非常丰富——我们拥有数百万人的健康记录,详细记录了他们的饮食、生活方式和心血管结局。但摄入高水平反式脂肪的人群在许多其他方面(如吸烟、锻炼、社会经济地位)也与不摄入者不同。简单的比较会产生误导。
G--计算提供了一条前进的道路。我们首先建立一个现实世界的统计模型,学习年龄、吸烟和饮食等风险因素与心脏病发作概率之间的关系。然后,我们用这个模型作为我们的模拟器。我们加载整个人群的数据,但有一个关键的改变:我们以数字方式编辑每个人的暴露,将他们的反式脂肪摄入量设为零,就好像禁令已经生效一样。通过将每个个体用这个反事实输入在我们的模拟中运行一遍,我们可以预测每个人的新的、政策实施后的心脏病发作风险。对这些预测值求平均,就得到了一个在无反式脂肪世界中全国风险的严谨估计,使我们能够在禁令实施前就量化其潜在的公共卫生巨大成就。
这种逻辑可以有力地扩展到随时间展开的干预措施。考虑一个为期六个月的旨在鼓励体育锻炼的教练计划。这里的挑战更为复杂。参与者的积极性可能会在最初几次课程后增加,使他们更有可能继续参与并进行更多锻炼。这种积极性是一个时变混杂因素:它既是过去参与的结果,也是未来参与和更佳健康状况的原因。我们不能简单地比较完成计划的人和未完成的人。
G-计算通过逐步模拟世界来优雅地处理这个问题。从基线数据开始,它模拟第一个月,根据我们想要测试的策略(例如,“每个人都接受教练指导”)设定每个人的“治疗”。然后,它利用其学到的世界规则来预测每个人的积极性和步数会如何变化。接着,它进入第二个月,使用这些新模拟出的混杂因素再次分配治疗并预测下一组变化。通过在整个六个月内迭代这个过程,G-计算为每个人生成一个完整的、反事实的历史。这种逐步模拟打破了困扰简单方法的棘手反馈循环,为该计划的真实效果提供了一幅清晰的图景。
同样的时变混杂问题在职业健康中也表现得尤为突出,这种现象被称为“健康工人幸存者效应”。想象一下,研究工厂中某种化学物质对肺部的损害效应。多年来,健康受该暴露影响最大的工人最有可能辞职。如果分析师天真地只看研究结束时仍然在职的工人,化学物质的危害将被严重低估,因为最不健康的个体已经系统地将自己从样本中移除了。G-计算通过模拟整个队列在固定暴露水平下的历史来克服这个问题。一个工人是否会离职无关紧要;模拟计算的是如果他们留下来并继续暴露,他们的健康状况将会是怎样,从而提供了一个对总危害的无偏估计。
我们模拟引擎的力量并不仅限于简单的、固定的干预。在医学中,最好的策略通常是适应性的。医生不会给每个病人都用相同的剂量;他们会根据病人的反应调整治疗。G-计算使我们能够评估这些动态治疗方案 (DTRs)。
考虑治疗高血压。一个明智的临床规则可能是:“在每次月度就诊时,如果患者的收缩压高于140 mmHg,则加强其药物治疗”。这是一个复杂的、由反馈驱动的策略。G-计算非常适合估计其效果。在模拟过程中,算法在每一步检查模拟患者当前的(模拟的)血压,并应用规则指定的治疗。因此,它可以将这种“智能”策略的长期结局与“一刀切”的方法进行比较,从而帮助设计最优的、个性化的治疗指南。
我们可以将这个想法更进一步,将G-计算与深刻的、机械论的世界知识相结合。在药理学中,我们有数学定律——常微分方程(ODEs)——它们描述药物浓度如何随时间在体内变化(药物动力学,或PK),以及该浓度如何产生生物效应(药物效应动力学,或PD)。我们可以将这些基本方程直接构建到我们的G-计算模拟器中。这就创建了一个混合模型,其中药物浓度的演变由物理和化学定律支配,而患者不断变化的疾病状态则由从数据中学到的统计模型支配。利用这样的模型,我们可以测试高度复杂的DTRs,例如一个在每次给药时调整患者剂量以维持其血液中特定目标浓度的规则。这代表了一种美妙的综合,其中统计因果推断和机械论科学共同作用,以设计更好的疗法。
G-计算的概念框架是如此通用,以至于它允许我们重新思考“人群”和“干预”的真正含义。
传统上,我们认为人群是一大群人。但如果我们把“人群”视为单个人生命中的一系列时刻呢?这就是单例试验(N-of-1 trial)背后的思想,这是一种在单个受试者上进行的研究。我们可以在这里应用G-公式来估计个体的个人因果效应。通过分析来自一个患者的时间序列数据——他们的日常症状、治疗和生物标志物——我们可以为那个特定的人建立一个模拟模型。然后我们可以问:“如果这位患者在过去一年中遵循治疗方案A而不是方案B,她的平均疼痛水平会是多少?”G-计算的这种用法弥合了人群层面证据与真正个性化医疗之间的鸿沟。
人不是孤立的单位。例如,一次疫苗接种运动的成功取决于“群体免疫”——我得流感的机会受到我的朋友、家人和同事是否接种疫苗的影响。这种“干扰”或溢出效应,违反了许多更简单因果方法的标准假设。然而,G-计算可以适应这种网络化的现实。在一个称为分层干扰的假设下,即溢出效应可以被概括(例如,通过一个人的直接接触者中接种疫苗的比例),我们可以扩展我们对“治疗”的定义。个体的暴露现在是一个组合:他们自己的疫苗接种状态以及他们邻居的疫苗接种状态。然后,G-计算可以模拟疫苗接种和疾病在网络中的传播,正确地考虑这些溢出效应,以估计一项政策的总影响。
我们模拟的结局不必纯粹是生物学上的。在卫生经济学中,我们必须权衡新疗法的益处与其成本。G-计算允许我们同时模拟多个结局。我们可以为一个新治疗方案下患者的健康状况、生活质量(效用)和医疗成本随时间的共同演变进行建模。通过运行模拟,我们可以估计预期的总QALYs(质量调整生命年)增益和产生的总成本。这允许进行全面的成本效益分析,计算诸如增量成本效果比(ICER)之类的指标,以确定一项干预是否物有所值。这为临床研究和经济政策之间提供了关键的联系。
最后,值得注意的是,G-计算是一个能揭示关于统计证据本质的微妙而深刻真理的工具。例如,一些常见的效应度量,如比值比,具有一个被称为“不可坍缩性”的奇特性质。这意味着整个人群的因果效应并非不同亚组(例如,男性和女性)内效应的简单平均。这可能非常违反直觉。G-计算完全回避了这个悖论。因为它为每个个体模拟反事实结局然后进行平均,它直接计算出正确的群体平均因果效应,无论是风险差、风险比还是比值比。
像任何强大的工具一样,G-公式并非魔法。其有效性依赖于假设——最重要的是,我们已经测量并正确建模了所有影响治疗和结局的关键因素(即“序贯可交换性”假设)。在某些情况下,比如只有一个数据序列的中断时间序列,G-计算所需的假设可能非常强,其可行性关键取决于数据的丰富性和所用统计模型的灵活性。
从一个简单的政策问题到网络科学和个性化医疗的前沿,这段旅程表明G-计算远不止是一种算法。它是一个用于因果推理的统一框架——一种将领域知识、机械论定律和统计学习相结合的有原则的方法,以探索尚不存在的世界,并在此过程中,为我们生活的世界做出更好的决策。