Statsmodels:ARIMA 给出少于指定数量的预测
Statsmodels: ARIMA giving less than specified number of predictions
我在时间序列问题上使用 ARIMA。具体来说,我正在使用 Sklearn 的 TimeSeriesSplit
来执行交叉验证。不幸的是,当我要求 30 个时,我得到了 3 个预测。这是我所做的:
Y_train = Y_train.astype(float)
# build basic ARIMA model
arima_model = ARIMA(Y_train, order=(2,0,1))
# fit it
arima_results = arima_model.fit()
# predict next len(test) values
preds = arima_results.forecast(steps=len(Y_test))
print("len of y_train:", len(Y_train))
print("len of y_test:", len(Y_test))
print("len of preds:", len(preds))
我回来了:
len of y_train: 56
len of y_test: 30
len of preds: 3
这会在我计算 mean_squared_error
时导致错误,因为预测的长度 (3) 与我的测试集 (30) 不同。这是错误:
ValueError: Found input variables with inconsistent numbers of samples: [3, 30]
知道我在搞什么鬼吗?
谢谢!
From the documentation, fit
returns ARIMAResults
的一个实例,它提供了 forecast
方法。
return value is a tuple
,其中每个元素是一个长度合适的数组,具有不同类型的结果计算。所以看起来你想和
一起工作
preds[0]
而不是直接看preds
。
我在时间序列问题上使用 ARIMA。具体来说,我正在使用 Sklearn 的 TimeSeriesSplit
来执行交叉验证。不幸的是,当我要求 30 个时,我得到了 3 个预测。这是我所做的:
Y_train = Y_train.astype(float)
# build basic ARIMA model
arima_model = ARIMA(Y_train, order=(2,0,1))
# fit it
arima_results = arima_model.fit()
# predict next len(test) values
preds = arima_results.forecast(steps=len(Y_test))
print("len of y_train:", len(Y_train))
print("len of y_test:", len(Y_test))
print("len of preds:", len(preds))
我回来了:
len of y_train: 56
len of y_test: 30
len of preds: 3
这会在我计算 mean_squared_error
时导致错误,因为预测的长度 (3) 与我的测试集 (30) 不同。这是错误:
ValueError: Found input variables with inconsistent numbers of samples: [3, 30]
知道我在搞什么鬼吗?
谢谢!
From the documentation, fit
returns ARIMAResults
的一个实例,它提供了 forecast
方法。
return value is a tuple
,其中每个元素是一个长度合适的数组,具有不同类型的结果计算。所以看起来你想和
preds[0]
而不是直接看preds
。