平均と分散と標準偏差

回 5-1 分野 5 統計

標準偏差は、データの散らばりの大きさを、元のデータと同じ単位で表す数です。各データと平均の差 (偏差) を 2 乗して平均した数が分散で、そのルートが標準偏差です。2, 4, 4, 4, 5, 5, 7, 9 の 8 個なら、平均は 5、分散は 4、標準偏差は 2 です。データを母集団から取った一部と見て n − 1 で割ると、標準偏差は約 2.14 になります。

平均、分散、標準偏差を、表で 1 つずつ計算した数と、Python の statistics が出す数の両方で確かめます。

平均が同じ 2 つの API は、同じくらい速いのか

2 つの API の応答時間が、どちらも平均 100 ミリ秒だったとします。片方はいつも 95 から 105 ミリ秒、もう片方は 0 ミリ秒近くのときも 200 ミリ秒近くのときもあります。平均だけでは、この違いが見えません。

散らばりの大きさを 1 つの数で表すのが、標準偏差です。上の 2 つなら、前者の標準偏差は数ミリ秒、後者は数十ミリ秒になります。

この回では、平均、偏差、分散、標準偏差を表で 1 つずつ計算し、Python が出す数と同じになるかを確かめます。n で割るか n − 1 で割るかの違いと、外れ値に強い中央値も扱います。

平均から標準偏差まで

平均と偏差

平均は、値を全部足して個数で割った数です。2, 4, 4, 4, 5, 5, 7, 9 の 8 個なら、合計 40 を 8 で割って 5 です。

偏差は、各値から平均を引いた数です。平均より大きい値はプラス、小さい値はマイナスになります。偏差を全部足すと、いつも 0 になります。平均の決め方から、プラスとマイナスがちょうど打ち消し合うからです。そのため、偏差をそのまま平均しても散らばりは測れません。

分散と標準偏差

打ち消し合わないように、偏差を 2 乗してから平均した数が分散です。分散のルートを取った数が標準偏差です。

値偏差 (値 − 5)偏差の 2 乗
2−39
4−11
4−11
4−11
500
500
724
9416
合計032

分散は 32 ÷ 8 = 4、標準偏差は √4 = 2 です。

分散は 2 乗した数なので、単位も 2 乗になります (ミリ秒なら「ミリ秒の 2 乗」)。ルートを取ると元の単位に戻るので、「平均 100 ミリ秒、標準偏差 5 ミリ秒」のように、平均と並べて読めます。

n で割るか、n − 1 で割るか

上の計算は、偏差の 2 乗の合計を個数 n で割りました。これを母分散と呼びます。手元のデータが知りたい全部 (母集団) なら、こちらを使います。

手元のデータが、もっと大きな全体から取った一部 (標本) で、全体の散らばりを見積もりたいときは、n − 1 で割ります。これを不偏分散と呼びます。標本の平均は標本の値に寄るので、偏差の 2 乗が全体の場合より小さく出やすく、n − 1 で割ってその分を補います。

上の 8 個を n − 1 = 7 で割ると、分散は 32 ÷ 7 ≒ 4.57、標準偏差は約 2.14 です。道具によって、どちらが既定かが違います。

道具n で割るn − 1 で割る
Python の statisticspstdevstdev
NumPystd (既定の ddof=0)std(ddof=1)
pandasstd(ddof=0)std (既定の ddof=1)
ExcelSTDEV.PSTDEV.S

同じデータでも NumPy と pandas で違う数が出るのは、この既定の違いのためです。

外れ値に強い中央値

中央値は、値を小さい順に並べた真ん中の値です。個数が偶数なら、真ん中の 2 つの平均です。平均と標準偏差は、とても大きな値が 1 つ混ざるだけで大きく動きますが、中央値はほとんど動きません。応答時間のように、まれに極端に遅い値が出るデータでは、平均と中央値を両方見ます。

標準化

各値から平均を引いて標準偏差で割った数を、標準化した値 (z) と呼びます。z = (値 − 平均) ÷ 標準偏差 です。上のデータの 9 は (9 − 5) ÷ 2 = 2 で、平均より標準偏差 2 つ分大きい値です。単位の違うデータ (ミリ秒とバイト) も、z にすれば同じ物差しで比べられます。テストの偏差値は、この z を 50 + 10z に直した数です。

