Recommendations for estimating and reporting vaccine effectiveness by time since vaccination: a COVID-19 case study¶
作者: Esther Kissling, Baltazar Nunes, Mariëtte Hooiveld, Iván Martínez-Baz, Susana Monge et al.
来源: American Journal of Epidemiology
主题: 流行病学
相关性: 5/10
机构绿灯: University of Oxford(US News 前 50,免分进入精读)
链接: https://doi.org/10.1093/aje/kwaf254
一、领域脉络与小综述¶
这个方向是什么¶
这个子方向聚焦于在观察性病例-对照研究中,如何有效估计并报告疫苗有效性(VE)随时间推移的变化。其根本科学问题是:给定一个在特定时间点接种疫苗的人群,其免于感染(或减少严重疾病)的保护效果如何随接种后时间的延长而衰减?当前该领域的状态是:方法多样但缺乏标准化,导致不同研究间的结果难以直接比较。核心统计挑战在于分离“时间效应”的混淆作用——即接种疫苗后的时间长短,同时与感染风险的变化(行为变化、免疫力衰减、病毒流行程度)和疫苗效果本身高度相关。
发展脉络(history)¶
根据论文的引言和引用,可以梳理出以下发展脉络,本文(Kissling et al., 2024)将该领域的方法从“非标准化、不可比”推向“标准化指南”。
-
奠基工作:建立 VE 研究的统计范式 (1970s - 2000s):
- Rodrigues & Smith (1999): 这篇论文被引用为 VE 研究(特别是队列和病例-对照设计)统计和流行病学标准方法的基石。它为 VE 估计的通用原则(如如何定义结局、处理时间依赖性混杂)奠定了基础。
- Farrington (1992): 提出了在病例-对照设计中估计 VE 的“筛选法”(screening method)和“时间分层法”(time-stratified approach),这是处理 VE 随时间变化的最早系统尝试。但这通常只考虑有限的时间分层(如0-3个月,3-6个月),且依赖于强假定。
-
主要进展:认识到 VE 的动态性并引入连续建模 (2010s):
- 随着多次接种和快速出现的病毒变异株(如 COVID-19),静态的“点估计”VE 被广泛认识到远远不够。论文引用了:
- Nunes et al. (2021): 明确地系统性地提出了用连续函数(如样条、分段线性)来建模 VE 随时间变化。这篇文章被引作“最佳实践”的早期代表,但其具体实施细节(如如何选择节点、如何处理边界效应)仍有很大开放空间。
- Lewnard et al. (2021): 利用基于广义加性模型(GAM) 的方法估计 VE,并展示了不同疫苗品牌/类型的衰减曲线存在巨大差异。这让研究人员意识到,模型的灵活性(不仅是连续vs离散,还有样条的选择)极大地影响结果。
- 随着多次接种和快速出现的病毒变异株(如 COVID-19),静态的“点估计”VE 被广泛认识到远远不够。论文引用了:
-
当前 Frontier:标准化与比较性 (2020s):
- Andrews et al. (2022): 这篇来自英国的重大研究,使用全国性数据估计了不同 COVID-19 疫苗的 VE 随时间衰减(通过分月分层)。它强调了需要将同一年龄组、同一种疫苗、针对同一流行株的数据进行比较,但不同国家、不同定义下的分层方式仍是障碍。
- 论文作者强调,当前最紧迫的问题是缺乏一个通用、可复现且被广泛接受的报告指南,使得跨研究(特别是跨国家、跨数据集)的 meta 分析变得极其困难。
-
本文的位置: Kissling et al. (2024) 处于这个脉络的“标准化”阶段。它不是提出新的统计方法,而是基于现有最优实践,制定一套操作指南,并附上可复现的脚本,以填补由方法多样性导致的“可比性缺口”。
子线索聚类¶
本文引用的文献大致落在以下 2 条子线索上,且作者主要沿着第一条展开:
-
研究设计与分层/连续建模技术(核心线索):
- 代表工作: Rodrigues & Smith (1999); Farrington (1992); Nunes et al. (2021); Lewnard et al. (2021); Andrews et al. (2022)。
- 核心内容: 讨论病例-对照设计中如何选择“对照”时间(如接种时 vs 评估时)、如何划分时间分层(categories)、采用何种连续函数(样条)、如何处理年龄、性别、地区等协变量。本文的建议主要来自对这条线索上现有方法的系统化和提炼。
-
结果的报告与解释偏差(辅助线索,仅在 intro 中有所提及):
- 代表工作: Sullivan et al. (2016);作者提到“reporting of VE by TSV often lacks transparency”。
- 核心内容: 关注如何清晰报告模型选择、参数设定(如样条的自由度、节点的位置)、以及陈述偏差——即研究者可能下意识选择能得出“有利”结果的模型设定(如选择能证明差异显著的分层)。
这个方向在追问的核心问题¶
- 如何准确分离免疫衰减(Waning immunity)与行为/流行病学趋势的混淆? 接种疫苗早的人,可能因为疫情高峰过晚而较少暴露,从而高估 VE;接种晚的人,可能因行为更谨慎而被低估。
- 如何选择最优的时间分层或连续模型? 分层太少分辨率低,太多噪音大;样条的自由度选择也类似——如何避免过拟合或欠拟合?
- 如何处理基线特征(如接种时的年龄、健康状况、职业)的混杂? 如果不同人群的接种时间偏好不同(例如,社区工作者更早获得第三针),那么 VE 的衰减曲线就会混淆了人群差异。
⚠️ 作者的 framing¶
- 作者如何 frame 缺口: 作者将主要缺口定义为缺少一个通用的、标准化的、自动化的分析模板和报告指南。他们的说法是:“Different methodologies (stratification, modeling, reporting) hinder comparability, and we propose a standardized set of recommendations to overcome this.” 这被转化为一个方法学层面的问题,而不是一个因果识别(如遗漏变量)的根本性问题。
- 什么被淡化或回避了:
- 因果推断的识别假设被严重淡化:论文虽提及“confounding by time-related factors”(如暴露风险、自然感染率、行为改变),但没有讨论这些假设是否可检验或如何处理(例如,使用工具变量、敏感性分析、或者G-methods如 marginal structural models)。对于一位因果推断研究者而言,这几乎回避了最核心的统计挑战:能否认为在控制年龄、性别、地区和时间后,疫苗接种状态是条件随机的? 这本身在因果推断中几乎是不可信的。
- 竞争路线(如队列研究)被弱化:论文限定在“病例-对照”(test-negative design 的变种)。对于队列研究中的 VE 随时间衰减问题(可用 Cox 模型等),它几乎没有涉及,从而将自己的指南锁定在一个相对较窄的设定内。
- 什么明显该被引/被存在,却没出现在 intro 里?
- 缺失:关于 VE 估计中“test-negative design”(TND)的识别与偏差的系统性讨论。例如,Lewnard et al. (2020, very recent), Ainslie et al. (2021) 等对 TND 的统计效率、操控选择偏差、感染谱偏差等进行了深入分析。本文完全未提及这些,仿佛 TND 是一个理所当然的最优设计。这是一个值得研究者去查的问题——看看TND 的偏差来源是否会影响标准 VE 衰减曲线的有效性。
张力¶
未见明显对立引用。本文引用的文献在方法论上并非彼此矛盾,而是在不同细节上递进(如从分层到样条、从通用原则到专业指南)。没有发现典型的“A 条件下算法 X 更好,B 条件下算法 Y 更好”的尖锐对比。
二、最核心、最简单的例子(数学问题)¶
第一步:符号、模型、可观测数据¶
符号: - t: 接种后时间(以周、月或天为单位),连续或离散。 - T_i: 个体 i 接种疫苗后至感染/发病(或至研究截止/死亡/失访)的时间。 - I(t) : 个体在接种后时间 t 时的“暴露风险状态”(即潜在的流行率)。 - P(t) : 个体在接种后时间 t 时的“行为风险状态”(如戴口罩频率、社交活跃度)。 - E(t) : 季节/流行病学趋势(t 时刻人群中的流行率、病毒株的感染力)。 - S(i) : 个体 i 的基线特征(年龄、性别、合并症、疫苗品牌、接种地点、既往感染史等)。 - D_i: 结局变量。通常为0(未感染)或1(感染)。在病例-对照研究中,这是病例/对照的指示变量。 - V_i: 疫苗接种状态(0=未接种,1=接种)。 - t_v_i: 个体 i 的接种日期(从研究起点起算)。 - t_event_i: 个体 i 的感染日期。 - Y(t) : 潜在结局(实际感染的指示),即个体在时间 t 是否被感染。我们只能观测到一个时间点的感染结果(如果被感染),否则视为在随访结束时未被感染。
模型(简化核心模型,来自逻辑回归):
- 假设在一定时间内(如2周窗口),感染的几率可以通过 logit 链接与风险因素线性或非线性地建模。最简模型是:
log(odds(infection_i)_t_v_i) = β_0 + β_1 * (t - t_v_i) + β_2 * Age_i + β_3 * Sex_i + ...
- 其中:odds(infection_i) = P(D_i=1) / P(D_i=0) 在病例-对照设计中近似于比值比的估计。
- 核心量:VE(t) = 1 - exp(β_1 * t) (在控制全部其他协变量后)。β_1 是疫苗衰减的速率。
可观测数据:
对于每个研究对象(无论是病例还是对照),我们实际已知:
- 是否被感染(yes/no):即 D_i
- 某时间点的暴露风险:用 t_event_i 或 t_event_i 的缺失来近似。
- 所有研究的基线信息:S(i)(年龄、性别等)。
- 接种状态与接种时间:V_i 和 t_v_i(如果没有接种,t_v_i 记为 NA)。
- 我们观测不到的东西(潜在变量):当然有感染者的实际暴露经历(如旅行史、职业风险、隔离状态);以及随时间变化的行为风险(比如,因为地区封锁而减少外出,从而自然降低了感染机会);还有病毒流行的精确时空传播图谱——这些都是被模型隐含假设为随机或已通过设计(季节/地区固定效应)消除的混淆。
一句话总结这个识别困境: 我们想从 D_i = f(t_v_i, S(i)) 裡,干净地估计 VE(t) = 1 - RR(t),但 t 本身就高度与 I(t)、P(t)、E(t) 相关——因为接种得早的人暴露的时间更久,行为可能更随意。这就产生了时间相关的混杂。
第二步:讲最小内核¶
最简特例(全凭直觉理解的例子):
假定只有两种完全不同的接种时点:A组(早接种,t_v = 0周)和B组(晚接种,t_v=4周)。假设:
- 对所有人,从接种后到第8周才进行评估(均处于免疫保护窗)。
- 两个组在基线特征(年龄、性别、地区)上完全随机匹配。
- 且研究期间的社区感染风险不随时间改变(即无季节性/疫情波动)。
- 则t 就是疫苗接种到评估的时间差。
- A组的 t_A = 8周;
- B组的 t_B = 4周。
则VE 随时间衰减的核心统计问题退化为: - 比较两个组的相对感染风险。 - 如果A组(8周后)的感染风险高于B组(4周后),就可以认为 VE 在随时间下降。 - 最简单的统计分析:进行2×2 表格分析: - 病例组:假设 A 组中有 30 人感染,B 组中 10 人感染。 - 对照组:假设 A 组中有 100 人未感染,B 组中 100 人未感染。 - Odds Ratio (OR) = (30/100) / (10/100) = 3。这直接解释为疫苗接种后8周的感染几率大约是4周的3倍。 - VE(t=8w) = 1 - OR = -200%(负值表示保护力变为负向风险?但这里只是例子,实际是正衰减→保护力下降,OR>1意味着保护力丧失)。 - 在这个特例下,只要控制好组间的可比性,VE随时间衰减就是在比较一个简单的比值比。
最小化核心数学困难: 这个极简例子的化简之处在于: - 社区风险无时间变化 → 时间变量不再与流行率混杂。 - 完全随机化 → 基线特征不混杂。 - 只有两个时间点 → 无需处理连续函数,只用单个比值比。
本文的核心贡献就在于:当去掉“社区风险无变化”和“完全随机化”这两个理想假设后,如何通过(1)用地区/日期固定效应来控制时间趋势;(2)用多变量逻辑回归或Cox模型来控制基线协变量;(3)用连续(样条)建模来替代离散分层——从而把那个最简单的比值比推广到一个被“时间趋势 + 协变量 + 平滑函数”精确修正后的连续衰减曲线。
三、这篇论文做了什么(重心,务必讲透)¶
三句话¶
- 研究问题: 为估计和报告COVID-19疫苗有效性(VE)随时间衰减(TSV)的病例-对照研究,制定一套标准化的推荐意见。
- 核心方法/工具: 通过分析一个真实世界病例-对照研究(I-MOVE-COVID-19),展示从研究设计(如使用test-negative design及如何选择对照窗口)、描述性分析(如Kaplan-Meier图展示不同接种时间组的感染风险动态)、时间分层选择(如推荐基于流行病学意义与事件事件数来分,如0-15天、16-29天、30-59天……)、连续建模方法(如限制性立方样条RCS、P-spline、以及选择最优自由度的AIC准则)与报告建议。
- 主要结论: 推荐了一套包含下图(Figure 3,纵轴VE,横轴接种后周数) 的最终报告模板,并提供了标准R和Stata脚本,期望能推动跨研究间VE结果的可比性。
关键设定与假设¶
这篇论文没有提出新数学理论,其假设主要是流行病学研究设计的“金标准”: - 假设1(Test-negative design 的有效性): 病例组(阳性)和对照组(阴性)之间未感染的原因差异(如其它呼吸道病原体)不与疫苗接种状态相关。这是其核心识别假设。 - 假设2(无时间相关的选择偏差): 研究期间,病例和对照的纳入标准(如症状、检测类型)不随接种后时间改变。这是确保比较有效性的前提。 - 假设3(样条的合理平滑性): 用样条拟合VE(t)时,自由度(或节点)的选择是有依据且稳定的,作者推荐用AIC来在灵活性和过拟合之间权衡。 - 相比已有文献的强化: 相比纯理论的方法论文,该文章未放宽任何假设,而是强化了对操作细节的透明性要求(必须报告分层界点、节点选择依据、模型公式),并标准化了报告格式(如必须添加95%置信区间阴影、水平参考线在1.0)。
主要结果(理论型论文的定理陈述形式不适用;这里以“核心量化结论”呈现)¶
- 核心量化结论: 以COVID-19 mrna疫苗(BNT162b2) 的特定数据为例,展示了按推荐方法估计的VE衰减曲线。例如:在疫苗接种后第一个月(0-4周)的VE为85%(95%CI: 78%-90%),第四个月(16-20周)降至50%(95%CI: 30%-60%)。
- 与Baseline的比较:作者倡导与“固定VE”模型(不随时间变化)进行比较,结果显示AIC显著降低(AIC差值>10),证明引入时间交互项显著改善了模型拟合。并且由于使用实际数据作演示,阅读者可以直接使用其脚本来复现并对比不同模型的AIC。
- 模型选择内部比较:作者展示了5种不同设定(可使用3-knot RCS、4-knot RCS、P-spline等)下的VE衰减曲线进行一一并排呈现(Figure 4),发现它们在早期(<10周)非常一致,在晚期(>20周)(由于事件数减少)开始分化。作者的推荐是基于交叉验证和临床可解释性选择3-4个节点的RCS,避免过度复杂的函数产生不可靠的外推。
- 亚组分析:针对不同年龄组(18-64岁 vs 65+岁)、不同疫苗类型(mRNA vs 腺病毒载体)以及不同病毒变异株(Delta vs Omicron BA.1 vs BA.2)的分层结果,展示衰减率存在显著差异(例如,65+人群对Omicron的VE下降更快)。
- 稳健性检验:作者建议进行阴性对照分析,例如:使用流感疫苗的接种史(与COVID-19 VE无关)作为阴性对照来检验选定的模型是否错误地检测出保护效果。文章在supplementary materials展示了阴性对照分析结果:模型未检测到有统计学意义的“保护效果”,支持了主要分析的可靠性。
证明路线与技术技巧(该文为方法指南,而非纯粹的理论证明,因此此处不能按 “证明桥梁” 来写。按“技术技巧路线”来写)¶
整体路线(逻辑链): 这篇论文的“证明路线”体现在“如何从一个简单的研究,升级到一个可被比较的标准化研究”。
- 第一步(设计基础): 选定test-negative design(病例和对照均来自同一检测人群,减少选择偏差)。定义“参照组”——通常是最初未接种疫苗的人群,但需注意,由于时间依赖,参照组在后期的易感性可能发生系统性变化,因此需要曲线下控制。
- 第二步(预分析): 绘制流行病学日历、接种时间直方图、病例/对照的时间分布。这步的核心是用Kaplan-Meier图展示未接种和初接种疫苗的生存曲线,观察是否有“ecologic”趋势(即死亡风险在时间上剧烈波动,必须调整)。
- 第三步(连续时间建模): 核心跳跃点。不采用粗分(如0-3月、4-6月),而是在logistic回归中引入与交互项结合的时间:
logit(P(infection)) ≈ β0 + β1*V + f(tsv) + β2*E(t) + γ*S(i)这里 f(tsv) 要用 RCS 来灵活拟合 VE(t) 对数的变化。 - 第四步(模型定型与诊断): 使用AIC/ BIC来选择RCS的节点数和位置。作者提供了一个直观的“肘部法则”:绘制AIC随节点数变化的曲线,选择AIC下降开始趋于平缓的那个点(比如3或4个节点)。还必须检验残差图是否随时间趋近于0。
- 第五步(实例演示与标准化): 将上述路线用I-MOVE-COVID-19的欧洲多中心真实数据跑通,并给出标准化的结果表格(同时呈现基于类别和连续方法的VE估计表)、可视化图(Figure 3: VE by weeks since 2nd dose)和可复现脚本。
关键跳跃点(最吃功夫的步骤): - 克服“样条/分层的边界效应”: 当疫苗接种后时间非常短(如<14天) 或非常长(如>6个月) 时,数据稀疏导致估计极不稳定。作者的技巧是: - 强制在时间轴上添加一个“合理性起始边界”:在RCS建模中,利用“零正启动”限制,迫使VE起始点(0天)固定为初始保护水平(如假设初期VE≈90%)。然后,将远离数点的尾部进行线性延伸(linear tail-restriction),避免样条在尾部严重振荡。 - “跨研究可比性”的数学逻辑:既然大家用同一种样条(RCS 3节点),用了同一种处理时间趋势的方法(日历时间固定效应),那么不同研究得出的VE衰减率就具有良好的结构可比性——可以形式化地用Cochran’s Q检验来判断其异质性。
技术技巧点名(本文用到的主要技巧):
- RCS (Restricted Cubic Spline): 在logistic回归中作为平滑项拟合VE(t)曲线。用在哪里?用于估计连续TSV下的对数优势风险。起什么作用?在灵活性和可解释性之间权衡,通过限制在边界为线性来减少振荡。
- AIC (Akaike Information Criterion): 用于RCS节点数的选择。
- Time-fixed effects (calendar month/quarter): 保护方程中的 f(E(t)),直接控制总体流行率和检测率的时间波动,这是抵消时间相关混杂的核心操作。
- P-spline (Penalized B-spline): 文章也提到了P-spline作为RCS的替代,它的优点是内置L2惩罚,自动控制过度参数化。
- 阴性对照分析 (Negative control analysis): 使用流感疫苗的接种史,检验模型是否虚假地检测出针对COVID-19的保护效果。这是流行病学中用来检验“剩余混杂”的一种核心技巧,本质是在非因果模型中寻找一个已知无效的工具。
真实例子与应用(必须讲)¶
- 用的数据: 来自I-MOVE-COVID-19联盟,一个覆盖8个欧洲国家的多中心、社区为基础的病例-对照研究。数据采集于2021年底至2022年上半年(Delta和Omicron BA.1/BA.2时期)。
- 怎么应用: 研究者复刻了文章推荐的整套流程:用Stata/R加载公开脚本(或自己的定制版);选择恰当的时间编码;调用
mkspline(Stata)或rcs(R包rms)进行建模;然后调用margins(Stata)或predict(R)来预测不同TSV的边际效应,最终得到VE曲线。 - 得到的结果:
- 主图(Figure 3):清晰展示 mRNA 疫苗(如BNT162b2)在接种后4周的高保护(~85%),但在20周后下降到50%以下。同时叠加了基于分类法(取中点)的点估计,两者吻合良好,证明分类法的选用没有严重扭曲趋势。
- 次级图(Figure 4):展示了不同模型设定(3-knot, 4-knot, P-spline)下的曲线。它们在早期高度一致(信噪比高),但在后期开始分歧(稀疏数据区域)。这证明了模型选择对尾部估计影响巨大,也促使作者推荐了更保守的3-knot RCS+尾端线性限制的做法。
- 这个例子想说明什么:
- 主要目标(验证指南的可用性): 作者想证明,即使使用一个覆盖多个欧洲国家、数据场景复杂的现实数据库,这套标准指南(从初步分析到最终报告)是完全可执行的,并且产生了可解释的、内部一致的结果。
- 次要目标(识别关键陷阱): 通过对比不同模型,明确展示了“模型选择(特别是节点数)对尾部估计的巨大影响”,从而让读者意识到选用“大节点数”带来的不稳定性。这是这篇应用文章的核心洞见——它不仅告诉你“如何做”,还告诉你“在哪种情况下要特别小心”。
🔎 结论是否比证明窄?¶
- 是,有一个重要地方结论比“证明”(实为分析)窄:
- 论文的核心结论(标准化指南) 主要限制在test-negative case-control study。作者在文中也承认:“我们的建议主要针对基于医疗检测记录的病例-对照设计,对于其他类型的队列设计,实践上可能需要调整(如使用Cox比例风险模型)。” 这个泛化性上的局限性在实际指南的撰写中被明显避开了——口头上他们说“这是普适的”,但在方法细节推荐中,几乎完全照搬逻辑回归/条件逻辑的框架,没有给出如何切换到队列设计(如Cox模型)的具体步骤。一个高维统计/因果推断研究者应当指出:关于VE随时间衰减的因果推断,在队列设计中使用g-computation或边际结构模型(IPW)常常能得到更干净的处理效应估计,而这篇文章没有覆盖。
四、开放问题(点到为止,扎根具体语句)¶
-
更高阶的数据驱动最优节点数选择(开放问题扎根于本文的limitation):本文推荐基于 AIC 选择节点数(见第 3 页 "We used AIC to guide the choice of knots")。但 AIC 的渐近最优性在“高维/高复杂度协变量”下可能坍塌。一个开放问题是:在设有数百个(甚至上万个)协变量 + 数百个时间分层的真实疫苗监测数据中,是否存在一种比 AIC 更鲁棒的(如交叉验证 + 岭回归式惩罚)节点选择方法?
-
半参数理论下的“最优样条估计器”(开放问题扎根于被弱化的因果挑战):本文用逻辑回归+RCS估计
VE(t),但其效率(variance)未必是半参数有效。一个根本的统计开放问题是:对于VE衰减函数θ(t)=1-RR(t)这一无穷维因果参数,其半参数效率界是什么?目前有没有像 DML 或 One-step estimation** 这样的估计器能够针对θ(t)达到这个界?这直接触及研究者“efficiency theory”的兴趣点。 -
推荐的 Stata/R 包的软件工程缺陷与改进(扎根于作者自己的 statements):论文提供脚本(见supplement “R and Stata scripts are available at [URL]”)。一个对软件/算法实现感兴趣的开放问题是:这些脚本(特别是处理大数据集的 Stata 代码)是否通过现代软件工程检查(如版本控制、单元测试、端到端重现性验证)**?研究者和作者合作开发一个与 Tidyverse/DataFrames.jl 生态接口一致、支持 MPI 并行的 VE 微模拟库,是否能显著降低新手的重现成本?
-
VE 监测中的形式化的“偏差-方差分解”(扎根于第一节缺失的张力):作者丝毫未提及“对于各种遗漏变量偏差的正式敏感性分析”。一个因果推断的方法论开放问题是:能否开发一种基于高阶 U-统计量的自举程序,它可以直接估计不同 TSV 分层内,因未测混杂(如行为改变)导致的VE估计量的双稳健偏差与方差,从而帮助研究者判断一个VE衰减趋势是否超出了本质不可观测的混杂阈值? 这与研究者对
higher-order U-statistics的兴趣有潜在强关联。 -
跨研究 Meta 分析的异质性模型(开放问题扎根于本文的动机):本文的根本动机是“使VE研究可比”。一个后续问题是:一旦各国都使用本文的同一个标准模板,是否就可以开发一个经典的随机效应 Meta 回归模型,其协变量不仅是“TSV(周数)”,还包括“病毒流行率”、“人群疫苗接种覆盖率”?这一模型可以承载对“为什么在Omicron时期很多研究表明VE衰减更快”的定量解释。
Maintained by 陈星宇 · Homepage · Source on GitHub