代表値と散らばり|記述統計と標本
このページはプロモーション(広告)を含みます。
記述統計と標本(初級・読む25分+演習35分)
この授業のゴール
- 平均・中央値・最頻値を手計算し、それぞれが何を表すかを使い分けて説明できる
- 偏差・分散・標準偏差を、母集団の式(分母n)と標本の式(分母n−1)の両方で計算できる
- 四分位数と四分位範囲(IQR)を求め、変動係数で単位の違うデータの散らばりを比べられる
- グループ平均を件数で重みを付けて全体の平均にでき、ツールの既定値(ddof)の違いを確認できる
仕事でどう使うか
「平均はいくらか」だけでは、仕事の判断はできません。同じ平均でも、散らばりが違えば、必要な在庫・人員・余裕が変わるからです。
| 路線 | この授業の使いどころ |
|---|---|
| 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人の日もあります。
- X店は、アルバイトを毎日同じ人数にしても大丈夫です。
- Y店は、多い日に人が足りず、少ない日に人が余ります。シフトを日ごとに調整する必要があります。
『平均が同じ』という情報だけでは、この違いを判断できません。必要なのは、中心(代表値)と散らばり(ばらつき)の両方です。この授業では、この2つを数にする方法と、それぞれの限界を学びます。
直感的な説明:中心を1つ決め、中心からの距離で幅を測る
代表値は『データ全体を1つの数で言うなら』の答えで、3種類あります。
- 平均:重心です。数直線に同じ重さのおもりを置いたとき、シーソーが釣り合う位置。すべての値を使うので、大きな値に引っ張られます。
- 中央値:小さい順に並べたときの真ん中。半分の値がこれ以下です。極端な値に影響されにくい。
- 最頻値:最も多く現れる値。カテゴリにも使えます。
散らばりは『中心からどのくらい離れているか』を数にしたものです。
- 最大と最小の差(範囲)はわかりやすいですが、2つの値だけで決まるため、外れ値に弱い。
- 各値の中心からの距離をならした標準偏差は、すべての値を使う標準的な指標。
- 真ん中の半分の値がおさまる幅(四分位範囲)は、外れ値に強い。
たとえ話の限界:重心は平均を直感的に説明しますが、実際のデータの平均が『一番ありふれた値』とは限りません。次の例題のように、全員とは違う値が平均になることもあります。
正確な定義:平均・分散・標準偏差・四分位・変動係数
$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{標本分散})$$
- 母分散:手元のデータが母集団の全数($N$ 件)で、母平均 $\mu$ が分かっているときに使う。
- 標本分散(不偏分散):手元のデータが標本($n$ 件)で、母集団の分散を推定したいときに使う。分母が $n-1$ になる。
- 分散の単位は元の単位の2乗(人²)。標準偏差は分散の平方根($\sigma=\sqrt{\sigma^2}$、$s=\sqrt{s^2}$)で、元の単位(人)に戻ります。
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点です。
直し方:グループごとの『平均×件数』を足して、全体の件数で割る。グループ平均や率を平均するときは、必ず件数(分母)で重みを付けます。
まとめ
- 代表値は平均(重心)・中央値(真ん中)・最頻値(最も多い値)。平均は大きな値に引っ張られる。
- 分散は偏差の2乗の平均。母分散は分母 N、標本分散は分母 n−1。標準偏差は分散の平方根で元の単位に戻る。
- NumPy の既定は ddof=0、pandas の既定は ddof=1。使う関数の既定値を確認し、レポートに明記する。
- 四分位範囲(IQR)は Q3−Q1。変動係数(標準偏差÷平均)は単位のない比で、平均の違うデータの散らばりを比べられる。
- グループ平均を合算するときは、件数で重み付けする(加重平均)。
用語
- 偏差(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) を標本として、標本分散(不偏分散)を求めるとどれか。
- ① 16
- ② 12
- ③ 4
- ④ 48
解答と解説
正解:①
偏差の2乗和は 4+4+4+36=48。標本分散は分母 n−1=3 で 48÷3=16 です。12は母分散(分母4)です。
問2 年収のデータは、少数の高収入者がいて右に裾が長い。『典型的な年収』を表すのに、まず考えるべき代表値はどれか。
- ① 平均
- ② 中央値
- ③ 最大値
- ④ 合計
解答と解説
正解:②
右に裾が長いデータでは、平均が高収入者に引っ張られます。中央値は真ん中の人の値で、典型的な水準を表しやすいです。
問3 売上(千円)の標準偏差が40のとき、正しい記述はどれか。
- ① 標準偏差の単位は千円²である
- ② 標準偏差は単位を持たない
- ③ 標準偏差の単位は千円である
- ④ 標準偏差の単位は%である
解答と解説
正解:③
標準偏差は分散の平方根なので、元のデータと同じ単位(千円)に戻ります。分散のほうが千円²です。
問4 クラスA(30人)の平均60点とクラスB(20人)の平均80点から、全体の平均を (60+80)÷2=70点と報告した。この報告の問題点はどれか。
- ① 問題はない
- ② 平均が大きい方を選ぶべきである
- ③ 全体の平均は計算できない
- ④ 人数の違いを無視しており、正しい全体平均は68点である
解答と解説
正解:④
全体の平均は合計点÷全員の人数=(60×30+80×20)÷50=68点です。人数の多いAの重みが大きくなります。
問5 NumPy の np.var(x) と pandas の pd.Series(x).var() に同じ標本データを入れると結果が異なる。主な理由はどれか。
- ① 既定の分母が異なる(NumPyは n、pandasは n−1)
- ② pandasのほうが計算誤差が大きい
- ③ NumPyは標準偏差を返す
- ④ pandasは欠損を0にして計算する
解答と解説
正解:①
np.var は ddof=0(分母 n)、pandasの var は ddof=1(分母 n−1)が既定です。どちらを使うか、毎回確認します。
問6 日次売上の標準偏差は、A店が40千円(平均200千円)、B店が20千円(平均50千円)である。相対的な散らばりが大きいのはどちらか。
- ① A店。標準偏差が大きいから
- ② B店。変動係数が大きい(40%対20%)から
- ③ どちらも同じ
- ④ 比べられない
解答と解説
正解:②
変動係数は標準偏差÷平均で、A店20%、B店40%。平均の大きさが違うので、標準偏差の絶対値ではなく相対値で比べます。
次に学ぶこと
次は 外れ値と頑健性 で、平均や標準偏差を大きく動かす外れ値と、外れ値に強い指標(中央値・IQR・トリム平均など)を扱います。戻るなら 分布とヒストグラム で分布の形を確認します。
この授業の確認問題だけで習得とはしません。ST01 の総合テストと別データの自力課題で判定します。標準偏差と標準誤差の違いは 標本分布・推定・信頼区間(有料版) で学びます。
キャリア学習:データサイエンティスト・機械学習エンジニア・DX推進・研究者を目指す人の学習アプリ。164モジュール・984授業を、ブラウザで動くSQLとPythonの演習で。基礎と各分野の最初のモジュールは無料。全部は2,980円の買い切り。
アプリを無料で開く有料版と無料版の違い