0

我想编写一个模型来预测未来 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)。

我该如何解决这个问题?谢谢

4

0 回答 0