时间序列预测的一般步骤

一、ARIMA模型概述

​​在这里插入图片描述
ARMA模型就是AR和MA的简单结合,同时包含了历史数值项和错误项。由于AR和MA模型都对时间序列有平稳性要求,ARMA模型也存在这个限制,因此我们将其拓展到ARIMA模型,其可以解决非平稳性问题。引入的差分概念是一种获得时间序列的方法。最常使用的一种差分方法是计算当前项和前项的差值,获得一组新的时间序列。

对于时间序列问题,一般可以直接考虑使用ARIMA(p,d,q)模型,p代表自回归阶数;d代表差分次数;q代表移动平均阶数。确保这三个参数尽可能的小以避免过拟合,一个可供参数的准则是:不d<=2,p和q<=5,并且p和q尽量保证一个是模型主导项,另一个相对较小。

二、确定ARMA模型参数

ARIMA参数确定方法主要有两种:手动拟合法和自动拟合法

自动拟合ARIMA模型的一般步骤:

1、观察时间序列数据

首先需要可视化观察时间序列数据,了解数据的趋势、季节性和周期性等特征,以确定是否需要进行平稳化或差分操作。

# 导入销售数据,绘制原始图像
sales_data = pd.read_csv('data/retail_sales.csv')
sales_data['date']=pd.to_datetime(sales_data['date'])
sales_data.set_index('date', inplace=True)   # 将date列作为df对象的行索引,这样在之后绘图时行列索引直接就作为折线图的行标签和图例了
sales_data.plot()

# plt.plot(sales_data['date'],sales_data['sales'])  # 这样的话就不会生成图例和行索引

在这里插入图片描述

2、相关性检验 / 确定模型的阶数

使用自相关性函数(ACF)和偏自相关性函数(PACF)分析差分后的平稳时间序列数据,确定AR和MA项的阶数。
判别准则
整体相关性检验:整体性检验通常用于检验时间序列数据的整体相关性结构,以确定时间序列的总体相关性和波动。

单个时间间隔相关性:单个时间间隔相关性通常用于分析时间序列数据中的季节性变化、日内变化和周期性变化等。在股票交易领域,我们可能会分析某支股票在不同时间间隔上的表现,例如日内交易、周内交易和月度交易等。单个时间间隔相关性分析可以帮助我们确定该资产的季节性、周期性和日内波动性等特征

3、平稳性检验

如果时间序列数据存在趋势或季节性等非平稳特征,需要进行平稳化或差分操作,以得到平稳的时间序列数据。

常用的方法有:

1、使用statsmodels中的seasonal_decompose方法进行趋势项和季节项的分解,并绘制分解后的时序图像,分别显示趋势、季节性、残差和原始图像的变化)
在这里插入图片描述
2、使用ADFTest检查平稳性

adf_test = ADFTest()
adf_test.should_diff(sales_data)

4、拟合模型

根据确定的模型阶数,拟合ARIMA模型,并检查模型的拟合效果。
具体步骤:
首先划分训练集和测试集,然后进行模型的拟合

train = sales_data[:60]
test = sales_data[60:]

predictions = model_fitted.predict(
					start=len(train_data),
					end=len(train_data) + len(test_data)-1,
					dynamic=False)  # dynamic参数表示是否用预测值动态预测下一个时刻的值

输出结果:
模型自动拟合结果

5、模型诊断

检查模型的残差序列是否为白噪声序列,如果不是,则需要重新调整模型参数

5、模型预测

pred = pd.DataFrame(arima_model.predict(n_periods=12),columns=['predicted'],index=test.index)

plt.plot(train)
plt.plot(test,label='true')
plt.plot(pred,label='predict')
plt.legend();   # 添加图例

预测曲线和真实曲线

6、模型评估

  • 0
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值