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

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

当我们想要比较两组数据集时,我们需要能够了解它们的差异以及它们的稳定性。此时,置信区间就出现了。在统计学中,置信区间是一种统计概念,用来估计给定的样本数据中的总体参数的区间。对于大多数情况下,我们使用的是95%的置信区间。当我们构建了一条曲线,我们希望能够将其可视化,并将95%的置信区间绘制在曲线周围。在本文中,我们将介绍如何在Matplotlib中可视化95%置信区间。

准备数据

在本例中,我们将使用scipy库中的stats模块,用于生成服从正态分布的随机数据。我们将随机生成两个数据集,并绘制它们的平均值曲线。

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

# 生成两个数据集
np.random.seed(123)
data1 = stats.norm.rvs(loc=5, scale=1, size=100)
data2 = stats.norm.rvs(loc=7, scale=1, size=100)

# 绘制平均值曲线
mean1, mean2 = np.mean(data1), np.mean(data2)
x = np.linspace(0, 100, 100)
plt.plot(x, [mean1]*100, linestyle='--', label='mean1')
plt.plot(x, [mean2]*100, linestyle='--', label='mean2')
plt.legend()
plt.show()

计算置信区间

接下来,我们将计算95%的置信区间。我们将使用stats模块中的t.interval()函数,该函数将返回置信区间的上限和下限。

# 计算95%的置信区间
conf_int1 = stats.t.interval(0.95, len(data1) - 1, loc=np.mean(data1), scale=stats.sem(data1))
conf_int2 = stats.t.interval(0.95, len(data2) - 1, loc=np.mean(data2), scale=stats.sem(data2))
print('Confidence interval 1:', conf_int1)
print('Confidence interval 2:', conf_int2)

运行以上代码,我们得到以下输出:

Confidence interval 1: (4.856431133981426, 5.363902800809121)
Confidence interval 2: (6.959886813402448, 7.522093973185223)

这意味着,在95%的置信水平下,data1的均值落在4.86到5.36之间,data2的均值落在6.96到7.52之间。

绘制置信区间

现在我们准备在图表中绘制置信区间。为此,我们将使用Matplotlib中的fill_between()函数。

修改以下代码,将置信区间添加到我们的平均值曲线图表中:

# 绘制平均值曲线和置信区间
plt.plot(x, [mean1]*100, linestyle='--', label='mean1')
plt.fill_between(x, conf_int1[0], conf_int1[1], alpha=0.1)
plt.plot(x, [mean2]*100, linestyle='--', label='mean2')
plt.fill_between(x, conf_int2[0], conf_int2[1], alpha=0.1)
plt.legend()
plt.show()

结论

在Matplotlib中,可视化95%置信区间需要进行以下步骤:

  1. 准备数据,可以使用stats模块生成服从正态分布的随机数据。
  2. 计算95%的置信区间,可以使用t.interval()函数。
  3. 使用fill_between()函数在图表中绘制置信区间。

通过可视化95%置信区间,我们能够更好地了解数据的总体参数,并比较不同数据集之间的差异和稳定性。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程