使用Python展示统计学中的68-95-99.7规则

介绍

在统计学中,68-95-99.7规则是一条基本的规则,它描述的是在一个正态分布(也称为高斯分布)中的数据分布情况。在这个规则中,68%的数据点分布在平均值的一个标准差范围内,95%的数据点分布在两个标准差范围内,99.7%的数据点分布在三个标准差范围内。

使用Python展示规则

安装matplotlib

要使用Python来展示这个规则,我们需要安装一个强大的绘图库,matplotlib。它可以用来绘制所有类型的图表,包括带有分布曲线的直方图。

要安装matplotlib,您可以使用以下pip命令:

!pip install matplotlib

生成随机数据

为了展示68-95-99.7规则,我们需要首先生成一些随机的数据。我们可以使用Python中的numpy库来生成随机数据。

以下代码将使用numpy库生成1000个随机数据点,并将它们存储在一个数组中:

import numpy as np

# 生成随机数据

np.random.seed(0)

data = np.random.randn(1000)

在这个片段中,我们使用numpy库的random.randn函数生成1000个随机数据点。我们使用seed函数来确保我们得到的结果与其他人得到的结果相同。

绘制直方图

现在我们有了数据,我们可以使用matplotlib来绘制一个直方图。这个直方图将显示数据的分布情况。

以下代码将使用matplotlib库绘制一个直方图:

import matplotlib.pyplot as plt

# 绘制直方图

plt.hist(data, bins=50, density=True, alpha=0.6)

# 显示图形

plt.show()

在这个代码片段中,我们使用matplotlib库的hist函数来创建一个直方图。我们将数据数组作为函数的输入,同时使用bins参数来确定将数据分成多少个区间。我们还使用density参数来将直方图的面积归一化为1(这样可以使直方图的形状更容易比较)。最后,我们使用alpha参数来设置直方图的透明度。

添加平均线和标准差线

现在我们已经有了一个直方图,我们可以将平均值和标准差值添加到图表中。这样可以帮助我们更好地理解数据的分布情况。

以下代码将在图表中添加平均线和标准差线:

# 计算平均值和标准差

mean = np.mean(data)

std = np.std(data)

# 添加平均线和标准差线

plt.axvline(mean, color='r', linestyle='--', linewidth=2)

plt.axvline(mean + std, color='g', linestyle='--', linewidth=2)

plt.axvline(mean - std, color='g', linestyle='--', linewidth=2)

plt.axvline(mean + 2*std, color='y', linestyle='--', linewidth=2)

plt.axvline(mean - 2*std, color='y', linestyle='--', linewidth=2)

plt.axvline(mean + 3*std, color='b', linestyle='--', linewidth=2)

plt.axvline(mean - 3*std, color='b', linestyle='--', linewidth=2)

# 显示图形

plt.show()

在这个代码片段中,我们首先计算了数据的均值和标准差。接下来,我们使用axvline函数来添加平均线,标准差线,以及1、2和3个标准差线(每个标准偏差之间有68%、95%和99.7%的数据)。

完整代码

最后,这是完整的展示68-95-99.7规则的Python代码:

import numpy as np

import matplotlib.pyplot as plt

# 生成随机数据

np.random.seed(0)

data = np.random.randn(1000)

# 绘制直方图

plt.hist(data, bins=50, density=True, alpha=0.6)

# 计算平均值和标准差

mean = np.mean(data)

std = np.std(data)

# 添加平均线和标准差线

plt.axvline(mean, color='r', linestyle='--', linewidth=2)

plt.axvline(mean + std, color='g', linestyle='--', linewidth=2)

plt.axvline(mean - std, color='g', linestyle='--', linewidth=2)

plt.axvline(mean + 2*std, color='y', linestyle='--', linewidth=2)

plt.axvline(mean - 2*std, color='y', linestyle='--', linewidth=2)

plt.axvline(mean + 3*std, color='b', linestyle='--', linewidth=2)

plt.axvline(mean - 3*std, color='b', linestyle='--', linewidth=2)

# 显示图形

plt.show()

结果展示

运行上述代码后,我们将会得到类似这样的图表:

在图表中,红色线表示数据的平均值,绿色线表示标准差1,黄色线表示标准差2,蓝色线表示标准差3。这个图表显示了68-95-99.7规则的分布情况,可以帮助我们更好地理解数据的分布。

结论

在本文中,我们使用Python展示了统计学中的68-95-99.7规则。我们首先介绍了这个规则的基本概念,然后使用numpy和matplotlib库来生成和展示数据。

我们使用直方图来展示数据分布,并添加了平均值和标准差线来更好地理解数据分布的情况。最后,我们得到了一个展示68-95-99.7规则的图表。

后端开发标签