使用ARIMA模型对平稳的时间序列数据建立预测模型
创作时间:
作者:
@小白创作中心
使用ARIMA模型对平稳的时间序列数据建立预测模型
引用
CSDN
1.
https://blog.csdn.net/2301_81121233/article/details/144167565
ARIMA模型(自回归移动平均模型)是一种用于对平稳时间序列数据进行预测的经典模型。它通过将时间序列数据转化为平稳序列,并利用过去的观测值来预测未来的值。本文将详细介绍ARIMA模型的原理、步骤和具体实现方法,并提供完整的Python代码示例。
ARIMA
(AutoRegressive Integrated Moving Average)模型是时间序列预测中常用的模型之一,特别适用于平稳的时间序列数据。ARIMA模型结合了自回归(AR),差分(I)和移动平均(MA)三个部分。
为了使用ARIMA模型,通常需要确保时间序列是平稳的(即其统计属性如均值和方差不随时间变化)。如果时间序列不是平稳的,通常需要通过差分或其他方法使其平稳。
###步骤
- 检查时间序列的稳定性:可以使用ADF检验。
- 差分处理(如果需要):如果时间序列不稳定,可以使用差分使其平稳。
- 确定ARIMA模型的参数:通常需要通过ACF(自相关函数)和PACF(偏自相关函数)图来确定
p
和q
参数。 - 训练ARIMA模型。
- 预测未来值。
###安装依赖库
如果你还没有安装statsmodels
和pandas
,可以使用以下命令安装:
pip install statsmodels pandas matplotlib
###示例代码
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from statsmodels.tsa.stattools import adfuller
from statsmodels.graphics.tsaplots import plot_acf, plot_pacf
from statsmodels.tsa.arima.model import ARIMA
# 生成一个示例时间序列数据(假设已经是平稳的)
np.random.seed(42)
date_rng = pd.date_range(start='2022-01-01', end='2022-12-31', freq='D')
data = np.random.randint(0, 100, size=(len(date_rng),))
# 构造DataFrame
df = pd.DataFrame(date_rng, columns=['date'])
df['value'] = data
df.set_index('date', inplace=True)
# 1. 检查时间序列的稳定性
result = adfuller(df['value'])
print('Augmented Dickey-Fuller Test:')
print(f'ADF Statistic: {result[0]}')
print(f'p-value: {result[1]}')
if result[1] <= 0.05:
print("时间序列是稳定的")
else:
print("时间序列不是稳定的")
# 2. 差分处理(如果时间序列不稳定,可以使用一阶差分)
df['value_diff'] = df['value'].diff().dropna()
# 3. 绘制ACF和PACF图,帮助确定ARIMA模型的参数p和q
fig, axes = plt.subplots(1, 2, figsize=(16, 4))
plot_acf(df['value_diff'].dropna(), lags=20, ax=axes[0])
plot_pacf(df['value_diff'].dropna(), lags=20, ax=axes[1])
plt.show()
# 4. 使用ARIMA模型进行训练
# 假设从ACF和PACF图中观察到p=5,d=1,q=5(可以根据实际情况调整)
p, d, q = 5, 1, 5
model = ARIMA(df['value'], order=(p, d, q))
model_fit = model.fit()
# 5. 输出模型摘要
print(model_fit.summary())
# 6. 预测未来10天的值
forecast = model_fit.forecast(steps=10)
print("未来10天的预测值:", forecast)
# 7. 绘制原始数据和预测数据
plt.figure(figsize=(12, 6))
plt.plot(df.index, df['value'], label='Original')
plt.plot(pd.date_range(start=df.index[-1], periods=10, freq='D'), forecast, label='Forecast', color='red')
plt.title('Original Time Series and Forecasted Values')
plt.xlabel('Date')
plt.ylabel('Value')
plt.legend()
plt.show()
###解释
- 检查时间序列的稳定性:我们使用ADF检验来检查时间序列是否稳定。如果时间序列不稳定,可以通过差分使其平稳。
- ACF和PACF图:通过绘制自相关函数(ACF)和偏自相关函数(PACF)图,可以帮助确定ARIMA模型的参数
p
和q
。 - ARIMA模型训练:我们使用
statsmodels
中的ARIMA
模型进行训练。参数order
是一个元组,表示(p,d,q)
:
p
:自回归部分的滞后阶数。d
:差分次数(用于使时间序列平稳)。q
:移动平均部分的滞后阶数。
- 预测未来值:使用
forecast
方法预测未来几天的值。
###输出示例
Augmented Dickey-Fuller Test:
ADF Statistic: -5.534209537931697
p-value: 0.0002299758493655026
时间序列是稳定的
未来10天的预测值:[60.61953846 60.62873239 60.63792632 60.64712025 60.65631418
60.66550811 60.67470204 60.68389597 60.6930899 60.70228383]
###总结
- 检查时间序列的稳定性:使用ADF检验确保时间序列是平稳的。
- 差分处理:如果时间序列不稳定,使用差分使其平稳。
- ACF和PACF图:帮助确定ARIMA模型的参数
p
和q
。 - 训练ARIMA模型:使用
statsmodels
中的ARIMA
模型进行训练。 - 预测未来值:使用
forecast
方法预测未来几天的值。
通过这些步骤,你可以使用ARIMA模型对平稳的时间序列数据建立预测模型,并进行未来值的预测。
ARIMA模型(自回归移动平均模型)是一种用于对平稳时间序列数据进行预测的经典模型。它通过将时间序列数据转化为平稳序列,并利用过去的观测值来预测未来的值。
ARIMA模型由三个参数组成,分别是AR(自回归)、I(差分整合)和MA(移动平均)。
步骤如下:
- 检查数据的平稳性:使用统计检验(例如ADF检验)来确定数据是否是平稳的。如果数据不平稳,可以进行差分操作,直到数据变得平稳。
- 确定模型的阶数:使用自相关图(ACF)和偏自相关图(PACF)来确定AR和MA的阶数。
- ACF图显示了一个观察值与其滞后版本之间的相关性,可以用来确定MA的阶数。
- PACF图显示了一个观察值与其滞后版本之间的相关性,排除了与中间滞后版本之间的相关性,可以用来确定AR的阶数。
- 估计模型参数:使用最大似然估计(MLE)或最小二乘法(OLS)估计模型的参数。
- 模型检验:使用残差分析来检验模型的拟合优度,检查残差是否是白噪声序列。
- 模型预测:使用已训练的模型进行未来值的预测。
可以使用各种统计软件或编程语言(如Python中的statsmodels库)来实施ARIMA模型。
总结起来,ARIMA模型的建立包括数据平稳性检验、模型阶数的确定、参数估计和模型检验以及预测。通过这一系列步骤,可以建立一个预测准确的ARIMA模型。
热门推荐
液溴与液氯在有机化学反应中的差异
如何选择学习粤语的书籍
探寻襄阳:九大特色美食带你领略古城风味
新版国家医保药品目录公布,张江企业多款药物获纳入
上海共青森林公园都市森林百花展活动详情2025
新疆和田:一座依偎在昆仑山下的璀璨明珠
从源头抑制辐射超标:PCB设计中的EMC优化指南
科学突破!宁夏医科大学重大发现:揭秘炙甘草如何神奇治愈心律失常!
通俗易懂的项目管理案例有哪些
微波炉加热的时候为啥要转呢?
湖南2个!教育部公布全国义务教育优质均衡发展县(市、区)名单
法语音乐剧《巴黎圣母院》:世界文学名著的现代演绎
乳胶鞋垫:提升舒适度与性能的终极指南
农村宅基地的变动对农民有何影响?
气体灭火最容易忽视的参数你知道吗?
相隔四个世纪,两幅《清明上河图》有何不同?
宝宝安全座椅选购终极指南:从参数到避坑,守护孩子出行安全
志愿军:朝鲜战场上的传奇征服者
ALPD激光厅和IMAX哪个好?
国家指南引领健康减肥:全方位策略,塑造完美体态
韶关翁源加快培育新质生产力 坚持走好“科技兴兰”之路
汽车刹车系统故障全解析:常见问题、解决方法及安全维护指南
去毛有效的方法是甚麼
全屋清洁买什么拖把最省力?拖把选购攻略来了
作品上传到网上后如何保护图片版权
如何实现项目实施目标?最有效的策略和方法
RNA是什么?概念、结构、不同功能、分类以及与DNA的区别
司法温情解纷争 调解弥合手足情|张强法庭成功化解一起涉房产继承纠纷案
各大船公司优劣势大盘点:从非洲到欧美航线全覆盖
牙冠:定义、类型、适用场景及制作过程全解析