Statsmodels:ARIMA提供的预测数量少于指定数量

时间:2018-03-12 14:05:07

标签: python statsmodels arima

我在时间序列问题上使用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]

知道我在笨拙的事吗?

谢谢!

1 个答案:

答案 0 :(得分:1)

From the documentationfit返回ARIMAResults的实例,该实例提供forecast方法。

return value is a tuple,其中每个元素是具有不同类型结果计算的合适长度的数组。所以你似乎想要使用

preds[0]

而不是直接查看preds