利用ARIMA模型对时间序列进行分析的经典案例(详细代码)

本文详述了使用ARIMA模型对时间序列数据进行分析的过程,包括差分次数d的确定、ARIMA参数p、q的选择以及模型检验。通过实例代码展示了完整的分析步骤,包括ACF和PACF图的绘制、模型选择、残差检验及预测。作者针对读者疑问进行了多次更新,强调对于季节性时序需参考其他资源。
摘要由CSDN通过智能技术生成

因为之前在学数据分析课程的时候老师讲到时间序列这里,但只是简单的对这个经典的时间序列案例介绍了一下,并没有涉及对差分次数d的查找、找ARIMA模型的p、q值和模型检验 这三个步骤
后来我搜寻了整个网络,终于结合各个文章的解释,对代码进行了重新的梳理,下面就是详细的整个代码过程(如果问题,欢迎提出来指正!):

--------------------------------------------------我是修正线---------------------------------------------------
2021.11.24 第三次更新
大家对本文的疑问在👉最新一期时序的博客 👈中有提到相关解决方法,欢迎大家前去围观🤝。
--------------------------------------------------我是修正线---------------------------------------------------
--------------------------------------------------我是修正线---------------------------------------------------
2021.06.01再次更新

鉴于最近各位朋友提出的疑问(也感谢大家的提问 掌柜也学到很多😁),这里特再次更新🆑!!!

如果你遇到的时序是季节/周期性的时序,那么请移步👉最新博客!进行参考
如果你遇到的时序是季节/周期性的时序,那么请移步👉最新博客!进行参考
如果你遇到的时序是季节/周期性的时序,那么请移步👉最新博客!进行参考

重要事情说三遍😂,谢谢!

PS:本博客搭配👉这篇👈一起服用效果更佳!!!
--------------------------------------------------我是修正线---------------------------------------------------
--------------------------------------------------我是修正线---------------------------------------------------
10.20 更新
感谢网友提出的问题,进行了一个修正,当时的代码少了最后用ARIMA对原始序列的一个预测步骤。这里补充一下:

from statsmodels.tsa.arima_model import ARIMA

#感谢网友的指正,这里直接用data即可,之前想太多了😅

#还原到原始序列(不用这个!!!❌)
#ts_restored = pd.Series([data[0]], index=[data.index[0]]) .append(data1).cumsum()

#第六步:使用ARIMA模型进行预测
model = ARIMA(data,order=(7,0,0)) #导入ARIMA模型
result = model.fit(disp=-1)
#print(result.summary())
result.conf_int()#模型诊断,可以发现所有的系数置信区间都不为0;即在5%的置信水平下,所有的系数都是显著的,即模型通过检验。

#最后画出时序图
fig, ax = plt.subplots(figsize=(12, 10))
ax = data.loc['1901':].plot(ax=ax)   #注意起点是从1901开始
fig = result.plot_predict(5, 100)  #因为前面是90个数,所以加上预测的10个就是100
plt.show()   #数据预测并画图

#预测原始序列的未来10年数据
pred = result.predict(start = 90, end = 99, dynamic = True)
pred

--------------------------------------------------我是修正线---------------------------------------------------
(完整的代码如下:)

# -*- coding: utf-8 -*-
# 用 ARIMA 进行时间序列预测
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import statsmodels.api as sm
from statsmodels.tsa.arima_model import ARMA
from statsmodels.tsa.arima_model import ARIMA
from statsmodels.graphics.tsaplots import acf,pacf,plot_acf,plot_pacf
from statsmodels.graphics.api import qqplot

# 1.创建数据
data = [5922, 5308, 5546, 5975, 2704, 1767, 4111, 5542, 4726, 5866, 6183, 3199, 1471, 1325, 6618, 6644, 5337, 7064, 2912, 1456, 4705, 4579, 4990, 4331</
  • 101
    点赞
  • 996
    收藏
    觉得还不错? 一键收藏
  • 109
    评论
评论 109
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值