【问题标题】:I am getting an error "ValueError: endog is required to have ndim 1 but has ndim 2"我收到一个错误“ValueError:endog 必须有 ndim 1 但有 ndim 2”
【发布时间】:2020-05-24 17:10:19
【问题描述】:

我正在构建一个用于飞行预测的 ARIMA 模型。我有 10 年的数据,我想预测历史航班。我制作了一个 ARIMA 模型,但我不断收到错误消息“endog is required to have ndim 1 but has ndim 2”。

代码如下:

df = read_excel('dataset.xlsx')
df = df[['Year', 'Historical Flights','Country GDP']]

print(df.head())
X = df.iloc[:, :].values


size = int(len(X) * 0.66)
train, test = X[0:size], X[size:len(X)]
history = [x for x in train]
predictions = list()
for t in range(len(test)):
    model = ARIMA(history, order=(2,1,2))
    model_fit = model.fit(disp=0)
    output = model_fit.forecast()
    yhat = output[0]
    predictions.append(yhat)
    obs = test[t]
    history.append(obs)
    print('predicted=%f, expected=%f' % (yhat, obs))
error = mean_squared_error(test, predictions)
print('Test MSE: %.3f' % error)

【问题讨论】:

  • 您能提供完整的错误跟踪吗?
  • 是的,这是错误跟踪:super(ARIMA, self).__init__(endog, (p, q), exog, dates, freq, missing) File "/Users/m.salmanghazi/ Desktop/vitenv/venv/lib/python3.7/site-packages/statsmodels/tsa/arima_model.py”,第 446 行,在 init array_like(endog, 'endog') 文件“/Users/ m.salmanghazi/Desktop/vitenv/venv/lib/python3.7/site-packages/statsmodels/tools/validation/validation.py”,第 136 行,在 array_like 中引发 ValueError(msg.format(name, ndim, arr.ndim )) ValueError: endog 必须有 ndim 1 但有 ndim 2
  • 错误提示ARIMA模型只能接受一个内生变量,而你输入的数据有多个变量。
  • 您应该选择不同的模型,例如 VAR 模型,或者将一些变量作为外生变量输入 ARIMA。

标签: python time-series statsmodels arima


【解决方案1】:

尝试将您对 Arima 的输入重塑为

model = ARIMA(history.values.reshape(-1).tolist(), order=(2,1,2))

这会将数组的维度更改为一维

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-06-21
    • 1970-01-01
    • 1970-01-01
    • 2023-01-27
    • 2019-06-22
    • 2021-04-05
    • 2023-03-12
    相关资源
    最近更新 更多