標本と母集団
統計学の話としてまず以下を振り返る。
-
母集団
対象となる事象やデータの「すべて」の集団。
観測できていないものであっても、該当し得る対象がある場合は
それらも含んだ集団のことを指す。
例)国内の小学生を対象にした算数の成績
:ただ一人も欠けることなく全小学生を対象に算数テストを行って集計した場合
母集団である。 -
標本
対象となる事象やデータのうち、抜き出した(観測、計測した)集団。
母集団の部分集合となる。
例)国内の小学生を対象にした算数の成績
:各県から、代表となる小学校を選び、そこで算数テストを行って集計した場合
標本である。
標本標準偏差と母標準偏差
母集団の標準偏差を本当は知りたい。
(前述の例だと、国内全員の小学生を対象にした際の標準偏差を本当は知りたい)
一方、実際観測できるのはその一部である。
標本から導出する標準偏差は、母集団の標準偏差よりも若干小さくなってしまう。
→数学的な導出を知りたい場合は以下のサイト等を参照
統計学 : 標準偏差や分散はなぜnで割ったりn-1で割ったりするのか
よって、Python等(Pyhtonに限らずだが)で標準偏差を求める場合、以下を留意する。
- 対象データは母集団といえるか、標本といえるか
- そのライブラリの標準偏差導出メソッドは、標本標準偏差と母標準偏差のどちらを求めてくれるのか
Python/pandasにおける標準偏差
例
import pandas as pd
df = pd.DataFrame({
'Name': ['A', 'B', 'C', 'D'],
'value': [1, 2, 3, 4]
})
# pandasのstd()で標準偏差を計算→母標準偏差
df['value'].std()
結果
1.2909944487358056
例
import pandas as pd
df = pd.DataFrame({
'Name': ['A', 'B', 'C', 'D'],
'value': [1, 2, 3, 4]
})
# pandasのstd(ddof=0)で標準偏差を計算→標本標準偏差
df['value'].std(ddof=0)
結果
1.118033988749895
このように、pandasのstdでは、
デフォルトは母標準偏差となる。
Python/Numpyにおける標準偏差
例
import pandas as pd
import numpy as np
df = pd.DataFrame({
'Name': ['A', 'B', 'C', 'D'],
'value': [1, 2, 3, 4]
})
# npのstd()で標準偏差を計算→標本標準偏差
np.std(df['value'])
結果
1.118033988749895
例
import pandas as pd
import numpy as np
df = pd.DataFrame({
'Name': ['A', 'B', 'C', 'D'],
'value': [1, 2, 3, 4]
})
# npのstd(ddof=1)で標準偏差を計算→母標準偏差
np.std(df['value'], ddof=1)
結果
1.2909944487358056
このように、numpyのstdでは、
デフォルトは標本標準偏差となる。