循环中的 ARIMA 预测 Python
ARIMA prediction in a loop Python
我是 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')
在这里,参数 start 和 end 是什么?在文档中,我了解到开始和结束意味着预测值的开始和结束,但是参数呢?我不知道我必须在参数中输入什么。
其次,我有将近 1000 个时间序列的项目。因此,对于每个项目,我想识别最佳 (p,d,q) 值并在循环中每次应用 ARIMA,以便最后在包含项目名称及其预测 value.Please 帮助的字典中得到结果我怎么能这样做?
第三,现在如果我能够获得每个时间序列的 ARIMA 预测,它就不仅仅是一个预测,而是包含许多值,如 coeff、p 值等,那么我如何直接访问仅系数并将它们用作值。
如果有人能帮我解决这个问题,我将不胜感激。提前谢谢了。
起点和终点是您要预测的起点和终点。所以这可能是 start = '2012-07-31'
和 end = '2012-09-01'
.
关于 params
- 当调用 .fit()
时,返回 ARIMAResults class。此 class' predict
方法不需要 params
参数:start
和 end
应该是所有需要的。
对于您的第二个问题,this answer 应该有所帮助。我实际上无法让该代码为我自己工作,但我相信您可以让 AIC/BIC 网格搜索以那种或类似的方式工作。另一种方法是切换到 R 并使用 auto.arima
函数,该函数还根据 AIC/BIC 选择最佳 (p,d,q) 顺序(这绝对比基于 p 值选择更可取).
您应该能够使用 r.params
从拟合模型中获取系数
# -*- 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)
我是 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')
在这里,参数 start 和 end 是什么?在文档中,我了解到开始和结束意味着预测值的开始和结束,但是参数呢?我不知道我必须在参数中输入什么。
其次,我有将近 1000 个时间序列的项目。因此,对于每个项目,我想识别最佳 (p,d,q) 值并在循环中每次应用 ARIMA,以便最后在包含项目名称及其预测 value.Please 帮助的字典中得到结果我怎么能这样做?
第三,现在如果我能够获得每个时间序列的 ARIMA 预测,它就不仅仅是一个预测,而是包含许多值,如 coeff、p 值等,那么我如何直接访问仅系数并将它们用作值。
如果有人能帮我解决这个问题,我将不胜感激。提前谢谢了。
起点和终点是您要预测的起点和终点。所以这可能是 start = '2012-07-31'
和 end = '2012-09-01'
.
关于 params
- 当调用 .fit()
时,返回 ARIMAResults class。此 class' predict
方法不需要 params
参数:start
和 end
应该是所有需要的。
对于您的第二个问题,this answer 应该有所帮助。我实际上无法让该代码为我自己工作,但我相信您可以让 AIC/BIC 网格搜索以那种或类似的方式工作。另一种方法是切换到 R 并使用 auto.arima
函数,该函数还根据 AIC/BIC 选择最佳 (p,d,q) 顺序(这绝对比基于 p 值选择更可取).
您应该能够使用 r.params
# -*- 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)