如何使用Q-Q圖驗證數據的分佈

做者|Satyam Kumar
編譯|VK
來源|Towards Data Sciencepython

Q-Q圖是檢驗任何隨機變量(如正態分佈、指數分佈、對數正態分佈等)分佈的圖形方法,是觀察任何分佈性質的一種統計方法。app

例如,若是給定的一個分佈須要驗證它是不是正態分佈,咱們運行統計分析並將未知分佈與已知正態分佈進行比較。而後經過觀察Q-Q圖的結果,咱們能夠肯定給定的分佈是否正態分佈。dom

繪製Q-Q圖的步驟:

  1. 給定一個未知的隨機變量。
  2. 找到每一個百分位值
  3. 生成一個已知的隨機分佈,根據該分佈一樣遵循步驟1-2。
  4. 繪製Q-Q圖

給定一個隨機分佈,須要驗證它是否爲正態/高斯分佈。爲了便於理解,咱們將這個未知分佈命名爲X,將已知的正態分佈命名爲Y。機器學習

生成未知分佈X:

X = np.random.normal(loc=50, scale=25, size=1000)

咱們正在生成一個正態分佈,有1000個值,平均值=50,標準差=25。學習

查找1%~100%:spa

X_100 = []
for i in range(1,101):
    X_100.append(np.percentile(X, i))

計算每一個百分位數(1%,2%,3%,. . .,99%,100%)X的隨機分佈值,並將其存儲在X_100中。.net

生成已知的隨機分佈Y及其百分位值:

Y = np.random.normal(loc=0, scale=1, size=1000)

生成一個正態分佈,其平均值爲0,標準誤差爲1,須要與未知分佈X進行比較,以驗證X分佈是否正態分佈。code

Y_100 = []
for i in range(101):
    Y_100.append(np.percentile(Y, i))

計算每一個百分位數(1%,2%,3%,. . .,99%,100%)Y的隨機分佈值,並將其存儲在Y_100中。orm

繪圖:

爲以上得到的未知分佈值繪製散點圖。blog

這裏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.co...

歡迎關注磐創AI博客站:
http://panchuang.net/

sklearn機器學習中文官方文檔:
http://sklearn123.com/

歡迎關注磐創博客資源彙總站:
http://docs.panchuang.net/

相關文章
相關標籤/搜索