由于 'When an ARIMA is fit with an X array, it must also be provided one for predicting or updating observations.',ARIMA 预测失败

ARIMA prediction failing due to 'When an ARIMA is fit with an X array, it must also be provided one for predicting or updating observations.'

我正在做一个经过训练的 autoarima 模型等。 我正处于需要使用模型做出一些预测的阶段 (该模型是使用 5 年的数据训练的,我需要预测下一年)。

初始数据集是一个简单的时间序列数据集;

            Volume
01-01-1995  345
.
.
.
31-12-2000  4783

到目前为止的步数;

df_train = df[df.Date < "2019"]
df_test = df[df.Date >= "2019"]

exogenous_features = ["Consumption_mean_lag30", "Consumption_std_lag30",
                      "Consumption_mean_lag182", "Consumption_std_lag182",
                      "Consumption_mean_lag365", "Consumption_std_lag365",
                      "month", "week", "day", "day_of_week"]
model = auto_arima(df_train['Volume'], exogenous=df_train[exogenous_features], trace=True, error_action="ignore", suppress_warnings=True)
model.fit(df_train['Volume'], exogenous=df_train[exogenous_features])

forecast = model.predict(n_periods=len(df_test), exogenous=df_test[exogenous_features])
df_test["Forecast_ARIMAX"] = forecast
df_test[["Consumption", "Forecast_ARIMAX"]].plot(figsize=(14, 7))

from sklearn.metrics import mean_absolute_error, mean_squared_error
print("RMSE of Auto ARIMAX:", np.sqrt(mean_squared_error(df_test.Consumption, df_test.Forecast_ARIMAX)))
print("\nMAE of Auto ARIMAX:", mean_absolute_error(df_test.Consumption, df_test.Forecast_ARIMAX))

以上给了我满意的模型

当我尝试使用以下内容进行预测时;

model.predict(n_periods=365)

我一直收到错误消息;

ValueError: When an ARIMA is fit with an X array, it must also be provided one for predicting or updating observations.

我已尝试解决所有问题,但似乎无法理解如何提供 'X array' 或错误告诉我什么?

如果有人有任何见解或可以提供帮助,我将不胜感激。

谢谢。

您使用外源数据训练了您的模型,因此您拥有时间序列和其他数据。当您进行预测时,您必须为您尝试预测的时间范围提供额外的外生数据。

这是通过提供外生数据生成预测的正确方法:

forecast = model.predict(n_periods=len(df_test), exogenous=df_test[exogenous_features])

此处您缺少外源数据,因此出现错误(X 数组应包含您的 exogenous_features):

model.predict(n_periods=365)

外生数据的关键在于它可能会显着改善您的模型,但您需要提前了解这些数据才能做出预测。