範囲との違い

散らばりを最大値 − 最小値 (範囲) で測ることもできます。計算は簡単ですが、両端の 2 つの値だけで決まるので、外れ値が 1 つあると大きく変わります。標準偏差は全部の値を使いますが、偏差を 2 乗するので、やはり外れ値に引っ張られます。外れ値が多いデータでは、中央値と、真ん中の半分の幅 (四分位範囲) を使います。

動かして確かめる

1 本目は、表の計算をそのまま Python で書き、statistics の答えと照らします。statistics は Python に最初から入っている統計の道具です。

動かす 表の計算と statistics を比べる

python実行可能
出力

▶ 実行ボタンを押すと結果がここに表示されます

実行すると、次の通りに出ます

平均 5.0
偏差の合計 0.0
n で割る 4.0 2.0
pstdev 2.0
n-1 で割る 4.571
stdev 2.138

偏差の合計は 0 で、n で割った標準偏差 2.0 は pstdev と同じです。n − 1 で割ると約 2.138 で、stdev と同じです。

2 本目は、平均が同じ 2 つの API の応答時間を比べます。乱数の種 (seed) を決めておくと、何度動かしても同じ値が出ます。

動かす 平均が同じで散らばりが違う

python実行可能
出力

▶ 実行ボタンを押すと結果がここに表示されます

実行すると、次の通りに出ます

A 平均 100 標準偏差 2.9
B 平均 100 標準偏差 58.9

平均はどちらも約 100 ミリ秒ですが、標準偏差は A が約 3、B が約 59 です。平均だけを見ていたら、B の揺れに気付けません。

3 本目は、遅い値が 1 つ混ざったときです。

動かす 外れ値 1 つで平均と中央値はどう動くか

python実行可能
出力

▶ 実行ボタンを押すと結果がここに表示されます

実行すると、次の通りに出ます

10 個
 平均 100
 中央値 100.0
 標準偏差 2
11 個
 平均 364
 中央値 100
 標準偏差 834

3,000 ミリ秒の値が 1 つ入るだけで、平均は 100 から約 364 に、標準偏差は約 2 から約 834 に跳ねました。中央値は 100 のままです。

4 本目は、分散の別の求め方です。分散は「2 乗の平均 − 平均の 2 乗」でも出せますが、大きな数に小さな散らばりが乗ったデータで小数を使うと、答えが崩れます。

動かす 2 乗の平均から引くと崩れる

python実行可能
出力

▶ 実行ボタンを押すと結果がここに表示されます

実行すると、次の通りに出ます

0e+00 引き算 22.5 正しい 22.5
1e+08 引き算 22.0 正しい 22.5
1e+09 引き算 0.0 正しい 22.5

散らばりは同じなので、分散はどれも 22.5 のはずです。10 億 (1e9) を足したデータでは、引き算の答えが 0.0 になりました。小数は有効な桁が約 15〜17 桁で、10 億の 2 乗の差を取ると小さな散らばりの桁が消えるためです。statistics の pvariance は、この崩れが出ないように計算するので 22.5 が出ます。自分で書くときは、2 乗の平均から引く式を使わず、先に平均を引いてから 2 乗します。平均を引くと値が小さくなり、桁が消えにくくなります。

平均と標準偏差で外れる所

個数が 0 と 1

データが 1 個のとき、n で割る標準偏差は 0 です。n − 1 で割ると 0 で割ることになるので、Python の stdev はエラーを出します。データが 0 個なら、平均も標準偏差も決まりません。

動かす 0 個と 1 個のデータ

python実行可能
出力

▶ 実行ボタンを押すと結果がここに表示されます

実行すると、次の通りに出ます

pstdev [5] 0.0
stdev [5] エラー
pstdev [] エラー
stdev [] エラー

監視の集計で、ある時間帯の件数が 0 か 1 になることはよくあります。その場合を先に分けて書きます。

標準偏差が同じでも形は違う

標準偏差は散らばりの大きさだけを表し、形は表しません。左右対称の山でも、ほとんどが速く少しだけ極端に遅いデータでも、同じ標準偏差になることがあります。「平均 ± 標準偏差 2 つの中に約 95%」は、正規分布 (5-2) に近い形のときの話で、どんなデータでも成り立つわけではありません。どんな形でも言えるのは、チェビシェフの不等式による「平均 ± 標準偏差 k 個の外にあるのは、多くても 1/k^2」までです (k = 2 なら多くても 25%)。

