作者|Satyam Kumar
編譯|VK
來源|Towards Data Science
Q-Q圖是檢驗任何隨機變量(如正態分布、指數分布、對數正態分布等)分布的圖形方法,是觀察任何分布性質的一種統計方法。
例如,如果給定的一個分布需要驗證它是否是正態分布,我們運行統計分析並將未知分布與已知正態分布進行比較。然后通過觀察Q-Q圖的結果,我們可以確定給定的分布是否正態分布。
繪制Q-Q圖的步驟:
-
給定一個未知的隨機變量。
-
找到每個百分位值
-
生成一個已知的隨機分布,根據該分布同樣遵循步驟1-2。
-
繪制Q-Q圖
給定一個隨機分布,需要驗證它是否為正態/高斯分布。為了便於理解,我們將這個未知分布命名為X,將已知的正態分布命名為Y。
生成未知分布X:
X = np.random.normal(loc=50, scale=25, size=1000)
我們正在生成一個正態分布,有1000個值,平均值=50,標准差=25。
查找1%~100%:
X_100 = []
for i in range(1,101):
X_100.append(np.percentile(X, i))
計算每個百分位數(1%,2%,3%,. . .,99%,100%)X的隨機分布值,並將其存儲在X_100中。
生成已知的隨機分布Y及其百分位值:
Y = np.random.normal(loc=0, scale=1, size=1000)
生成一個正態分布,其平均值為0,標准偏差為1,需要與未知分布X進行比較,以驗證X分布是否正態分布。
Y_100 = []
for i in range(101):
Y_100.append(np.percentile(Y, i))
計算每個百分位數(1%,2%,3%,. . .,99%,100%)Y的隨機分布值,並將其存儲在Y_100中。
繪圖:
為以上獲得的未知分布值繪制散點圖。
這里X是未知分布,要與Y這個正態分布相比。
對於Q-Q圖,如果圖中的散點在一條直線上,則兩個隨機變量具有相同的分布,否則它們具有不同的分布。
從上面的Q-Q圖可以看出X是正態分布的。
如果兩個分布不一樣呢?
如果X不是正態分布,並且它有其他分布,那么如果Q-Q圖是在X和正態分布之間繪制的,那么散射點就不會在一條直線上。
這里,X分布是對數正態分布,因此Q-Q圖中的散射點不是直線。
讓我們再觀察一下:
這是4個不同條件下X和Y分布的Q-Q圖。
- 左上:對數正態分布與正態分布的QQ圖
- 右上:正態與指數分布的QQ圖
- 左下:指數與指數分布的QQ圖
- 右下:logistic與logistic分布的QQ圖
python實現:
import numpy as np
import matplotlib.pyplot as plt
X = np.random.normal(loc=50, scale=25, size=1000)
X_100 = []
for i in range(1,101):
X_100.append(np.percentile(X, i))
Y = np.random.normal(loc=0, scale=1, size=1000)
Y_100 = []
for i in range(1,101):
Y_100.append(np.percentile(Y, i))
plt.scatter(X_100, Y_100)
plt.grid()
plt.ylabel("Y - normal distribution")
plt.xlabel("X - normal distribution")
plt.show()
結論
Q-Q圖可以用來比較任意兩個分布,並且可以通過與已知分布的比較來驗證未知分布。這種方法有一個主要的局限性,即需要大量的數據點,因為得出較少的數據不是明智的決定。通過觀察Q-Q圖可以預測這兩種分布是否相同。
原文鏈接:https://towardsdatascience.com/how-to-verify-the-distribution-of-data-using-q-q-plots-acdb7ca2d576
歡迎關注磐創AI博客站:
http://panchuang.net/
sklearn機器學習中文官方文檔:
http://sklearn123.com/
歡迎關注磐創博客資源匯總站:
http://docs.panchuang.net/