SciPy stats.zscore 関数

Lakshay Kapoor 2023年1月30日
  1. scipy.stats.zscore 関数
  2. Python で 1 次元 の配列に対する z-score の計算
  3. Python での多次元配列の z-score の計算
  4. Python での Pandas データフレームz-score の計算
SciPy stats.zscore 関数

z-score は、標準偏差が平均値から特定の値だけ離れている値を計算するのに役立つ統計手法です。z-score は、次の式を使用して計算されます。

z = (X – μ) / σ

その中で、

  • X はデータからの特定の値です
  • μは平均値です
  • σは標準偏差です

このチュートリアルでは、SciPy ライブラリを使用して Python でデータの z-score 値を計算する方法を示します。

scipy.stats.zscore 関数

SciPy ライブラリの scipy.stats.zscore 関数は、データの平均と標準偏差とともに、指定された入力生データの相対的な z-score を計算するのに役立ちます。これは、scipy.stats.zscore(a, axis, ddof, nan_policy) として定義されています。

以下は、scipy.stats.zscore 関数のパラメーターです。

a(配列) 生の入力データの配列のようなオブジェクト。
axis(int) 関数が z-score 値を計算する軸を定義します。デフォルト値は 0 です。つまり、関数は配列全体を計算します。
ddof (int) これは、標準偏差の計算全体における自由度の補正を定義します。
nan_policy このパラメーターは、入力データに NaN 値がある場合の処理​​方法を決定します。パラメータには、propagateraiseomit の 3つの決定パラメータがあります。propagate は単に NaN 値を返し、raise はエラーを返し、omit は単に NaN 値を無視し、関数は計算を続行します。これらの決定パラメータは一重引用符 ''で定義されます。また、NaN 値は、入力データに存在する他の値に対して計算される z-score 値に影響を与えることはありません。

a(配列) パラメーターを除くすべてのパラメーターはオプションです。つまり、scipy.stats.zscore 関数を使用している間、毎回それらを定義する必要はありません。

それでは、1 次元配列多次元配列、およびパンダデータフレームscipy.stats.zscore 関数を使用してみましょう。

Python で 1 次元 の配列に対する z-score の計算

import numpy as np
import scipy.stats as stats

input_data = np.array([5, 10, 20, 35, 25, 22, 19, 19, 50, 45, 62])

stats.zscore(input_data)

出力:

array([-1.3916106 , -1.09379511, -0.49816411,  0.39528239, -0.20034861,
       -0.37903791, -0.55772721, -0.55772721,  1.28872889,  0.99091339,
        2.00348608])

z-score 値は、平均値からの対応する値から離れた標準偏差値の数を示していることに注意してください。ここで、負の符号は、その値が平均値のの多くの標準偏差であることを表し、正の符号は、その値が平均値のの多くの標準偏差であることを表します。z-score 値が 0 であることが判明した場合、その値は平均値から 0 標準偏差値離れています。

Python での多次元配列の z-score の計算

import numpy as np
import scipy.stats as stats

data = np.array([[5, 10, 20, 35], [25, 22, 19, 19], [50, 45, 62, 28], [24, 45, 15, 30]])

stats.zscore(input_data)

出力:

array([-1.3916106 , -1.09379511, -0.49816411,  0.39528239, -0.20034861,
       -0.37903791, -0.55772721, -0.55772721,  1.28872889,  0.99091339,
        2.00348608])

Python での Pandas データフレームz-score の計算

ここでは、NumPy ライブラリの randint() 関数を使用します。この関数は、ランダムなサンプル番号を生成し、それらを NumPy 配列の形式で保存するために使用されます。NumPy 配列を作成した後、その配列を Pandas データフレームとして使用します。

import pandas as pd
import numpy as np
import scipy.stats as stats

input_data = pd.DataFrame(
    np.random.randint(0, 30, size=(4, 4)), columns=["W", "X", "Y", "Z"]
)
print(input_data)
    W   X   Y   Z
0   7   9   2  15
1  11  23  15  28
2  28  11  25   2
3  11  19  14  15
input_data.apply(stats.zscore)

出力:

          W	        X	        Y	        Z
0	-0.894534	-1.135815	-1.471534	 0.000000
1	-0.400998	 1.310556	 0.122628	 1.414214
2	 1.696529	-0.786334	 1.348907	-1.414214
3	-0.400998	 0.611593	 0.000000	 0.000000

Pandas ライブラリの apply() 関数は、指定されたデータフレームの各値の z-score 値を計算するために使用されることに注意してください。この関数は、apply() 関数の関数の引数として定義された特定の関数を Pandas シリーズまたはデータフレームの各値に適用するために使用されます。

著者: Lakshay Kapoor
Lakshay Kapoor avatar Lakshay Kapoor avatar

Lakshay Kapoor is a final year B.Tech Computer Science student at Amity University Noida. He is familiar with programming languages and their real-world applications (Python/R/C++). Deeply interested in the area of Data Sciences and Machine Learning.

LinkedIn

関連記事 - SciPy Stats