上海新冠疫情预测与趋势分析

31171c1a4695c198a3ffeb3e9dc1827e.png

 

项目背景

简述

上海市于2022年3月爆发了严重的2019冠状病毒病(COVID-19)聚集性疫情,由奥密克戎变异株引发。该疫情导致了上海市范围内的大规模封锁和防控措施的实施,对社会经济和居民生活造成了巨大影响。此次疫情在全国范围内也引起了广泛关注,并对其他地区产生了外溢影响。为了更好地应对类似的疫情,需要建立预测模型来预测短期内上海市新冠确诊数和无症状感染数的趋势,以帮助决策者制定科学有效的防控策略和资源调配方案。

目标

收益

  • 预警和响应能力提升:准确的新冠疫情预测可以帮助政府和卫生部门提前预警,并及时采取措施应对疫情的发展,最大限度地减少疫情对公众的影响。

  • 资源优化:通过预测模型,可以更好地规划和分配防控资源,确保资源的合理利用和高效配置,提高抗疫工作的效率。

  • 公众参与和安全感:向公众提供疫情预测结果和趋势分析,增加公众对疫情的了解和参与度,同时提供科学依据,增强公众对防控措施的接受度

评估指标

项目节奏

项目准备阶段(约1-2周)

数据探索和预处理阶段(约2-3周)

数据挖掘和特征工程(约1-2周)

模型选择和开发阶段(约2-4周)

模型评估和优化阶段(约2-4周)

部署和上线阶段(约1-2周)

复盘总结(约1周)

项目难点&挑战

从JHU CSSE获取数据并自动更新,同时融合上海卫健委数据的爬虫和数据清洗

数据源的获取和更新:JHU CSSE网站上的数据可能以不同的格式和结构进行发布,数据需要进行定期更新,以保持与最新的疫情情况一致。

数据清洗和整合:从不同数据源获取的数据可能存在格式差异、缺失值、异常值等问题。因此,在将数据与上海卫健委的数据进行融合之前,需要进行数据清洗和预处理,包括处理缺失值、处理异常值、统一日期格式等。

爬虫的稳定性和可靠性:由于数据源的更新频率和网站的变化,爬虫程序需要具备稳定性和可靠性,能够适应网站结构的变化,并能够在长期运行的情况下持续获取数据。

时间序列的缺失值填充处理

14243a04a447b0ab8141043f10ad425c.png

时间序列数据中的时间特征加工难度大,提取周期因子比较困难

我们尝试加工并构造下列时间特征

  1. 季节性特征:提取每周的星期几作为季节性特征。例如,将日期转换为星期一、星期二等,以便模型能够捕捉到每周不同天的确诊数变化。

  2. 日期和时间特征:提取年份、月份、季度等特征。这些特征可以帮助模型捕捉到年度、月度或季度的趋势和周期性。

  3. 时间差特征:计算当前时间点与前一个时间点之间的时间差。例如,计算相邻两天之间的天数差或相邻两周之间的周数差。这些特征可以反映出新冠确诊数的增长速度或变化趋势。

  4. 滞后特征:引入过去几天或几周的确诊数作为滞后特征。例如,引入过去3天或过去7天的确诊数作为特征,以便模型能够考虑到过去一段时间内的确诊情况对未来的影响。

  5. 移动平均特征:计算过去一周或一月的确诊数的平均值作为特征。这可以平滑数据,减少噪声的影响,并帮助模型捕捉到长期趋势。

时间序列训练集测试集分割

img

在时间序列的数据之中,进行train、val、test划分时需要注意的问题是:

准确的说,是选取的val数据的时间节点不能与train中数据时间节点有任何交集。否则,你会发现训练时,val的loss会与train的loss几乎一样,即失去其作用,会引入未来数据。例如,告诉你5日到10日的收盘价,让你预测第11日收盘价(验证阶段);同时,给你11日到16日的收盘价,让你记忆第17日的收盘价(训练阶段)。这11日的价格你记忆过,在验证时无法做到客观。

