如何在Python中绘制置信区间?

时间:2020-01-15 08:13:32

标签: python python-3.x confidence-interval

我最近开始使用Python,但我不明白如何绘制给定数据(或数据集)的置信区间。在给定一组度量的情况下,我已经具有一个函数,该函数根据传递给它的置信度来计算上下限,但是我不知道如何使用这两个值来绘制置信区间。我知道这里已经有人问过这个问题,但是我没有找到有用的答案。

2 个答案:

答案 0 :(得分:22)

有几种方法可以满足您的要求:

仅使用matplotlib

from matplotlib import pyplot as plt
import numpy as np

#some example data
x= np.linspace(0.1, 9.9, 20)
y = 3.0 * x
#some confidence interval
ci = 1.96 * np.std(y)/np.mean(y)

fig, ax = plt.subplots()
ax.plot(x,y)
ax.fill_between(x, (y-ci), (y+ci), color='b', alpha=.1)

fill_between完成您想要的。有关如何使用此功能的更多信息,请参见:https://matplotlib.org/3.1.1/api/_as_gen/matplotlib.pyplot.fill_between.html

输出

enter image description here

或者,选择seaborn,它使用lineplotregplot支持此操作, 参见:https://seaborn.pydata.org/generated/seaborn.lineplot.html

答案 1 :(得分:3)

让我们假设我们具有三个类别,以及这三个类别中某个估计量的置信区间的上下限。

data_dict = {}
data_dict['category'] = ['category 1','category 2','category 3']
data_dict['lower'] = [0.1,0.2,0.15]
data_dict['upper'] = [0.22,0.3,0.21]
dataset = pd.DataFrame(data_dict)

您可以使用以下代码绘制每个类别的置信区间:

for lower,upper,y in zip(dataset['lower'],dataset['upper'],range(len(dataset))):
    plt.plot((lower,upper),(y,y),'ro-',color='orange')
plt.yticks(range(len(dataset)),list(dataset['category']))

结果如下图所示:

Confidence intervals of an estimator across some three categories