【发布时间】: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