ARIMA-GARCH绘制预测曲线代码
时间: 2024-01-01 07:06:37 浏览: 63
实现天气预报代码并绘制曲线
3星 · 编辑精心推荐
以下是使用 Python 中的 statsmodels 库和 arch 库实现 ARIMA-GARCH 模型预测并绘制预测曲线的示例代码:
```python
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from statsmodels.tsa.arima.model import ARIMA
from arch import arch_model
# 读取数据
data = pd.read_csv('data.csv', index_col=0, parse_dates=True)
# 训练集和测试集划分
train_data = data.loc['2000-01-01':'2018-12-31']
test_data = data.loc['2019-01-01':]
# ARIMA 模型拟合
arima_model = ARIMA(train_data, order=(2, 0, 1))
arima_result = arima_model.fit()
# GARCH 模型拟合
garch_model = arch_model(arima_result.resid, vol='GARCH')
garch_result = garch_model.fit()
# 预测未来一年的数据
forecast_data = garch_result.forecast(horizon=252)
# 绘制预测曲线
plt.figure(figsize=(10, 6))
plt.plot(train_data, label='Train')
plt.plot(test_data, label='Test')
plt.plot(forecast_data.mean, label='Forecast')
plt.fill_between(forecast_data.index, forecast_data.mean - 1.96 * forecast_data.variance ** 0.5,
forecast_data.mean + 1.96 * forecast_data.variance ** 0.5, alpha=0.2)
plt.legend()
plt.show()
```
解释一下代码实现:
首先,我们读取数据并将其分为训练集和测试集。
然后,我们使用 `ARIMA` 模型对训练集进行拟合,得到拟合结果 `arima_result`。
接着,我们使用 `arch_model` 函数将 `arima_result` 的残差作为输入,拟合 GARCH 模型,得到拟合结果 `garch_result`。
最后,我们使用 `garch_result.forecast` 函数预测未来一年的数据,并使用 `plt.plot` 函数绘制训练集、测试集和预测曲线。其中,使用 `plt.fill_between` 函数对预测曲线进行置信区间的填充。
阅读全文