使用ARIMA模型对平稳的时间序列数据建立预测模型
创作时间:
作者:
@小白创作中心
使用ARIMA模型对平稳的时间序列数据建立预测模型
引用
CSDN
1.
https://blog.csdn.net/2301_81121233/article/details/144167565
ARIMA模型是时间序列预测中的经典模型,广泛应用于金融、经济、气象等多个领域。本文将详细介绍ARIMA模型的基本原理、实现步骤,并通过Python代码示例展示如何使用ARIMA模型对平稳的时间序列数据进行预测。
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.6195384660.6287323960.6379263260.6471202560.65631418
60.6655081160.6747020460.6838959760.693089960.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模型。
热门推荐
农民工在家就业前景分析:政策扶持与市场需求
日本生活中的禁忌
编程计算积分公式是什么
C语言中如何把一个数开根号
C语言实现开根号功能的多种方法
发烧嘴巴起泡怎么办?6个实用应对方法
情绪掌控者:客服应对焦虑的情绪管理术
空调越吹越热!原来是没有清洗!清洁时间这样判断!
我国及美国FAA发布的eVTOL垂直起降场设计标准及相应的案例
明日九月二十六是“忌日”,提醒:1不拜、3不结、4不搬、5要做
量化投资时代,散户如何在股市中生存?
词的萌芽到鉴赏,品读叶嘉莹先生对《人间词话》的“词学反思”
前端如何获取定位地点
探究阴影下的心理效应:理性分析阴暗面的影响
美容院消费是否需要签订合同?
美大蒸烤集成灶x13故障排查与维修指南
土地征收如何签订协议?这份实用指南请收好
实时个性化推荐系统在企业中的应用与价值
揭秘马洛卡24/25赛季:团队坚韧与明星闪耀并存,谁能引领前进?
破解USB设备通讯协议实现自定义软件控制的步骤与方法
LM358A电压跟随器输出异常排查指南
运放电源、输入和输出电压范围关系详解
专家解读:舌头有裂纹是怎么回事?中医角度解析及修复方法
白芍的8個常見誤解,您中招了嗎?
一口气读懂,180年照相机发展史。
中医保健:耳尖穴的三大功效与具体操作方法
东莞市为什么叫东莞?
“弱口令”密码易泄密!这些安全提示要牢记
电脑如何关闭自动更新系统 关闭系统更新的实用技巧
未来信息综合技术-CPS