代表値と散らばり|記述統計と標本

このページはプロモーション(広告)を含みます。

記述統計と標本(初級・読む25分+演習35分)

この授業のゴール

仕事でどう使うか

「平均はいくらか」だけでは、仕事の判断はできません。同じ平均でも、散らばりが違えば、必要な在庫・人員・余裕が変わるからです。

路線 この授業の使いどころ
DS(データサイエンティスト) レポートで『中心』と『散らばり』を対にして報告する。平均と標準偏差、または中央値と四分位範囲です。比較やA/Bテストの前提になります
ML(機械学習エンジニア) 特徴量の標準化(平均を引き標準偏差で割る)の中身そのもの。標準偏差が0の列は情報がなく、取り除く対象になります
DX(DX推進・AI企画) 処理時間や問い合わせ件数の『平均+ばらつき』から、人員の余裕や在庫の安全在庫を決める。KPI目標に幅を持たせる根拠になります
RS(研究者) 論文で『平均±標準偏差』と、n(標本サイズ)を併記する。標準偏差と標準誤差を区別して書く必要があります

分母が n か n−1 かで値が変わるため、使うツールの既定値を把握しておくことは、再現性の基本です。

前提

次の言葉を使います。

記号:$\sum$(シグマ)は『すべて足す』、$\bar{x}$(エックスバー)は標本平均、$\mu$(ミュー)は母平均です。

身近な状況:平均は同じ50人、でもまったく違う2つのカフェ

架空の2つのカフェ X店とY店の、直近5日間の来客数です。

日 1 2 3 4 5 合計 平均
X店 48 50 50 50 52 250 50
Y店 20 40 50 60 80 250 50

どちらも平均は50人です。しかしX店は毎日ほぼ50人で、Y店は20人の日も80人の日もあります。

『平均が同じ』という情報だけでは、この違いを判断できません。必要なのは、中心(代表値)と散らばり(ばらつき)の両方です。この授業では、この2つを数にする方法と、それぞれの限界を学びます。

直感的な説明:中心を1つ決め、中心からの距離で幅を測る

代表値は『データ全体を1つの数で言うなら』の答えで、3種類あります。

散らばりは『中心からどのくらい離れているか』を数にしたものです。

たとえ話の限界:重心は平均を直感的に説明しますが、実際のデータの平均が『一番ありふれた値』とは限りません。次の例題のように、全員とは違う値が平均になることもあります。

正確な定義:平均・分散・標準偏差・四分位・変動係数

$n$ 個のデータ $x_1,\dots,x_n$ について定義します。単位は元のデータと同じです(来客数なら人)。

平均:$\displaystyle \bar{x}=\frac{1}{n}\sum_{i=1}^{n}x_i$。偏差とは $x_i-\bar{x}$(平均からのずれ)で、偏差を全部足すと必ず0になります。そのため、2乗してから足します。

分散(ばらつきの大きさ)には、分母の違う2つの式があります。

$$\sigma^2=\frac{1}{N}\sum_{i=1}^{N}(x_i-\mu)^2\quad(\text{母分散}),\qquad s^2=\frac{1}{n-1}\sum_{i=1}^{n}(x_i-\bar{x})^2\quad(\text{標本分散})$$

Y店のデータ(20, 40, 50, 60, 80、$\bar{x}=50$)で計算します。偏差は −30, −10, 0, 10, 30、2乗は 900, 100, 0, 100, 900 で、合計は2000です。標本分散は $2000\div(5-1)=500$ 人²、標準偏差は $\sqrt{500}\approx22.4$ 人です。X店は偏差が −2, 0, 0, 0, 2、2乗の合計8、$s^2=8\div4=2$、$s\approx1.41$ 人。同じ平均50でも、散らばりは約16倍違います。

