Numpyで標準偏差を求める際の注意点
標準偏差は分散の正の平方根で求められますが、NumpyとRで出力される結果が違ったのでメモ。
Rのsdで標準偏差を計算して出てくるのは、不偏分散を基にした不偏標準偏差の値です。
> data <- c(40,44,38,50,60) > sd(data) [1] 8.876936
分散の計算をする時に偏差平方和をデータの個数-1で割っています。これは主に推測統計で用いられます。
しかし、Numpyのnumpy.stdで標準偏差を計算して出てくるのは、デフォルトでは標本分散を基にした標準偏差です。
In [25]: import numpy as np In [26]: data = [40,44,38,50,60] In [27]: np.std(data) Out[27]: 7.9397732965116834
こっちでは偏差平方和をデータの個数でそのまま割っていて、主に記述統計で用いられます。
統計を少しでもかじったことのある人は当然知ってる内容ですが、デフォルトの状態では言語の違いでこういうことも起きるので気をつけたいですね。
numpy.stdで不偏標準偏差を求めたい場合は以下のように、引数にオプションでddof=1と追加します。
In [28]: import numpy as np In [29]: data = [40,44,38,50,60] In [30]: np.std(data, ddof=1) Out[30]: 8.8769364084688593
This Post Has 0 Comments