如何用 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()
在 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()
数据值显然不遵循45度红线,表明它们不遵循正态分布。
QQ图的注意事项
请记住以下有关 QQ 图的注意事项:
- 虽然 QQ 图不是正式的统计测试,但它提供了一种简单的方法来直观地检查数据集是否呈正态分布。
- 请注意不要将 QQ 图与PP 图混淆,后者不太常用,对于分析位于分布尾部的数据值也不太有用。
您可以在此处找到更多 Python 教程。