numpy.var
、numpy.std
は、それぞれ配列で与えたデータの分散、標準偏差を返す。
numpy.var(a, axis=None, dtype=None, out=None, ddof=0, keepdims=<no value>)
numpy.std(a, axis=None, dtype=None, out=None, ddof=0, keepdims=False)
この関数の引数にddof
というのがあり、numpyのドキュメントには以下のように書かれている。
- ddof : int, optional
- Means Delta Degrees of Freedom. The divisor used in calculations is N – ddof, where N represents the number of elements. By default ddof is zero.
つまり、分散の計算の際にN−ddofで割っていて、デフォルトではddof=0
なので、母分散及び母集団の標準偏差として計算される。
ddof=1
とすると不偏分散およびその平方根として計算される。
1 2 3 4 5 6 7 8 9 10 11 12 13 |
import numpy as np x = np.arange(10) print(np.var(x)) # 8.25 print(np.var(x, ddof=1)) # 9.166666666666666 n = x.size print(np.var(x) * n / (n - 1)) # 9.166666666666666 |
ただし正確には、不偏分散の平方根は母集団の標準偏差の不偏推定量ではないらしい。