Python 时间序列模型 建立河南省COVID-19时间序列模型

建立河南省COVID-19时间序列模型

本站所有文章均为原创,欢迎转载,请注明文章出处https://blog.csdn.net/m0_60750293/article/details/128111290?spm=1001.2014.3001.5501

数据来自第一篇Python 数据爬取

选取2020-01月到2022-11-20的当日新增确诊数据为训练集,2022-11-21到2022-11-28的当日新增确诊数据为测试集,用于验证模型预测效果。主要预测步骤如下:

  • 检验训练集是否为白噪声序列,如果是白噪声序列,则没有研究意义。模型所需的序列必须不是白噪声序列
  • ADF单位根检验。检验训练序列是否平稳,p值大于0.05,接受原假设,序列非平稳。不平稳需要进行差分。
  • 差分。将训练集转化为平稳序列。
  • 检验差分后的训练集是否为白噪声,不是白噪声才能建模
  • 根据自相关图和偏自相关图定模型阶数
  • 模型诊断
  • 模型评估。预测2022-11-21到2022-11-28数据,与真实值比较,看模型效果。
train = alltime_henan['当日新增确诊']['2020-01':'2022-11-20']  #训练集数据
# 白噪声检验(如果是白噪声,即纯随机序列,则没有研究的意义了。),p值远小于0.05,不是白噪声序列
from statsmodels.stats.diagnostic import acorr_ljungbox
print(acorr_ljungbox(train, lags=1))

结果图
在这里插入图片描述

#ADF单位根检验,检验序列是否平稳,p值大于0.05,接受原假设,序列非平稳
from arch.unitroot import ADF

ADF(train).summary()

结果图
在这里插入图片描述

train.head()

结果图
在这里插入图片描述

# 差分运算,将非平稳序列转化为平稳序列
diff = train.diff(1).dropna()
diff.head()

结果图
在这里插入图片描述

#检验差分后的序列是否平稳,p值小于0.05,是平稳序列
from arch.unitroot import ADF
ADF(diff).summary()

结果图
在这里插入图片描述

#差分后的序列白噪声检验,p远小于0.05,不是白噪声,有研究意义
from statsmodels.stats.diagnostic import acorr_ljungbox
print(acorr_ljungbox(diff, lags=1)) 

结果图
在这里插入图片描述

#根据自相关图和偏自相关图,进行模型定阶
from statsmodels.graphics.tsaplots import*

axe1 = plt.subplot(121)
axe2 = plt.subplot(122)
plot1 = plot_acf(train,lags = 30,ax = axe1)
plot2 = plot_pacf(train,lags = 30,ax = axe2)

结果图
在这里插入图片描述

#ARIMA模型
from statsmodels.tsa import arima_model

model = arima_model.ARIMA(train,order = (4,1,3)).fit() #AIC,BIC最小
model.summary()

结果图
在这里插入图片描述
在这里插入图片描述
自相关图在第3个点之后出现拖尾现象,偏自相关图在第2个点之后出现截尾现象,之后的点都在0附近摆动,所以AR的阶数可以设置为3,4,5,MA的阶数可以设置为2,3,4,通过结果给出的AIC和BIC值判断,AIC和BIC越小越好,通过反复调试,确定模型为ARIMA(4,1,3)。

# 模型诊断,看模型的系数。confit()函数计算模型中系数的置信区间。
#在5%的置信水平下,系数绝大部分都不包含0,说明通过了显著性检验。
model.conf_int()

结果图
在这里插入图片描述

#模型评估,预测2022-11-21到2022-11-28当日新增确诊人数
forecast = model.forecast(8)[0] #预测值
forecast

结果图
在这里插入图片描述

real = alltime_henan['当日新增确诊']['2022-11-21':'2022-11-28'] #真实值
real

结果图
在这里插入图片描述

  • 模型预测的效果不是理想,主要有两点原因:
    (1)模型的阶数是通过自相关图和偏自相关图定的,可能没有达到最优模型,存在人为主观性。
    (2)有很多不确定性因素影响疫情的发展,导致模型预测效果不太好。
  • 模型改进。可以建立SIR模型,SIR模型将人群分为三类,分别是:易感者(Susceptible)、感染者(Infectious)和恢复者(Recovered),这是最经典的传染病模型之一,主要用来预测疫情发生后不同时刻的未感染人数、感染人数和康复人数。

码字不易,切记白嫖,记得点赞加关注再走!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值