数学建模实战:基于SIR模型的COVID-19传播预测与阶段划分
1. SIR模型基础与疫情预测原理我第一次接触SIR模型是在研究生时期的数学建模课上当时老师用流感数据演示这个诞生于18世纪的经典模型如何预测疫情走势。没想到多年后面对COVID-19疫情这个老古董模型再次展现了它的价值。SIR模型本质上是个人口分类器把全体人群划分为三类SSusceptible易感人群像未接种疫苗的普通人IInfected感染者包括潜伏期和发病期患者RRecovered康复或死亡人群相当于退出传播链这三个群体之间的转化关系可以用厨房做饭来类比S像是生食材I像是正在烹饪的菜品R就是出锅的成品。传染过程就像食材下锅烹饪而康复或死亡相当于菜品完成烹饪。这个动态过程用微分方程组描述就是# 经典SIR模型微分方程 def sir_model(y, t, beta, gamma): S, I, R y dSdt -beta * S * I # 易感者减少速度 dIdt beta * S * I - gamma * I # 感染者变化率 dRdt gamma * I # 康复者增长速率 return [dSdt, dIdt, dRdt]其中接触率β和康复率γ是两个关键参数。β代表一个感染者每天能传染多少易感者就像厨师炒菜的速度γ是康复速率的倒数相当于每道菜需要的烹饪时间。这两个参数决定了疫情发展的基本形态——当基本再生数R0β/γ1时疫情会扩散R01时疫情逐渐消退。2. COVID-19数据处理的实战技巧拿到卫健委公布的疫情数据时我发现原始数据就像刚采摘的蔬菜——需要仔细清洗处理才能下锅。以2020年武汉疫情数据为例需要特别注意三个问题数据校正初期存在检测能力不足导致的漏报就像用筛子过滤时漏掉的颗粒。我采用7日移动平均处理每日新增数据df[confirmed_smooth] df[confirmed].rolling(window7).mean()人口基数归一化不同地区人口差异就像不同大小的锅必须统一换算为每百万人口感染数才可比较。这里有个坑——要使用常住人口而非户籍人口数据。阶段划分标记根据防控政策变化时间点如封城、方舱启用划分阶段就像根据火候调整烹饪方式。我整理的关键时间节点包括阶段12019/12/8-2020/1/22自由传播阶段22020/1/23-2020/2/2严格封控阶段32020/2/3-2020/3/18全面救治处理数据时最头疼的是康复数据的不确定性。早期缺乏准确康复统计我参考CT影像转阴率和平均住院时间进行估算这步处理会显著影响模型后期的预测精度。3. 参数分段优化的核心方法经典SIR模型直接套用COVID-19数据就像用同一火候煮所有食材——必定夹生或过熟。我的解决方案是将关键参数改为分段函数3.1 动态接触率β(t)这个参数反映防控力度变化用分段线性函数描述def beta_func(t, t1, t2, beta0, beta1, beta2): if t t1: # 自由传播期 return beta0 elif t t2: # 防控加强期 return beta0 - (beta0-beta1)*(t-t1)/(t2-t1) else: # 严格管控期 return beta1 - (beta1-beta2)*(t-t2)/(len(t)-t2)拟合时发现一个有趣现象武汉封城后β值并非立即下降而是存在3-5天的滞后效应这正好对应病毒潜伏期。后来在论文中我们将其建模为指数衰减过程。3.2 时变康复率γ(t)这个参数随医疗资源投入而变化。采用S型函数刻画方舱医院启用后的效果def gamma_func(t, t0, gamma0, gamma1, k): return gamma0 (gamma1-gamma0)/(1np.exp(-k*(t-t0)))实际拟合中k值决定曲线陡峭程度对应医疗资源投入速度。通过残差分析发现当k0.15时模型最优这意味着医疗资源扩容需要约2周达到最大效果。4. 模型验证与阶段划分判断模型好坏不能只看曲线拟合程度——我曾犯过这个错误直到导师指出残差分析的重要性。现在我的验证流程包括三个步骤标准化残差检验计算每日残差后标准化处理residuals (actual - predicted)/np.std(actual)健康模型的标准残差应在[-2,2]区间随机分布。COVID-19模型在阶段转换点常出现超出范围的残差这恰恰揭示了政策效果的滞后性。阶段转折点检测使用累积和控制图CUSUM自动识别参数突变点from statsmodels.tsa.statespace.tools import cusum_squares cusum cusum_squares(residuals)这个方法成功检测出武汉封城后第6天出现的实际效果转折点。后验预测检验用前70%数据训练模型预测后30%数据。好模型的预测区间应包含80%以上的实际值。我们改进的SIR模型在武汉数据上达到85.6%的覆盖率显著优于传统模型。通过这三个检验最终将武汉疫情划分为四个典型阶段指数增长期R0≈3.2防控过渡期R0波动在1.5-2.8稳定下降期R0≈0.7零星散发期R0≈0.3这种划分方式后来被证明与病毒基因测序显示的变异时间点高度吻合为防控策略调整提供了量化依据。