如何在matplotlib中可视化95%置信区间?

时间:2013-11-17 16:49:37

标签: python matplotlib statistics

我已经学会了如何找到scipy.stats.t这样的95%置信区间

In [1]: from scipy.stats import t
In [2]: t.interval(0.95, 10, loc=1, scale=2)  # 95% confidence interval
Out[2]: (-3.4562777039298762, 5.4562777039298762)
In [3]: t.interval(0.99, 10, loc=1, scale=2)  # 99% confidence interval
Out[3]: (-5.338545334351676, 7.338545334351676)

然而,可视化对我来说很重要。我想知道如何在matplotlib中的曲线的每个节点上显示置信区间条?

我期待的是这样的事情

enter image description here

2 个答案:

答案 0 :(得分:8)

您不需要.interval方法来获取置信区间的大小,您只需要.ppf方法。

import numpy as np
import scipy.stats as ss
data_m=np.array([1,2,3,4])   #(Means of your data)
data_df=np.array([5,6,7,8])   #(Degree-of-freedoms of your data)
data_sd=np.array([11,12,12,14])   #(Standard Deviations of your data)
import matplotlib.pyplot as plt
plt.errorbar([0,1,2,3], data_m, yerr=ss.t.ppf(0.95, data_df)*data_sd)
plt.xlim((-1,4))
在给定自由度和标准偏差的情况下,

ss.t.ppf(0.95, data_df)*data_sd是一种完全矢量化的方法来获得间隔的(一半)大小。

enter image description here

答案 1 :(得分:0)

你需要除以标准偏差,其次,如果你的数据是双面的(如图所示),你需要在高斯的两边都允许2.5%的未命中,即:

ss.t.ppf(0.975, data_df)/np.sqrt(data_df)

由于双方都错过了2.5%,所以总共错过了5%。