临床因果思维引擎指南
by JQ李白@Likemed
你手上有一篇论文。摘要最后一句写着:"A 组的总生存显著优于 B 组(HR 0.74, 95%CI 0.58–0.95, P=0.016)。" 现在你要决定的不是这句话是不是真的,而是它能信到什么程度,以及它该不该改变你明天的处置。 这份指南讲的就是这件事的做法。它不是因果推断教科书,而是一套读法:面对一篇具体的研究,从哪里下手、按什么顺序拆、用什么工具、在哪一步该停下来。
0. 先立一个视角:论文是引擎的输出
0.1 一台完整的因果引擎
要从数据得到一个可信的因果结论,需要走完一条完整的链。珀尔把它画成一台机器,称为"因果推断引擎"——它吃三样东西(假设、问题、数据),吐三样东西(能不能答、用什么公式答、答案是多少)。
九个框的含义:
| 框 | 是什么 | 在论文里通常出现在 |
|---|---|---|
| ① 知识 | 研究者对疾病与诊疗流程的理解 | 不出现(留在作者脑子里) |
| ② 假设 | 从知识里挑出来、明确写下的部分 | 引言末尾、讨论的局限性段落 |
| ③ 因果模型 | 变量之间谁影响谁 | 极少出现(近年才有论文附 DAG) |
| ④ 可验证的蕴涵 | 这张图预言数据里该有什么模式 | 几乎从不出现 |
| ⑤ 问题 | 到底要估计什么量 | 方法第一段(常常含糊) |
| ⑥ 被估量 | 把因果问题翻译成可算公式 | 常常缺失,直接跳到模型 |
| ⑦ 数据 | 队列、样本量、随访 | 方法、表 1 |
| ⑧ 统计估计 | Cox、logistic、倾向评分、IPW | 统计方法段 |
| ⑨ 估计值 | HR、95%CI、P 值 | 结果、摘要 |
0.2 论文交付给你的,往往只有引擎的尾段
看上面那张表的右列:一篇典型的临床论文写清楚的是 ⑦⑧⑨,也就是数据 → 统计 → 数字。而 ①–⑥ 这一整段——知识、假设、因果结构、目标量、被估量——要么没写,要么只以"我们调整了年龄、性别、分期、ECOG"这样一句话的形式一笔带过。
这不完全是作者的错。期刊格式、篇幅限制、审稿传统都在鼓励这种写法。但后果很实在:引擎前半段的所有判断,被默认交给读者去补完——而大多数读者不会补,于是那些判断就悄悄消失了,一个第一层的关联被当成第二层的因果读走。
0.3 所以读者的任务是:反向重建
读懂一篇研究的因果,本质是把作者没写出来的那大半台引擎倒着拆出来,然后在每一站问三个问题:
这一步他做了吗?做对了吗?如果没做,我要为此打多少折扣?
这份指南的第 2 节把这个过程拆成六道工序。工序的顺序刻意与引擎的方向一致(先目标量,最后才看数字),而不是与论文的阅读顺序一致(摘要先给你数字)。这个顺序上的对抗,是全篇最要紧的一件事——先看数字,你的判断就已经被锚定了。
0.4 一把随身的分诊尺:三层阶梯
在下手之前,先给这篇研究定级。所有与因果有关的问题分三层:
| 层级 | 在问什么 | 典型措辞 | 记号 |
|---|---|---|---|
| 一、关联 | 观察到 A 的人,Y 是多少? | 相关、预测、伴随、危险因素 | P(Y│A) |
| 二、干预 | 如果改变 A,Y 会怎样? | 改善、降低、导致、获益、疗效 | P(Y│do(A)) |
| 三、反事实 | 假如这位患者当初不这样,会怎样? | 归因、若非、本可以、这次是不是它引起的 | P(Y_{a'}│A=a, Y=y) |
每上一级,都需要下一级根本无法提供的新信息——不是更大的样本量,是不同种类的知识。
这把尺子的用法只有一个动作,但它几乎能定位所有过度解读:
分别标出:这篇研究的分析支持的是第几层,作者的结论说的是第几层。两者的差,就是被偷偷加上去的东西。
最常见的偷渡:分析在第一层(观察性关联、调了几个协变量),讨论在第二层("提示应考虑早期使用"),而临床读者接收到的是第三层("我这位患者用了会更好")。
0.5 这份指南的边界
- 不覆盖统计计算:怎么跑 Cox、怎么算 IPW 权重、怎么选带宽,不在这里。那属于框 ⑧。
- 不替代专业知识:所有因果判断的原料是你对疾病和诊疗流程的理解。本文只提供整理这份理解的格式。
- DAG 只是记法:画图不产生知识,只承载知识。一张漂亮但假设站不住的图,只会让错误结论显得更有说服力。
- 给不出确定性:这套流程的产出是一个有依据的折扣率,不是"可信/不可信"的二值判决。
1. 三十秒定位
拿到一篇研究,先花三十秒做三个判断,再决定要不要投入更多时间。
判断一:它在爬哪一级梯子?
| 看到这些 | 分析实际支持 | 常见的结论偷渡到 |
|---|---|---|
| 单臂队列、描述性统计、列线图、预测模型 AUC | 第一层 | 第二层("应作为治疗选择依据") |
| 观察性两组比较 + 多变量调整 | 第二层的尝试(成败取决于识别) | 第二层(默认成立) |
| RCT 主要终点 ITT 分析 | 第二层(分配这一步可靠) | 第三层("这类患者用了会…") |
| RCT 亚组分析、per-protocol 分析 | 退回第一层或需重新识别 | 第二层 |
| 不良事件归因、"若非"论证 | 第三层 | 第三层(但假设常未说明) |
判断二:目标量写出来了吗?
在方法第一段找这五样东西:目标人群、A(比较的是哪两个策略)、Y、时间零点、总效应还是直接效应。五样齐了,这篇论文的作者跑过引擎的框 ⑤;缺三样以上,后面的一切精度都可疑。
判断三:有没有立刻出局的红旗?
- 分组依据是基线之后才知道的信息("完成 4 周期者" "达到缓解者" "接受了二线治疗者")
- 两组的随访起点不是同一个时刻
- 协变量选择写的是"单因素分析 P<0.1 者纳入多因素"
- 结局需要影像评估,但两组的检查频率不同、也没提
- 摘要用因果动词(改善、降低、延长),方法里却是纯观察性设计且未提识别策略
命中任何一条,都不意味着这篇文章没价值,但意味着你必须走完第 2 节的全部工序才能引用它。
2. 六道工序
每道工序的结构相同:要回答什么 → 怎么入手 → 用什么工具 → 常见破绽 → 这一步的局限。
工序一 · 目标量:这篇研究到底想估计什么
要回答什么
把作者含糊的"探讨 A 与 Y 的关系",还原成一个精确的、可以判断真假的量。
怎么入手
用目标试验的方式提问:如果可以不计成本地做一场随机试验来回答这个问题,那场试验长什么样?把它的方案写出来,一共七行:
目标人群 :谁有资格入组?(要用基线时点就能判定的条件)
策略 A :干预组具体做什么?(含剂量、时长、停药规则)
策略 B :对照组具体做什么?("标准治疗"不算答案)
时间零点 :从哪一刻开始计时?(入组=分组=随访起点,三者必须重合)
结局 Y :怎么定义、谁来判定、什么频率评估?
随访规则 :随访到什么时候?删失怎么处理?
目标效应 :总效应(意向治疗式)还是直接效应(机制式)?
写完这七行,再回头对照论文:**它的数据分析在多大程度上模拟了这场试验?**每一处偏离,都是一个需要单独论证的地方。
工具
- 目标试验对照表:左栏是你写的七行,右栏是论文的实际做法,中间一栏标"一致 / 偏离 / 无法判断"。三栏表填完,这篇论文的因果结构问题会有一大半自己浮出来。
- 总效应 vs 直接效应的判别问句:你想知道的是"换用这个方案,整体上会怎样"(总效应),还是"这个方案不通过某个中间环节,还剩多少作用"(直接效应)?前者远比后者常见,也远比后者容易识别。
常见破绽
- "标准治疗"作为对照:不同中心、不同年代的标准治疗完全不同,这个对照组实际上是好几个策略的混合物。
- 暴露定义随时间变化却被写成二分类:"使用过 statin"——用了三天和用了三年是同一组吗?
- 结局定义偷换:主要终点写 OS,实际报告的是"癌症特异性生存",后者需要死因判定,而死因判定本身可能与暴露相关。
- 目标人群与分析人群不一致:入组标准写的是所有晚期患者,分析人群却只剩"有完整基线检测的人"。
局限
目标试验框架逼你把问题写清楚,但它不保证这个问题值得问,也不保证它能被回答。它只是让含糊之处无处可藏。另外,有些问题(如"吸烟对健康的影响")本来就无法对应一场可实施的试验,此时目标试验只能作为思想工具,不能作为标准。
工序二 · 时间:三条线对齐了吗
要回答什么
在这项研究里,符合入组条件、被分入某组、开始计算随访,这三件事是不是发生在同一时刻?
这道工序单独列出来,因为它是观察性研究中最高频、最隐蔽、也最致命的错误来源,而且它不需要任何统计知识就能查出来。
怎么入手
拿张纸,画一条时间轴,标出三个点:
合格 分组 随访起点
时间轴 ──┼──────────────┼───────────────┼──────────────▶
然后问:这三个点重合吗?如果不重合,中间那段时间,患者在哪一组?
工具
不死时间检查。经典案例:早期研究发现"长期使用某药的人癌症更少"。问题在于——一个人要被归类为"长期使用者",必须先活得足够久。如果随访从更早的时点开始计,却按患者后来是否成为长期使用者分组,那么"长期使用组"天然排除了早期就发生结局的人。
用图看更清楚:
存活时长同时决定了"能否进入暴露组"和"结局好坏"——关联是被分组规则制造出来的,与药物无关。
同类变体(都是同一个毛病):
| 说法 | 隐藏的不死时间 |
|---|---|
| "接受二线治疗的患者 OS 更长" | 要活到一线失败后才有机会接受二线 |
| "完成 ≥4 周期者预后更好" | 要活着且耐受才能完成 4 周期 |
| "达到缓解的患者生存更长" | 缓解需要时间评估,早期死亡者进不了缓解组 |
| "接受手术者优于未手术者" | 术前评估、等待期都需要存活 |
| "肿瘤突变负荷高者获益更大"(需二次活检) | 能做二次活检的人本身状态更好 |
正确的做法(也是你判断论文是否处理了这个问题的依据):所有人从同一个时间零点开始随访;暴露状态随时间变化(time-varying),或使用地标分析(landmark analysis)、克隆-删失-加权等方法。论文如果只字未提,而分组又依赖基线后信息,这一项就是致命伤,后面的精度全部无意义。
常见破绽
- 表 1 的"基线特征"里出现了只有随访后才知道的变量
- 方法里写"根据是否接受 X 分为两组",而 X 发生在观察期内的任意时刻
- 生存曲线从 0 时刻就分开,且暴露组早期几乎没有事件(典型的不死时间信号)
局限
时间对齐是必要条件,不是充分条件。三条线对齐了,混杂问题依然存在。反过来,地标分析虽然解决了不死时间,但它把分析人群变成了"存活到地标时点的人"——这本身是一次选择,需要在工序三里重新画进图。
工序三 · 结构:把作者没画的图画出来
要回答什么
在这项研究里,谁影响谁?作者调整的那些变量,各自站在什么位置上?
怎么入手
画一张 5–8 个节点的骨架图。不要追求完整,超过十个节点的图会失去解释力。步骤:
- 先画
A → Y(主链); - 加入你认为在 A 之前、且同时影响 A 和 Y 的因素(混杂候选);
- 加入 A 之后发生、且被作者调整了的变量(中介 / 治疗后变量);
- 加入"谁进入了分析"这个节点(选择);
- 如果结局需要检测才能被看见,把"真实状态"和"观测结果"分开画。
用分组变量代替细碎变量,图会清爽很多:
| 分组节点 | 包含 |
|---|---|
患者状态 | 年龄、ECOG、合并症、器官功能 |
疾病负荷 | 分期、转移部位、肿瘤大小、症状 |
肿瘤生物学 | 病理、驱动基因、生物标志物 |
诊疗环境 | 中心、年代、可及性、医生偏好 |
治疗后过程 | 缓解、毒性、停药、后续治疗 |
检测过程 | 检查频率、影像质量、随访完整性 |
选择过程 | 入组、可评估、完成治疗 |
工具
四种基本结构——任何复杂的图都是它们的组合,每一种对应一条完全不同的调整策略:
| 结构 | 形状 | 不调整时 | 调整了会 | 对应偏倚 |
|---|---|---|---|---|
| Fork | A ← C → Y | 路径打开(有偏) | 关闭(正确) | 混杂 |
| Pipe | A → M → Y | 打开(这是因果的一部分) | 切断主链(有偏) | 过度调整 |
| Collider | A → K ← Y | 关闭(正确) | 打开(有偏) | 对撞偏倚 |
| Selection | A → S ← U → Y,只分析 S=1 | — | 相当于强制条件化 | 选择偏倚 |
身份判别表——这是这道工序的核心产出。把论文调整过的每一个变量列进去:
| 变量 | 时间位置 | 身份 | 该不该调 | 论文调了吗 |
|---|---|---|---|---|
| 例:ECOG PS | A 之前 | 共同原因 | 应调 | ✅ |
| 例:肿瘤缓解 | A 之后 | 中介 | 估总效应时不调 | ❌ 调了(问题) |
| 例:完成 2 周期 | A 之后 | 选择节点 | 不调、且不能作为入选条件 | ❌ 用作了入组条件 |
一条贯穿全篇的原则:变量的身份由它在因果结构中的位置决定,不由 P 值决定。"单因素分析显著就纳入多因素"这种做法与因果推断完全无关——它既可能漏掉必须调的混杂(因为不显著),也可能调进中介和对撞点(因为显著)。
常见破绽
- 把中介当混杂调:估总效应时把缓解、毒性、停药、后续治疗放进模型,切断了要研究的因果通道
- 把对撞点当协变量调:调整了一个同时受 A 和 Y 影响的变量,凭空造出关联
- 隐性选择没被识别:只分析"可评估病灶者""完成随访者""做了某项检测者"
- 观测 ≠ 真实:把"影像发现的脑转移"直接当作"真实脑转移",忽略了检查频率的差异
局限
这张图是你替作者画的,箭头来自你的专业判断,不是论文的证据。所以:
- 明确标注哪些箭头是论文明说的、哪些是你推断的;
- 数据不能告诉你箭头方向——
A → B与A ← B在统计上无法区分; - 但图可以被部分证伪:每条缺失的箭头都意味着一条条件独立关系,原则上可以在数据里检验(可惜论文通常不给你这个机会)。
工序四 · 识别:这个问题在这批数据上能不能答
要回答什么
前三道工序确定了"想要什么"和"世界长什么样"。这一道回答最关键的问题:用这批数据,能不能算出那个量?
注意这个问题的形式:它是"能不能",不是"精不精确"。**这个判断是在假设你拥有无限样本量的前提下做出的。**如果答案是"不能",那么再大的队列、再复杂的模型都没有用。
怎么入手
你想要的是 P(Y│do(A))——如果我们主动把所有人的治疗改成 A 会怎样。数据给你的是 P(Y│A)——已经用了 A 的那批人后来怎样了。中间隔着"谁被选去用 A"这个机制。
do 在图上是一次很具体的操作:把所有指向 A 的箭头剪掉。剪掉之后,混杂路径自动消失。随机对照试验之所以可信,正是因为随机化在物理上真实执行了这次剪除——谁接受治疗由随机数决定,不再由病情、体能、医生偏好决定。
观察性研究做不了这台手术,只能在纸面上模拟它。有三条路:
工具
路线一:后门调整(最常用)
找一组变量 C,满足:① 阻断 A 与 Y 之间所有的后门路径(A ← C → Y 这类);② 不包含 A 的后代。满足了,就有:
P(Y│do(A)) = Σ_c P(Y│A, C=c) · P(C=c)
左边是做不到的实验,右边全是数据里能算的量。这个等号就是整件事的核心——它把 do 消掉了。
两个常被忽略的点:右边按目标人群中 C 的分布加权,所以"调整"的本质是把两组重新加权到同一个人群上,而不只是"回归里多放一项";这也解释了为什么标准化、IPW 与回归系数在有交互时会分道扬镳。
路线二:前门准则(关键混杂测不到时)
如果 A 影响 Y 完全通过一个可测量的中介 M,而 M 本身不受那个未测量混杂的影响,就可以把路拆成两段分别估计再串起来。在肿瘤研究里这个条件通常不成立——治疗几乎总有中介之外的通路(毒性、剂量调整、后续治疗机会)。所以它更多是一种提醒:当作者说"这个药通过缓解起效"时,那是一个很强的断言。
路线三:工具变量
找一个变量 Z,它推动 A,但除了通过 A 之外对 Y 没有任何影响。临床候选:随机分组指派(处理依从性与交叉时)、医生或中心的治疗偏好、到专科中心的距离、指南变更的时间断点、孟德尔随机化中的基因型。
代价:排他性限制(Z 只通过 A 影响 Y)无法用数据检验,只能靠专业知识论证。
三条路的取舍:
| 策略 | 思路 | 换来的假设 |
|---|---|---|
| 后门调整 | 把混杂路径堵住 | 关键混杂全部被测量 |
| 前门准则 | 绕开混杂,沿机制拆两段 | 中介拦截全部路径且自身无混杂 |
| 工具变量 | 借外部推力撬动 A | 排他性限制成立(不可检验) |
三者都不免费。它们做的是同一件事:**把"必须测全混杂"换成另一组假设。**你的任务不是找到没有假设的方法,而是判断哪一组在这个具体场景里更站得住。
如果三条路都走不通,正确的动作有三个,都不包括"多调几个变量":
- 明说这个问题在这批数据上不可识别;
- 把结论降级为关联(这依然可以是有价值的论文);
- 换一个能被识别的问题(比如从"治疗效应"改成"接受该治疗的人群中的预后因素")。
常见破绽
- "我们调整了 20 个变量":变量数量与识别与否无关。调错了变量比不调更糟。
- 调整集里混着治疗后变量:常见于把整张表 1 一股脑放进 Cox。
- 全治疗队列硬做治疗效应:如果所有人都接受了这个治疗,"治疗 vs 不治疗"根本不可识别。此时应当重构为预后研究。
- RCT 的 per-protocol 分析被当成因果结论:随机化只保护"分配"这一步,一旦按依从性、完成度筛人,保护就失效了,需要重新识别。
局限
识别的判断永远是条件性的:它是"在这张图成立的前提下"能不能答。图错了,识别的结论也就错了。所以这一步的产出不是"能答/不能答",而是"在以下这几条假设成立的前提下能答,而这几条假设分别有多可信"。把这几条假设列出来,是这道工序最有价值的产出。
工序五 · 估计:数字是怎么来的,有多少信息量
要回答什么
前四道工序都通过之后,才轮到看数字。这一道问:这个数字把参数的可能位置压到了多窄?
怎么入手
把点估计和区间读成一股拉力,而不是一个判决:
- 点估计 HR=0.74:在所用模型下,最能解释当前数据的参数值在 0.74 附近
- 95%CI 0.58–0.95:从"相当可观的获益"到"几乎可以忽略的获益",都与数据相容
- P=0.016:在"完全无效"这个特定假设下,当前或更极端的结果不太常见
三句合起来读:数据把判断推离了"完全无效",但获益的幅度远未被钉死。
工具
信息量三查:
- **事件数,不是样本量。**生存分析的信息量来自事件数。1000 人随访 3 个月发生 40 个事件,其信息量不如 200 人随访 3 年发生 120 个事件。
- **区间宽度。**窄区间说明数据把参数压得紧;宽区间说明还有大片可能性没被排除。区间跨过无效值不等于"没效",只等于"没排除无效"。
- **绝对差,不只是相对值。**同一个 HR,在不同基线风险下对应完全不同的绝对获益。务必找固定时间点的生存率差、中位数差、限制性平均生存时间。
HR 的三个坑(临床论文里最常被误读的量):
- **HR ≠ 死亡概率下降的百分比。**HR=0.74 说的是瞬时风险比,不是"死亡率下降 26%"。
- **HR 依赖比例风险假设。**曲线交叉、延迟分离(免疫治疗常见)时,单一 HR 是几条不同时段效应的加权平均,权重还取决于事件何时发生。
- **HR 随时间内建了一层选择。**能活到后期还在随访中的人,本身就是被筛过的——两组的"幸存者"构成不同,晚期的 HR 因此天然带偏。这不是估计误差,是结构性的。
**该同时去找的东西:**Kaplan–Meier 曲线的形状、固定时间点的绝对差、RMST、事件数随时间的分布、非比例风险的检验。
常见破绽
- 只报相对值不报绝对值(10% → 7.4% 和 50% → 40% 的 HR 可以一样,临床含义天差地别)
- 亚组森林图里挑一个显著的说事(多重比较 + 亚组内识别条件通常更差)
- 用中位数差描述全部获益(尾部长期生存者的获益,中位数看不见)
- 换了主要终点或分析人群,却没在方法里说明
局限
**精度不能修复偏倚。**这是这道工序最需要记住的一句话。一个识别错误的分析,样本量越大,只是把一个错误的参数估计得越精确。窄区间和小 P 值不是可信度的证据,它们只在前四道工序通过之后才有意义。
工序六 · 更新:我应该移动多少
要回答什么
看完这篇研究,我对这个临床问题的判断,应该从哪里移到哪里?
怎么入手
不要问"这篇文章证明了吗",而要问四件事,按顺序:
1. 看这篇之前,我原本认为效应大概在哪里?为什么?
2. 这组数据往哪个方向拉、拉力有多大?(工序五)
3. 因为设计问题,这股拉力要打几折?(工序一至四)
4. 打完折之后,我现在站在哪里?我还没有相信什么?
第 3 步是这套读法与"看 P 值"的根本差别:**拉力的大小由数据决定,拉力的可信度由设计决定,两者必须分开计价。**一个识别干净的小样本研究,可能比一个识别混乱的大数据研究更值得移动你的判断。
工具
四句话结论模板(可直接用于 journal club 或病例讨论):
看这篇之前,基于 ______,我认为 ______,主要不确定性在 ______。 这组数据把效应中心推向 ______,并明显压低了 ______ 的解释。 但因为 ______(设计问题),我对这股拉力打 ______ 折。 所以我从 ______ 移动到了 ______;我还没有被推到 ______。
最后一句是模板里最重要的一句。明确说出"我还没有相信什么",比说出你相信什么更有价值,因为它标出了下一项研究应该去回答的问题。
两种敏感性分析(判断结论稳不稳的两个方向):
| 类型 | 问的是 | 常用手段 |
|---|---|---|
| 结构敏感性 | 如果存在一个未测量的混杂,它要多强才能翻转结论? | E-value、偏倚分析、负对照结局 |
| 信念敏感性 | 换一个同样合理的先验判断,结论还成立吗? | 先验敏感性分析、不同亚组重复 |
论文若做了前者,可信度显著提升;一篇没做任何敏感性分析、却给出强因果结论的观察性研究,本身就是一个信号。
常见破绽
- 一篇定论式阅读:"这项研究证明了 X"——单项研究几乎从不证明任何事,它只移动判断。
- 不打折的阅读:把发在高影响因子期刊、样本量大、P 值小当作可以跳过工序一至四的理由。
- 只更新一个参数:只看生存获益,不同步更新毒性、生活质量、成本、可及性——而临床决策需要的是这几个参数的联合更新。
局限
更新的终点不是"该不该用这个药"。统计和因果推断能告诉你获益可能有多大、不确定性有多大、代价可能是什么,但"值不值得"取决于这位患者的基线风险、对毒性的承受、经济状况和价值观。这一步永远不能被计算替代——把它明确留给医患共同决策,是这套流程的正确终点,不是它的失败。
3. 完整走一遍:黎巴嫩免疫治疗断供研究
选一篇真实的、且乍看结果反直觉的研究来走完六道工序。反直觉的结果最能检验这套流程有没有用——因为它不允许你用"符合预期"蒙混过关。
论文:Impact of Lack of Access to Immunotherapy on Survival in Stage IV Non-Small Cell Lung Cancer: A Multicenter Retrospective Study From Lebanon. JCO Global Oncology, 2026-07-22, PMID 42485593.
设计:黎巴嫩多中心回顾性研究,翻阅 500 份病历,纳入经济危机前 73 例、危机期 85 例新诊断 IV 期 NSCLC,共 158 例。经济危机造成药物短缺与治疗中断,形成了被迫减量的场景。
结果:免疫治疗接受者中,全剂量、50%–99%、低于 50% 剂量密度分别占 44.0%、41.4%、14.7%;三组中位 PFS 依次为 6.33、12.86、10.23 个月,差异未达统计学显著(P=0.132)。
先记下那个反常:剂量最低的两组,中位 PFS 反而比全剂量组长一倍左右。如果照字面读,结论会是"减量更好"——这显然荒谬。我们的任务不是宣布它荒谬,而是说清楚这个数字为什么会长成这样,以及它到底能支持什么。
三十秒定位:回顾性观察性研究;分组依据是随访期内实际发生的给药强度;结局是 PFS(需影像评估)。分析支持的层级:第一层。红旗命中两条——分组依据是基线之后才知道的信息;结局需影像评估而两个时期的检查条件很可能不同。
工序一 · 目标量
先写目标试验,再对照:
| 目标试验(如果能随机) | 论文实际做法 | 判定 |
|---|---|---|
| 目标人群:新诊断 IV 期 NSCLC | 一致(但仅限接受了免疫治疗者进入剂量分析) | ⚠️ 见工序三 |
| 策略 A:按标准剂量密度给足全程 | 实际达成的剂量密度 ≥100% | ❌ 实现值 ≠ 指派策略 |
| 策略 B:预先规定的减量方案(如 50%–99%) | 实际达成的剂量密度落在该区间 | ❌ 同上 |
| 时间零点:一线免疫治疗启动日 | 未明确(危机期起点?诊断日?) | ⚠️ 需查全文 |
| 结局:PFS | 一致 | ✅ |
| 目标效应:总效应 | 未声明 | ⚠️ |
这一栏是全篇的关键:策略 A/B 的定义错位了。目标试验里的"减量"是一个在时间零点就指派下去的策略;论文里的"剂量密度"是整个治疗过程结束后回头算出来的实现值。两者名字相同,含义完全不同——前者是原因,后者很大程度上是结果。
顺带注意:这篇论文实际上打包了两个不同的比较——危机前 vs 危机期(一个近似自然实验),和剂量密度三分组(一个暴露后分组)。前者的因果结构远比后者干净。混在一起讨论,会让后者借用前者的可信度。
工序二 · 时间
画三条线:
合格 分组 随访起点
(诊断IV期) (剂量密度算出来时) (治疗开始)
时间轴 ──┼──────────────────────────────────────┼─────────────▶
↑ 分组所需的信息,
要等治疗全程结束后才存在
三条线没有对齐,而且错位方向很特殊,值得仔细拆:
- 反向路径:早期进展或早期死亡 → 治疗提前终止 → 累积剂量少。这条路径把"预后差"推向"低剂量密度",方向是让低剂量组显得更差。
- 不死时间路径:要因短缺而经历"被迫减量",你必须在短缺持续期间还活着、还在接受治疗。活得越久,暴露在减量情境下的机会越多。这条路径把"活得久"推向"低剂量密度",方向是让低剂量组显得更好。
两条路径方向相反,哪条占上风取决于剂量密度的分母怎么定义(是"计划全疗程"还是"实际治疗期内应给的量")——而摘要没说。这本身就是一个结论:在暴露定义澄清之前,这个比较的偏倚方向都无法确定。
工序三 · 结构
把作者没画的图画出来(虚线表示这是我的推断,不是论文的证据):
身份判别:
| 变量 | 身份 | 后果 |
|---|---|---|
| 患者状态 / 疾病侵袭性 | 基线共同原因(fork) | 状态差者更易减停药,本身预后也差 → 未测量则混杂 |
| 在治存活时长 | 反向因果 / 不死时间 | 剂量密度部分是生存的结果而非原因 |
| 影像检查频率 | 测量过程 | 危机期查得少 → 进展被发现得晚 → 观测 PFS 被拉长 |
| 支付能力 / 转诊渠道 | 基线共同原因 | 危机期能拿到药的人可能本就资源更好 |
| 危机期(日历时间) | 准工具 / 时期效应 | 但它同时影响给药、影像、支持治疗 → 排他性不成立 |
最值得注意的是"影像检查频率"这一条。PFS 是一个被检出的事件:查得越少,进展被记录得越晚,测出来的 PFS 就越长。经济危机同时压低了给药强度和影像频率,而这两件事发生在同一批患者身上——于是低剂量组的 PFS 被系统性地拉长。
**这条路径与观察到的反常方向完全一致,而且它甚至不需要任何真实的生物学效应。**在我看来,它是这组数字最经济的解释。
工序四 · 识别
**目标量一(策略性减量的因果效应):不可识别。**三条理由,任何一条单独成立就足够:
- 暴露被定义为实现值而非指派策略(工序一),这个量在目标试验里没有对应物;
- 关键混杂——疾病侵袭性、患者状态、支付能力、医生的优先分配决策——基本不可能在回顾性病历中被充分测量;
- 结局的测量过程与暴露相关(危机同时改变给药和影像频率),这是一条无法靠调整协变量修复的路径。
有没有可用的工具变量?危机本身看起来像一个外生冲击,是很自然的候选。但排他性限制不成立:危机不只通过剂量密度影响 PFS,它同时改变了影像频率、支持治疗、转诊路径乃至患者的营养与依从状况。这个工具通向结局的路不止一条。
目标量二(危机期 vs 危机前,作为一种"暴露于断供环境"的策略效应):部分可识别。这个比较更接近一次自然实验,时间零点也更容易对齐。代价是日历时间混杂——两个时期的诊断技术、可及药物谱、支持治疗都不同。这是这份数据能支撑的最强的因果性问题,但论文的重点没有放在这里。
**目标量三(描述断供的实际形态):完全可识别,且不需要任何因果假设。**44.0% / 41.4% / 14.7% 这个分布本身就是可靠信息。
工序五 · 估计
- 样本量:158 例,其中低于 50% 剂量密度组占免疫治疗接受者的 14.7%——大约十几个人。
- 事件数:未报告。生存分析的信息量来自事件数,缺了它无法判断这三条曲线有多少支撑。
- 区间:三个中位数都没有给区间,只有一个整体的 P=0.132。
- 非单调性:6.33 → 12.86 → 10.23,随剂量下降先升后降。真实的剂量-反应关系很少长这样;非单调本身就是混杂或偏倚的提示,而不是需要用生物学去解释的现象。
关于那个 P=0.132,有一条纪律必须守住:**它不能被读成"三组无差异"。**这项研究没有按等效性设计,功效极低(最小组十余人),"没测出差异"在这里几乎不携带信息。
工序六 · 更新
看这篇之前,我认为免疫治疗的剂量-暴露-效应关系在治疗窗内相对平坦(这有既往药代与剂量探索研究支持),但主动减量是否安全缺乏可靠证据;同时我对真实世界断供的规模没有具体概念。
这组数据在"减量是否影响疗效"上给出的拉力:方向可疑、强度极弱。数值上低剂量组更好,但至少三条偏倚路径(不死时间、影像频率、支付能力选择)都朝这个方向推,而它们与真实效应无关。
因此这一股拉力我打到接近零折——我在"减量是否安全"这个参数上几乎没有移动。特别地,我没有被推向"减量与全剂量等效",那需要一项按等效性设计的研究。
但这篇文章在另一个参数上明显移动了我:断供发生时,实际剂量密度的分布是 44% / 41% / 15%——超过半数患者没能拿到全剂量。这个量不需要任何因果假设就成立,而且是制定供应中断预案时真正要用的数字。
最终评价:一篇有价值的论文,而且它自己的措辞是克制的——原文没有主张减量获益,也说明了未按等效性设计。风险不在作者,在引用它的人。
正确的引用方式:
- ✅ "在黎巴嫩经济危机期间,超过半数接受免疫治疗的 IV 期 NSCLC 患者未能获得全剂量,其中 14.7% 剂量密度低于 50%。"
- ✅ "该研究记录了供应中断的真实形态,可用于制定断药预案。"
- ❌ "真实世界数据提示免疫治疗减量不影响 PFS。"
- ❌ "低剂量组 PFS 更长,提示可能存在最佳剂量窗。"
如果要把它变成一项能回答减量问题的研究,需要改三处:把暴露改为时间零点即可判定的指派策略(例如"该中心在该时段的供应状态");对影像评估频率做匹配或敏感性分析;把问题重新表述为等效性/非劣效并据此估算样本量。
4. 一页判决书
读完一篇研究,把结论压缩成这张表。它可以直接贴进文献笔记或 journal club 幻灯。
研究 :
声称的层级 :□ 关联 □ 干预 □ 反事实
分析支持的层级:□ 关联 □ 干预 □ 反事实 ← 两行不一致就是过度解读
目标量 :(七行目标试验里最关键的三行)
时间对齐 :□ 三条线重合 □ 存在不死时间 □ 无法判断
结构问题 :□ 调了中介 □ 调了对撞 □ 隐性选择 □ 观测≠真实 □ 无明显问题
识别 :□ 成立(假设:______) □ 不成立(原因:______) □ 无法判断
信息量 :事件数 ____,区间 ____,绝对差 ____
偏倚方向 :□ 倾向夸大 □ 倾向低估 □ 方向不明 ← 比"有偏倚"有用得多
敏感性分析 :□ 做了(______) □ 未做
我的移动 :从「______」到「______」
仍未被更新 :______
可以怎么引用 :______
其中偏倚方向这一栏值得特别注意:说"这项研究有混杂"几乎不提供信息,因为所有观察性研究都有。有用的判断是混杂朝哪个方向推——如果偏倚方向与观察到的效应方向相反,那么真实效应可能比报告的更大,这个结论反而更稳。
填好之后长这样(第 3 节那篇):
研究 :黎巴嫩免疫治疗断供研究(JCO Glob Oncol 2026, PMID 42485593)
声称的层级 :■ 关联 ← 作者措辞克制,未越级
分析支持的层级:■ 关联
目标量 :A=实际达成的剂量密度(非指派策略),Y=PFS,时间零点未明确
时间对齐 :■ 存在不死时间(分组依据在随访期内才产生)
结构问题 :■ 隐性选择(仅免疫治疗接受者) ■ 观测≠真实(影像频率随危机下降)
识别 :■ 不成立(暴露定义错位 + 关键混杂不可测 + 测量过程与暴露相关)
信息量 :事件数未报,无区间,最小组约十余人,P=0.132(未按等效性设计)
偏倚方向 :■ 倾向夸大低剂量组的表现(三条路径同向)
敏感性分析 :■ 未做
我的移动 :从「减量是否安全证据不足」到「减量是否安全证据仍不足」(≈未移动)
另:从「不清楚断供规模」到「超半数患者未获全剂量,15% 不足半量」
仍未被更新 :减量与全剂量的等效性;断供对 OS 的影响;不同瘤种的可推广性
可以怎么引用 :作为断供实际形态的描述性证据,不作为减量安全性的证据
注意"我的移动"那一栏出现了两行:**一项研究可以在某个参数上完全推不动你,同时在另一个参数上给出确实有用的信息。**把这两者分开记,比给整篇文章打一个"可信/不可信"的总分有用得多。
5. 结论该停在哪一层:措辞对照
写作和讲述时,让句子停在你实际算出来的那一层。
| 分析实际支持 | 可以这样说 | 不能这样说 |
|---|---|---|
| 关联(描述、预测) | "……与更长的 OS 相关""在本队列中,……组的 OS 更长" | "……改善了 OS""……是获益因素" |
| 干预(识别成立) | "在以下假设下,改用 A 策略预计使 2 年生存率提高 X 个百分点" | "这位患者用 A 会多活 X 个月" |
| 干预(识别存疑) | "方向与既有证据一致,但因……本研究不足以支持因果结论" | "真实世界证据证实了……" |
| 反事实 | "在 ……假设下,该事件由药物引起的概率区间为 ……" | "这个不良事件是这个药引起的" |
三条容易被忽略的措辞纪律:
- **"独立预测因子"不是因果表述。**它只说明在某个模型里系数不为零,与"改变它会改变结局"无关。
- **"调整后仍显著"不提升层级。**调整的正确性来自结构,不来自显著性。
- 群体量不能直接搬到个体。"人群平均延长 3 个月"与"这位患者能多活 3 个月"之间,隔着一整级阶梯和一整组新假设。
6. 十个"看起来严谨"的信号
这些做法在论文里显得专业,但对因果结论没有帮助,有时反而有害:
- "单因素分析 P<0.1 者纳入多因素" —— 变量选择应基于结构,不基于显著性
- "我们调整了所有基线特征" —— 表 1 里常混着治疗后变量和对撞点
- 倾向评分匹配 —— 只是后门调整的一种实现方式,无法处理未测量混杂;匹配后样本代表性还可能变差
- "多变量分析证实了独立相关性" —— 独立性是统计概念,不是因果概念
- 超大样本量 —— 只压缩随机误差,对系统偏倚毫无作用
- "结果与既往研究一致" —— 如果既往研究有同样的设计缺陷,一致性只是缺陷的复现
- 只看 P 值不看区间 —— 显著与否不告诉你效应可能有多大
- per-protocol 分析作为"更真实"的补充 —— 它通常引入的是选择偏倚,不是真实性
- 亚组森林图里挑显著的解释 —— 亚组内识别条件通常更差,多重比较也未控制
- "因果关系需要 RCT 证实"作为万能免责声明 —— 这句话既回避了本研究能不能识别的问题,也忽视了 RCT 自身在随访阶段同样会失去保护
附录 A · 记号对照
读文献时会遇到几套长得像、含义完全不同的记号。混淆它们是解释错误的主要来源。
| 记号 | 读作 | 层级 | 含义 |
|---|---|---|---|
P(Y│A=1) | 在用了 A 的人中,Y 的概率 | 一 | 包含了"谁被选去用 A"这个机制 |
P(Y│do(A=1)) | 如果让所有人都用 A,Y 的概率 | 二 | 切断了选择机制 |
E[Y│do(1)] − E[Y│do(0)] | 总效应 / ATE | 二 | 两个平行世界的对比 |
E[Y_1 − Y_0│A=1] | ETT,用了药的人身上的效应 | 三 | 与 ATE 可以差别很大 |
P(Y_0=0│A=1, Y=1) | 归因概率 PN | 三 | 药物警戒、"若非"判定 |
Y_{a, M_{a'}} | 嵌套反事实 | 三 | 自然直接/间接效应的基础 |
Σ_c P(Y│A,c)P(c) | 后门调整公式 | — | 把 do 翻译成可算量 |
三条实用提醒:
- **回归里"加一项"永远是条件化,永远不是
do。**变量塞进模型不会让它获得干预含义;授予干预含义的是图的结构。 - **
P(Y│do(A), M=m)与P(Y│do(A), do(M=m))完全不同。**前者是挑出一个亚组,后者才是"把 M 固定住"。Y ~ A + M + C给的是前者,人们几乎总想解释成后者。 - **中介分析比总效应高一整级。**自然直接/间接效应需要嵌套反事实——要求把 M 设成"如果这个人没用药、他本会有的那个值",这个值从来不存在于任何数据中。
附录 B · 分级读法
不是每篇文章都值得走完六道工序。按用途分级:
五分钟(筛选:这篇值不值得细读)
- 三十秒定位(第 1 节的三个判断)
- 时间三条线是否对齐(工序二)
- 有没有调中介或以治疗后变量筛人(工序三的两条最常见破绽)
任何一条命中,先归入"存疑"堆,不要引用。
三十分钟(要引用、要在科室讲)
- 填目标试验七行对照表(工序一)
- 画 5–8 节点骨架图 + 身份判别表(工序三)
- 判断识别是否成立,并列出所依赖的假设(工序四)
- 查事件数、区间、绝对差(工序五)
- 写四句话结论 + 一页判决书(工序六、第 4 节)
深读(要据此改变临床实践或写进综述) 在上面基础上补:偏倚方向的定量评估(E-value 或简单偏倚分析)、与既有证据的联合更新、未被更新参数的清单、如果要设计一项更好的研究该改哪三处。
附录 C · 常见结构速查
| 你看到 | 结构 | 后果 | 该怎么办 |
|---|---|---|---|
| 调整了治疗后出现的变量 | A → M → Y | 主链被切断,总效应被低估或方向不明 | 估总效应时不调 |
| 只分析"可评估""完成治疗""有检测结果"者 | A → S ← U → Y | 选择偏倚,方向常不可预测 | 改回全人群;或明确重新定义目标人群 |
| 调整了同时受 A 和 Y 影响的变量 | A → K ← Y | 凭空造出关联 | 不调,也不调它的后代 |
| 结局需要检测才能发现,两组检测频率不同 | 真实 → 观测 ← 检测过程 | 检测强度差异被误读为疗效差异 | 把检测过程画进图;改用硬终点 |
| 分组依赖基线后信息 | 不死时间 | 暴露组被系统性地"赠送"了生存时间 | 时间零点对齐;time-varying 或地标分析 |
| 治疗随时间改变,且中间状态既是前次治疗的结果又影响后续治疗 | A0 → L1 → A1 → Y | 普通调整无论调不调都有偏 | g-methods、IPW、边际结构模型 |
| 分层与合并的结论相反 | 辛普森悖论 | 取决于第三变量是混杂还是中介 | 由结构判断,不由数据判断 |
| 全队列都接受了同一治疗,却报告"治疗效应" | 无对照 | 效应不可识别 | 重构为预后研究 |
参考与延伸
入门
- Pearl J, Mackenzie D. The Book of Why.(中译《为什么:关于因果关系的新科学》,中信出版集团,2019)——本文的引擎框架、三层阶梯、图手术、辛普森悖论均源自此书。零基础首选。
方法
- Hernán MA, Robins JM. Causal Inference: What If. Chapman & Hall/CRC, 2020.(识别、混杂、选择偏倚、测量偏倚、工具变量、g-methods 的系统处理)
- Hernán MA, Robins JM. Using big data to emulate a target trial when a randomized trial is not available. Am J Epidemiol. 2016;183(8):758–764.(工序一的方法来源)
- Hernán MA. The hazards of hazard ratios. Epidemiology. 2010;21(1):13–15.(工序五中 HR 的结构性问题)
- Dickerman BA, et al. Avoidable flaws in observational analyses: an application to statins and cancer. Nat Med. 2019;25:1601–1606.(工序二不死时间的标准参考)
- VanderWeele TJ. Explanation in Causal Inference. Oxford University Press, 2015.(中介与交互;附录 A 中嵌套反事实的正规处理)
- Greenland S, et al. Statistical tests, P values, confidence intervals, and power: a guide to misinterpretations. Eur J Epidemiol. 2016;31:337–350.(工序五的读数纪律)
工具
- DAGitty:在线画图,自动给出最小充分调整集、列出可验证的蕴涵、搜索工具变量。工序三画完图后用它复核一遍,比手工数路径可靠。
第 3 节案例出处
- Impact of Lack of Access to Immunotherapy on Survival in Stage IV Non-Small Cell Lung Cancer: A Multicenter Retrospective Study From Lebanon. JCO Glob Oncol. 2026. PMID 42485593.(本仓库周报
reports/lc/weekly-2026-07-30.md第 7 条)
本仓库内的两篇专题
dag-guide.md:DAG 的完整读图与设计方法(工序三、四的展开)laplace-guide.md:贝叶斯式的证据更新读法(工序五、六的展开)
