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