単位が違う散らばりを比べる

ミリ秒の標準偏差とバイトの標準偏差は、数を並べても比べられません。比べるなら、標準化した z か、標準偏差を平均で割った数 (変動係数) を使います。

仕事でどう使うか

平均と標準偏差を使う場面は、次の通りです。

  • 応答時間の揺れ。平均と一緒に標準偏差か、遅い方から 1% の値 (99 パーセンタイル) を見る。平均だけのダッシュボードは、一部の利用者の遅さを隠す
  • 監視のしきい値。「直近の平均 + 標準偏差 3 つ」を超えたら知らせる、のように決める。外れ値が多いデータでは、中央値を使う方法に替える
  • 機械学習の前処理。特徴量を標準化 (平均 0、標準偏差 1) してから学習させると、桁の大きい特徴量に引っ張られにくくなる
  • A/B テスト。2 つの群の平均の差が、散らばりに比べて大きいかを見る。散らばりが大きいほど、差を言い切るには多くのデータが要る
  • 性能の測り方。ベンチマークを何回か走らせ、平均と標準偏差を並べて書く。1 回だけの数は、揺れの中の 1 点にすぎない

よくある問い

標準偏差はどうやって求めますか

平均を出し、各値から平均を引いて偏差を出し、偏差を 2 乗して平均した数 (分散) のルートを取ります。2, 4, 4, 4, 5, 5, 7, 9 なら、平均 5、偏差の 2 乗の合計 32、分散 32 ÷ 8 = 4、標準偏差 2 です。

分散と標準偏差の違いは何ですか

標準偏差は分散のルートです。分散は単位が 2 乗になるので、元のデータと並べて読むときは標準偏差を使います。計算の途中や、式で扱うときは分散の方が便利です。

標準偏差が大きいとどういう意味ですか

値が平均から離れて散らばっているという意味です。応答時間なら、速いときと遅いときの差が大きく、利用者によって体感が違います。標準偏差が 0 なら、全部の値が同じです。

試験の形で練習するには

統計検定 2 級の練習問題で、出題範囲の全体から選んだ問題を 4 択の形で解けます。分散、標準化、変動係数を試験の形で解くなら、分野別クイズの「1 変数データ」が向いています。この回はコードで意味を確かめる回、練習問題は試験の形で解く場所です。

確認クイズ

答えだと思う選択肢を押すと、その場で正誤と理由が開きます。3 問すべてに正しく答えると、この回は修了で、石が緑に変わります (この端末のブラウザに残ります)。間違えた問いは、あとから解き直せます。

1 問目

10, 12, 14, 16, 18 の 5 個のデータを、母集団の全部とみなします。標準偏差に一番近いのはどれですか。

2 問目

応答時間のデータに、まれに極端に遅い値が混ざります。ふだんの速さを表すのに、平均より向いている数はどれですか。

3 問目

このコードを動かすと何が出ますか。

import statistics as st
d = [3, 3, 3, 3]
print(st.pstdev(d))

説明課題

「平均が同じ 2 つの API でも、標準偏差を見ないと判断を誤る理由」を、応答時間の例を使って 3 文で説明してください。書いたら、下の模範解答を開いて比べてください。

模範解答

自分の説明を書いてから開いて、比べてください。

この回の先の一歩

平均だけでなく散らばりも見られると、「平均は速いのに、ときどき遅い」処理に気付けます。いまの自分が転職までの道のどの段にいるかは、転職診断で確かめられます。

もっと深く

この回の続きを、ゆめさくのコースの章や道具で深められます。頁の中の確認クイズに答えたあと、手を動かす量を増やしたいときに使ってください。

一次資料

どれも 2026年10月30日に開いて、題と中身を確かめました。

次へ

分野 5 統計の回

  1. 5-1平均と分散と標準偏差偏差、分散、中央値この回
  2. 5-2正規分布釣り鐘の形、平均 ± 1σ、標準化頁で読む
  3. 5-3相関と回帰相関係数、最小二乗法頁で読む

分野 5 の頁へ戻るほかの分野を見る