Python(NumPy)のstdで標準偏差を計算する
2023.02.18
標準偏差は numpy の std 関数で計算します。データは numpy の array で 1 次元配列にする必要があります。
1 から 5 までの数の標準偏差を numpy で求めてみましょう。
import numpy as np
data = np.array([1, 2, 3, 4, 5])
std = np.std(data)
print(std)
# 1.4142135623730951
ddof
std のオプションに ddof があります。デフォルトは 0 で、指定しなければ 0 が入ります。これを 1 にすると異なる標準偏差が返ります。
import numpy as np
data = np.array([4, 5, 1, 9, 6])
std = np.std(data)
std_0 = np.std(data, ddof=0)
std_1 = np.std(data, ddof=1)
print(std)
# 2.6076809620810595
print(std_0)
# 2.6076809620810595
print(std_1)
# 2.9154759474226504
標準偏差は「平均と要素の差」の二乗を合計し、それを「標準偏差の計算に用いる要素数」で割った値です。この「標準偏差の計算に用いる要素数」は要素数に一致させる必要はありません。要素数でも、要素数から 1 引いた数でもいい。
ddof=0 は要素数、ddof=1 は要素数から 1 引いた数を「標準偏差の計算に用いる要素数」にします。つまり std の計算に使う要素数は N-ddof です。
要素が多くなればなるほど、ddof=0 と ddof=1 の違いはなくなります。