Недостаточные степени свободы для оценки - PullRequest
0 голосов
/ 13 апреля 2019

Моя степень свободы меньше, чем количество строк в наборе данных.Почему у меня ошибка «Недостаточные степени свободы для оценки».Что я могу сделать, чтобы устранить эту ошибку?

Я пытался уменьшить значение в differenced = difference(X,11), но оно все равно показывает ошибку.

dataset, validation = series[0:split_point], series[split_point:]
print('Dataset %d, Validation %d' % (len(dataset), len(validation)))
dataset.to_csv('dataset.csv')
validation.to_csv('validation.csv')
from pandas import Series
from statsmodels.tsa.arima_model import ARIMA
import numpy
# load dataset
series = Series.from_csv('dataset.csv', header=None)
series = series.iloc[1:]
series.head()
series.shape

from pandas import Series
from statsmodels.tsa.arima_model import ARIMA
import numpy
# create a differenced series
def difference(dataset, interval=1):
    diff = list()
    for i in range(interval+1, len(dataset)):
        value = int(dataset[i]) - int(dataset[i - interval])
        diff.append(value)
    return numpy.array(diff)

# load dataset
series = Series.from_csv('dataset.csv', header=None)
# seasonal difference
X = series.values
differenced = difference(X,11)
# fit model
model = ARIMA(differenced, order=(7,0,1))
model_fit = model.fit(disp=0)
# print summary of fit model
print(model_fit.summary())

series.head() result

Форма (17,)

1 Ответ

2 голосов
/ 15 апреля 2019

После разницы у вас осталось 6 наблюдений (17 - 11 = 6). Этого недостаточно для ARIMA (7, 0, 1).

С этими небольшими данными вы вряд ли получите хорошую прогнозируемость с какой-либо моделью, но если вам нужно, то я бы порекомендовал что-то гораздо более простое, например ARIMA (1, 0, 0) или модель экспоненциального сглаживания.

...