ARIMA 预测失败,原因是"当 ARIMA 与 X 数组拟合时,还必须提供一个用于预测或更新观测值的数组。



我正在做一个经过训练的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阵列",或者错误告诉我什么?

如果有人有任何见解或可以提供帮助,我真的很感激。

谢谢。

您使用外部数据训练了模型,这样您就有了时间序列和其他数据。当你做出预测时,你必须为你试图预测的时间框架提供额外的外生数据。

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

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

这里您缺少外源性数据,因此出现错误(X数组应包含您的外源性特征(:

model.predict(n_periods=365)

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

最新更新