使用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模型。
热门推荐
显卡竖装用游戏性能会降低还是提高?3.0延长线可以用吗?实测验证
中沙共建未来新城:一座横跨沙漠的"天空之城"
“星二代”影帝王千源:悍匪赛道无人能及,出道30年从不拼爹
【入门必看】从菜鸟到大牛,嵌入式系统完整学习路线!看这篇就够了!
这个“善良”的食物,你知道怎么吃更健康吗?
实验室安全指南模板
PCDN到底是个啥?为什么会被运营商封杀?
集印成谱,传承文明——中国历代印谱
数说|今年春运客流预计创历史新高,中国人都去哪儿
唐宋八大家简介及代表作(唐宋八大家简介及代表作品)
备孕/计划怀孕全攻略
物理防晒霜还是化学防晒霜好?
人体安全电流(人体安全电流10mA,允许通过电流30mA)
三国演义中许褚是什么实力?与张飞相比如何
小儿抽动症的中医认识与治疗
狗狗不同年龄段的喂养(不同年龄段狗营养要求和喂食技巧)
闯红灯如何处罚
掌握Excel函数的技巧,提升你的工作效率
拥抱新学期 遇见“新”成长
儿童画中的创意探索:揭秘漫画角色五头身画法
陆海丝绸之路的奇妙相遇之一 | 阳江:在星辰大海上构筑新质生产力
结构化面试、无领导小组讨论……想脱颖而出?这份求职指南请收好
五一健康行|宅家必备健康指南
“微信文字讨好症”引热议,“好好说话”不应成为一种负担
中级安全工程师通过率是多少?如何通过错题本提升通过率?
《荡寇志》中堪称梁山克星的十大猛将
儿童七巧板,创造力与逻辑思维的简单拼图游戏
射频电路封装设计与工艺实现:技术突破与应用前景
智能手表测得最不准的指标,竟然是这些……
2024西安媒体主播石榴产区行活动启动,临潼石榴产业高质量发展