Python での分位数プロット

Muhammad Maisam Abbas 2024年2月15日
  1. Python の statsmodels パッケージを使用した分位数-分位数プロット
  2. Python の openturns パッケージを使用した分位数-分位数プロット
Python での分位数プロット

このチュートリアルでは、Python で分位数-分位数プロットを描画する方法を紹介します。

Python の statsmodels パッケージを使用した分位数-分位数プロット

分位数-分位数プロットは、データが特定の分布に準拠しているかどうかを評価するために使用されます。特定のデータセットが正規分布しているかどうかを確認するために使用できます。statsmodels パッケージを使用して、Python で分位数-分位数グラフをプロットできます。statsmodels をインストールするコマンドを以下に示します。

pip install statsmodels

statsmodels パッケージ内の qqplot() 関数は、分位数-分位数グラフをプロットします。この関数は、データと描画する線のタイプを取得します。次のコードスニペットは、statsmodels パッケージを使用して分位数-分位数グラフをプロットする方法を示しています。

import numpy as np
import statsmodels.api as smi
import pylab

sample_data = np.random.normal(0, 1, 1000)

smi.qqplot(sample_data, line="r")
pylab.show()

出力:

statsmodels パッケージを使用した pythonqq プロット

上記のコードの statsmodels パッケージの smi.qqplot(sample_data, line = "r") 関数を使用して、分位数-分位数グラフをプロットしました。sample_data = np.random.normal(0,1, 1000) 関数を使用して、1000 エントリを含む正規データを生成しました。最後に、pylab パッケージを使用して、pylab.show() 関数でグラフを表示しました。

この方法では、プロットする参照線のタイプを完全に制御できます。上のグラフでは、参照線を回帰直線に設定しています。

Python の openturns パッケージを使用した分位数-分位数プロット

Python で分位数-分位数グラフをプロットする別の方法は、openturns パッケージを使用することです。これは外部パッケージであるため、コードで使用する前にインストールする必要があります。openturns パッケージをインストールするコマンドを以下に示します。

pip install openturns

VisualTest.DrawQQplot() 関数は、openturns パッケージ内の分位数-分位数グラフをプロットするために使用されます。この関数の最初のパラメーターはサンプルデータである必要があります。2 番目のパラメーターは、別のサンプルデータまたは分布の後に、ポイント数を指定する別の 3 番目のパラメーターを続けることができます。この例では、一様分布のサンプルに対して正規分布のサンプルをプロットします。次のコードスニペットは、openturns パッケージを使用して分位数-分位数グラフをプロットする方法を示しています。

import openturns as ot

x = ot.Normal().getSample(1000000)
y = ot.Uniform().getSample(1000000)
g = ot.VisualTest.DrawQQplot(x, y)
g

出力:

openturns パッケージを使用した pythonqq プロット

上記のコードの openturns パッケージの VisualTest.DrawQQplot(x, y) 関数を使用して、正規分布のサンプルを一様分布のサンプルに対してテストしました。x = ot.Normal().getSample(1000000) の 100 万エントリを含む正規分布からサンプルデータを生成しました。y = ot.Uniform().getSample(1000000) の 100 万エントリを含む一様分布からサンプルデータを生成しました。

この方法では、参照/テストラインを制御することはできません。

Muhammad Maisam Abbas avatar Muhammad Maisam Abbas avatar

Maisam is a highly skilled and motivated Data Scientist. He has over 4 years of experience with Python programming language. He loves solving complex problems and sharing his results on the internet.

LinkedIn

関連記事 - Python Graph