Epidemics · 第 52 卷 100845 · 2025 · 传染病建模专业期刊 · arXiv 预印本全文 · 代码与 Docker 全开源

用历史匹配改进政策导向的主体建模:以新冠模型 Covasim 的标定为例

David O'Gara, Cliff C. Kerr, Daniel J. Klein 等 6 人 · Epidemics, 52: 100845 · 2025 · DOI: 10.1016/j.epidem.2025.100845 · arXiv: 2501.00616
原题:Improving Policy-Oriented Agent-Based Modeling with History Matching: A Case Study
Open Access 新颖度 0.72

🧒 初中生也能看懂的版本

① 研究背景(为什么要做?)

新冠疫情暴发后,政府要在很短时间里决定要不要封城、要不要扩大检测,而电脑模拟模型正越来越多地被用来帮决策者提前推演后果。

这类模拟里有一种叫主体建模(agent-based model,简称 ABM):在电脑里造出成千上万个“虚拟居民”,每个人有自己的家、单位、学校和社区圈子,会被传染、会去检测、会康复,也可能死亡。模型搭好之后,就能在电脑里做“如果……会怎样”的实验,比如“如果从某天起大规模检测、追踪密接,夏天的感染会少多少”。这种实验,现实中没法随便拿一座城市去试。

本文用的是疫情期间被广泛使用的一个模型,叫 Covasim。它在美国和世界各地的防疫规划中都有直接影响,已在十几个国家被使用。作者用它模拟美国西雅图所在的金县:电脑里放 22.5 万个虚拟居民,按比例放大后代表 225 万真实居民。

但沙盘要能用,先得调准,行话叫标定:把模型里那些没法直接测量的“旋钮”(比如病毒每次接触传给别人的概率)拧到合适的位置,让模型算出来的确诊、死亡曲线和真实数据对得上。难处在于,这个模型跑一次要大约 30 秒,而 Covasim 最早那次标定一共跑了十万次以上,折合将近 35 天的计算时间。疫情可不会等你一个多月。

还有一层麻烦:模型里有随机性,同一组旋钮换一个“骰子”(随机种子),结果就会不一样。原来的做法是攒下一大堆“碰巧对得上”的“旋钮加骰子”组合,可这样很难回答决策者一定会问的问题:这组旋钮到底有多靠谱?对要拿去给政府出主意的模型来说,可信缺一不可。

② 研究问题(要回答什么?)

这项研究想弄清楚,能不能先用一个便宜的“替身”快速排除绝大多数不可能的参数组合,再在剩下的小范围里精细标定,从而又快又可信地把疫情模型调准。

打个比方:你要在一座巨大的仓库里找一把钥匙。老办法是一格一格地试,每试一格要花 30 秒;新办法是先画一张“大概地图”,把明显不可能的区域整片划掉,只在剩下的角落里仔细翻。

作者给自己定了三个目标,具体如下:

要调的旋钮一共四个:病毒每次接触、每天的传播率;从 2020 年 3 月 23 日起,工作和社区场景的传播被压低了多少;同一天起养老院等长期照护机构里的传播被压低了多少;以及有症状的人去做检测的意愿比没症状的人高多少。

这四个旋钮里,两个“压低多少”的旋钮可以理解为防疫限制下接触传播减少的幅度,一个对应民众去不去检测的行为。所以把它们调准,本身也是在回答:限制措施和民众行为在这场疫情里分别起了多大作用。

③ 研究方法(怎么做的?)

整个方法可以概括成先排除、再精算两步。

第一步:用“替身”画地图(历史匹配)。真模型跑一次要 30 秒,作者就训练了一个替身模型,统计学里叫“仿真器”。它学的是:给定一组旋钮,真模型大概会算出多少确诊、多少死亡,结果又会上下晃动多大。替身算一次几乎不花时间。

作者把四个旋钮各切成 40 档,一共 40×40×40×40,即 256 万种组合。用真模型挨个跑,要将近 2.5 年;用替身,几分钟就估完了。然后对每一种组合问一句:替身预测的结果,在考虑了随机晃动之后,和真实数据是不是差得太离谱?太离谱的就划掉,剩下的叫“尚未排除区”。

这样一共做了四轮。每一轮都在剩下的区域里挑 50 个新点,每个点让真模型重复跑 20 次(第一轮是 25 次),用新数据把替身训练得更准;同时“太离谱”的标准越定越严,从 3 收紧到 2.7,最后是 2.5。

