使用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模型。
热门推荐
6部经典二战战争片,每一部都是影史瑰宝!
家常菜大赏:16道精选做法
蛇年春晚有救了!四次联排确定老牌喜剧人回归,没有赵本山照样行
咖喱鱼丸饭的美味制作方法
咖喱鱼丸饭的详细制作方法
适时四驱自驾游的灵活便捷 分时四驱越野性能大比拼
适时四驱的优缺点分析:它为何被贴上“无用”的标签?
全时四驱系统如何?这种驱动系统有哪些优缺点?
什么是分时四驱?详解这一汽车驱动系统的原理与使用场景
四驱还分真假?家用 SUV 有没有必要上四驱
如何正确服用厄贝沙坦片?医生有话说
京东互联网医院专家建议:如何通过生活方式调整优化厄贝沙坦片疗效
卫生间风水布局全攻略:从基本原则到现代应用
跟着殷桃练瑜伽,冻龄不是梦!
腿部麻木应摄入哪种维生素
秦岭自驾游攻略:必去景点+详细路线规划(附秋季出游建议)
太白山自驾游用车全攻略:畅行山间的实用技巧
古代宫女12岁前进宫,25岁后出宫,她们出宫后如何生活呢?
赏《捣练图》 看盛唐宫廷女子的劳动之美
武则天:从皇后到女皇的权力之路
重庆一日游攻略!一天玩转8个景点!路线、美食、玩耍项目俱全!懒人版路线
重庆春节自驾冷门线路推荐
信息差:停牌潮涌,A股暗流涌动,是机会还是陷阱?
考古学家发现"失落"的玛雅巨城 隐藏着完整的金字塔
国家文物局推介21个全国基本建设考古和文物保护优秀案例
低渗性低钠血症的急救指南
这样吃,远离缺钠高钠血症!
闪卡记忆法的记忆原理是什么 你知道吗?
值符:奇门遁甲中的大吉之神
奇门遁甲:天人合一的数术典范