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()

Python での QQ プロット

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()

matplotlib を使用した Python での直線による Q-Q プロット

データ値は明らかに 45 度の赤い線に従っておらず、正規分布に従っていないことを示しています。

QQプロットに関する注意事項

QQ プロットについては、次の注意事項に留意してください。

その他の Python チュートリアルはここで見つけることができます。

コメントを追加する

メールアドレスが公開されることはありません。 が付いている欄は必須項目です