標準偏差は、データが平均からどれだけ散らばっているかを表す最も広く使われる指標です。ところが電卓やExcelで標準偏差を求めると、値が2種類出てくることがあります。一方は偏差平方和をnで割り、もう一方はn−1で割ります。この記事では、2つの式が何を意味するのか、なぜ標本ではn−1を使うのか、実務ではどちらを選ぶべきかを例題とともに説明します。
2つの式の違い
母集団全体がわかっているときの標準偏差(母標準偏差)は次のとおりです。
- 母標準偏差:
σ = √(Σ(x−μ)² / N)
母集団の一部を抜き出した標本から母集団の散らばりを推定するときは、次の式を使います。
- 標本標準偏差:
s = √(Σ(x−x̄)² / (n−1))
違いは2か所です。第一に、中心の値が母平均μではなく標本平均x̄です。第二に、割る数がnではなくn−1です。2つ目の違いをベッセルの補正(Bessel's correction)と呼びます。
なぜn−1で割るのか
標本平均x̄はまさにその標本から計算した値なので、標本のデータに最も近い位置に置かれます。実際、偏差平方和Σ(x−c)²はcが標本平均のときに最小になります。そのため、真の母平均μの代わりにx̄を基準に偏差を測ると、偏差平方和は系統的に小さくなります。
数学的に計算すると、nで割った分散の期待値は(n−1)/n × σ²です。たとえば標本サイズが5なら、nで割った分散は平均して真の分散の4/5 = 80%にしかなりません。この過小推定を正すためにn/(n−1)を掛けると、結局n−1で割る式になります。その結果、s²は母分散σ²の不偏推定量になります(不偏分散)。
もう一つの説明は自由度です。n個の偏差(x−x̄)には、合計が必ず0になるという制約が1つあります。したがってn−1個の偏差が決まれば、最後の1つは自動的に決まります。自由に動ける情報がn−1個なのでn−1で割る、と理解できます。
注意:
s²はσ²の不偏推定量ですが、平方根をとったsはσの不偏推定量ではありません。平方根は凹関数なので、sは平均してσよりわずかに小さくなります。ただし標本が大きくなればこの差は無視できるほど小さくなるため、実務ではsをそのまま使います。
手計算の例
次の8個の値があるとします。
2, 4, 4, 4, 5, 5, 7, 9
ステップ1:平均
x̄ = (2+4+4+4+5+5+7+9) / 8 = 40 / 8 = 5
ステップ2:偏差と偏差の2乗
| 値 x | 偏差 x−x̄ | 偏差の2乗 |
|---|---|---|
| 2 | −3 | 9 |
| 4 | −1 | 1 |
| 4 | −1 | 1 |
| 4 | −1 | 1 |
| 5 | 0 | 0 |
| 5 | 0 | 0 |
| 7 | 2 | 4 |
| 9 | 4 | 16 |
偏差の合計は−3−1−1−1+0+0+2+4 = 0で、先ほど述べた制約がそのまま確認できます。偏差平方和は9+1+1+1+0+0+4+16 = 32です。
ステップ3:2種類の分散と標準偏差
| 区分 | 分散 | 標準偏差 |
|---|---|---|
| 母集団基準(÷n) | 32 / 8 = 4 | √4 = 2 |
| 標本基準(÷(n−1)) | 32 / 7 ≈ 4.5714 | √4.5714 ≈ 2.1381 |
この8個が関心の対象のすべてなら、標準偏差は2です。一方、より大きな集団から抜き出した8個でその集団の散らばりを推定したいのであれば、約2.1381を報告すべきです。nが8のように小さいときは、2つの値の差が約7%とはっきり現れます。nが100なら差は約0.5%、nが1,000なら約0.05%まで縮まります。
いつどちらを使うか
判断基準は「手元のデータは知りたい対象のすべてか、一部か」です。
- 母集団(÷n):あるクラスの生徒30人の試験点数の散らばりをそのクラスについてだけ説明するとき、ある会社の全社員の給与分布を説明するときのように、データが対象全体である場合です。
- 標本(÷(n−1)):アンケート回答者500人から国民全体の傾向を推定するとき、生産ラインから抜き取った部品20個で工程全体のばらつきを推定するときのように、データがより大きな集団の一部である場合です。
実務で扱うデータのほとんどは標本です。信頼区間、t検定、標本サイズの計算のように推測につながる計算は、すべて標本標準偏差sを前提としています。どちらか迷うときは、標本の式を使うのが保守的な選択です。
Excelとプログラミングツールの対応
| ツール | 標本(÷(n−1)) | 母集団(÷n) |
|---|---|---|
| Excel・Googleスプレッドシート | STDEV.S, VAR.S(旧バージョンSTDEV) | STDEV.P, VAR.P(旧バージョンSTDEVP) |
| R | sd(), var() | 自分で補正が必要 |
| Python pandas | Series.std() 既定値 ddof=1 | std(ddof=0) |
| Python NumPy | np.std(x, ddof=1) | np.std(x) 既定値 ddof=0 |
特にNumPyとpandasは既定値が互いに逆なので、同じデータで計算したのに値が違うということがよく起こります。結果を比較するときは、まずどちらの式を使ったかを確認するとよいでしょう。
標準偏差の値の読み方
標準偏差は元のデータと同じ単位を持ちます。点数データなら「点」、身長データなら「cm」です。分散は単位が2乗になり直感的に読みにくいため、報告には通常標準偏差を使います。データが正規分布に近ければ、平均 ± 1標準偏差の範囲に約68%、± 2標準偏差の範囲に約95%の値が入ると大まかに解釈できます。平均が大きく異なる2つの集団の散らばりを比べるときは、標準偏差を平均で割った変動係数(CV)をあわせて見ることもあります。
よくある間違い
- 報告書にどちらの式を使ったか書かない:小さな標本では値がはっきり変わるので、
sまたはσの記号や「標本標準偏差」という表現を明記します。 - 標準偏差と標準誤差を混同する:標準誤差
SE = s / √nは個々のデータの散らばりではなく、標本平均の散らばりを表します。信頼区間には標準誤差が使われます。 - nが1のときに標本標準偏差を求める:n−1が0になるため定義されません。計算機がエラーを返すのが正常です。
- 外れ値を確認しない:標準偏差は2乗を使うため、極端な値1つに大きく左右されます。外れ値が疑われるときは四分位範囲(IQR)もあわせて見ます。
このサイトの記述統計計算機にデータを貼り付けると、標本と母集団の標準偏差を並べて確認できます。
まとめ
- データが対象全体ならnで、より大きな集団の一部ならn−1で割ります。
- nで割った標本分散の期待値は
(n−1)/n × σ²で過小推定になり、n−1で割るとこれが補正されます(ベッセルの補正)。 - 例題
2, 4, 4, 4, 5, 5, 7, 9の標準偏差は、母集団基準で2、標本基準で約2.1381です。 - Excelは
STDEV.S(標本)とSTDEV.P(母集団)で区別し、NumPyとpandasは既定値が異なります。 - 標準偏差(データの散らばり)と標準誤差(平均の散らばり)を区別します。