python - 如何在Python中绘制时间序列数据的置信区间?

标签 python matplotlib

该领域存在多个问题,但我无法用它们来解决我的问题。我有一个数据样本,我想为其曲线创建置信区间。这里我提供一个简单的例子:

import numpy as np
%matplotlib inline
import matplotlib.pyplot as plt

mean, lower, upper = [],[],[]
ci = 0.2
for i in range (20):

    a = np.random.rand(100) # this is the output

    MEAN = np.mean(a)
    mean.append(MEAN)
    std = np.std(a)
    Upper = MEAN+ci*std
    Lower = MEAN-ci*std

    lower.append(Lower)
    upper.append(Upper)


 plt.figure(figsize=(20,8))
 plt.plot(mean,'-b', label='mean')
 plt.plot(upper,'-r', label='upper')
 plt.plot(lower,'-g', label='lower')

 plt.xlabel("Value",   fontsize = 30)
 plt.ylabel("Loss", fontsize = 30)
 plt.xticks(fontsize= 30) 
 plt.yticks(fontsize= 30) 
 plt.legend(loc=4, prop={'size': 30})

在上面的例子中,我画了%80置信区间。我有两个问题:

1-您能告诉我这种计算和绘制置信区间的方法是否正确吗?

2-我想为置信区间的阴影区域着色。我附上了一张图,我想要类似的东西。请问您有什么解决办法吗?感谢您的帮助。

enter image description here

最佳答案

我没有资格回答问题 1,但是这个问题的答案 SO question从您的代码中产生不同的结果。

对于问题 2,您可以使用 matplotlib fill_ Between 填充两条曲线之间的区域(示例的上部和下部)。

import numpy as np
import matplotlib.pyplot as plt
import scipy.stats

# https://stackoverflow.com/questions/15033511/compute-a-confidence-interval-from-sample-data
def mean_confidence_interval(data, confidence=0.95):
    a = 1.0 * np.array(data)
    n = len(a)
    m, se = np.mean(a), scipy.stats.sem(a)
    h = se * scipy.stats.t.ppf((1 + confidence) / 2., n-1)
    return m, m-h, m+h

mean, lower, upper = [],[],[]
ci = 0.8
for i in range (20):
    a = np.random.rand(100) # this is the output
    m, ml, mu = mean_confidence_interval(a, ci)
    mean.append(m)
    lower.append(ml)
    upper.append(mu)

plt.figure()
plt.plot(mean,'-b', label='mean')
plt.plot(upper,'-r', label='upper')
plt.plot(lower,'-g', label='lower')
# fill the area with black color, opacity 0.15
plt.fill_between(list(range(len(mean))), upper, lower, color="k", alpha=0.15)

plt.xlabel("Value")
plt.ylabel("Loss")
plt.legend()

enter image description here

关于python - 如何在Python中绘制时间序列数据的置信区间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71916767/

相关文章:

Python 的执行顺序

python - matplotlib show() 方法不打开窗口

python - Pyplot errorbar 无法传递颜色数组

python - Pandas groupby 在保留多个聚合的组内进行排序,并使用构面将其可视化

python - Pandas 中的 Excel SUMIF 等效项

Python 诅咒 : multiprocessing issue with Pool. map ?

python - 从 for 循环中更新的字典制作可滚动的绘图

python - 显示灰度图像

python - 在 OS X Lion : initialization from incompatible pointer type 上安装 PIL

python - Argparse:如何接受任意数量的可选参数(从 `-` 或 `--` 开始)