我正在尝试使用简单的ARMAX模型来预测基于另一个时间序列(covar)的时间序列(GDP)。我一直得到:ValueError:无法在没有偏移的情况下向Timestamp添加整数值。
GDP和covar时间序列是201101年至201505年的月度数据点。我想预测2014年12个月的GDP仅作为测试。
我做错了什么?
这是错误:
var obj = {};
array.forEach(function(Data){
obj[Data[0]] = Data[1]
})
这是我的代码:
C:\Anaconda\lib\site-packages\statsmodels\base\model.py:466: ConvergenceWarning: Maximum Likelihood optimization failed to converge. Check mle_retvals
"Check mle_retvals", ConvergenceWarning)
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
<ipython-input-33-31da1f1fb1a0> in <module>()
20 armax = sm.tsa.ARMA(y, order=(3, 3), exog=u).fit()
21
---> 22 pred = armax.predict(start,end, u2, dynamic=True)
23 #print ('Predicted Price (ARMAX): {}' .format(pred))
C:\Anaconda\lib\site-packages\statsmodels\base\wrapper.py in wrapper(self, *args, **kwargs)
90 results = object.__getattribute__(self, '_results')
91 data = results.model.data
---> 92 return data.wrap_output(func(results, *args, **kwargs), how)
93
94 argspec = inspect.getargspec(func)
C:\Anaconda\lib\site-packages\statsmodels\tsa\arima_model.py in predict(self, start, end, exog, dynamic)
1439
1440 def predict(self, start=None, end=None, exog=None, dynamic=False):
-> 1441 return self.model.predict(self.params, start, end, exog, dynamic)
1442 predict.__doc__ = _arma_results_predict
1443
C:\Anaconda\lib\site-packages\statsmodels\tsa\arima_model.py in predict(self, params, start, end, exog, dynamic)
730 # also return error estimates and confidence intervals
731 # but how? len(endog) is not tot_obs
--> 732 out_of_sample += end - start + 1
733 return _arma_predict_out_of_sample(params, out_of_sample, resid,
734 k_ar, self.k_ma, self.k_trend,
pandas\tslib.pyx in pandas.tslib._Timestamp.__sub__ (pandas\tslib.c:17055)()
pandas\tslib.pyx in pandas.tslib._Timestamp.__add__ (pandas\tslib.c:16554)()
ValueError: Cannot add integral value to Timestamp without offset.
答案 0 :(得分:0)
根据statsmodels文档,ARMAResults.predict()
具有四个参数,其中不必给出第三个参数exog
(也称为自变量)。
在您的情况下,由于预测时间间隔是从2014年1月到2014年12月,因此它是原始数据的一部分,因此它是样本内预测的类型。 exog
参数可以是None
。因此,您的代码可以进行如下修改:
pred = armax.predict(start,end,dynamic=True)
但是,您可能会坚持要表明表情。在这种情况下,我认为pandas.DataFrame.loc[]
可以切片来自test_data['covar']
的空间数据。