这个替身有个讲究,叫异方差高斯过程。普通替身默认模型各处的随机晃动一样大,现实却不是这样:比如传播率很低、检测意愿又很高时,确诊数就会忽高忽低。这种替身允许不同位置的晃动大小不同;而且同一个点重复跑 20 次,它的计算量只跟“有多少个不同的点”有关,不会因为重复次数多而爆炸。

第二步:在小范围里精算(近似贝叶斯计算,ABC)。地图画好后,作者先根据剩下区域的中心和宽窄,给每个旋钮定一个“大概在这附近”的起点猜测;再在这个小区域里训练两个新替身,分别预测每日新增确诊每日死亡的整条曲线。然后开始“抽签”:抽一组旋钮,让替身算出曲线,和真实曲线够接近就留下,不够就扔掉。最后留下 1 万张合格签,合在一起就是旋钮的可信分布

最后还有一场考试:从合格签里抽 50 组,换全新的随机种子,回到真模型上重跑,看能不能对上真实数据。作者还用这些旋钮重演了一个政策情景,检验调准后的模型能不能拿来做政策推演。

④ 结果(发现了什么?)

四轮历史匹配把两百五十六万个候选参数组合砍到了两万一千多个,排除了百分之九十九以上的参数空间,整个过程只跑了五千三百次模拟。

① 地图越画越小
四轮下来,尚未排除的区域依次只剩全部空间的 7.23%、5.58%、2.14%、0.82%,对应 184,974、142,813、54,848、21,114 个组合。第一轮一下子划掉九成多,第二轮在剩余区域里又划掉约两成,第三、四轮各划掉约六成(后三个比例据论文表格推算)。
② 跑得少得多
全程只用了 5,300 次真模型运行,而原来的标定跑了十万次以上、折合近 35 天。按每次约 30 秒的同一算法推算,这次大约只要 1.8 天的计算量。
③ 换个骰子也对得上
从最终分布里抽 50 组旋钮、换全新随机种子重跑,模拟出的确诊和死亡曲线依然贴着真实数据;而且一半模拟和九成模拟所落的范围都上下对称地围着中间那条线,说明这组旋钮的表现不怎么靠“运气”。

地图还揭示了模型的“脾气”。四个旋钮里,“有症状者去检测的意愿”被压缩得最明显,它对报告出来的确诊数影响很大。传播率和“工作社区压低幅度”之间有清楚的此消彼长:病毒本身越能传,工作和社区场景里的传播就得被压得越低,才能对上数据。养老院那个旋钮则几乎看不出规律,这并不奇怪:原研究估计,在学校关闭前和居家令之后,养老院里的传播分别只占全部传播的 1.2% 和 0.1%,而工作和社区场景同期分别占 58.6% 和 52.0%。

也有没做好的地方。每天死亡的人数本来就少,逐日死亡曲线很难拟合,但累计死亡随着轮次推进越来越准;“正在感染的人数”观测数据太少,拟合起来更吃力。

拿去做政策推演,结论方向一致。作者重演了原研究里的一个假想政策:金县在居家令解除后,于 2020 年 6 月 1 日迅速扩大检测、密接追踪和隔离。和原研究一样,调准后的模型也显示高强度的检测和追踪能大幅压住 2020 年夏天的传播。差别在于,原研究的曲线更贴近数据,新方法在解除居家令后出现一个感染尖峰,随后确诊下降得更快;而在“什么都不加”的现状情景下,两套旋钮估出的感染人数水平相近。

⑤ 讨论(这些发现说明什么?)

这项研究最直接的意义,是让“拿模拟模型给政府出主意”这件事变得更及时、更可信

先说及时。危机里的政策窗口常常以天计算。一次标定要一个多月,模型就只能事后复盘;把计算量压到两天左右,模型才有可能跟着疫情进展反复重新调准,赶在决策之前给出推演。

再说可信。作者特别强调,模型只是现实的简化,而现实本身也只是无数种可能里“碰巧发生”的那一种,所以有些随机性是永远消除不掉的。与其挑一条“最像”的曲线,不如找出那些不管骰子怎么掷、平均来看都靠谱的旋钮,并告诉决策者结果大概会在多大范围里晃动。作者说,想让决策者真正用上模型、信任模型,就必须把模型的运行规律和其中的不确定性讲清楚。

两种思路可以并用。原研究的思路像“收集所有成功的剧本”,候选多、限制少,但很难说清旋钮的整体分布,也不容易搬到另一座城市;本文的思路像“找出稳定的规律”。作者认为二者并不冲突,在这个案例里都找到了能用来推演政策的旋钮;甚至可以先用一种思路框定大致范围,再用另一种细调。

