估计的自由度不足
Insufficient degrees of freedom to estimate
我的自由度小于数据集中的行数。为什么我有错误 "Insufficient degrees of freedom to estimate"。我该怎么做才能解决此错误?
我已经尝试减小 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())
形状是(17,)
差分后,您剩下 6 个观测值 (17 - 11 = 6)。这对于 ARIMA(7, 0, 1) 是不够的。
有了那么少的数据,您不太可能使用任何模型获得良好的预测性能,但如果必须,那么我会推荐一些更简单的方法,例如 ARIMA(1, 0, 0) 或指数平滑模型。
我的自由度小于数据集中的行数。为什么我有错误 "Insufficient degrees of freedom to estimate"。我该怎么做才能解决此错误?
我已经尝试减小 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())
形状是(17,)
差分后,您剩下 6 个观测值 (17 - 11 = 6)。这对于 ARIMA(7, 0, 1) 是不够的。
有了那么少的数据,您不太可能使用任何模型获得良好的预测性能,但如果必须,那么我会推荐一些更简单的方法,例如 ARIMA(1, 0, 0) 或指数平滑模型。