如何改变ARMAX.predict的maxlag?

时间:2015-01-11 18:26:50

标签: python time-series forecasting statsmodels

仍在理解ARIMA源代码以预测某些数据。 (我使用两个时间序列(indexed_df和external_df,每个都有365个数据点。)

我想比较ARMA和ARMAX之间的预测准确度。

ARMA的预测过程似乎运行良好。但是使用一个额外的外部变量进行预测并不起作用:

获取ARMAX的p和q值:

arma_mod1 = sm.tsa.ARMA(indexed_df, (2,0), external_df).fit()
y = arma_mod1.params
print 'P- and Q-Values(ARMAX):'
print y

出:

P- and Q-Values(ARMAX):
const      34.739272
0           0.000136
ar.L1.0     0.578090
ar.L2.0     0.129253
dtype: float64

获得预测值(样本内):

start_pred = '2013-12-30'
end_pred = '2013-12-30'
period = (start_pred, end_pred)

predict_price1 = arma_mod1.predict(start_pred, end_pred, exog=True, dynamic=True) 
print ('Predicted Price (ARMAX): {}' .format(predict_price1))

出:

Traceback (most recent call last):

  File "<ipython-input-102-78b3d705d411>", line 6, in <module>
    predict_price1 = arma_mod1.predict(start_pred, end_pred, exog=True, dynamic=True)

  File "/Applications/anaconda/lib/python2.7/site-packages/statsmodels-0.6.1-py2.7-macosx-10.5-x86_64.egg/statsmodels/base/wrapper.py", line 92, in wrapper
    return data.wrap_output(func(results, *args, **kwargs), how)

  File "/Applications/anaconda/lib/python2.7/site-packages/statsmodels-0.6.1-py2.7-macosx-10.5-x86_64.egg/statsmodels/tsa/arima_model.py", line 1441, in predict
    return self.model.predict(self.params, start, end, exog, dynamic)

  File "/Applications/anaconda/lib/python2.7/site-packages/statsmodels-0.6.1-py2.7-macosx-10.5-x86_64.egg/statsmodels/tsa/arima_model.py", line 736, in predict
    start, method)

  File "/Applications/anaconda/lib/python2.7/site-packages/statsmodels-0.6.1-py2.7-macosx-10.5-x86_64.egg/statsmodels/tsa/arima_model.py", line 327, in _arma_predict_out_of_sample
    exog)

  File "/Applications/anaconda/lib/python2.7/site-packages/statsmodels-0.6.1-py2.7-macosx-10.5-x86_64.egg/statsmodels/tsa/arima_model.py", line 293, in _get_predict_out_of_sample
    X = lagmat(np.dot(exog, exparams), p, original='in', trim='both')

  File "/Applications/anaconda/lib/python2.7/site-packages/statsmodels-0.6.1-py2.7-macosx-10.5-x86_64.egg/statsmodels/tsa/tsatools.py", line 328, in lagmat
    raise ValueError("maxlag should be < nobs")

ValueError: maxlag should be < nobs

我对maxlag的理解是(如果之前没有定义)要观察的滞后数量将自动计算:

maxlag = int(round(12*(nobs/100.)**(1/4.)

但我不明白我可以在哪里更改此计算或设置maxlag的数量。

我对nobs的理解是时间步数,即我在时间序列中的值。 (在我的情况下是365)。

这意味着我需要maxlag&lt; 365,对吗?

我在哪里可以定义maxlag的数量?

在这个问题中出现了同样的错误:ADF test in statsmodels in Python但我不知道在哪里为ARMAX预测设置maxlag。

帮助表示赞赏

0 个答案:

没有答案