ValueError: Out-of-sample operations in a model with a regression component require additional exogenous values via the `exog` argument.
时间: 2024-03-24 10:40:05 浏览: 156
这个错误通常表示,你的 ARIMA 模型包含回归项,即你的模型不仅仅依赖于时间序列的历史数据,还依赖于其他一些外部因素,这些外部因素称为外生变量(exogenous variables)。因此,在使用 `forecast()` 函数进行未来值预测时,需要提供未来的外生变量数据,以便于模型进行预测。
解决这个问题的常见方法之一是在拟合模型时,将外生变量数据一起传递给模型。这可以通过在 `ARIMA()` 函数中使用 `exog` 参数来实现。例如:
```python
import pandas as pd
from statsmodels.tsa.arima.model import ARIMA
from sklearn.metrics import mean_squared_error
# 加载数据和外生变量数据
data = pd.read_csv('data.csv')
exog_data = pd.read_csv('exog_data.csv')
# 分割训练集和测试集
train_size = int(len(data) * 0.8)
train_data, test_data = data[:train_size], data[train_size:]
train_exog, test_exog = exog_data[:train_size], exog_data[train_size:]
# 配置 ARIMA 模型并拟合模型
model = ARIMA(train_data, order=(1, 1, 1), exog=train_exog)
model_fit = model.fit()
# 进行预测并计算误差
predictions = model_fit.forecast(steps=180, exog=test_exog)[0]
error = mean_squared_error(test_data['target'], predictions)
print('预测误差为:', error)
```
在这个示例中,我们将外生变量数据加载到 `exog_data` 变量中,并将其分割为训练集和测试集。然后,在创建模型时,我们将 `exog` 参数设置为训练集中的外生变量数据,以便模型能够学习时间序列和外生变量之间的关系。最后,在进行预测时,我们将测试集中的外生变量数据传递给 `forecast()` 函数中的 `exog` 参数,以便于模型进行预测。
阅读全文