Вычислительный RSS модели ARIMA - PullRequest
0 голосов
/ 13 мая 2018

Я создал модель AR, параметры которой были основаны на моем анализе автокорреляции данных и функции частичной автокорреляции. Однако при попытке вычислить значение RSS полученной модели возникает ошибка. Вот код, который я использовал:

import matplotlib.pylab as plt
from matplotlib.pylab import rcParams
rcParams['figure.figsize'] = 15, 6
import pandas as pd
from statsmodels.tsa.arima_model import ARIMA

df = pd.read_csv('data.csv', header=0, index_col=0, parse_dates=True, sep=';')
model = ARIMA(df, order=(6, 0, 0))
results_ARIMA = model.fit(disp=-1)  
plt.plot(df, color='blue', label='Original')
plt.plot(results_ARIMA.fittedvalues, color='red', label='Predicted')
plt.plot(results_ARIMA.predict(start = 23, end = 34, dynamic=True), color='red')
plt.title('RSS: %.4f'% sum((results_ARIMA.fittedvalues-df)**2))

Что приводит к этому сообщению об ошибке:

Файл "C: \ Anaconda3 \ lib \ site-packages \ spyder \ utils \ site \ sitecustomize.py", строка 705, в runfile execfile (имя файла, пространство имен)

Файл "C: \ Anaconda3 \ lib \ site-packages \ spyder \ utils \ site \ sitecustomize.py", строка 102, в execfile exec (compile (f.read (), filename, 'exec'), пространство имен)

Файл "C: / Users / Patrick Ulanday / Desktop / Thesis / ARIMA / CRWFR_boundary_ARIMA / ARIMA.py", строка 64, в print ('RSS:% .4f'% sum ((results_ARIMA.fittedvalues-df) ** 2))

Файл "pandas / _libs / tslib.pyx", строка 787, в pandas._libs.tslib.Timestamp. радд

Файл "pandas / _libs / tslib.pyx", строка 1275, в pandas._libs.tslib._Timestamp. add

ValueError: Невозможно добавить целое значение к метке времени без частоты.

Моделирование действительно сработало и построено, но я не могу загрузить изображение, проблема в вычислении RSS.

1 Ответ

0 голосов
/ 06 декабря 2018

Хотя у меня очень поверхностные знания о временных рядах, вероятно, проблема в вашем коде в том, что вы не указали имя столбца в выражении определения RSS в коде. Посмотрите на приведенный ниже блок кода:

from statsmodels.tsa.arima_model import ARIMA
model  =  ARIMA(indexedDataset_logScale, order = (2,1,0))
results_AR  =  model.fit(disp = -1)
plt.plot(datasetLogDiffShifting)
plt.plot(results_AR.fittedvalues, color = 'red')
plt.title('RSS: %.4f'%sum((results_AR.fittedvalues - 
datasetLogDiffShifting['#Passengers'])**2))
print('Plotting AR model')

Надеюсь, что это решит вашу проблему.

...