在预测线图周围绘制置信区间
Plotting confidence interval around predicted line plot
我正在尝试围绕线图绘制置信区间,类似于:https://scikit-learn.org/0.17/_images/plot_gp_regression_001.png
我正在拟合高斯过程,在预测值时,对于每个值,它 returns 均值和标准差(标准差)。使用它,我应该能够绘制不同范围的置信区间。对于我的情况,我尝试将范围设置为 10%、20%、... 90%。
目前我正在做这样的事情
y_pred, std = reg.predict(x, return_std=True)
std_z = 1.96 # from z-table for 95%
confidence_interval = std * std_z
plt.plot(x, y_pred)
plt.fill_between(x, y_pred - confidence_interval, y_pred + confidence_interval)
行得通。根据 z-table (http://www.z-table.com/uploads/2/1/7/9/21795380/8573955.png?759),可以看到 95% 的 z 值为 1.96。但是,以 25% 和 75% 为例。这些的 z 值分别为 - 和 + 0.67,这在绘图时只会在置信区间内重叠。这在我看来直觉上是不正确的。我预计较低的置信范围会缩小,而增加的则会扩大,对吗?
如有任何帮助,我们将不胜感激。
错了。与置信区间相关的百分比(在您的示例中为 95%、75%、25%)是覆盖概率。它们是您估计的数量的真实值(在这种情况下为预测值)位于 CI 范围内的机会。鉴于您所谈论的 CI 是中心置信区间(即它们以预测值为中心)按理说,为了获得更高的置信度,您需要更宽的区间。这正是您所看到的。如果较窄的置信区间具有比较宽的置信区间更高的覆盖概率,那么这将意味着有一个区域以某种方式具有与之相关的负覆盖概率。概率不能为负,所以不可能。
我正在尝试围绕线图绘制置信区间,类似于:https://scikit-learn.org/0.17/_images/plot_gp_regression_001.png
我正在拟合高斯过程,在预测值时,对于每个值,它 returns 均值和标准差(标准差)。使用它,我应该能够绘制不同范围的置信区间。对于我的情况,我尝试将范围设置为 10%、20%、... 90%。
目前我正在做这样的事情
y_pred, std = reg.predict(x, return_std=True)
std_z = 1.96 # from z-table for 95%
confidence_interval = std * std_z
plt.plot(x, y_pred)
plt.fill_between(x, y_pred - confidence_interval, y_pred + confidence_interval)
行得通。根据 z-table (http://www.z-table.com/uploads/2/1/7/9/21795380/8573955.png?759),可以看到 95% 的 z 值为 1.96。但是,以 25% 和 75% 为例。这些的 z 值分别为 - 和 + 0.67,这在绘图时只会在置信区间内重叠。这在我看来直觉上是不正确的。我预计较低的置信范围会缩小,而增加的则会扩大,对吗?
如有任何帮助,我们将不胜感激。
错了。与置信区间相关的百分比(在您的示例中为 95%、75%、25%)是覆盖概率。它们是您估计的数量的真实值(在这种情况下为预测值)位于 CI 范围内的机会。鉴于您所谈论的 CI 是中心置信区间(即它们以预测值为中心)按理说,为了获得更高的置信度,您需要更宽的区间。这正是您所看到的。如果较窄的置信区间具有比较宽的置信区间更高的覆盖概率,那么这将意味着有一个区域以某种方式具有与之相关的负覆盖概率。概率不能为负,所以不可能。