循环Python中的ARIMA预测

时间:2016-04-12 10:19:31

标签: python time-series forecasting

我是Python新手。我正在使用statsmodels通过ARIMA进行预测。我有3个问题。首先,我正在编写以下代码

dates = pd.date_range('2012-07-09','2012-07-30')
series = [43.,32.,63.,98.,65.,78.,23.,35.,78.,56.,45.,45.,56.,6.,63.,45.,64.,34.,76.,34.,14.,54.]
res = Series(series, index=dates)
r = ARIMA(res,(1,2,0))
pred = r.predict(params = ? , start = ?, end = ? , typ='levels')

在这里,什么是params,开始和结束?在文档中,我理解开始和结束意味着预测值的开始和结束,但是params是什么。我不知道我必须把它放在参数中。

其次,我有近1000个时间序列的项目。因此,对于每个项目,我想要识别最佳(p,d,q)值并且每次在循环中应用ARIMA,以便最后我在包含项目名称及其预测值的字典中得到结果。请帮助我可以这样做吗?

第三,现在如果我能够获得每个时间序列的ARIMA预测,它不仅仅是一个预测,而是包含很多值,如coeff,p值等,那么我怎样才能直接访问系数并将它们用作某些值。

如果有人可以帮助我,我会非常感激。提前谢谢了。

2 个答案:

答案 0 :(得分:1)

开始和结束是您希望预测的起点和终点。因此,这可能是start = '2012-07-31'end = '2012-09-01'

关于params - 调用.fit()时,会返回ARIMAResults个类。这堂课' predict方法不需要params参数:startend应该是所有需要的。

对于第二个问题,this answer应该有所帮助。我实际上无法让这些代码为我自己工作,但我确信你可以通过AIC / BIC网格搜索以这种方式或类似的方式工作。另一种方法是切换到R并使用auto.arima函数,该函数还根据AIC / BIC选择最佳(p,d,q)顺序(这肯定比基于p值选择更合适)。

您应该能够使用r.params

从拟合模型中获取系数

答案 1 :(得分:0)

# -*- coding: utf-8 -*-
import pandas as pd
from statsmodels.tsa.arima_model import ARIMA
import warnings
warnings.filterwarnings('ignore')
dates = pd.date_range('2012-07-09','2012-07-19')
series = [20,22,25,30,40,50,65,88,112,120,115]
res = pd.Series(series, index=dates)
print(res)
r = ARIMA(res,(2,1,0))
model_fit = r.fit(disp=0)
print(model_fit.summary())
pred = model_fit.predict(start ='2012-07-20', end ='2012-07-20', typ='levels')
print(pred)