首页 > 文章列表 > 使用Python展示统计学中的68-95-99.7规则

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

Python 统计学 --规则
430 2023-09-08

统计学为我们提供了分析和理解数据的强大工具。统计学中的基本概念之一是 68-95-99.7 规则,也称为经验规则或三西格玛规则。这条规则使我们能够根据数据的标准差对数据的分布做出重要的推断。在这篇博文中,我们将探讨 68-95-99.7 规则并演示如何使用 Python 应用它。

68-95-99.7 规则概述

68-95-99.7 规则提供了一种方法来估计正态分布中与平均值的一定标准差范围内的数据百分比。根据这个规则 -

  • 大约 68% 的数据落在平均值的一个标准差范围内。

  • 大约 95% 的数据落在平均值的两个标准差范围内。

  • 大约 99.7% 的数据落在平均值的三个标准差范围内。

这些百分比适用于遵循正态分布(也称为钟形曲线)的数据集。了解这一规则使我们能够快速评估数据的传播并识别异常值或异常观察结果。

在 Python 中实现 68-95-99.7 规则

为了演示 68-95-99.7 规则的实际应用,我们将使用 Python 及其流行的数据分析库 NumPy。 NumPy 提供高效的数值运算和统计函数,帮助我们计算必要的值。让我们首先导入所需的库

import numpy as np
import matplotlib.pyplot as plt

接下来,我们将使用 numpy.random.normal() 函数生成一个遵循正态分布的随机数据集。我们将使用平均值 0 和标准差 1 

np.random.seed(42)  # Set the random seed for reproducibility
data = np.random.normal(0, 1, 10000)

现在,我们可以计算数据集的平均值和标准差

mean = np.mean(data)
std = np.std(data)

为了可视化数据和 68-95-99.7 规则覆盖的区域,我们可以使用 matplotlib.pyplot.hist() 函数创建直方图

plt.hist(data, bins=30, density=True, alpha=0.7)

# Plot the mean and standard deviations
plt.axvline(mean, color='r', linestyle='dashed', linewidth=1, label='Mean')
plt.axvline(mean - std, color='g', linestyle='dashed', linewidth=1, label='1 STD')
plt.axvline(mean + std, color='g', linestyle='dashed', linewidth=1)
plt.axvline(mean - 2*std, color='b', linestyle='dashed', linewidth=1, label='2 STD')
plt.axvline(mean + 2*std, color='b', linestyle='dashed', linewidth=1)
plt.axvline(mean - 3*std, color='m', linestyle='dashed', linewidth=1, label='3 STD')
plt.axvline(mean + 3*std, color='m', linestyle='dashed', linewidth=1)

plt.legend()
plt.xlabel('Value')
plt.ylabel('Density')
plt.title('Histogram of the Dataset')
plt.show()

生成的直方图将显示数据的分布以及用虚线标记的平均值和标准差。

为了计算每个范围覆盖的百分比,我们可以使用正态分布的累积分布函数(CDF)。 NumPy 函数 numpy.random.normal() 生成正态分布的数据,但 NumPy 还提供 numpy.random.normal() 来计算 CDF

# Calculate the percentage within one standard deviation
pct_within_1_std = np.sum(np.logical_and(data >= mean - std, data 7lt;= mean + std)) / len(data)

# Calculate the percentage within two standard deviations
pct_within_2_std = np.sum(np.logical_and(data >= mean - 2*std, data <= mean + 2*std)) / len(data)

# Calculate the percentage within three standard deviations
pct_within_3_std = np.sum(np.logical_and(data >= mean - 3*std, data <= mean + 3*std)) / len(data)

print("Percentage within one standard deviation: {:.2%}".format(pct_within_1_std))
print("Percentage within two standard deviations: {:.2%}".format(pct_within_2_std))
print("Percentage within three standard deviations: {:.2%}".format(pct_within_3_std))

当您运行此代码时,您将看到数据的百分比落在平均值的 1、2 和 3 个标准差范围内。

Percentage within one standard deviation: 68.27%
Percentage within two standard deviations: 95.61%
Percentage within three standard deviations: 99.70%

这些结果与 68-95-99.7 规则的预期百分比非常一致。

68-95-99.7 规则的解释

每个范围涵盖的百分比都有特定的解释。落在平均值的一个标准差之内的数据相对常见,而落在平均值的三个标准差之外的数据则被认为是罕见的。理解这些解释有助于对数据做出有意义的推断。

68-95-99.7 规则的限制

虽然 68-95-99.7 规则是一个有价值的指南,但它可能无法准确地应用于显着偏离正态分布的数据集。在处理此类数据集时,考虑其他统计技术并进行进一步分析至关重要。

异常值和 68-95-99.7 规则

异常值会极大地影响每个范围所涵盖的百分比的准确性。这些极值可能会扭曲分布并影响规则的有效性。正确识别和处理异常值对于确保准确的统计分析非常重要。

现实生活中的例子

68-95-99.7 规则适用于各个领域。例如,它在质量控制流程中识别有缺陷的产品、在财务分析中评估风险和投资回报、在医疗保健研究中了解患者特征以及在许多其他领域中了解数据分布至关重要。

当您深入了解统计数据时,请考虑探索补充 68-95-99.7 规则的其他概念。偏度、峰度、置信区间、假设检验和回归分析只是可以进一步增强您对数据的理解和分析的统计工具的几个示例。

结论

68-95-99.7 规则是统计学中的一个强大概念,它使我们能够根据数据的标准差来理解数据的分布。通过应用此规则,我们可以估计落在均值周围特定范围内的数据比例。在本博客中,我们使用 Python 和 NumPy 库生成随机数据集,将其可视化,并计算每个范围覆盖的百分比。了解这条规则使我们能够对数据做出有意义的推断并识别潜在的异常值或异常观察结果。