公司动态
数学建模实战:基于贝叶斯与SEIR模型的污水流行病学疫情预警
1. 项目概述当数学建模遇上公共卫生危机去年参与“SPSSPRO杯数学建模”的经历现在回想起来依然觉得是一次非常硬核的实战。我们团队当时选的是C题题目是“污水流行病学原理在新冠疫情防控方面的作用”。这个题目一出来我们几个队员都眼前一亮它完美地结合了当时最紧迫的公共卫生问题和一个相对前沿的交叉学科方法。最终我们拿到了二等奖这个成绩算是对我们那几天没日没夜分析、建模、写作的一种肯定。今天我想抛开那些正式的论文格式以一个参赛者和数据分析从业者的角度和大家深入聊聊这个课题背后的门道——污水到底怎么就成了我们洞察疫情的一双“眼睛”而我们又是如何用数学工具把这双“眼睛”擦亮的。简单来说污水流行病学就是通过分析城市污水系统中病毒残留的遗传物质比如新冠病毒的RNA来反推社区层面的感染情况。这听起来有点像环境侦探。它的核心价值在于提供了一个独立于临床检测的、近乎实时的、成本相对较低的群体监测手段。尤其在疫情发展迅速、临床检测资源紧张或存在大量无症状感染者时污水数据就像一个早期预警系统能比医院报告更早地捕捉到社区传播的苗头。我们建模的核心任务就是如何从污水中测出的“病毒载量”这个模糊信号里尽可能准确、定量地还原出地面上真实的“感染人数”或“疫情趋势”并评估这种监测手段如何优化现有的防控策略比如更精准地划定风险区域、更科学地调配检测资源。2. 核心思路与模型框架设计面对这个题目首要任务是建立一个逻辑自洽的模型框架把“污水病毒浓度”与“社区感染情况”这两个变量科学地联系起来。这绝不是简单的线性对应中间隔着无数“黑箱”。我们的整体思路遵循一个“溯源-关联-预测-优化”的链条。2.1 问题拆解与核心挑战我们把题目分解为几个关键子问题溯源模型从污水处理厂采样点测得的病毒浓度如何反推至上游某个特定社区或人口聚集区这涉及到污水管网的水流模型、人口分布、病毒在污水中的衰减等因素。关联模型建立社区排放的病毒总量与该社区内活跃感染者数量之间的数学关系。这里最大的不确定性在于一个感染者通过粪便排出的病毒量是动态变化的取决于病程阶段、个体差异等。预测与预警模型利用连续的污水监测数据预测未来短期内的疫情发展趋势并设定预警阈值。资源优化模型基于污水监测提供的空间风险信息如何优化临床核酸检测点布局、筛查频率和隔离管控范围使防控效率最大化。其中最大的挑战就是数据的不确定性和模型的参数标定。我们不可能知道每个感染者的具体排毒量污水采样也存在时空变异。因此我们的模型必须足够稳健能够处理这种噪声并且要明确地指出结论的不确定性范围。2.2 我们的模型选型与融合策略我们没有采用单一的“银弹”模型而是构建了一个多模型融合的框架让不同模型相互校验、补充。首先对于核心的关联问题病毒载量→感染人数我们采用了贝叶斯统计模型作为基础。这是最关键的一步。贝叶斯方法的优势在于它允许我们将先验知识例如文献中报道的感染者人均日均排毒量范围、病程曲线形状以概率分布的形式引入模型然后利用实际观测到的污水数据来更新这些认知得到后验分布。这样模型输出的不是一个确切的数字而是一个带有置信区间的估计范围比如“该社区可能有95%的概率存在50-150名活跃感染者”。这比给出一个孤零零的点估计要科学得多也更符合实际情况。其次对于疫情趋势预测我们在贝叶斯估计得到的感染人数时间序列基础上引入了改进的SEIR传染病动力学模型。传统的SEIR模型参数如接触率、传染率通常难以直接获取。而污水数据为我们提供了一个校准的“锚点”。我们可以用贝叶斯模型反推的每日新增感染者估计值来动态校正SEIR模型中的关键参数从而让SEIR模型不仅能描述过去还能对未来1-2周的发展做出更可靠的预测。这个“数据同化”的过程大大提升了预测的实用性。最后对于资源优化问题我们将其构建为一个多目标规划问题。目标函数包括最大化检测出的感染者数量、最小化居民前往检测点的平均距离或时间成本、最小化总防控成本检测、人力、管控。约束条件包括检测点数量上限、每个检测点的日最大检测能力、基于污水风险划分的不同区域必须覆盖的检测点数量等。污水监测数据在这里的核心作用是为不同社区分配不同的“风险权重”高风险区域在目标函数中占有更高优先级从而引导资源向最需要的地方倾斜。注意在模型融合时要特别注意不同模型输出数据的尺度和不确定性传递。例如将贝叶斯模型输出的带置信区间的感染人数作为SEIR模型的输入时不能只取中位数最好进行多次蒙特卡洛模拟将不确定性也传递到预测结果中这样得到的预测区间才更可靠。3. 关键模型细节与参数处理实战纸上谈兵容易真正让模型转起来细节决定成败。这里我分享几个我们当时花了大量精力处理的“魔鬼细节”。3.1 贝叶斯溯源模型的构建与采样我们的贝叶斯模型可以简化为以下核心公式的求解P(θ | D) ∝ P(D | θ) * P(θ)其中θ是我们关心的参数主要是**社区内的日新增活跃感染者数I和人均日排毒量q**的分布参数。D是观测数据即污水处理厂每日测得的病毒RNA浓度C单位如 copies/L。P(θ)是先验分布我们根据已有研究设定。例如q 假设为一个对数正态分布均值取自文献并给予一个较大的方差以表示不确定性。P(D | θ)是似然函数连接参数与观测值。我们建立的关系是C_measured (I * q * f) / (F * η) εI: 估计的活跃感染者数。q: 人均日排毒量随机变量。f: 感染者粪便进入下水道的比例我们假设了一个较高的值如0.9。F: 污水处理厂日均处理水量可从市政资料获取。η: 病毒在污水输送和处理过程中的衰减率一个需要校准的关键参数受温度、停留时间影响。ε: 观测误差假设服从正态分布。求解这个后验分布P(θ | D)需要用到马尔可夫链蒙特卡洛MCMC采样方法。我们使用了PyMC3这个Python库来实现。实操中最大的坑是模型的收敛性。MCMC采样链如果没混合好结果就不可信。我们的调试经验先验分布别太“任性”虽然贝叶斯允许设置先验但如果先验与数据冲突太严重模型会难以收敛或给出荒谬的结果。我们采用“弱信息先验”即设定一个合理的范围但方差较大让数据主导。多链运行严格诊断一定要运行多条通常≥4条独立的MCMC链并使用Gelman-Rubin诊断值R-hat。只有当所有参数的R-hat都无限接近于1通常要求1.01才能认为采样收敛。我们经常因为R-hat过大而不得不调整模型结构或重新参数化。追踪图Trace Plot是好朋友直观查看每条链的采样轨迹是否像“毛茸茸的毛毛虫”一样稳定在某个值附近波动并且多条链高度重叠。如果轨迹像“随机游走”或链条间分离就是没收敛。参数η的校准病毒衰减率η是个关键且难搞的参数。我们采用了分阶段校准的策略。先利用疫情早期临床数据相对完整的时段将污水数据与报告病例数进行对比反推出一个初始的η值范围作为先验分布。在模型运行中再允许其在一定范围内波动。3.2 数据同化让SEIR模型“学会”看污水数据传统的SEIR模型方程大家都很熟悉。我们的创新点在于不再把模型参数如基本再生数R0当作固定值而是将其视为随时间变化的变量β(t)有效接触率并通过污水数据来动态估计它。具体步骤从贝叶斯模型得到第t天的新增感染者估计值ΔI_estimated(t)。在SEIR模型中新增感染者理论上等于β(t) * S(t) * I(t) / N简化形式。因此我们可以倒推出β(t) ΔI_estimated(t) * N / (S(t) * I(t))。这里S(t),I(t)是SEIR模型自身模拟的易感者和感染者数量。但直接这样计算会受噪声影响很大。我们采用了一个滑动窗口岭回归的方法来估计β(t)的时间序列。即用一个时间窗口如7天内的ΔI_estimated和模型状态变量通过回归拟合出一个相对平滑的β(t)同时加入正则化防止过拟合。用估计出的β(t)序列驱动SEIR模型进行未来预测。同时我们可以分析β(t)的变化点这可能对应着防控政策收紧或放松的实际时间点为评估政策效果提供量化依据。这个方法相当于给SEIR模型装了一个“污水数据导航”让它能及时修正自己的运行轨迹预测结果比单纯用历史病例数据拟合要灵敏得多尤其是在病例报告滞后或低估的时候。3.3 资源优化模型的建模与求解我们将检测点布局问题建模为一个p-中位问题的变体并结合了覆盖模型的思想。模型设定决策变量X_j 1表示在候选位置j设立检测点否则为0。Y_ij表示社区i的居民是否被分配到检测点j0或1。目标函数最小化Z α * Σ_i Σ_j (Pop_i * Risk_i * d_ij * Y_ij) β * Σ_j X_j第一项是加权总距离成本。Pop_i是社区i人口Risk_i是该社区由污水模型计算出的风险系数如病毒浓度归一化值d_ij是距离。这意味着高风险社区的距离成本被放大优化时会优先照顾。第二项是设立固定成本控制检测点总数。约束条件每个社区必须被分配到一个且仅一个检测点Σ_j Y_ij 1, ∀i。只有设立的检测点才能提供服务Y_ij ≤ X_j, ∀i,j。检测点数量限制Σ_j X_j ≤ P_max。检测点容量限制Σ_i (Pop_i * Y_ij) ≤ Cap_j, ∀j。这是一个整数规划问题对于大规模城市网络精确求解如用分支定界法计算量很大。在比赛中我们采用了贪婪算法-局部搜索Greedy Algorithm with Local Search的启发式方法在有限时间内得到一个高质量近似解。求解心得贪婪初始化先不考虑容量只根据加权距离每次选择能最大程度降低总加权距离的候选点直到选满P_max个。局部搜索优化尝试进行“交换”操作将一个已选点与一个未选点交换和“迁移”操作微调社区分配给哪个检测点如果能使目标函数下降就接受。风险系数Risk_i的动态更新这是模型发挥效力的关键。Risk_i不应是静态的。我们设计它每周根据最新的污水监测数据更新一次。优化模型也随之重新运行从而实现检测资源的动态重配置。例如当某个区域污水信号突然增强时该区域的Risk_i增大在下一次优化中系统可能会在该区域附近新增或加强检测点。4. 模拟分析、结果解读与灵敏度测试有了模型我们需要用模拟数据来验证其有效性并解读输出结果的实际意义。4.1 构建模拟场景与基准测试由于没有真实的、带地理信息的新冠污水全流程数据我们根据公开文献参数合成了一个为期90天的模拟城市数据。包括一个拥有10个虚拟社区、一个污水处理厂的城市管网。模拟了疫情在两个社区先后暴发、随后扩散的传播动态。生成了每天每个感染者随机的排毒量符合病程规律。合成了考虑水流混合、衰减后的污水处理厂日病毒浓度数据加入了10%-30%的随机噪声以模拟现实误差。同时生成了“真实”的每日新增临床报告病例数我们故意让其比真实感染数滞后3-5天且只捕获了约70%的有症状感染者。我们用这个数据集运行了整套模型并将模型反推的感染人数与模拟的“真实”感染人数进行对比。核心结果贝叶斯模型成功捕捉到了两次暴发的起始时间点比临床报告提前了5-7天发出强信号。对于感染人数的估计在疫情上升期和平台期我们的95%置信区间能够覆盖真实值在疫情下降期由于排毒者减少和病毒衰减的不确定性估计区间变宽但趋势判断正确。SEIR同化模型对未来7天的疫情趋势预测其均方根误差RMSE比单纯用临床报告数据拟合的SEIR模型降低了约40%。特别是在疫情转折点附近我们的模型预测拐点更及时。资源优化模型在模拟中显示与人口均匀布局检测点相比基于污水风险动态优化的方案在相同检测点数量和检测能力下多发现了约25%的感染者并且高风险社区居民的平均检测距离缩短了35%。4.2 结果的可视化与故事性表达在论文中图表是讲故事的核心。我们精心设计了以下几类图时间序列对比图将污水病毒浓度、模型估计的感染人数带置信区间、临床报告病例数画在同一张图上用不同颜色和填充清晰展示领先滞后关系。空间风险热力图在地图上展示不同社区随时间变化的风险系数Risk_i动态演示疫情“火苗”如何在城市中移动。检测点布局演化图用动画或系列小图展示随着风险变化优化后的检测点位置如何动态调整直观体现资源的“精准投放”。参数敏感性分析雷达图展示模型输出对关键假设如人均排毒量q的先验均值、衰减率η变化的敏感程度。4.3 至关重要的灵敏度分析评委非常看重模型在假设不完美时的稳健性。我们系统性地测试了多个参数人均排毒量q的先验设定我们将先验分布的均值上下调整了50%。结果显示感染人数的绝对估计值变化较大但疫情上升/下降的趋势、暴发的时间点依然被稳健地捕捉到。这说明污水监测在趋势预警上非常可靠在绝对定量上需谨慎解读。病毒衰减率η模拟了夏季高温衰减快和冬季低温衰减慢两种情景。模型在引入季节性调整因子后能有效补偿这种差异但前提是需要对当地污水系统的水温、水力停留时间有基本了解。采样与检测误差我们增加了噪声水平。当噪声超过40%时模型预警的提前量会缩短误报率有所上升。这强调了提高污水采样频率如每日采样而非每周和实验室检测精度的极端重要性。无症状感染者比例我们改变了模拟中无症状感染者的比例。由于无症状感染者同样排毒污水监测几乎不受此比例影响这是其相对于依赖症状报告的临床监测的一个巨大优势。实操心得灵敏度分析报告不能只说“模型对此参数敏感”。更重要的是要给出操作建议。例如我们发现模型对排毒量q的先验很敏感那么结论中就应强调在实际应用中应结合本地小规模临床-污水同步调查来校准q值以提升定量精度。这体现了从建模到应用的闭环思考。5. 模型局限、拓展与参赛反思任何模型都是现实的简化。清晰地认识并阐述模型的局限性是论文深度的重要体现。5.1 我们模型的主要局限性空间分辨率有限我们的模型基于污水处理厂进水口的混合样本只能反推到服务片区sewershed。要定位到更小的街区或建筑群如大学宿舍、养老院需要在上游管网节点布设采样点这需要更精细的水力模型和更多采样资源。无法区分病毒来源污水中的病毒RNA可能来自急性感染者的活病毒也可能来自康复期患者的病毒碎片甚至可能来自被病毒污染的环境。目前的检测方法如RT-qPCR无法区分其传染性。这可能导致对当前传播风险的略微高估。依赖于准确的流量与人口数据模型需要知道污水处理厂的日均流量和服务人口。流量数据通常易得但服务区内的实时人口如通勤带来的日间人口变化是动态的这会给定量反推带来误差。初期成本与技术要求高建立常态化的污水监测系统需要实验室能力、自动化采样设备和分析标准初期投入不低。5.2 可能的未来拓展方向在论文的讨论部分我们提出了几个有价值的拓展点这也能体现团队的思考深度多病原体监测与预警同一套系统可以同时监测流感病毒、诺如病毒、脊髓灰质炎病毒甚至抗生素耐药基因构建“城市健康仪表盘”实现一网多用。结合多源数据融合将污水数据与搜索引擎关注度、社交媒体情绪、移动设备聚集度等大数据进行融合利用机器学习方法如随机森林、梯度提升树构建综合预警指数可能进一步提升预测的准确性和鲁棒性。基因组测序追踪变异株对污水样本进行宏基因组测序可以追踪新冠病毒变异株如Delta Omicron在社区中的相对比例和传播动态为疫苗和药物策略提供情报这比临床测序采样更具人群代表性。经济性评估模型可以建立一个成本-效益分析模型比较污水监测系统投入与因早期预警而避免的医疗支出、经济停滞损失从卫生经济学角度论证其价值。5.3 参赛全流程的反思与建议回顾整个参赛过程从选题到提交有几个关键点决定了最终论文的质量选题与破题要快准狠C题这种交叉学科题目优势在于新颖容易出彩难点在于需要快速学习新领域知识污水流行病学。我们拿到题后第一天上午全部用来阅读核心文献下午就确定了模型框架和技术路线没有在犹豫中浪费时间。编程、写作、建模同步进行不要等模型全部跑完再写论文。我们采用“螺旋式”推进确定一部分模型就实现一部分代码同时撰写这部分的方法和预期结果。这样最后只需填充具体结果和调整表述避免了通宵赶稿的慌乱。重视可视化与表述数学建模比赛评委审阅每篇论文的时间有限。清晰、美观、信息量大的图表能瞬间抓住眼球。同时在摘要和模型假设部分要用简洁、专业的语言把复杂问题讲清楚避免堆砌公式。结果分析要深入不止于表面不要只说“我们的模型预测准确率达到90%”。要分析误差主要来自哪里是上升期还是下降期在什么条件下模型会失效如果给你更理想的数据模型还能怎么改进。这种批判性思维是区分优秀论文的关键。团队协作与版本管理使用Git管理代码和论文LaTeX源文件避免版本冲突。明确分工但每天至少集中讨论两次同步进度及时调整方向。这次比赛让我深刻体会到数学建模不是炫技而是用严谨的数学工具解决真实世界问题的思维训练。污水流行病学在疫情防控中的应用正是这种交叉学科思维威力的绝佳例证。它告诉我们解决问题的线索有时藏在最意想不到的地方而数据分析者的任务就是打造合适的工具去解读这些隐藏的信号。