人的行为很关键。“有症状者去检测的意愿”对报告的确诊数影响很大,它其实代表了人们的求医行为。作者提出可以把它扩展成更丰富的行为机制。这也提醒政策研究者:模型里关于民众怎么反应的假设,值得像病毒参数一样认真打磨。

也要看到局限。论文优先对准确诊和死亡,可能牺牲了“正在感染人数”的拟合;它假设模型没有系统偏差、数据没有观测误差;它没有设置“跳过画地图、直接做 ABC”的对照组,所以“画地图”这一步单独省了多少,本文给不出答案;另外,论文正文一处说“三轮后排除了 99% 以上”,与它自己的表格(三轮后还剩 2.14%,四轮后剩 0.82%)对不上,应以表格为准。

⑥ 结论(最终结论 + 启示)

这篇论文说明,给复杂的政策模型做标定不必硬碰硬地跑十万次模拟,先排除、再精算的办法能让模型更快、更可信地为公共决策服务。

具体来说,四轮历史匹配配合异方差高斯过程替身,把 256 万个候选组合压到 0.82%;再用 ABC 在小范围里得到 1 万个后验样本。全程 5,300 次真模型运行,换新随机种子仍能贴合确诊和死亡曲线,重演的“检测、追踪、隔离”政策情景也和原研究结论方向一致。

对公共管理和公共政策的启示,具体如下:

🎓 专业 IRMaD 结构解读

I. Introduction(引言)

议题源流:个体层级(agent-based)传染病模拟已有二十余年传统(Burke 等 2006;Ferguson 等 2006;Germann 等 2006;Halloran 等 2008;Longini 等 2005)。新冠疫情期间又涌现一批用于预测传播、支持政策规划与反事实推演的 ABM(如 Covasim、JUNE、OpenABM-Covid19)。模型进入政策分析前须经标定,即确认其能重现观测到的流行趋势;但高分辨率 ABM 单次运行昂贵,而政策需求又常具强时间敏感性,计算约束因此成为及时标定与政策分析的主要瓶颈

起点与空白:Covasim 首篇主要应用研究(Kerr、Mistry 等 2021,Nature Communications,Test-Trace-Quarantine)将四个不确定参数的标定表述为超参数优化问题(Optuna + TPE 采样器),虽得到大量与数据一致的轨迹,但有两点不足:(1) 需 100,000 次以上运行,折合近 35 天计算时间;(2) 优化范式下不确定性量化较困难(Panovska-Griffiths 等 2023)。此类“轨迹导向优化”(Fadikar 等 2023)得到的是“参数 + 随机种子”配对库:不对重复运行的均值行为作假设、候选参数范围较宽,但难以就合格参数的分布作出陈述,也难以迁移到新的地理情境(如另一座城市);精确复现还须保存运行环境与随机数流。历史匹配已用于星系形成、HIV、系统生物学、HPV 与英格兰 JUNE 模型,Covasim 也曾在别的情境下用 ABC 标定,但二者尚未在新冠流行病学模型上结合;hetGP 已用于其他流行病模型,尚未用于 Covasim

本文贡献:以 Covasim 的西雅图—金县标定问题为案例,提出“多轮历史匹配(异方差 GP 仿真器)→ 信息先验下的 ABC”流程。四轮历史匹配排除 99% 以上参数空间体积(404 = 2,560,000 个格点 → 21,114 个),ABC 后验在新随机种子上仍能匹配经验数据,全程仅 5,300 次模型运行。

与公共管理 / 公共政策的连接:Covasim 因高可见度而对美国及全球的疫情应对规划有直接影响、已在十几个国家使用。作者把标定定位为政策导向 ABM 的前置条件:模型须先能重现观测现象,才可作为计算机内实验(in-silico experiment)的起点去比较干预与基线;而标定的时效决定模型能否赶上决策窗口,标定的不确定性量化决定决策者能否信任模型输出。本文的技术贡献由此直接服务于政策建模的时效性、可信度与决策支持三项要求。

I. Theoretical Framework & Hypotheses(理论框架与假设)

标定目标(相当于本文 RQ)