四分位数は、小さい順に並べて4等分する値です。第1四分位数 $Q_1$(下から25%)、$Q_2$=中央値、第3四分位数 $Q_3$(75%)。四分位範囲(IQR)は $Q_3-Q_1$ で、真ん中の半分のデータが入る幅です。この授業では、小さい順に並べた $n$ 個について、位置 $1+(n-1)p$ 番目の値(整数でないときは前後の値を比例配分)を $p$ 分位とする方法(Excelの QUARTILE.INC や NumPy の初期設定と同じ)を使います。

変動係数(CV)は $\mathrm{CV}=s\div\bar{x}$ で、単位のない比です。平均の大きさが違うデータの散らばりを比べるとき、標準偏差だけを比べると不公平になるので、これを使います。比尺度(0が『ない』)のデータに限ります。

加重平均:グループごとの平均 $\bar{x}_g$ と件数 $n_g$ があるとき、全体の平均は $\sum_g n_g\bar{x}_g\div\sum_g n_g$ です。グループ平均の単純な平均は、件数が違うと誤りになります。

段階付き例題:(2, 2, 2, 10) を最初から最後まで

問題:4人の1日の問い合わせ件数が 2, 2, 2, 10 件でした。代表値と散らばりを求めます。

ステップ1:代表値。
- 平均:$(2+2+2+10)\div4=4$ 件。
- 中央値:小さい順に 2, 2, 2, 10。真ん中の2つ(2番目と3番目)の平均で 2 件。
- 最頻値:2 件(3回)。

平均の4件は、4人のうち誰の件数でもありません。1件の大きな値(10)が平均を動かしています。

ステップ2:偏差と2乗。 偏差は $-2, -2, -2, +6$(合計0)。2乗は 4, 4, 4, 36。合計は 48。

ステップ3:分散と標準偏差。
- 4人が『母集団の全数』なら母分散 $48\div4=12$ 件²、標準偏差は $\sqrt{12}\approx3.46$ 件。
- 4人が『標本』なら標本分散 $48\div3=16$ 件²、標準偏差は $\sqrt{16}=4$ 件。

ステップ4:四分位範囲を出す。 別のデータ 3, 5, 6, 7, 9, 10, 12, 15, 21(9日間の来客数)で確認します。$n=9$ なので、$Q_1$ は $1+8\times0.25=3$ 番目の6、中央値は5番目の9、$Q_3$ は $1+8\times0.75=7$ 番目の12。IQR は $12-6=6$ です。

import numpy as np

x = [3, 5, 6, 7, 9, 10, 12, 15, 21]
q1, q2, q3 = np.percentile(x, [25, 50, 75])
print("Q1, 中央値, Q3:", q1, q2, q3)
print("IQR:", q3 - q1)
print("平均:", round(np.mean(x), 2), " 範囲:", max(x) - min(x))

出力は『Q1, 中央値, Q3: 6.0 9.0 12.0』『IQR: 6.0』『平均: 9.78 範囲: 18』です。np.percentile(データ, [25, 50, 75]) は、パーセント指定で分位点を返す関数です。

ステップ5:結果を読む。 平均9.78と中央値9は近く、IQR 6 は『真ん中の半分の日は来客数6〜12人の範囲(幅6人)に入る』ことを表します。最大値21に引っ張られて範囲は18ですが、IQRは影響を受けにくい。2つの散らばりを使い分けます。

操作して理解する:なぜ n−1 で割るのか、ツールの既定値は?

標本の分散を n で割ると、母分散より小さめに出る傾向があります。標本の平均 $\bar{x}$ は、その標本のデータに最も近い中心なので、母平均からの距離よりも小さくなるためです。n−1 で割ると、平均すると母分散に一致します(不偏)。

小さな母集団で、全部の場合を数えて確かめます。母集団を (2, 2, 2, 10)(母分散12)とし、2個を復元抽出(同じ要素を再び選べる抽出)した全16通りで、2つの式の平均を比べます。product(pop, repeat=2) は、pop から2個を選ぶ全16通りの順列を返します。

