Skip to main content
 首页 » 人工智能

如何使用Python画QQ图

2022年07月19日207lori

QQ图,全称quantile-quantile plot,又称为分位图。通常用于判断一组数据是否服从某种理论分布,大多数情况用于判断是否服从正太分布。尽管Q-Q图不是正式的统计检验,但它提供了一种直观、简单方法来检查数据集是否为正态分布的。本文介绍如何使用Python创建QQ图。

正太分布数据示例

首先准备100个示例数据:

import numpy as np 
 
# 创建100个服从正太分布的数据集 
np.random.seed(0) 
data = np.random.normal(0,1, 1000) 
 
# 查看前10个数据 
data[:10]  
 
array([ 1.76405235,  0.40015721,  0.97873798,  2.2408932 ,  1.86755799, 
       -0.97727788,  0.95008842, -0.15135721, -0.10321885,  0.4105985 ]) 

我们可以使用statsmodels包中qqplot函数创建QQ图:

import statsmodels.api as sm 
import matplotlib.pyplot as plt 
 
# 创建 Q-Q 图,并增加 45度线 
fig = sm.qqplot(data, line='45') 
plt.show() 

在这里插入图片描述

QQ图的X轴现实理论分位数,这意味着显示不是实际数据,而是实际数据在正态分布下的位置。Y轴显示实际数据。这意味着如果数据值沿45度角的大致直线下降,那么数据分布服从正态分布。

我们可以看到上面的Q-Q图中数据值倾向于接近45度直线,这意味着数据可能是正态分布的。这并不奇怪,因为我们用numpy.random.normal()函数生成的100个数据值。

均匀分布数据示例

下面创建均匀分布数据集,然后利用该数据画QQ进行对比:

# 创建 100 均匀分布数据集 
data = np.random.uniform(0,1, 1000) 
 
# 画QQ图 
fig = sm.qqplot(data, line='45') 
plt.show() 

在这里插入图片描述

显然图中显示数据不遵循红色的45度线,这表明它们不服从正态分布。


本文参考链接:https://blog.csdn.net/neweastsun/article/details/125859614