ARIMA-GARCH绘制预测曲线代码
时间: 2023-08-06 17:02:52 浏览: 95
实现天气预报代码并绘制曲线
3星 · 编辑精心推荐
下面是用Python编写的ARIMA-GARCH模型绘制预测曲线的代码示例:
```python
import pandas as pd
from statsmodels.tsa.arima_model import ARIMA
from arch import arch_model
import matplotlib.pyplot as plt
# 加载时间序列数据
data = pd.read_csv('data.csv', header=None, names=['value'])
# 拆分训练集和测试集
train_size = int(len(data) * 0.8)
train_data, test_data = data[:train_size], data[train_size:]
# 训练ARIMA模型
arima_model = ARIMA(train_data, order=(2, 1, 2))
arima_result = arima_model.fit(disp=0)
# 预测测试集
arima_pred = arima_result.forecast(steps=len(test_data))[0]
# 训练GARCH模型
garch_model = arch_model(arima_pred, p=1, q=1)
garch_result = garch_model.fit(disp='off')
# 预测测试集波动率
garch_pred = garch_result.forecast(horizon=len(test_data))
# 绘制预测曲线
plt.plot(test_data.index, test_data['value'], label='actual')
plt.plot(test_data.index, arima_pred, label='ARIMA')
plt.plot(test_data.index, garch_pred.variance.values[-1, :] ** 0.5, label='GARCH')
plt.legend()
plt.show()
```
其中,`data.csv`是一个包含时间序列数据的CSV文件,`order=(2, 1, 2)`表示ARIMA模型的阶数为(2, 1, 2),`p=1, q=1`表示GARCH模型的阶数为(1, 1)。`plt.plot()`函数用于绘制预测曲线,其中`test_data.index`表示测试集的时间索引,`test_data['value']`表示测试集的实际值,`arima_pred`表示ARIMA模型的预测值,`garch_pred.variance.values[-1, :] ** 0.5`表示GARCH模型的预测波动率。
阅读全文