from itertools import product

pop = [2, 2, 2, 10]
mu = sum(pop) / 4
sigma2 = sum((x - mu) ** 2 for x in pop) / 4        # 母分散

v_n, v_n1 = [], []
for s in product(pop, repeat=2):                    # 16通り
    m = sum(s) / 2
    ss = sum((x - m) ** 2 for x in s)               # 偏差の2乗和
    v_n.append(ss / 2)                              # 分母 n
    v_n1.append(ss / 1)                             # 分母 n-1

print("母分散:", sigma2)
print("分母n の平均:", sum(v_n) / 16)
print("分母n-1 の平均:", sum(v_n1) / 16)

出力は『母分散: 12.0』『分母n の平均: 6.0』『分母n-1 の平均: 12.0』です。分母 n は平均して母分散の半分($(n-1)/n=1/2$ 倍)に出て、n−1 なら母分散に一致します。

次に、ツールの既定値を確認します。

import numpy as np
import pandas as pd

x = [2, 2, 2, 10]
print("np.var 既定      :", np.var(x))
print("np.var ddof=1    :", np.var(x, ddof=1))
print("pandas var 既定  :", pd.Series(x).var())
print("np.std 既定      :", round(np.std(x), 4))
print("np.std ddof=1    :", np.std(x, ddof=1))

出力は、12.0、16.0、16.0、3.4641、4.0 です。ddof(delta degrees of freedom)は『分母から引く数』で、ddof=1 なら n−1 で割ります。NumPy の既定は ddof=0、pandas の既定は ddof=1 です。同じ式のつもりで、結果が異なります。

試してみましょう。(1) x の10を20に変えると、中央値と平均はどう動くでしょう(中央値は2のまま、平均は6.5)。(2) 全部の値を2倍にすると、標準偏差は何倍になりますか(2倍。分散は4倍)。

発展:自由度、分位点の定義、他の平均

自由度の考え方:偏差 $x_i-\bar{x}$ の n 個の値は、合計が0という制約があるため、自由に決められるのは n−1 個です。分母の n−1 は、この『自由に動ける数』に対応します。ただし $s^2$ が不偏でも、標準偏差 $s$(平方根)は母標準偏差の不偏推定にはなりません(小さめに出る)。n が小さいときは意識します。

分位点の定義は1つではありません。この授業の方法のほかに、データを半分に分けてそれぞれの中央値を取る方法などがあり、n が小さいと値が異なります。統計ソフトの種類・版によって既定が違うため、レポートでは方法を明記します。

他の平均:
- 幾何平均:成長率や倍率の平均に使う。2年間で売上が1.2倍と0.8倍になったとき、年平均成長率は $\sqrt{1.2\times0.8}\approx0.98$(約2%減)で、算術平均の1.0とは違う。
- 調和平均:速度や単価(1個あたり)の平均に使う。F1スコアは適合率と再現率の調和平均です(「混同行列と各指標」(有料版))。
- トリム平均:両端の一部を除いた平均。外れ値に強い(外れ値と頑健性)。

標準偏差と標準誤差:標準偏差はデータそのもののばらつき。標準誤差は標本平均のばらつきで、標準偏差を $\sqrt{n}$ で割って求めます(標本分布・推定・信頼区間(有料版))。論文やレポートでは混同しやすい点です。

よくある失敗

失敗1:分散の分母(n と n−1)とツールの既定値を確認しない

誤った例:標本4件 (2, 2, 2, 10) の分散を np.var(x) で求め、『標本分散は12』と報告する。

import numpy as np
x = [2, 2, 2, 10]
print(np.var(x))            # 12.0 ← 分母n(母分散の式)
print(np.var(x, ddof=1))    # 16.0 ← 分母n-1(標本分散)

誤りの理由:np.var の既定は分母 n です。標本から母集団の分散を推定したいなら、標本分散(分母 n−1)が必要で、16 になります。一方で pandas の .var() は既定で n−1 なので、ツールを変えると値が変わります。