编号目标对应方法 / 概念
G1不满足于单一“最佳”参数化;排除大片不确定参数空间,并在缩减空间上估计可接受参数化的后验分布历史匹配(NROY 空间)+ ABC
G2对可接受参数集做不确定性量化贝叶斯后验;异方差 GP 刻画随输入变化的随机方差
G3限制模型总运行次数(随机流行病模型的数据生成过程昂贵)仿真器(surrogate)+ maximin 序贯设计 + 重复运行

不确定性的认识论前提:作者区分数学模型、编译其结果的软件实现,以及“现实世界本身只是底层过程的一次随机实现”这一事实;因而部分随机性根本不可约(偶然不确定性,aleatoric uncertainty)。由此,寻找无论随机数流如何、期望输出都与观测可比的参数是有意义的目标;而合格参数所诱发的输出方差同样重要,它刻画纯随机性造成的结果稳定性,因为“好”参数也可能产生与数据不符的实现。

两种标定范式

范式回答的问题长处短处
均值导向(本文)哪些参数的后验分布对人群随机混合不变可做 UQ,可陈述参数分布,结果对随机种子稳定优先拟合部分指标,可能牺牲其他指标
轨迹导向优化(Kerr 等 2021;Fadikar 等 2023)哪些“参数 + 随机数流”组合能解释数据不假设均值行为;候选参数化更宽难以陈述参数分布、难以迁移到新城市;复现须保存环境与随机数流

作者强调两者并不互斥:可先做一组初始实验框定模型行为边界,再做更细致的标定。

政策建模的定位:作者援引 Hammond(2015)关于用 ABM 为政策提供信息的最佳实践,指出当模型用于疫情应对规划、以计算机内实验评估干预相对基线的效果时,标定是确保模拟为现实合理近似的关键;并援引 Hammond 与 Barkin(2024)“让证据走得更远”的主张,即提高模拟在反事实推演中的效用。为最大化对决策者的效用与对模型的整体信任,分析模型动态及其不确定性至关重要。

M. Materials & Methods(材料与方法)

R. Results(结果)

表 1 · 历史匹配四波汇总(候选格点总数 2,560,000;最后一列为据表 1 推算):

波次仿真输出(2020 年)阈值 I(θ)NROY 格点剩余体积本波排除占上一波剩余
1累计确诊、累计死亡:4/2、4/26、6/8;活跃感染:3/26、5/73.0184,9747.23%92.8%(占全空间)
2同上 + 活跃感染 4/19;新增确诊 4/23.0142,8135.58%22.8%
3同第 2 波2.754,8482.14%61.6%
4同上 + 新增确诊 4/262.521,1140.82%61.5%

与原标定的对比

维度Kerr 等 2021(Optuna / TPE)本文(历史匹配 + hetGP + ABC)
模型运行数100,000 次以上5,300 次(约为前者 1/19,推算)
计算时间近 35 天按每次约 30 秒同口径折合约 44 小时,约 1.8 天(推算)
产出形态mismatch ≤ 30 的轨迹库 15,092 条10,000 个后验样本 + 50 次新种子验证
不确定性量化较困难后验分布 + 分位带
TTQ 反事实贴合度更贴近数据方向一致,解封后出现感染尖峰

a / D. Discussion & Conclusion(讨论与结论)

🧠 IRMaD 思维导图

I 引言 R 研究问题/假设 M 方法 R 结果 a 讨论 D 结论
mindmap
  root((政策主体模型标定提速))
    I 引言
      疫情决策要快又要准
      原标定跑十万次以上
      计算耗时近35天
      单一最优难量化不确定
      Covasim用于十余国
    R 问题
      先排除不可能参数
      再估计后验分布
      量化参数不确定性
      尽量少跑模拟
    M 方法
      ABM 22.5万主体
      代表金县225万人
      四层接触网络SEIRD
      四个待标定参数
      异方差高斯过程替身
      四轮历史匹配
      每轮50点重复20次
      ABC得一万后验样本
    R 结果
      256万点缩到2万余
      剩余体积0.82%
      共5300次模拟
      新随机种子仍贴合
      检测意愿参数收窄最多
      传播率与社区削减负相关
      政策反事实方向一致
    a 讨论
      均值导向与轨迹导向并用
      求医行为值得细化
      可推广到Starsim
      活跃感染拟合较差
      未设直接ABC对照
      三轮四轮表述不一
    D 结论
      标定可快可信
      不确定性要交给决策者
      服务高风险公共决策
      让证据走得更远

图:本研究的 IRMaD 思维导图。蓝色 I 引言;橙色 R 研究问题;绿色 M 方法; 橙色 R 结果;紫色 a 讨论;红色 D 结论。