Я пытался вписать модель саримы в свой временной ряд, но натолкнулся на ошибку «ValueError: Нестационарные параметры авторегрессии, найденные с принудительным установлением истинного значения».
Как рекомендуется здесь: R Arima работает, но Python statsmodels SARIMAX выдает ошибку обратимости и здесь https://github.com/statsmodels/statsmodels/pull/3506 я использовал
start_params = [0, 0, 0, 0, 1]
model = sm.tsa.statespace.SARIMAX(data,order=(5, 1, 1), seasonal_order = (1,0,0,12),enforce_stationarity = True, enforce_invertibility = True)
results = model.fit(start_params= [0, 0, 0, 0, 1])
print(results.summary())
но это приводит к ошибке:
C:\Users\windisch\AppData\Local\Continuum\anaconda3\lib\site-packages\statsmodels\tsa\base\tsa_model.py:171: ValueWarning: No frequency information was provided, so inferred frequency MS will be used.
% freq, ValueWarning)
C:\Users\windisch\AppData\Local\Continuum\anaconda3\lib\site-packages\statsmodels\tsa\statespace\tools.py:600: RuntimeWarning: invalid value encountered in long_scalars
y[k-1, i] = (y[k, i] - y[k, k]*y[k, k-i-1]) / (1 - y[k, k]**2)
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
<ipython-input-671-69af3fea1d4b> in <module>()
9 seasonal_order = (1,0,0,12),enforce_stationarity = True, enforce_invertibility = True)
10
---> 11 results = model.fit(start_params= [0, 0, 0, 0, 1]) #start_params=[0, 0, 0, 1] start_params= [0, 0, 0, 0, 1]
12 print(results.summary())
13
~\AppData\Local\Continuum\anaconda3\lib\site-packages\statsmodels\tsa\statespace\mlemodel.py in fit(self, start_params, transformed, cov_type, cov_kwds, method, maxiter, full_output, disp, callback, return_params, optim_score, optim_complex_step, optim_hessian, flags, **kwargs)
449 # Unconstrain the starting parameters
450 if transformed:
--> 451 start_params = self.untransform_params(np.array(start_params))
452
453 # Maximum likelihood estimation
~\AppData\Local\Continuum\anaconda3\lib\site-packages\statsmodels\tsa\statespace\sarimax.py in untransform_params(self, constrained)
1430 if self.enforce_stationarity:
1431 unconstrained[start:end] = (
-> 1432 unconstrain_stationary_univariate(constrained[start:end])
1433 )
1434 else:
~\AppData\Local\Continuum\anaconda3\lib\site-packages\statsmodels\tsa\statespace\tools.py in unconstrain_stationary_univariate(constrained)
598 for k in range(n-1, 0, -1):
599 for i in range(k):
--> 600 y[k-1, i] = (y[k, i] - y[k, k]*y[k, k-i-1]) / (1 - y[k, k]**2)
601 r = y.diagonal()
602 x = r / ((1 - r**2)**0.5)
ValueError: cannot convert float NaN to integer
Первые 10 строк данных выглядят так:
Auftragsdatum
2010-02-01 -467.0
2010-03-01 1180.0
2010-04-01 -434.0
2010-05-01 279.0
2010-06-01 -249.0
2010-07-01 -247.0
2010-08-01 -775.0
2010-09-01 1772.0
2010-10-01 522.0
2010-11-01 -642.0
Name: Anzahl, dtype: float64
Что я могу сделать, чтобы это исправить?