GM(1,1)模型Python应用
时间: 2024-05-17 19:12:17 浏览: 16
GM(1,1) 模型是一种用于预测时间序列数据的灰色模型,可以用 Python 实现。以下是一个使用 Python 实现 GM(1,1) 模型的示例代码:
```python
import numpy as np
import matplotlib.pyplot as plt
def GM11(x0):
# 累加生成序列
x1 = np.cumsum(x0)
# 紧邻均值生成序列
z1 = (x1[:-1] + x1[1:]) / 2.0
# 级比序列
y = x0[1:] / x0[:-1]
# 计算 a 和 b
b = np.array([(z1 * y).sum() / y.sum(), (x0[0] - b * x1[0]) / z1[0]])
# 还原序列
return (x0 - b[1]) / b[0]
# 示例数据
x0 = np.array([45.1, 43.5, 42.8, 43.9, 45.3, 46.8, 48.2, 49.0, 49.5, 49.9])
# 预测未来 5 个数据
x_predict = GM11(x0)
x_predict = np.append(x_predict, [x_predict[-1] * i for i in range(2, 7)])
# 绘图
plt.plot(x0, label='Original Sequence')
plt.plot(x_predict, label='Predicted Sequence')
plt.legend()
plt.show()
```
在上面的示例代码中,我们首先定义了一个 GM11 函数,用于预测时间序列数据。给定一个时间序列 x0,我们首先计算累加序列 x1 和紧邻均值序列 z1,然后计算级比序列 y。接下来,我们通过最小二乘法求出 a 和 b,最后还原序列并返回预测结果。在示例代码中,我们使用了一个简单的示例数据 x0,然后预测未来的 5 个数据,并将预测结果与原始数据一起绘制在图表中。
相关推荐
![py](https://img-home.csdnimg.cn/images/20210720083646.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)