Python中的QQ(Quantile-Quantile)图

2025年3月5日 | 阅读 3 分钟

引言

Python 提供 QQ 图,这是一种图形工具,用于将数据集的分布与已知的理论分布进行比较,从而确定数据集是否遵循某个特定的概率分布。

什么是分位数-分位数图 (QQ Plot)?

分位数-分位数图 (或 QQ 图) 是一种图形工具,用于比较两个数据集的分布。通过将它们的分位数相互绘制,QQ 图可以帮助您直观地评估两个数据集是否来自相似的分布。如果图上的点形成一条直线,则表明这两个分布是相似的。如果它们偏离直线,则表示分布之间存在差异。

现在让我们来看一下 QQ 图的解释

解释

  • 每个分位数点都位于一条直线上,或非常接近直线,与 x 轴成 45 度角。两个样本的分布是可比的。
    QQ (Quantile-Quantile) Plot in Python
    此外,在实践中获得一条完美的直线是不可能的;相反,图会显示如下。在这种情况下,点几乎完全在一条直线上。
    QQ (Quantile-Quantile) Plot in Python
  • y 的分位数低于 x 的分位数。这表明 y 值通常倾向于低于 x 值。
    QQ (Quantile-Quantile) Plot in Python
    该图显示,无法始终获得 100% 的准确性,有些点在直线之上,而大多数点在直线之下。因此,我们可以说这两个分布是不同的。
    QQ (Quantile-Quantile) Plot in Python
  • x 的分位数小于 y 的分位数。因此,这意味着 x 值平均而言小于 y 值。
    QQ (Quantile-Quantile) Plot in Python
    这也意味着,直到某个临界点,y 的分位数都小于 x 的分位数。在此之后,y 的分位数会高于 x 的分位数。
    QQ (Quantile-Quantile) Plot in Python

在 Python 中实现 QQ 图

现在,我们将通过一个示例,演示如何在 Python 中使用 statsmodel 模块创建 QQ (Quantile-Quantile) 图。

示例

输出

QQ (Quantile-Quantile) Plot in Python

说明

这个 Python 脚本使用 NumPy 和 Statsmodels 创建了一个 QQ 图,这是一个用于将样本的分布与给定概率分布进行比较的图形工具。它生成了 200 个从标准正态分布采样的随机数据点 (np.random.normal(0, 1, 200)),并将它们与正态分布的预期分位数进行比较。QQ 图使用 sm.qqplot() 方法创建,并使用 py.show() 显示。

结论

总而言之,分位数-分位数 (QQ) 图是一种有效的视觉辅助工具,用于评估样本分布与正态分布等理论分布的相似程度。通过比较样本分布和参考分布的分位数,您可以快速确定两个分布是相似还是不同。正如 Python 示例所示,QQ 图提供了这些比较的清晰图形表示,并可以帮助您在统计分析和数据分布方面做出明智的决策。