直し方:使う関数の既定値を確認し、レポートに『分母 n−1(不偏分散)』と明記する。ddof を毎回書く習慣にする。

失敗2:平均を『典型的な値』として報告する

誤った例:問い合わせ件数 2, 2, 2, 10 を『平均4件』と報告する。

誤りの理由:4人のうち3人は2件で、4件の人は誰もいません。平均は大きな1件に引っ張られます。年収や購入額のように右に裾が長いデータでも同じ現象が起こります。

直し方:中央値(2件)を併記する。『中央値2件、平均4件で、1人だけ10件』と分布の特徴を一言添える。平均を使うのは、合計が重要な場合(総件数=平均×人数の見積もりなど)に向いています。

失敗3:グループの平均を単純平均して全体の平均とする

誤った例:クラスA(30人)の平均60点、クラスB(20人)の平均80点から、全体の平均を (60+80)÷2=70点と報告する。

import numpy as np
means = [60, 80]
sizes = [30, 20]
print("単純平均:", np.mean(means))
print("加重平均:", np.average(means, weights=sizes))

出力は『単純平均: 70.0』『加重平均: 68.0』です。

誤りの理由:クラスAのほうが人数が多いので、全体の平均はAに近くなるはずです。合計点は 60×30+80×20=3400 点で、人数は50人、平均は 3400÷50=68点です。

直し方:グループごとの『平均×件数』を足して、全体の件数で割る。グループ平均や率を平均するときは、必ず件数(分母)で重みを付けます。

まとめ

用語

偏差(deviation)

各値と平均との差(x−平均)。全部足すと必ず0になる。

分散(variance)

偏差の2乗の平均的な大きさ。母分散は分母N、標本分散(不偏分散)は分母n−1。単位は元の2乗。

標準偏差(standard deviation)

分散の平方根。元のデータと同じ単位で散らばりを表す。

四分位範囲(interquartile range (IQR))

第3四分位数と第1四分位数の差。真ん中の半分のデータが入る幅で、外れ値に強い。

変動係数(coefficient of variation (CV))

標準偏差÷平均。単位のない比で、平均の違うデータの相対的な散らばりを比べる。

加重平均(weighted mean)

各グループの平均を件数などの重みで合算した平均。

よくある質問

平均と中央値は、どう使い分ければよいですか。

合計や総量を見積もるときは平均、典型的な水準を伝えるときは中央値が向いています。分布が左右対称なら近い値になります。差が大きいときは、右(または左)に裾が長いか、外れ値があるサインなので、両方を併記します。

分散を2乗にするのはなぜですか。絶対値ではだめですか。

偏差をそのまま足すと0になるため、符号を消す必要があります。絶対値を使う平均絶対偏差もありますが、2乗は微分しやすく、理論(正規分布など)と相性が良いため標準的に使われます。2乗は大きなずれをより重く扱う性質もあります。

分母が n と n−1 のどちらかは、どう判断しますか。

手元のデータが母集団の全数で、その集団そのものを記述したいなら n。標本から母集団の分散を推定したいなら n−1。機械学習のライブラリは既定が異なるため、ドキュメントで確認します。多くの実務では標本なので n−1 を使います。

標準偏差が小さいことは、良いことですか。

文脈によります。製造の品質なら小さいほど安定していて良い。一方、店舗の来客数で標準偏差が小さければシフト管理が楽ですが、成長の余地がないとも読めます。標準偏差の大小自体に善悪はなく、目的との関係で解釈します。

標準偏差は、データが正規分布でないと使えませんか。

計算はいつでもできます。ただし『平均±2標準偏差に約95%が入る』のような読み方は、左右対称で山が1つの分布でのみ当てはまります。右に裾が長いデータでは、四分位範囲などの併記が有効です。

