如何用 python 创建 qq 图


QQ 图是“分位数-分位数”的缩写,通常用于评估数据集是否可能来自理论分布。

在大多数情况下,这种类型的图用于确定数据集是否遵循正态分布

本教程介绍如何在 Python 中为数据集创建 QQ 图。

示例:Python 中的 QQ 图

假设我们有以下包含 100 个值的数据集:

 import numpy as np

#create dataset with 100 values that follows a normal distribution
np.random.seed(0)
data = np.random.normal(0,1, 1000)

#view first 10 values
data[:10] 

array([ 1.76405235, 0.40015721, 0.97873798, 2.2408932 , 1.86755799,
       -0.97727788, 0.95008842, -0.15135721, -0.10321885, 0.4105985 ])

要为此数据集创建 QQ 图,我们可以使用 statsmodels 库中的qqplot() 函数

 import statsmodels.api as sm
import matplotlib.pyplot as plt

#create QQ plot with 45-degree line added to plot
fig = sm.qqplot(data, line='45')
plt.show()

Python 中的 QQ 绘图

在 QQ 图中,x 轴显示理论分位数。这意味着它不会显示您的实际数据,而是表示数据呈正态分布时的位置。

Y 轴显示您当前的数据。这意味着,如果数据值大致遵循 45 度角的直线,则数据呈正态分布。

我们可以在上面的 QQ 图中看到,数据值往往紧密遵循 45 度,这意味着数据可能呈正态分布。这应该不足为奇,因为我们使用numpy.random.normal() 函数生成了 100 个数据值。

相反,考虑一下我们是否生成了包含 100 个均匀分布值的数据集并为该数据集创建了 QQ 图:

 #create dataset of 100 uniformly distributed values
data = np.random.uniform(0,1, 1000)

#generate QQ plot for the dataset
fig = sm.qqplot(data, line='45')
plt.show()

使用 matplotlib 在 Python 中绘制直线 Q-Q 图

数据值显然不遵循45度红线,表明它们不遵循正态分布。

QQ图的注意事项

请记住以下有关 QQ 图的注意事项:

  • 虽然 QQ 图不是正式的统计测试,但它提供了一种简单的方法来直观地检查数据集是否呈正态分布。
  • 请注意不要将 QQ 图与PP 图混淆,后者不太常用,对于分析位于分布尾部的数据值也不太有用。

您可以在此处找到更多 Python 教程。

添加评论

您的电子邮箱地址不会被公开。 必填项已用*标注