配列 ベクトル 行列 統計

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 の違いはなくなります。