所以在做时序预测时,一定要注意数据的先后次序,不可以随便选一部分数据(随机抽样)去train,另一部分val等等,所以k-fold显然不适用了,可以改为下面这2种方法

  1. 嵌套交叉验证

包含一个用于估计误差的外循环,一个用于调参的内循环。

训练集被分割成一个训练子集和一个验证集,模型在训练子集上训练,然后选择在验证集上能够使误差最小化的参数。但是,现在我们增加了一个外循环,它将数据集分割成多个不同的训练集和测试集,为了计算模型误差的鲁棒估计,对每一次分割的误差求平均值。

img

  1. 定量移动交叉验证

一般适用于大型数据集,不断舍弃前面数据,使量级在window移动时是统一的。

img

时间序列数据中存在非线性关系、非平稳性转化

image-20230626181137410

单、多变量模型基于4种评估指标的模型比对和筛选

 maermsemaper2
Naive mean12100.09049025061.9905688.675757e+11-0.171814
Yesterdays value4953.73451313558.7365828.233628e+110.657022
SES4724.02557610724.4554298.633496e+110.785425
HWES4724.02557610724.4554298.633496e+110.785425
AR8407.73933919448.5376338.243584e+110.294330
MA8757.27954418672.7470569.969011e+110.349505
ARMA13627.56381427839.1878001.103581e+11-0.445909
ARIMA5185.76556513534.8523858.673517e+110.658229
AutoARIMA (2, 2, 3)16162.70498132259.5983173.576454e+11-0.941537
SARIMAX5051.96683713589.4600897.234183e+110.655466
AutoSARIMAX (2, 2, 2)5404.92457311595.4206369.036212e+110.749158
BayesianRidge6181.00132811662.4295646.763388e+110.746250
LassoLars6736.91260112594.0201306.872141e+110.704092
ARDRegression5909.16812811547.6950527.459070e+110.751218
DecisionTree6439.94415012783.1665263.905066e+110.695137
Randomforest4460.33703610032.2535534.017273e+110.812231
AdaBoost6650.06276614746.7180256.760435e+110.594287
XGBoost6877.17612212745.4760821.326902e+120.696932
Lightgbm6959.79124114497.0709289.820705e+110.607908
SVM RBF12270.45381925743.2125235.596598e+11-0.236384
KNN6319.91150412861.1806421.298525e+110.691405
Tensorflow simple LSTM6334.21449711791.2318203.526280e+110.740614

72a8c0e169c96914f72808ba168c5473.png

未来动作

  1. 数据质量改进:优化数据采集和清洗过程,减少新冠确诊数据的缺失和异常,提高数据质量。改进数据收集方法,加强数据验证和清洗流程,减少数据质量问题对预测模型的影响。

  2. 特征扩展和更新:引入更多相关特征、衍生特征和外部数据,提高预测模型的表达能力和准确度。整合与新冠疫情相关的外部数据,如人口流动指数、气象数据等,构建更丰富的特征集。

  3. 特征选择和筛选:通过选择与新冠确诊数目标变量具有强相关性的特征,简化模型输入,减少冗余和噪声特征的影响。使用特征选择方法,如相关系数分析或基于模型的特征选择,识别并保留与确诊数最相关的特征。

  4. 模型集成和优化:尝试不同的模型集成方法,如集成多个预测模型、堆叠模型等,以提高预测性能和稳定性。训练和集成多个预测模型,如ARIMA、长短期记忆网络(LSTM)等,通过加权平均或投票机制获得最终预测结果。

  5. 实时预测和决策:建立实时预测和决策系统,及时更新模型预测结果,支持实时风险评估和决策制定。开发实时监测系统,定期更新预测模型,提供实时新冠确诊数的风险评估和决策支持。

  6. 模型解释和可解释性提升:通过解释性技术和方法,提高模型的可解释性,增加业务用户对预测结果的理解和信任。应用解释性技术,如SHAP值、特征重要性分析等,解释模型的预测过程和关键影响因素,使预测结果更具可解释性。