python代码:已有点预测结果和真实值数据,导入数据,计算点预测结果的85%,90%,95%的置信区间,和真实值绘制在一张图上
时间: 2024-03-20 20:42:30 浏览: 60
基于python的数据分析与预测
5星 · 资源好评率100%
假设已有点预测结果和真实值数据分别为 `y_pred` 和 `y_true`,可以使用以下代码计算置信区间并绘制图像:
```python
import numpy as np
import matplotlib.pyplot as plt
from scipy.stats import norm
# 假设需要计算的置信水平为 85%,90%,95%
conf_levels = [0.85, 0.9, 0.95]
# 计算点预测结果的均值和标准差
mean_pred = np.mean(y_pred)
std_pred = np.std(y_pred)
# 计算真实值的均值和标准差
mean_true = np.mean(y_true)
std_true = np.std(y_true)
# 绘制真实值的直方图
plt.hist(y_true, bins=20, density=True, alpha=0.5)
# 计算置信区间并绘制
for conf_level in conf_levels:
z_score = norm.ppf(1 - (1 - conf_level) / 2)
lower_bound_pred = mean_pred - z_score * std_pred / np.sqrt(len(y_pred))
upper_bound_pred = mean_pred + z_score * std_pred / np.sqrt(len(y_pred))
lower_bound_true = mean_true - z_score * std_true / np.sqrt(len(y_true))
upper_bound_true = mean_true + z_score * std_true / np.sqrt(len(y_true))
plt.axvline(lower_bound_pred, color='r', linestyle='--')
plt.axvline(upper_bound_pred, color='r', linestyle='--')
plt.axvline(lower_bound_true, color='g', linestyle='--')
plt.axvline(upper_bound_true, color='g', linestyle='--')
plt.show()
```
解释一下代码的实现思路:
- 首先定义需要计算的置信水平 `conf_levels`,这里假设需要计算 85%、90% 和 95% 的置信区间。
- 然后分别计算点预测结果和真实值的均值和标准差。
- 接着使用 `norm.ppf()` 函数计算对应置信水平下的 Z 分数。
- 根据公式计算置信区间的下界和上界,并用 `plt.axvline()` 函数在图像上绘制垂直线条。
- 最后使用 `plt.show()` 函数显示图像。
这样就能绘制出点预测结果和真实值的直方图,并在图像上绘制出对应的置信区间。
阅读全文