statsmodel armax:无法在没有偏移的情况下向Timestamp添加整数值

时间:2015-08-14 04:24:38

标签: pandas statsmodels

我正在尝试使用简单的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.

1 个答案:

答案 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']的空间数据。