「standard deviation」は統計データ分析の文脈で扱う重要概念のひとつ。 本ページでは「standard deviation」を取り巻く中核キーワードを以下にチップで一覧化する。 各キーワードは関連する概念・手法・道具立てを含み、 文献検索や学習計画の起点になる。
これらのキーワードは「standard deviation の理解 → 適用 → 検証」のプロセスを構成する。 各章で詳しく解説する。
🍰 まずはやさしく
データのばらつきを表すものさしです。
平均からどれくらいズレているかを知るために使います。
テストの点数がみんな同じか、バラバラかを調べます。
この章では標準偏差の結論を短くまとめます。
標準偏差(standard deviation, SD, σ)は、 分散の平方根。 「平均からの典型的なズレの大きさ」を、 元の単位で表します。 「日本の年間気温の標準偏差は 4℃」のように直感的に使えるのが強み。
正規分布での 68-95-99.7則:データが正規分布に従うなら、
これがあるおかげで「2σ より外」は珍しい、 「3σ より外」は超レアと判定できます。 統計的品質管理や外れ値検出の基礎。
標準化(z-score):(値 − 平均) / SD で z値を計算すると、 単位を持たない「平均からの SD 単位での距離」になります。 単位の違う変数の比較・統合に必須の操作。
🍰 まずはやさしく
データの広がりを示す重要な言葉です。
分析の中で正しく意味を理解するために使います。
都道府県のデータなど、実際の数字で考えます。
このページでは定義から注意点までを順番に読みます。
論文中に 「標準偏差」として登場する用語。
標準偏差 とは:「平均からのズレ」の典型的な大きさ。分散の平方根。データの広がりを元の単位で表す。
本ページでは「standard deviation」を扱う。 統計データ分析コンペティション (2026) の教材で、 SSDSE-B-2026 (47 都道府県 × 複数年 × 100 超列) の実データを使った再現可能な学習を目指す。
「standard deviation」は統計・データサイエンスの体系における重要概念のひとつ。 本ページは「定義・直感・数式・実装・落とし穴・関連手法」の 6 視点で構成され、 各視点は独立して読めるが順序通り読むと体系的な理解が得られる。
🍰 まずはやさしく
ばらつきを使いやすい単位で表したものです。
直感的にデータの散らばり具合を掴むために使います。
お小遣いの金額が平均からいくらズレているか考えます。
この章では標準偏差を感覚的に理解する方法を読みます。
標準偏差(standard deviation, σ)は分散の平方根。 分散は「単位の二乗」になってしまうので解釈が難しい。 平方根を取って元の単位に戻したものが標準偏差。 直感的には「平均からのズレの典型的な大きさ(平均からの平均的な距離)」と読む。
💡 例えば東北6県の食料費の分散が「8.09 千円²」と言われても直感的でない。 標準偏差「2.84 千円」と言えば、 「平均(80.8 千円)から±2.84千円くらい散らばっている」とすぐ分かる。
標準偏差 σ は「平均からのズレの典型的な大きさ」。 下のキャンバスでデータ点をドラッグ/クリック追加/ダブルクリック削除すると、 平均 μ を中心とした ±1σ・±2σ・±3σ の帯がヒストグラムに重ねてリアルタイム描画され、 各帯に入るデータの割合が更新されます。 正規分布に近ければ 68 / 95 / 99.7% に、 歪んだ分布ではそこからズレることを実データで体感してください。
💡 使い方:下段の丸い点をドラッグで移動、 グラフ上をクリックで点を追加、 点をダブルクリックで削除。 実データ(食料費)で 1 点を極端な値へ動かすと、 外れ値が σ を一気に押し上げる様子(後述の ロバスト統計で扱う感度)が見えます。 「正規分布デモ」では σ スライダーで帯の広がりが変わり、 割合が 68 / 95 / 99.7% に収束することを確認できます(点数が多いデモではドラッグ編集は無効)。
🍰 まずはやさしく
分散(ばらつきの指標)にルートをかけた値です。
数学的に正しい大きさを計算するために使います。
部活の記録などの平均からの距離を正確に求めます。
この章では標準偏差を計算する数式について読みます。
標準偏差 (standard deviation, SD) は分散の正の平方根。 母集団の場合と標本の場合で定義が異なる。
$$\sigma = \sqrt{E[(X-\mu)^2]} = \sqrt{\sum_{x} (x-\mu)^2 p(x)}$$
これは「平均からの距離の二乗の期待値の平方根」 = 「平均からの典型距離」と読める。
$$s = \sqrt{\frac{1}{n-1}\sum_{i=1}^n (x_i - \bar{x})^2}$$
.std() は ddof=1 (デフォルト)、 numpy の .std() は ddof=0$$z_i = \frac{x_i - \bar{x}}{s}$$
1変数の標準偏差を多変量に拡張したのがマハラノビス距離。 異常検知、 クラスタリング、 多変量正規分布で頻繁に登場。
$$ d_M(x) = \sqrt{(x - \mu)^T \Sigma^{-1} (x - \mu)} $$
1変数の場合 d_M = |x - μ|/σ = |z-score| に一致。 多変量では「相関構造を考慮した距離」になります。
金融工学では標準偏差を「ボラティリティ(volatility)」と呼び、 リスクの基本指標として使います。
$$ \text{Sharpe Ratio} = \frac{\bar{r} - r_f}{\sigma_r} $$
リターンの平均をリスク(標準偏差)で割ったもの。 「1単位のリスク当たり、 どれだけのリターンか」を測定。 Markowitz の現代ポートフォリオ理論の中核。
「ある期間内に最大いくら損する可能性があるか」を標準偏差ベースで計算:
$$ \text{VaR}_{95\%} = \mu - 1.65 \sigma $$
95%信頼度での最大損失額。 リスク管理の必須指標。
オプション価格モデルの主要パラメータは原資産のボラティリティ σ。 σ が大きいほどオプション価値は高くなる(不確実性のプレミアム)。
製造業の品質管理では、 標準偏差が中心的役割を果たします。
Shewhart の管理図では、 中心線(平均)と上下限(±3σ)を引き、 観測値がこの範囲外に出たら異常と判定:
「製造工程の許容範囲が ±6σ を超える」状態を目指す品質管理手法。 不良率は百万分の3.4 (3.4 ppm) という極めて厳しい基準。 モトローラ、 GE が実装して有名に。
$$ C_p = \frac{\text{USL} - \text{LSL}}{6\sigma} $$
仕様範囲(USL - LSL)を 6σ で割った指標。 Cp ≥ 1.33 で「合格水準」、 ≥ 2.0 でシックスシグマ水準。
標準偏差以外にも、 ばらつきを測る指標があります:
| 指標 | 定義 | 外れ値耐性 | 使い時 |
|---|---|---|---|
| 標準偏差 σ | √(平均偏差の二乗) | 弱い | 正規分布、 一般的分析 |
| 範囲 (range) | max - min | 最弱 | 概観把握のみ |
| IQR (四分位範囲) | Q3 - Q1 | 強い | 歪んだ分布、 外れ値あり |
| MAD (中央絶対偏差) | median(|xᵢ - median|) | 最強 | ロバスト統計 |
正規分布の場合:σ ≈ IQR / 1.349 ≈ 1.4826 × MAD という換算式があります。
$$ \sigma = \sqrt{\frac{1}{n} \sum_{i=1}^{n} (x_i - \bar{x})^2} $$
または不偏推定として:
$$ s = \sqrt{\frac{1}{n - 1} \sum_{i=1}^{n} (x_i - \bar{x})^2} $$
| 記号 | 読み方 | 意味 |
|---|---|---|
| σ | シグマ(小文字) | 母標準偏差 |
| s | エス | 標本標準偏差 |
| √ | ルート/平方根 | 2乗してその値になる数 |
データが正規分布に従うとき、 標準偏差にはとても便利な性質があります:
| 範囲 | 含まれる確率 | 直感的な意味 |
|---|---|---|
| μ ± 1σ | 約 68% | 「典型的」な範囲 |
| μ ± 2σ | 約 95% | 「ほぼ全て」の範囲 |
| μ ± 3σ | 約 99.7% | 「ほぼ確実」、 外側は外れ値候補 |
異なる単位の変数(身長 cm と体重 kg)を直接比較できません。 そこで「平均からのズレを標準偏差で割る」のが標準化。
$$ z = \frac{x - \mu}{\sigma} $$
標準化されたデータは平均0、 標準偏差1になり、 「平均から何σ離れているか」を表す無次元の数値になります。
日本の試験で使う偏差値は、 z-score を変形したもの:
$$ T = 50 + 10z $$
標準偏差は絶対的なばらつきを表しますが、 「身長の SD = 10cm」と「給料の SD = 10万円」を比較できません。 そこで変動係数(coefficient of variation, CV):
$$ CV = \frac{\sigma}{\mu} \times 100 \% $$
標準偏差を平均で割った無次元の量。 「平均に対する何%のばらつき」を表します。 単位の異なる変数同士を比較できる便利な指標。
💡 SSDSE 食料費の場合: CV = 5.84 / 80.60 = 7.2%。 「都道府県間の食料費のばらつきは平均の約7%」。
不偏分散 s² の期待値は母分散 σ² に等しい(E[s²] = σ²)が、 √s² の期待値は σ に等しくないのです。 これは Jensen の不等式に起因します:
$$ \mathbb{E}[\sqrt{s^2}] \le \sqrt{\mathbb{E}[s^2]} = \sigma $$
つまり s は σ を過小評価する傾向があります。 正規分布の場合の補正係数 c₄ を使えば不偏標準偏差を得られますが、 実務では補正なしの s を使うのが普通(差は通常小さい)。
$$ s_{\text{unbiased}} = \frac{s}{c_4(n)}, \quad c_4(n) = \sqrt{\frac{2}{n-1}} \cdot \frac{\Gamma(n/2)}{\Gamma((n-1)/2)} $$
例:n=10 では c₄ ≈ 0.9727、 n=30 では c₄ ≈ 0.9914。 n が大きければ補正不要。
多くの機械学習アルゴリズムは入力スケールに敏感(kNN, SVM, ニューラルネット, PCA, 線形回帰)。 標準化は前処理の必須技術:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | # ── この抜粋で使うデータを用意します ── import pandas as pd from sklearn.model_selection import train_test_split from sklearn.preprocessing import StandardScaler import pandas as pd df = pd.read_csv('data/raw/SSDSE-B-2026.csv', encoding='cp932', skiprows=[1]) df = df[df['SSDSE-B-2026'] == 2023] # 2023 年の 47 都道府県 X = df[['A1101', 'A1303']].astype(float).values # 総人口・65歳以上人口 X_train, X_test = train_test_split(X, test_size=0.3, random_state=42) scaler = StandardScaler() X_scaled = scaler.fit_transform(X_train) X_test_scaled = scaler.transform(X_test) # 同じスケーリングをテストにも # scaler.mean_ と scaler.scale_ に平均と標準偏差が記録される print('学習データの平均 :', scaler.mean_.round(1)) print('学習データの標準偏差:', scaler.scale_.round(1)) |
深層学習の各層の出力を標準化する技術。 各ミニバッチで平均と標準偏差を計算して使用。
ニューラルネットの重み初期化(Xavier, He など)は、 標準偏差の精密な制御に基づきます:
$$ W \sim N\left(0, \sigma^2 = \frac{2}{n_{\text{in}}}\right) \quad (\text{He初期化}) $$
予測値だけでなく、 予測の標準偏差も出すモデル(ガウス過程、 ベイジアンNN)。 「±σ の予測区間」で意思決定の信頼性を示せます。
Dropoutは「ノード出力に乗法的ノイズを加える」操作で、 これは標準偏差ベースの正則化と数学的に等価です。
変数によって平均と標準偏差の関係(変動係数 CV)が大きく異なります。 単位を持たない CV で「相対的なばらつき」を比較しましょう。
| 変数 | 平均 | SD(ddof=1) | CV = SD/平均 | 解釈 |
|---|---|---|---|---|
| 消費支出 | ≈ 29.6 万円 | ≈ 2.4 万円 | ≈ 0.08 | 県間ばらつき小 |
| 総人口 | ≈ 265 万人 | ≈ 280 万人 | ≈ 1.06 | 巨大な格差 |
| 気温 | ≈ 16.8 ℃ | ≈ 2.0 ℃ | ≈ 0.12 | 消費支出と同程度 |
1 2 3 4 5 6 7 | import pandas as pd df = pd.read_csv('data/raw/SSDSE-B-2026.csv', encoding='cp932', skiprows=[1]) d = df[df['SSDSE-B-2026'] == 2023] for c in ['L3221', 'A1101', 'B4101']: x = d[c].dropna() print(f'{c}: 平均={x.mean():.1f}, SD={x.std(ddof=1):.1f}, ' f'CV={x.std(ddof=1)/x.mean():.3f}') |
SSDSE-B-2026 の 2023 年 A1101 (総人口) について SD を計算する。
SD が平均より大きい (CV = 1.06) → ばらつきが平均水準を超える典型的な右に歪んだ分布。 これは「人口」が比率尺度かつ対数正規に近い分布だから。
| 県 | 人口 | z-score |
|---|---|---|
| 東京都 | 14,086,000 | +4.09 |
| 神奈川県 | 9,229,000 | +2.35 |
| 大阪府 | 8,763,000 | +2.19 |
| 愛知県 | 7,477,000 | +1.73 |
| 埼玉県 | 7,331,000 | +1.67 |
| 県 | 人口 | z-score |
|---|---|---|
| 鳥取県 | 537,000 | −0.75 |
| 島根県 | 650,000 | −0.71 |
| 高知県 | 666,000 | −0.71 |
| 徳島県 | 695,000 | −0.70 |
| 福井県 | 744,000 | −0.68 |
東京の z=+4.09 は「平均から 4 SD 以上離れている」 → 正規分布なら 99.99% タイル超 → 強い外れ値。 しかし対数正規分布ならありえる。 形状を見ずに z-score を解釈してはいけない例。
正規分布なら |z|<1 が約 68.3%、 |z|<2 が約 95.4%、 |z|<3 が約 99.7%。 SSDSE-B-2026 の人口データで実際の割合を確認すると:
💬 「1 SD 内」が理論より大幅に多く (87% vs 68%)、 「2 SD 内」が理論より少ない (94% vs 95%) → 右に歪んだ分布の典型。 平均近くにデータが集中し、 右裾の少数が SD を引き上げる。 正規分布の経験則は 分布が正規に近い場合のみ 適用可能。
このコードでやること: SSDSE-B-2026 の人口で経験則の検証を行う。
1 2 3 4 5 6 7 8 9 10 | import pandas as pd import numpy as np df = pd.read_csv('data/raw/SSDSE-B-2026.csv', encoding='cp932', skiprows=[1]) pop = df[df['SSDSE-B-2026'] == 2023]['A1101'].values mu, sd = pop.mean(), pop.std(ddof=1) z = (pop - mu) / sd for k in [1, 2, 3]: n = (np.abs(z) <= k).sum() print(f'|z|<={k}: {n}/{len(z)} = {n/len(z)*100:.1f}% (理論 {[68.3, 95.4, 99.7][k-1]}%)') |
📤 実行結果:
💬 経験則が崩れている → 対数変換するか、 中央値・IQR などのロバスト指標で要約する方が現実的。
分散 / SD の分母には n と n-1 の 2 つの流派がある。 これは「ベッセル補正」と呼ばれ、 標本から母集団を推定する際の偏りを修正する。
$$E\left[\frac{1}{n-1}\sum (x_i - \bar{x})^2\right] = \sigma^2$$
| ライブラリ | 関数 | デフォルト ddof | 変更 |
|---|---|---|---|
| pandas | df.std(), df.var() | 1 (不偏) | ddof=0 で母分散風 |
| numpy | np.std(), np.var() | 0 (母集団) | ddof=1 で不偏 |
| scipy | stats.tstd() | 1 | — |
| R | sd(), var() | 1 | — |
| Excel | STDEV.S / STDEV.P | 使い分け | 明示的 |
n が大きい (n > 30 程度) と ddof=0 と ddof=1 の差は小さい。 でも n=10 などでは 5% 以上差が出る。 学術論文では 常に不偏 (ddof=1) が原則。
このコードでやること: SSDSE-B-2026 の人口で ddof=0 と ddof=1 の差を計算する。
1 2 3 4 5 6 7 8 9 10 11 12 | import pandas as pd import numpy as np df = pd.read_csv('data/raw/SSDSE-B-2026.csv', encoding='cp932', skiprows=[1]) pop = df[df['SSDSE-B-2026'] == 2023]['A1101'] print(f'pandas .std() (ddof=1): {pop.std():,.1f}') print(f'pandas .std(ddof=0) : {pop.std(ddof=0):,.1f}') print(f'numpy .std() (ddof=0): {np.std(pop):,.1f}') print(f'numpy .std(ddof=1) : {np.std(pop, ddof=1):,.1f}') ratio = pop.std() / pop.std(ddof=0) print(f'比 (ddof=1 / ddof=0) = {ratio:.4f} (理論 √(n/(n-1)) = √(47/46) = {np.sqrt(47/46):.4f})') |
📤 実行結果:
💬 47 サンプルで ddof の違いは約 1.1% だが、 デフォルト値の違いで pandas と numpy の結果が食い違う点に注意。 報告時は必ず ddof を明記する。
$$\mathrm{SEM} = \frac{s}{\sqrt{n}}$$
SD はデータ自体のばらつき、 SEM (Standard Error of the Mean) は 平均の推定値のばらつき。 全く別物。
| 指標 | 何を測る | n の影響 | 用途 |
|---|---|---|---|
| SD | データ点のばらつき | 無関係 | 個体差・分布の幅 |
| SEM | 平均の不確実性 | $1/\sqrt{n}$ で減る | 信頼区間・群間比較 |
論文のエラーバーが SD か SEM かは必ず明記する。 SEM の方が小さくグラフが見栄えするので濫用されがちだが、 「データの幅」を示したいなら SD、 「平均の精度」なら SEM。
$$\mathrm{CV} = \frac{s}{|\bar{x}|}$$
単位を消した相対的なばらつき指標。 異なる単位の量を比較するときに使う。 比率尺度のみ意味を持つ (mean=0 や負の量では破綻)。
SSDSE-B-2026 の主要列で CV を計算すると:
💬 CV ≈ 1.05〜1.07 で 3 系列がほぼ同じ → 男女別に分けても都道府県間のばらつきの相対的大きさはほとんど変わらない (それぞれの値の分布が比例関係にある)。 これは「日本の人口分布は男女別でほぼ同じ形」を意味する。
SD は外れ値に弱い (二乗で罰するため)。 ロバストな代替指標として:
このコードでやること: SSDSE-B-2026 で SD と MAD と IQR を比較し、 ロバスト指標の安定性を体験する。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | import pandas as pd import numpy as np from scipy import stats df = pd.read_csv('data/raw/SSDSE-B-2026.csv', encoding='cp932', skiprows=[1]) pop = df[df['SSDSE-B-2026'] == 2023]['A1101'].values sd = pop.std(ddof=1) iqr = np.percentile(pop, 75) - np.percentile(pop, 25) mad = stats.median_abs_deviation(pop, scale='normal') # 1.4826 で補正済 print(f'SD = {sd:,.0f}') print(f'IQR = {iqr:,.0f} (正規なら SD × 1.35 = {sd*1.349:,.0f})') print(f'MAD (正規 scale) = {mad:,.0f} (正規なら SD と一致)') # 東京を除いた場合 pop_no_tokyo = pop[pop < 10_000_000] print(f'\n東京除外後:') print(f'SD = {pop_no_tokyo.std(ddof=1):,.0f} (約 {(1-pop_no_tokyo.std(ddof=1)/sd)*100:.1f}% 減)') print(f'MAD = {stats.median_abs_deviation(pop_no_tokyo, scale="normal"):,.0f}') |
📤 実行結果:
💬 SD は東京 1 個を除くだけで約 20% も減るが MAD の変化は約 5% にとどまる (923,661 → 872,511)。 これがロバスト指標の威力。 外れ値の影響を受けやすい問題では MAD や IQR を優先する。
都道府県別データを単純に集約すると「東京の 1 人」と「鳥取の 1 人」が同じ重みになる。 人口を重みにした加重 SD は:
$$s_w = \sqrt{\frac{\sum w_i (x_i - \bar{x}_w)^2}{\sum w_i}}$$ ただし $\bar{x}_w = \frac{\sum w_i x_i}{\sum w_i}$
応用例: 都道府県別の高齢化率を県別人口で加重平均すれば「日本人 1 人当たりが感じる平均的な高齢化率」が出る。 単純平均は「県別の値の平均」で別物。
SD は層内 SD と層間 SD に分解できる (ANOVA の原理):
$$\mathrm{Var}(X) = \mathrm{Var}(E[X \mid G]) + E[\mathrm{Var}(X \mid G)]$$
「全体ばらつき = 群間ばらつき + 群内ばらつきの平均」。 SSDSE で東日本 vs 西日本に分けると、 全体 SD のうち群内が大半 (約 90%) → 「東西」は人口のばらつきをほとんど説明していない。
合成データ [2,4,7,5,3] で標本 SD と母 SD を計算する。
1 2 3 4 | import numpy as np x = np.array([2,4,7,5,3]) print(f"標本 SD: {x.std(ddof=1):.3f}") print(f"母 SD: {x.std(ddof=0):.3f}") |
💬 手計算 (Step 2) と Python 出力が完全一致。
🎯 このコードでやること:標準偏差を numpy(既定 ddof=0、 ÷n)と pandas(既定 ddof=1、 ÷(n-1))で計算し、 両者の挙動差を z-score 変換まで含めて確認する。
📥 入力データ:arr = [10, 20, 30, 40, 50](平均 30 の単純なサンプル)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | import numpy as np import pandas as pd # numpy のデフォルトは ÷n arr = np.array([10, 20, 30, 40, 50]) print(np.std(arr)) # ÷n: 14.14 print(np.std(arr, ddof=1)) # ÷(n-1): 15.81 # pandas のデフォルトは ÷(n-1) s = pd.Series(arr) print(s.std()) # ÷(n-1): 15.81 print(s.std(ddof=0)) # ÷n: 14.14 # describe で要約 print(s.describe()) # 標準化(z-score) z = (s - s.mean()) / s.std() print(z) |
📤 実行結果:
💬 読み方:numpy と pandas で既定値が異なるのが最大の落とし穴。 標本 SD(推測統計用)が必要なら ddof=1 を明示する。 z-score は平均 0・分散 1 にスケール変換される。
1 2 3 4 5 6 7 | def fit_transform(X): mu = X.mean(axis=0) sigma = X.std(axis=0, ddof=0) sigma[sigma == 0] = 1.0 # ゼロ除算回避 return (X - mu) / sigma, mu, sigma X_scaled, mu, sigma = fit_transform(X) |
1 2 3 4 5 | def coefficient_of_variation(x): return x.std() / x.mean() * 100 cv_food = coefficient_of_variation(df['L322101']) print(f'食料費の変動係数: {cv_food:.2f}%') |
裾の長い分布(所得、 株価変動)では±2σの中に95%が入らない。 必ず分布の形を確認してから使う。
numpy のデフォルトと pandas のデフォルトが違う。 R のデフォルトは ÷(n-1)。 統一するには ddof を明示。
標準偏差は分散の平方根なので、 外れ値で大きく動きます。 中央値ベースの MAD を併用しましょう。
「身長のσ=10cm」と「体重のσ=10kg」は無関係。 比較には変動係数(CV)を使う。
n=5 程度では σ の推定値は大きくブレます。 χ²分布ベースの信頼区間を計算するか、 ブートストラップで確認。
機械学習で fit_transform(X_train) したら、 transform(X_test) で同じスケーリングをすること。 fit を分けないとデータリークになります。
1 2 3 4 5 | import numpy as np x = df['L322101'].dropna().values print('SD (ddof=0):', np.std(x)) # 母集団 SD print('SD (ddof=1):', np.std(x, ddof=1)) # 標本 SD(不偏) print('Var (ddof=1):', np.var(x, ddof=1)) |
1 2 3 | print(df['L322101'].std()) # ddof=1 print(df['L322101'].std(ddof=0)) # 母集団 SD print(df.describe().T[['mean', 'std']]) # 全変数 |
1 2 3 4 5 | from scipy import stats z = stats.zscore(x) # z-score sem = stats.sem(x) # 標準誤差 (SD/√n) print('zscore[0:5]:', z[:5]) print('SEM:', sem) |
1 2 3 4 5 | from statsmodels.stats.weightstats import DescrStatsW weights = df['A1101'].dropna() weighted = DescrStatsW(df['L322101'].dropna().values, weights=weights.values) print('加重平均:', weighted.mean) print('加重 SD:', weighted.std) |
| 指標 | 単位 | ロバスト性 |
|---|---|---|
| 分散 σ² | 元単位の 2 乗 | 弱 |
| 標準偏差 σ | 元単位 | 弱 |
| SEM = σ/√n | 元単位 | 弱(平均の誤差) |
| 変動係数 CV | 無単位 | 弱 |
| IQR | 元単位 | 強 |
| MAD | 元単位 | 最強 |
ddof=0(分母 n、 母集団の SD)、 pandas のデフォルトは ddof=1(分母 n−1、 標本の不偏 SD)です。 同じデータでも結果が違ってきます。 SSDSE-B(47 都道府県全数)なら母集団の SD(ddof=0)が論理的、 標本抽出データなら ddof=1 が標準。 「numpy と pandas で SD が違う」は ddof の違いがほぼ全てで、 明示的に ddof= を指定する習慣をつけると安全です。np.std を使うと過小評価になります。 加重 SD は statsmodels.stats.weightstats.DescrStatsW または numpy で重み付き分散を自前計算(np.cov に aweights)。 「47 都道府県の平均所得の SD」と「日本国民1人あたりの所得の SD」は別物、 という意識が重要。標準偏差 がデータサイエンスの体系の中でどこに位置するかを、 3つの異なる視点で可視化します。 同じ情報でも見方を変えると気付きが変わります。
🌐 統計・データサイエンス › 記述統計 › ばらつき › 標準偏差
中心に 標準偏差 を置き、 そこから 分散・平均・標準化・正規分布・相関係数・信頼区間 など 計 16 個の用語へ、 前提・兄弟・発展形といった関係を矢印で結んでいます。 線がどちら向きかを見れば、 先に読むべき用語とあとから読む用語が分かります。 ノードはドラッグで動かせ、 ホイールでズーム、 クリックでその用語のページへ遷移します。
大きな円が小さな円を包含する Circle Packing 図。 「標準偏差」は緑色でハイライト。
長方形を入れ子に分割した Treemap 図。 各分野の規模感を面積で比較。 「標準偏差」は緑色でハイライト。
| マップ | 分かること | こんな時に見る |
|---|---|---|
| 🔗 関係マップ | 手法間の横の関係(前提→発展→応用) | 「次に何を学べばよい?」 学習順序の判断 |
| ⭕ 包含マップ | 分類体系の入れ子構造(上位⊃下位) | 「この手法はどんなジャンルに属する?」 |
| 🌳 ツリーマップ | 分野の規模比較(面積=ボリューム) | 「データサイエンス全体の俯瞰像」 |
💡 3 つの図は同じ位置関係を別の角度から描いています。 関係マップは 標準偏差 の隣に何が並ぶかを、 包含マップとツリーマップは 統計・データサイエンス → ばらつき → 標準偏差 という入れ子の位置を示します。 「ばらつきには他に何があったか」を思い出したいときは包含マップを、 「次に何を読むか」を決めたいときは関係マップを開いてください。
標準偏差は記述統計の中核指標。 SSDSE-B-2026 の人口 A1101 (47 都道府県、 東京 14.1M を含む) では SD ≈ 280 万人と大きく、 平均 ≈ 265 万人とほぼ同じスケール。 これは「典型値とばらつきが同オーダー」という分布の歪みを示し、 SD 単独報告では誤解を招くので IQR / CV と併記する。
SD は平均と組で報告 (mean ± SD) し、 CV = SD/mean で単位無し相対ばらつきに変換することで都道府県間の異種指標 (人口と医師数) を比較可能にする。
標準偏差を「ばらつき指標」として使う場面は多いが、 データの性質と目的によって SD そのまま使うべきか、 別のロバスト指標に切り替えるべきかが変わる。 以下に典型シナリオと推奨ばらつき指標を示す。
| シナリオ | 重視する観点 | 推奨ばらつき指標 |
|---|---|---|
| 分布が正規 / 対称・サンプル十分 | 理論との整合・68-95-99.7 則の活用 | 標本 SD (ddof=1) |
| 外れ値が混在 / 分布が歪む | 頑健性・中央値からの絶対偏差 | MAD (中央絶対偏差) / IQR |
| 単位の異なる変数を比較したい | スケール無次元化 | 変動係数 CV (= SD/平均) / z-score |
| 母集団全体のデータ (悉皆調査) | バイアス補正不要・分母 n | 母 SD (ddof=0) — SSDSE-B 47 都道府県は悉皆 |
| 標本平均の精度を知りたい | 推定誤差の不確実性 | 標準誤差 SE = SD/√n (SD と区別する) |
| 時系列データの揺らぎ | 時間依存性・自己相関の考慮 | ローリング SD / 条件付き SD (GARCH) |
分散・SD・標準化・68-95-99.7則・ロバスト代替を網羅。
標準偏差は「平均からの典型的な距離」。 各データと平均の差(偏差)を二乗して平均したものが分散で、 その平方根で元の単位に戻したのが標準偏差。 二乗するのは (1) 符号を消し (2) 大きな外れを強く効かせるため。 平方根で戻すので単位はデータと同じ(人・円・℃)になり、 「平均 ± SD」と同じ物差しで語れる。 分散は単位が二乗(人²・円²)で直感が効かないのに対し、 標準偏差は「ばらつきの代表的な幅」としてそのまま読めるのが価値。
💡 分散 vs 標準偏差(SSDSE-B-2026 食料費 L322101・47県 実測): 分散 ≈ 3.41×10⁷ 円²(= 5,842²)は単位が「円²」で直感が効かない。 標準偏差 = √分散 = 5,842 円なら「県ごとの食料費は平均 80,598 円から ±約 5,842 円が典型」とそのまま読める。 同じ情報でも、 平方根で単位を戻すだけで解釈可能性が一変する。
経験則(μ±1σ≈68%, ±2σ≈95%, ±3σ≈99.7%)は 正規分布限定のもの。 SSDSE-B-2026 の ほぼ対称な食料費と 強く右に歪む総人口で実測すると、 効く/崩れるが対照的に現れる。
| 範囲 | 正規分布の理論 | 食料費 実測(ほぼ対称) | 総人口 実測(右に歪む) |
|---|---|---|---|
| μ±1σ | 68.3% | 66.0% | 87.2% |
| μ±2σ | 95.4% | 95.7% | 93.6% |
| μ±3σ | 99.7% | 100.0% | 97.9% |
💬 食料費は理論値にほぼ一致(66.0 / 95.7 / 100.0%)→ 経験則が使える。 総人口は μ±1σ が 87% と過剰・μ±2σ が 93.6% と不足 → 平均近くにデータが密集し、 東京など少数の巨大値が右裾を作る歪んだ分布の典型。 SD を報告する前に必ず ヒストグラムで形を見ること。 歪むなら 中央値・IQR・対数変換に切り替える。
68-95-99.7 則は正規分布専用だが、 チェビシェフの不等式は任意の分布で成り立つ下限を与える:
$$P(|X-\mu| \ge k\sigma) \le \frac{1}{k^2} \quad\Longleftrightarrow\quad P(|X-\mu| < k\sigma) \ge 1-\frac{1}{k^2}$$
SSDSE-B-2026 の実測で下限と実際を比較すると、 右に歪む人口でも下限は必ず満たされる:
💬 歪んだ人口分布でも「±2σ の外は多くても 1/4」という保証は破れない。 分布形を確認できない場面での安全側の目安になる。
2 変数の和の分散は、 単純な足し算ではなく共分散を足したものになる:
$$\mathrm{Var}(X+Y) = \mathrm{Var}(X) + \mathrm{Var}(Y) + 2\,\mathrm{Cov}(X,Y)$$
独立(Cov=0)のときだけ Var(X+Y)=Var(X)+Var(Y) が成り立つ。 標準偏差はそもそも加法的でない(一般に SD(X+Y) ≠ SD(X)+SD(Y))。 SSDSE-B-2026 の男性人口(A110101)と女性人口(A110102)は相関 r=0.999 とほぼ完全連動なので、 共分散項が支配的になる:
💬 独立を仮定して分散を足すと SD を約 3 割過小評価する(1,979,035 vs 2,797,588)。 共分散を無視した「SD の足し算」は誤り。 全体分散を群間+群内に分ける分散分解(本文 拡充H)や、 資産を組み合わせたポートフォリオのリスク計算も同じ原理に立つ。