利用ARIMA模型进行时间序列的预测实现

ARIMA模型利用历史数据对时间序列进行预测,属于参数型方法,全称Autoregressive Integrated Moving Average Model,是集合了自回归模型AR(Autoregressive)、移动平均模型MA(Moving Average)和差分过程I(Integrated)的模型。

ARIMA(p,d,q)模型中的参数p, d, q分别来源于对应的三个部分:
AR部分:利用过去的值来预测未来的值,假设是线性关系,即利用过去p个值的加权平均来进行预测;
I差分部分:通过差分操作,来消除时间序列中的趋势和季节性因素,d代表差分的阶数;
MA部分:利用过去的误差来预测未来的值,假设时间序列是平稳的,也假设呈线性关系,利用过去q个白噪声的加权平均来进行预测。

实现ARIMA模型使用statsmodels包:statsmodels.tsa.arima.model.ARIMA

一、基本用法

构建模型

from statsmodels.tsa.arima.model import ARIMA

model = ARIMA(data, order=(7,0,1))
model_fit = model.fit()

模型训练时输入什么类型,则预测输出也是同样的类型,输入array,预测结果也是array, 输入带datetimeindex的series或dataframe,预测结果也是带datetimeindex的series或dataframe,其中datetimeindex需要指定频率,因为ARIMA模型要求时间序列的时间间隔相等。

进行预测时可以用forecastpredict方法。

forecast预测

pred = model_fit.forecast() # 一步预测
pred = model_fit.forecast(steps=5) # 多步预测 指定步数
pred = model_fit.forecast('2012-03-06 14:40:00') # 多步预测 指定end datetime

ARIMA模型本质只能预测未来一步,多步预测采用的是recursive循环的计算方法。

predict预测

# 指定要预测区间的起止index,index是相对于模型训练数据而言的,训练数据的第一个ts的index为0
pred = model_fit.predict(start=start_index, end=end_index) 
# 只有一个输入时,代表start index,预测start index至数据集的最后一个ts
pred = model_fit.predict(1000)
# 指定要预测区间的起止datetime
pred = model_fit.predict(start='2012-03-06 14:20:00', end='2012-03-07 23:55:00')

其中有个参数“dynamic”,dynamic=False代表使用真值true value, dynamic=True则使用预测值predicted value,例如在对 t +

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值