我想编写一个模型来预测未来 7 天内某个数量的值(与历史数据相比)。我正在使用带有外生变量的 ARIMA 模型。
假设外生变量组合成一个列表:
combination = [[], ['x1'], ['x2'], ['x1', '2']]
通过这种方式,我有一个列表,其中包含要包含在模型中的所有可能的外生变量组合。
我为模型写的函数如下:
def model(df, exog_var):
num_exog = len(exog_var)
history = np.asarray(df.demand).tolist()
num_start = len(history)
num_end = num_start + 6
predictions = list()
regressor = df[exog_var].to_numpy()
for i, df_row in df.iterrows():
if exog_var:
model = ARIMA(endog= history, exog=regressor, order=(1, 0, 1))
model_fit = model.fit()
regressors = []
for reg_name in exog_var:
regressors.append(float(df_row[reg_name]))
forecast_regressor = np.array(regressors).reshape(1, num_exog)
yhat = model_fit.predict(num_start+i, num_end+i, exog=forecast_regressor)
return forecast_quantity
当我运行该功能时:
for combination, exog_comb in enumerate(combination_variables):
forecast_quantity = model(df, exogenous_variables=exog_comb)
程序返回以下错误:
ValueError:假设外生值的形状不合适。需要 (7, 1),得到 (467, 1)。
我该如何解决这个问题?谢谢