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()
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()
データ値は明らかに 45 度の赤い線に従っておらず、正規分布に従っていないことを示しています。
QQプロットに関する注意事項
QQ プロットについては、次の注意事項に留意してください。
- QQ プロットは正式な統計検定ではありませんが、データ セットが正規分布しているかどうかを視覚的に確認する簡単な方法を提供します。
- QQ プロットとPP プロットを混同しないように注意してください。PP プロットはあまり一般的に使用されず、分布の裾にあるデータ値の分析にはあまり役に立ちません。
その他の Python チュートリアルはここで見つけることができます。