GM(1,1)预测模型的残差检验、关联度检验、后验差检验代码
时间: 2023-08-29 10:08:19 浏览: 212
GM(1,1)预测模型的残差检验、关联度检验、后验差检验都是对模型拟合效果的检验,以下是它们的代码实现:
1. 残差检验:
```python
def residual_test(data, predict):
residual = data - predict
# 计算残差平均值、标准差、最大值、最小值
res_mean = np.mean(residual)
res_std = np.std(residual)
res_max = np.max(residual)
res_min = np.min(residual)
# 绘制残差分布图
plt.hist(residual)
plt.show()
# 绘制残差散点图
plt.scatter(range(len(residual)), residual)
plt.show()
# 残差平均值和标准差的范围
print("Residual mean: {:.2f}".format(res_mean))
print("Residual std: {:.2f}".format(res_std))
# 最大最小值和范围
print("Residual max: {:.2f}".format(res_max))
print("Residual min: {:.2f}".format(res_min))
```
2. 关联度检验:
```python
def correlation_test(data, predict):
# 计算实际值和预测值的相关系数
corr = np.corrcoef(data, predict)[0][1]
print("Correlation coefficient: {:.2f}".format(corr))
# 绘制实际值和预测值的散点图
plt.scatter(data, predict)
plt.show()
```
3. 后验差检验:
```python
def posterior_test(data, predict):
# 计算后验差比值
p = np.abs(data - predict) / data
# 绘制后验差比值分布图
plt.hist(p)
plt.show()
# 后验差比值的平均值和标准差
p_mean = np.mean(p)
p_std = np.std(p)
print("Posterior mean: {:.2f}".format(p_mean))
print("Posterior std: {:.2f}".format(p_std))
```
以上代码中,`data`为实际数据,`predict`为GM(1,1)预测出的数据。您可以根据需要调用这三个函数进行模型的检验。
阅读全文