実務で、散らばりはどう使われますか。

安全在庫(平均需要+標準偏差の何倍か)、目標の許容幅、A/Bテストの必要サンプル数、特徴量の標準化などに使われます。『平均はいくらか』と『どのくらいぶれるか』を対で報告する習慣が重要です。

確認問題

問1 4件のデータ (2, 2, 2, 10) を標本として、標本分散(不偏分散)を求めるとどれか。

  1. ① 16
  2. ② 12
  3. ③ 4
  4. ④ 48
解答と解説

正解:①

偏差の2乗和は 4+4+4+36=48。標本分散は分母 n−1=3 で 48÷3=16 です。12は母分散(分母4)です。

問2 年収のデータは、少数の高収入者がいて右に裾が長い。『典型的な年収』を表すのに、まず考えるべき代表値はどれか。

  1. ① 平均
  2. ② 中央値
  3. ③ 最大値
  4. ④ 合計
解答と解説

正解:②

右に裾が長いデータでは、平均が高収入者に引っ張られます。中央値は真ん中の人の値で、典型的な水準を表しやすいです。

問3 売上(千円)の標準偏差が40のとき、正しい記述はどれか。

  1. ① 標準偏差の単位は千円²である
  2. ② 標準偏差は単位を持たない
  3. ③ 標準偏差の単位は千円である
  4. ④ 標準偏差の単位は%である
解答と解説

正解:③

標準偏差は分散の平方根なので、元のデータと同じ単位(千円)に戻ります。分散のほうが千円²です。

問4 クラスA(30人)の平均60点とクラスB(20人)の平均80点から、全体の平均を (60+80)÷2=70点と報告した。この報告の問題点はどれか。

  1. ① 問題はない
  2. ② 平均が大きい方を選ぶべきである
  3. ③ 全体の平均は計算できない
  4. ④ 人数の違いを無視しており、正しい全体平均は68点である
解答と解説

正解:④

全体の平均は合計点÷全員の人数=(60×30+80×20)÷50=68点です。人数の多いAの重みが大きくなります。

問5 NumPy の np.var(x) と pandas の pd.Series(x).var() に同じ標本データを入れると結果が異なる。主な理由はどれか。

  1. ① 既定の分母が異なる(NumPyは n、pandasは n−1)
  2. ② pandasのほうが計算誤差が大きい
  3. ③ NumPyは標準偏差を返す
  4. ④ pandasは欠損を0にして計算する
解答と解説

正解:①

np.var は ddof=0(分母 n)、pandasの var は ddof=1(分母 n−1)が既定です。どちらを使うか、毎回確認します。

問6 日次売上の標準偏差は、A店が40千円(平均200千円)、B店が20千円(平均50千円)である。相対的な散らばりが大きいのはどちらか。

  1. ① A店。標準偏差が大きいから
  2. ② B店。変動係数が大きい(40%対20%)から
  3. ③ どちらも同じ
  4. ④ 比べられない
解答と解説

正解:②

変動係数は標準偏差÷平均で、A店20%、B店40%。平均の大きさが違うので、標準偏差の絶対値ではなく相対値で比べます。

次に学ぶこと

次は 外れ値と頑健性 で、平均や標準偏差を大きく動かす外れ値と、外れ値に強い指標(中央値・IQR・トリム平均など)を扱います。戻るなら 分布とヒストグラム で分布の形を確認します。

この授業の確認問題だけで習得とはしません。ST01 の総合テストと別データの自力課題で判定します。標準偏差と標準誤差の違いは 標本分布・推定・信頼区間(有料版) で学びます。

キャリア学習:データサイエンティスト・機械学習エンジニア・DX推進・研究者を目指す人の学習アプリ。164モジュール・984授業を、ブラウザで動くSQLとPythonの演習で。基礎と各分野の最初のモジュールは無料。全部は2,980円の買い切り。

アプリを無料で開く有料版と無料版の違い