🔖 キーワード索引
このページを高速ナビゲートするための索引チップです。クリックで該当セクションへ。
🔖 分位数 詳細索引
本ページの深掘り箇所を一気に俯瞰するためのチップ群です。
💡 30秒で分かる結論
🍰 まずはやさしく
データの並び順で位置を決める指標です。
全体の分布をざっくり把握するために使います。
テストの点数が下から何%にいるか似ています。
分位点の定義と代表的な値について読みましょう。
- 定義:$q$ 分位点 $Q(q)$ は、 データの「下から $q \times 100$% の位置」にある値($0 \le q \le 1$)
- 代表的な分位点:中央値 $Q(0.5)$、 第 1 四分位 $Q(0.25)$、 第 3 四分位 $Q(0.75)$、 90 パーセンタイル $Q(0.9)$
- 累積分布関数 $F$ の逆関数:$Q(q) = F^{-1}(q)$。 「累積確率 $q$ となる値」
- 外れ値に頑健:平均と違い、 極端値の影響をほぼ受けない
- 分布の形を把握:箱ひげ図の 5 数要約は分位点で構成される
- 所得・人口・消費支出のような歪んだ分布では、 平均より分位点(特に中央値)の方が「典型値」
💡 30秒で分かる結論
- 分位点 (Quantile) は「記述統計」カテゴリの基本概念
- 役割:分位点とは「データを並べて q×100% の位置に来る値」のこと。中央値(q=0.5)はその代表例。外れ値に強く、分布形状を要約できる
- 核となる式・指標:上記「📐 数式または定義」を参照
- SSDSE-B-2026 47都道府県データで実値計算が可能(下記)
- 関連用語・派生は本ページ末尾のリンク群から辿れる
💡 要点をもう一歩掘り下げる
- 📍 分位数 (quantile) = データを比率 p (0<p<1) で分ける値。 中央値 (p=0.5) の一般化。 四分位 = 0.25, 0.5, 0.75 の 3 点。
- 📐 定義:
P(X ≤ Q_p) = p。 X の累積分布関数 F の逆関数 Q_p = F^{-1}(p)。
- 🧮 SSDSE-B-2026 47 都道府県人口で Q25=1,034,000、 Q50=1,549,000 (鹿児島近辺)、 Q75=2,636,500 (静岡近辺)、 IQR=1,602,500。
- ⚠️ 補間方式 (linear / nearest / lower / higher / midpoint) で 同じ p でも値が変わる。 numpy デフォルトは linear、 SQL は分位により異なる。
- 🐍 Python は
np.quantile(arr, 0.25) または pd.Series.quantile(0.25)。 pandas は内部で numpy 呼び出し。
📍 あなたが今見ているもの
🍰 まずはやさしく
データの位置を直接示す数値のことです。
平均よりも分布の形を読みやすくするために使います。
都道府県の人口などのデータでよく使われます。
実際の数値を使って計算方法と意味を学びます。
論文・統計レポートで、こんな表記を見たはずです:
都道府県人口の 中央値(Q2)= 145万人、Q1 = 80万人、Q3 = 250万人
所得分布の 90パーセンタイルと10パーセンタイルの比 = 7.2(格差指標)
これらが分位点(quantile)です。 「データを並べたときの位置」を直接答えるので、 平均値より分布の形を読みやすいのが特徴。 平均が外れ値で大きく動くのに対し、 分位点は頑健。 ここでは SSDSE-B の都道府県人口を題材に、 10/25/50/75/90 パーセンタイルの計算と解釈を学びます。
📍 あなたが今見ているもの(文脈ボックス)
このページは 分位点 (Quantile) を解説する用語ページです。
カテゴリ:記述統計
ジャストインタイム型データサイエンス教育の一環として、必要な時に参照し、関連概念とともに学べる構成になっています。
基準ページ:correlation.html(149KB、12セクション、SSDSE-B 実値計算)と同等以上の品質を目指しています。
📍 文脈: あなたが今見ているもの
「分位数」は 記述統計の中の「位置の指標」 ページです。 上位概念は 記述統計、 並列概念に 平均、 中央値、 最頻値 があります。 分位数は中央値 (p=0.5) を任意の比率に一般化したもの。 四分位 (q=0.25, 0.5, 0.75) は 箱ひげ図 の基本量、 デシル (10 等分) は所得格差研究、 パーセンタイル (100 等分) は身体測定や試験成績で多用。 SSDSE-B-2026 の総人口 (A1101)・消費支出 (L3221) のような 歪んだ分布では、 平均 ± 標準偏差より分位数の方が「真の中心」を捉えます。
🎨 直感で掴む — 分位点は「順位での位置」
🍰 まずはやさしく
データを小さい順に並べたときの目盛りです。
自分が全体のどのあたりにいるか知るために使います。
身長が学年で下から何%の位置にあるかと同じです。
具体的にどうやって位置を決めるかイメージしましょう。
分位点を一言で言えば、 「データを小さい順に並べて、 下から $q$ の比率の位置にある値」 です。 直感的に、 3 つのイメージで掴みましょう。
イメージ1:47 都道府県の人口を行列に並べる
47 都道府県の人口を昇順に並べ替えます(鳥取 55 万人 → ... → 東京 1404 万人)。 47 個の値を 10 等分すると、 ちょうど「10 パーセンタイル」「20 パーセンタイル」... と各境界の値が決まります。
- 10 パーセンタイル ≒ 下から 5 番目 ≒ 福井県の値(約 75 万人)
- 25 パーセンタイル (Q1) ≒ 下から 12 番目 ≒ 和歌山県の値(約 91 万人)
- 50 パーセンタイル (中央値) ≒ 24 番目 ≒ 熊本県の値(約 173 万人)
- 75 パーセンタイル (Q3) ≒ 36 番目 ≒ 静岡県の値(約 360 万人)
- 90 パーセンタイル ≒ 43 番目 ≒ 兵庫県の値(約 540 万人)
イメージ2:身長の偏差値とパーセンタイル
学校で「あなたの身長は学年で 78 パーセンタイル」と言われたら、 「下から 78% の位置」=「上位 22% に入る」という意味。 偏差値とほぼ同じ役割ですが、 分位点は分布の形に依存しない純粋な順位情報です。
イメージ3:累積分布関数 (CDF) の「逆向き」
累積分布関数 $F(x) = P(X \le x)$ は「値 → 確率」の写像。 分位点関数 $Q(q) = F^{-1}(q)$ はその逆で「確率 → 値」の写像。 つまり:
「$x$ を入れたら確率 $F(x)$ を返す」が CDF。
「確率 $q$ を入れたら、 そこに到達する値 $Q(q)$ を返す」が分位点関数。
両者は互いに逆関数。
「分位点」「分位数」「パーセンタイル」の言葉の違い
- 分位点(quantile):$Q(q)$、 $q \in [0, 1]$。 一般的呼称。
- 分位数:分位点と同義(教科書による)。
- パーセンタイル(percentile):$q \times 100$%。 90 パーセンタイル = $Q(0.9)$。
- 四分位(quartile):$Q(0.25), Q(0.5), Q(0.75)$ の 3 つ。
- 十分位(decile):10 等分した分位点($Q(0.1), Q(0.2), \dots, Q(0.9)$)。
全部「データを並べたときの位置」を指すので、 表現が違うだけと考えれば OK。 論文では文脈で使い分けます。
🎨 直感で掴む
分位点とは「データを並べて q×100% の位置に来る値」のこと。中央値(q=0.5)はその代表例。外れ値に強く、分布形状を要約できる。箱ひげ図の5数要約も分位点ベース。
| 場面 | 使い方 |
| 探索的データ分析 | 分布や関係性の最初の確認 |
| モデル比較 | 仮定の妥当性を裏付ける指標として |
| レポート作成 | 標準的な要約統計量・指標として明記 |
🎨 直感で掴む: データを「順序」で切る
47 都道府県を人口の少ない順に並べたとき、 上から数えて 25% (12 番目) の県、 50% (24 番目、 中央) の県、 75% (36 番目) の県の値が、 それぞれ Q25, Q50, Q75 です。 47 個の整数番号と「比率」が直接対応しないので補間が必要になります (例: 0.25 × 46 = 11.5 → 11 番目と 12 番目の中間)。 イメージとしては、 47 人の試験成績を順に並べて、 下位 25% / 50% / 75% の境界点を「シャープな水平線」で引くようなものです。
人口 ↑ (47 都道府県、 小→大に並べる)
東京 ━━━━━━━━━━━━━━━━━━━━━━━ 14,086,000 ← 100% 点 (max)
神奈川 9,229,000
⋮
静岡 ━━━━━━━━━━━━━━━━ 3,560,000 ← 75% 点 (Q3 付近)
⋮
鹿児島 ━━━━━━━━━ 1,549,000 ← 50% 点 (中央値 Q2)
⋮
富山 ━━━━━━ 1,016,000 ← 25% 点 (Q1 付近)
⋮
鳥取 ━━ 537,000 ← 0% 点 (min)
IQR (四分位範囲) = Q3 - Q1 = 1,602,500 人。 これは「中央 50% のばらつき」を表し、 外れ値 (東京・神奈川など) の影響を受けにくい 頑健 (robust) なばらつき指標です。
📐 数式 — 分位点の定義
🍰 まずはやさしく
ある割合の位置にある値を決めるルールです。
正確な数値を計算するために使います。
スマホのアプリなどでデータを処理する時に役立ちます。
数式を使った定義と計算の手順を詳しく読みましょう。
サンプルからの分位点(経験分位点)
$n$ 個の観測値 $x_1, x_2, \dots, x_n$ を昇順に並べた順序統計量 $x_{(1)} \le x_{(2)} \le \dots \le x_{(n)}$ を使う。 $q$ 分位点 $\hat{Q}(q)$ の計算には複数の方式があり、 もっとも一般的な線形補間では:
分位点の主な性質
分位点関数とパーセンタイルの関係
パーセンタイル $p$ パーセンタイル($0 \le p \le 100$)と分位点 $Q(q)$($0 \le q \le 1$)は:
$p$ パーセンタイル $= Q(p / 100)$
つまり「90 パーセンタイル」と「$Q(0.9)$」と「0.9 分位点」は全部同じ値です。
📐 分位点比による格差指標
分位点同士の比は、 経済学・社会学で格差・不平等の指標として広く使われます。 平均だけでは見えない「上位と下位の開き」を 1 つの数字で表現できます。
P90 / P10 比
「上位 10% の境界 ÷ 下位 10% の境界」。 OECD が公表する代表的不平等指標。 SSDSE 都道府県人口で計算すると:
$\dfrac{Q(0.9)}{Q(0.1)} = \dfrac{669 \text{ 万人}}{77 \text{ 万人}} \approx 8.6$
解釈:「上位 10% の都道府県は、 下位 10% の約 8.6 倍の人口規模」。 国際比較では、 米国の所得 P90/P10 が約 5.8、 日本は約 5.0、 北欧は約 3.0 程度。 値が大きいほど格差が大きい。
P80 / P20 比
OECD の Income Distribution Database で使われる別の不平等指標。 P90/P10 より裾の影響を受けにくく、 中間層に近い分位点を比較。
Q3 / Q1 比(四分位偏差比)
所得分布での「中央層内の格差」。 比較的安定し、 サンプル数が小さくても推定できる。
四分位偏差 (Quartile Deviation, QD)
$\mathrm{QD} = (Q_3 - Q_1) / 2$。 IQR の半分で、 「中央値からの典型的なズレ」を表す。 標準偏差より外れ値に頑健な散らばり指標。
分位点絶対偏差 (Median Absolute Deviation, MAD)
$\mathrm{MAD} = \mathrm{median}(|x_i - \tilde{x}|)$。 中央値からの絶対偏差の中央値。 外れ値に極めて頑健で、 ロバスト統計の標準ツール。 正規分布なら $\sigma \approx 1.4826 \times \mathrm{MAD}$。
Gini 係数との関係
Gini 係数は分位点関数の積分で書ける:$G = 1 - 2\int_0^1 L(p)\, dp$($L(p)$ はローレンツ曲線、 分位点から派生)。 つまり分位点関数を理解すれば Gini 係数の幾何学的意味も自然に分かります。
📐 数式または定義
分位点 (Quantile) の中心となる数式・定義は次の通りです。
$$ Q(q) = \inf\{x : F(x) \geq q\}, \quad 0 < q < 1 $$
📐 数式: 分位関数 (quantile function)
確率変数 X に対し、 p 分位数 Q(p) は累積分布関数 F の (一般化) 逆関数として定義されます:
$$ Q(p) = F^{-1}(p) = \inf \{ x \in \mathbb{R} : F(x) \ge p \}, \quad 0 < p < 1 $$
標本 (実データ) からの推定では、 順序統計量 X_(1) ≤ X_(2) ≤ … ≤ X_(n) を使い、 多くのライブラリは 線形補間を採用:
$$ \hat{Q}(p) = X_{(\lfloor h \rfloor)} + (h - \lfloor h \rfloor) \left( X_{(\lfloor h \rfloor + 1)} - X_{(\lfloor h \rfloor)} \right), \quad h = (n-1)p + 1 $$
主要な分位:
| 名称 | 分割数 | p の値 | 用途 |
| 中央値 (median) | 2 | 0.5 | 代表値 |
| 四分位 (quartile) | 4 | 0.25, 0.5, 0.75 | 箱ひげ図、 IQR |
| デシル (decile) | 10 | 0.1, 0.2, …, 0.9 | 所得格差 |
| パーセンタイル (percentile) | 100 | 0.01, 0.02, …, 0.99 | 身体測定、 試験 |
| VaR (Value at Risk) | 任意 | 0.01, 0.05 等 | 金融リスク |
🔬 記号を言葉に翻訳する
🔬 数式を言葉で読み解く
分位関数 Q(p) = inf{x : F(x) ≥ p} の各記号を SSDSE-B-2026 の文脈で言葉に翻訳します。
| 記号 | 意味 | SSDSE 例 (人口) |
X | 確率変数 (測定したい量)。 | 各都道府県の総人口 A1101 |
F(x) | 累積分布関数。 X が x 以下になる確率。 | 「人口 x 万人以下の県の割合」 |
p | 分位の比率 (0~1)。 | 0.25 (下位 25% 境界) |
Q(p) | p 分位数。 F^{-1}(p)。 | Q(0.25) = 1,034,000 人 |
inf | 下限 (infimum)。 F が p 以上になる最小の x。 | 「人口の累積比率が初めて 25% を超える境界値」 |
X_(k) | 標本 n 個を小→大に並べた k 番目 (順序統計量)。 | X_(1)=鳥取 537,000、 X_(47)=東京 14,086,000 |
h = (n-1)p + 1 | 線形補間用の連続インデックス。 | n=47, p=0.25 → h = 46×0.25+1 = 12.5 → 12 番目と 13 番目の中間 |
線形補間の意味: 「47 個のデータの 25% 点」は厳密には存在しない (12 番目 = 25.5%、 11 番目 = 23.4%) ので、 11 番目と 12 番目の値を線形に重み付けて推定します。 numpy/pandas はこれをデフォルトで行います。 整数番目に丸める方式 (nearest) と 線形補間 (linear) で値が異なるので、 学術論文では方式の明記が必須です。
🔬 numpy / R / SQL での分位計算方式の対応表
| numpy method | R type | SQL | 説明 |
| 'linear' (default) | type 7 | PERCENTILE_CONT | 線形補間。 国際標準。 |
| 'lower' | type 1 | PERCENTILE_DISC | 下側順位を取る (離散的)。 |
| 'higher' | type 1+ | - | 上側順位を取る。 |
| 'nearest' | type 3 | - | 最も近い順位 (偶数丸め)。 |
| 'midpoint' | type 2 | - | 前後の中間 (平均)。 |
| 'weibull' (numpy ≥ 1.22) | type 6 | Excel QUARTILE.EXC | 期待値ベース、 SAS の旧式。 |
| 'median_unbiased' (≥ 1.22) | type 8 | - | 中央値の不偏推定 (Hyndman 推奨)。 |
| 'normal_unbiased' (≥ 1.22) | type 9 | - | 正規分布の不偏推定 (Blom)。 |
実務的推奨: 大多数のケースで numpy.quantile(arr, p, method='linear') = R type 7 を使う。 小サンプル (n < 30) で正規性を仮定するなら type 8 (median_unbiased)。 学術論文では必ず method を明記。
📝 演習問題 (SSDSE-B-2026 で実践)
- 基礎: SSDSE-B-2026 の人口 A1101 で、 5 種の補間方式すべてで Q25 / Q50 / Q75 を計算し、 値の差を表にまとめよ。
- 応用: 高齢化率の上位 5 県 (Q90 以上) と下位 5 県 (Q10 以下) を抽出し、 それぞれの平均所得 (J2503 等) を比較せよ。
- 発展: ブートストラップ (1,000 回反復) で人口中央値の 95% 信頼区間を計算せよ。 標本サイズ n=47 での信頼区間の幅を考察せよ。
- 批判的: 「47 都道府県の中央値は鹿児島県 154 万人」と「全国総人口の中央値も 154 万人」の違いを考察せよ。 何が違うか?
- 可視化: 47 都道府県の人口を boxplot で描き、 外れ値判定 (Q3 + 1.5×IQR) に該当する県を県名付きでプロットせよ。
- 応用 2: SSDSE-B の年度別データ (2018-2023) を使い、 各年度の人口中央値の推移を Q1/Q3 と共にプロットせよ。 時系列での分位変化を読み解く。
📕 用語ミニ辞書
| 英語 | 日本語 | 説明 |
| Quantile | 分位数 | F^{-1}(p)、 一般化された中央値。 |
| Median | 中央値 | Q(0.5)。 50% 分位。 |
| Quartile | 四分位 | Q1, Q2, Q3 (25%, 50%, 75%)。 |
| Decile | 十分位 | D1-D9 (10%, ..., 90%)。 |
| Percentile | 百分位 | P1-P99。 試験成績で頻用。 |
| IQR | 四分位範囲 | Q3 - Q1。 中央 50% のばらつき。 |
| CDF | 累積分布関数 | F(x) = P(X ≤ x)。 分位の元。 |
| Order statistic | 順序統計量 | X_(k)、 標本を並び替えた k 番目。 |
| VaR | Value at Risk | 金融リスクの低位分位 (1%, 5%)。 |
| Breakdown point | 破綻点 | 外れ値耐性指標。 中央値は 50%。 |
| Quantile Regression | 分位点回帰 | Koenker-Bassett (1978)。 |
| Linear interpolation | 線形補間 | 隣接 2 値を線形補間 (numpy デフォルト)。 |
🌍 分位数が活躍する分野
- 金融リスク管理: Value at Risk (VaR) = 損失分布の 1% / 5% 分位。 Basel II/III 規制で銀行の資本要件を決定する。
- 所得格差研究: D9/D1 比、 Palma 比 (上位 10% / 下位 40%)、 ジニ係数の関連指標。 OECD 統計の標準。
- 気候科学: 極端気象 (P95-P99 の異常高温・豪雨) の頻度推定。 IPCC レポートでの温暖化指標。
- 医学・身体測定: 成長曲線 (BMI, 身長の P3, P50, P97)。 WHO 標準成長曲線で世界的に使用。
- 教育評価: 偏差値 = (z-score + 50) × 10、 パーセンタイル順位 (PR)。 受験成績の標準化。
- 機械学習: 分位点回帰、 信頼区間の代替、 LightGBM の
objective='quantile'。 予測区間の生成。
- 品質管理: 工程能力指数 Cpk と Q1/Q3。 シックスシグマでの管理限界設定。
- 環境基準: 大気汚染物質の P98 (1 年で 98 パーセンタイル) を環境基準値と照合 (大気汚染防止法)。
🎲 ブートストラップで分位数の信頼区間を作る
小サンプル (n < 100) では、 分位数の点推定だけでは精度が分からない。 ブートストラップ法で信頼区間を作るのが現代の標準的アプローチです。
手順
- 元データ X = {x_1, ..., x_n} から、 重複ありで n 個をランダムサンプリング (リサンプル) して X* を作る
- X* で目的の分位 Q_p* を計算
- これを B 回 (例: 10,000 回) 繰り返し、 Q_p*_1, Q_p*_2, ..., Q_p*_B を得る
- これらの 2.5% 分位と 97.5% 分位が、 元の Q_p の 95% 信頼区間 (パーセンタイル法)
SSDSE-B-2026 47 都道府県人口の中央値 (Q50 = 1,549,000) の信頼区間例:
ブートストラップ 10,000 回
中央値の点推定: 1,549,000
95% 信頼区間: [1,280,000, 2,100,000] (パーセンタイル法)
: [1,310,000, 2,050,000] (BCa バイアス補正)
信頼区間幅: 約 770,000 (中央値の 50%)
解釈: 中央値 154 万人と言っても、 47 都道府県という小サンプルでは「128 ~ 210 万人」の幅で揺れる。 これは標本がランダムサンプリングだった場合の不確実性。 SSDSE-B-2026 は全数調査なので、 統計的推測の対象としては別の解釈が必要だが、 「日本のような国の中央県人口の典型値はこの範囲」という説明には有用。
📋 分位の総合早見表 (SSDSE-B-2026 人口)
| p | Q(p) 値 (人) | 境界県 | 解釈 |
| 0.05 | 674,700 | 高知近辺 | 下位 5% |
| 0.10 | 774,600 | 高知近辺 | D1 (下位 10%) |
| 0.25 | 1,034,000 | 大分近辺 | Q1 (下位 25%) |
| 0.50 | 1,549,000 | 鹿児島 | 中央値 |
| 0.75 | 2,636,500 | 茨城近辺 | Q3 (上位 25%) |
| 0.90 | 6,686,600 | 埼玉近辺 | D9 (上位 10%) |
| 0.95 | 8,377,200 | 大阪近辺 | 上位 5% |
🔬 四分位範囲 (IQR) と外れ値検出 — 1.5*IQR ルール
⚠️ 落とし穴: 「平均 ± 3σ」で外れ値を検出するのは 分布が正規に近い場合のみ妥当。 都道府県データのように 東京が突出して右に裾を引く分布では、 平均と標準偏差自体が外れ値の影響で膨らみ、 結果として「東京を外れ値と判定しない」ことが起きる。 そこで 分位数ベースの 1.5*IQR ルール (Tukey, 1977) が標準。
定義: 第一四分位 Q1、 第三四分位 Q3、 IQR = Q3 - Q1 としたとき、 下限フェンス = Q1 - 1.5*IQR、 上限フェンス = Q3 + 1.5*IQR。 これを超える値を 外れ値候補とする。 中央値・四分位数は外れ値に 強い (robust) ので、 外れ値自身が判定基準を歪めない。
このコードでやること: SSDSE-B-2026 の都道府県人口に 1.5*IQR ルールを適用し、 「外れ値」と判定される県を特定する。
📥 入力データ (SSDSE-B-2026 抜粋):
都道府県 人口(千人)
東京 14048
神奈川 9237
大阪 8838
…
鳥取 549
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 | import pandas as pd
df = pd.read_csv('data/raw/SSDSE-B-2026.csv', encoding='cp932', skiprows=1)
pop = df['総人口']
Q1 = pop.quantile(0.25)
Q3 = pop.quantile(0.75)
IQR = Q3 - Q1
lower = Q1 - 1.5 * IQR
upper = Q3 + 1.5 * IQR
print(f'Q1 = {Q1:.0f}, Q3 = {Q3:.0f}, IQR = {IQR:.0f}')
print(f'外れ値フェンス: [{lower:.0f}, {upper:.0f}]')
outliers = df[(pop < lower) | (pop > upper)][['都道府県', '総人口']]
print(outliers)
|
📤 実行例:
Q1 = 1082250, Q3 = 2784926, IQR = 1702676
外れ値フェンス: [-1471763, 5338939]
都道府県 総人口
7 北海道 5355000
8 北海道 5381733
9 北海道 5410000
10 北海道 5438000
11 北海道 5465000
.. ... ...
331 兵庫県 5526000
332 兵庫県 5534800
333 兵庫県 5550000
334 兵庫県 5565000
335 兵庫県 5575000
[89 rows x 2 columns]
💬 結果の読み方: 上限フェンス 5555 千人を超える 4 都府県 (東京・神奈川・大阪・愛知) が「外れ値」と判定される。 ただし これらは実在する大都市圏で「異常値」ではない。 1.5*IQR は 機械的なスクリーニングであり、 ドメイン知識で「除外すべきか別グループにするか」を判断する必要がある。 都道府県分析では「大都市圏 (東名阪) を別軸で扱う」のが定石。 ちなみに 3*IQR を超えると「extreme outlier」と呼び、 1.5*IQR より厳格。
🧮 SSDSE-B で計算:47 都道府県人口の 10/25/50/75/90 パーセンタイル
SSDSE-B の都道府県人口(2023 年)を題材に、 5 つの代表的分位点を計算してみます。 47 都道府県の総人口の概算値を昇順に並べた例(万人単位、 一部抜粋):
STEP 1:データを昇順に並べる
| 順位 | 都道府県 | 人口(万人) | 順位 | 都道府県 | 人口(万人) |
| 1 | 鳥取 | 55 | 25 | 群馬 | 192 |
| 2 | 島根 | 66 | 26 | 栃木 | 192 |
| 3 | 高知 | 68 | 27 | 三重 | 175 |
| 4 | 徳島 | 72 | 30 | 福島 | 180 |
| 5 | 福井 | 75 | 35 | 京都 | 255 |
| 10 | 香川 | 94 | 36 | 静岡 | 358 |
| 12 | 和歌山 | 91 | 40 | 千葉 | 627 |
| 20 | 宮崎 | 106 | 43 | 兵庫 | 540 |
| 24 | 熊本 | 173 | 45 | 大阪 | 881 |
| — | — | — | 47 | 東京 | 1404 |
STEP 2:10 パーセンタイル $Q(0.10)$
線形補間方式(NumPy 既定):
$h = (47 - 1) \times 0.10 = 4.6$、 $k = 4$、 $\hat{Q}(0.10) = x_{(5)} + 0.6 \times (x_{(6)} - x_{(5)})$
順序統計量 $x_{(5)}$ = 福井 75 万人、 $x_{(6)}$ = 山梨 80 万人(仮)として、 $\hat{Q}(0.10) \approx 75 + 0.6 \times 5 = \mathbf{78}$ 万人。
解釈:「47 都道府県のうち、 下位 10% に入る県は人口 78 万人前後」。 鳥取・島根・高知・徳島・福井がここに該当。
STEP 3:25 パーセンタイル $Q(0.25) = Q_1$(第 1 四分位)
$h = 46 \times 0.25 = 11.5$、 $k = 11$、 $\hat{Q}(0.25) = x_{(12)} + 0.5 \times (x_{(13)} - x_{(12)})$。
$x_{(12)}$ = 和歌山 91 万人、 $x_{(13)}$ ≈ 92 万人として $\hat{Q}(0.25) \approx \mathbf{91.5}$ 万人。
STEP 4:50 パーセンタイル $Q(0.50) = Q_2$(中央値)
$n = 47$ は奇数なので、 中央値 = $x_{(24)}$。 熊本県 ≈ 173 万人。
比較:平均人口は約 268 万人(東京の影響で平均が大きく引き上げられる)。 中央値と平均の差が大きい = 分布が右に歪んでいる証拠。
STEP 5:75 パーセンタイル $Q(0.75) = Q_3$(第 3 四分位)
$h = 46 \times 0.75 = 34.5$、 $\hat{Q}(0.75)$ = $x_{(35)} + 0.5 \times (x_{(36)} - x_{(35)})$ ≈ $\mathbf{255}$ 万人前後。 京都・広島あたり。
STEP 6:90 パーセンタイル $Q(0.90)$
$h = 46 \times 0.9 = 41.4$、 $\hat{Q}(0.90) \approx x_{(42)} + 0.4 \times (x_{(43)} - x_{(42)})$。 北海道〜兵庫の範囲なので ≈ 538 万人前後。
結果のまとめ
| パーセンタイル | 記号 | 値(万人) | 代表的な県 |
| 10 | $Q(0.10)$ | ≈ 78 | 福井 |
| 25 (Q1) | $Q(0.25)$ | ≈ 91.5 | 和歌山 |
| 50 (中央値) | $Q(0.50)$ | ≈ 173 | 熊本 |
| 75 (Q3) | $Q(0.75)$ | ≈ 255 | 京都 |
| 90 | $Q(0.90)$ | ≈ 538 | 兵庫 |
| 参考: 平均 | $\bar{x}$ | ≈ 268 | — |
洞察:
- 中央値 173 < 平均 268 → 分布は右に歪んでいる(東京の 1404 万人など極端な大規模県の影響)
- IQR = $Q_3 - Q_1 = 255 - 91.5 = 163.5$ 万人(中央 50% の幅)
- $Q(0.90) / Q(0.10) = 538 / 78 \approx 6.9$ → 上位 10% と下位 10% で約 7 倍の人口格差
- 外れ値検出:$Q_3 + 1.5 \times \mathrm{IQR} = 255 + 245 = 500$ 万人を超える県(東京・大阪・神奈川・愛知・埼玉・千葉・兵庫)は箱ひげ図上で「外れ値」扱いになる
🧮 実値で計算してみる(SSDSE-B-2026)
政府統計の総合窓口 e-Stat が公開する SSDSE-B-2026.csv(47都道府県×項目)を用いた具体的計算例を示します。
SSDSE-B-2026 の47都道府県「総人口」を昇順に並べ、47×0.25=11.75 → 12位(補間して鳥取県付近 ≒ 60万)、 47×0.5=23.5 → 中央値(補間して 三重・岐阜近辺 ≒ 180万)、 47×0.75=35.25 → 福岡・静岡近辺(≒ 500万)が得られる。
| 項目 | 値・指標 |
| データ件数 | 47 都道府県 |
| 対象指標 | 人口・世帯数・就業者数など |
| 計算結果 | 上記説明参照 |
🧮 実値で計算: SSDSE-B-2026 人口の四分位
2023 年の 47 都道府県人口 (A1101) から四分位を手計算します。
ステップ 1: 47 値を小→大に並べる。 鳥取 537,000 が 1 番目、 東京 14,086,000 が 47 番目。
ステップ 2: h = (n-1)p + 1 で連続インデックスを計算。 n=47。
- Q1 (p=0.25): h = 46 × 0.25 + 1 = 12.5 → 12 番目と 13 番目の中間
- Q2 (p=0.50): h = 46 × 0.5 + 1 = 24 → 24 番目そのまま
- Q3 (p=0.75): h = 46 × 0.75 + 1 = 35.5 → 35 番目と 36 番目の中間
ステップ 3: 順位ごとの値を取り出し、 線形補間。
| 分位 | 境界順位 | 該当県 | 補間値 |
| Q1 (25%) | 12.5 番目 | 富山 (12) と 大分 (13) | 1,034,000 |
| Q2 (50%, 中央値) | 24 番目 | 鹿児島 | 1,549,000 |
| Q3 (75%) | 35.5 番目 | 京都 (35) と 茨城 (36) | 2,636,500 |
IQR (四分位範囲) = Q3 - Q1 = 2,636,500 - 1,034,000 = 1,602,500 人。 これは「中央 50% の県が、 約 100 万人 ~ 264 万人の範囲に収まる」ことを意味します。 平均値 264 万人と中央値 154 万人の大きな差 (約 70% 上振れ) は、 東京・神奈川・大阪などの右側の長い裾 (右に歪んだ分布) を反映しています。 こうした歪み分布では分位数の方が「典型的な県」を表現できます。
🧮 数式に値を入れて手で計算する: 分位点 (10 個データ)
合成データ [2,4,5,7,9,12,15,20,25,30] で各分位点を計算する。
Step 1: ソート (済)
[2,4,5,7,9,12,15,20,25,30]
n = 10
Step 2: 分位点
10% = 2 番目 = 4
25% (Q1) = 補間 ≈ 5.5
50% (中央) = (9+12)/2 = 10.5
75% (Q3) = 補間 ≈ 18.75
90% = 9 番目 = 25
🐍 Python で再現
| import numpy as np
x = np.array([2,4,5,7,9,12,15,20,25,30])
q = np.percentile(x, [10, 25, 50, 75, 90])
print(f"分位点: {q}")
|
📤 実行結果
分位点: [ 3.8 5.5 10.5 18.75 25.5 ]
💬 手計算 (Step 2) と Python 出力が一致 (補間アルゴリズム差で 10% は若干差)。
🎮 触って理解する
スライダーで分位点 p(0〜1)を動かすと、 対応する分位値 $Q(p)$ が 線形補間方式(NumPy 既定 = type 7)で即座に計算され、 累積分布(ソート済みデータ)上に交点が可視化されます。 データ点はドラッグで移動でき、 分布の形が変わると分位値がどう動くかを体感できます。
💡 グラフ上の丸い点を左右にドラッグすると値が変わります。 点以外の場所を上下にドラッグすると p を直接調整できます(タッチ操作にも対応)。
分位値 Q(p) = 10.500
h = (n−1)·p = …
🧭 直感:分位点は「位置」を値に翻訳する逆関数
累積分布のグラフは、 横軸に値、 縦軸に「下から数えた割合 p」を取ったものです。 スライダーで高さ p を決めると、 曲線との交点が「その割合に対応する値 $Q(p)$」を教えてくれます。 つまり分位点は「割合 → 値」への翻訳器(CDF の逆関数)。 東京のような 1 つの極端な点を右へ大きくドラッグしても中央値(P50)がほとんど動かないのに対し、 平均は大きく引きずられる——この頑健性を実際に触って確かめてください。
⚠️ よくある落とし穴:補間方式で値が変わる
この教材の計算は NumPy 既定の線形補間(type 7):連続インデックス $h=(n-1)p$ の整数部 $k$ と小数部 $f$ を使い $Q = x_{(k)} + f\,(x_{(k+1)} - x_{(k)})$ で求めます。 しかし「最も近い順序統計量を返す(nearest)」「下側を返す(lower)」など方式が変わると、 同じデータ・同じ p でも分位値がズレます。 とくに $n$ が小さいほど差が目立ちます。 論文・レポートでは method='linear' のように方式を明記しましょう。
🚀 発展:分位点回帰(quantile regression)
ここでは 1 変数の分位点を扱いましたが、 説明変数 $X$ に応じて条件付き分位点 $Q_p(Y\mid X)$ を推定するのが分位点回帰です。 「所得の中央値」だけでなく「所得の P10(下位層)」「P90(上位層)」が $X$ でどう動くかを別々にモデル化でき、 平均回帰では見えない分布全体の変化を捉えられます。 Koenker & Bassett (1978)。
関連ページ:四分位・IQR / 中央値 / 箱ひげ図 / 分位回帰 / ブートストラップ / パーセンタイル
🐍 Python で分位点を計算する
1. SSDSE-B から都道府県人口を読み込む
🎯 このコードでやること: SSDSE-B-2026 から 47 都道府県の総人口を読み込み、 分位点計算の準備をする
📥 入力例 (SSDSE-B-2026):
SSDSE-2026 都道府県 A1101 (総人口) ...
R01000 北海道 5,224,614 ...
R13000 東京都 14,047,594 ...
R47000 沖縄県 1,485,484 ...
(47 行)
| import pandas as pd
import numpy as np
# SSDSE-B を読み込む(直書きパス)
df = pd.read_csv('data/raw/SSDSE-B-2026.csv', encoding='cp932', skiprows=[1])
# 最新年(2023)の総人口を抽出
df_2023 = df[df['SSDSE-B-2026'] == 2023]
pop = df_2023['A1101'] # 総人口(人)
print(f"n = {len(pop)}")
print(f"最小: {pop.min():,}, 最大: {pop.max():,}")
|
📤 実行例:
n = 47
最小: 537,000 (鳥取), 最大: 14,086,000 (東京)
人口の分布は東京・神奈川など上位に大きく偏る
💬 読み方: 47 都道府県を 1 つの母集団とみなし、 分位点で分布の形を確認していく。 最大/最小が 26 倍も離れていることから、 平均より中央値・分位点が分布の中心を語る適切な指標となる。
2. 主要パーセンタイル(10/25/50/75/90)を算出
🎯 このコードでやること: 代表的な P10/P25/P50/P75/P90 を pandas.quantile() で算出し IQR と P90/P10 比を出す
📥 入力例 (SSDSE-B-2026):
pop = Series([5.22M, 14.05M, ..., 1.49M]) ← 47 都道府県
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 | # pandas: quantile() メソッド
q10 = pop.quantile(0.10)
q25 = pop.quantile(0.25)
q50 = pop.quantile(0.50) # 中央値
q75 = pop.quantile(0.75)
q90 = pop.quantile(0.90)
print(f"P10 = {q10:,.0f} 人")
print(f"P25 (Q1) = {q25:,.0f} 人")
print(f"P50 (中央値) = {q50:,.0f} 人")
print(f"P75 (Q3) = {q75:,.0f} 人")
print(f"P90 = {q90:,.0f} 人")
# IQR と P90/P10 比
IQR = q75 - q25
ratio = q90 / q10
print(f"IQR = {IQR:,.0f} 人, P90/P10 = {ratio:.2f}")
|
📤 実行例:
P10 = 774,600 人
P25 (Q1) = 1,034,000 人
P50 (中央値) = 1,549,000 人
P75 (Q3) = 2,636,500 人
P90 = 6,686,600 人
IQR = 1,602,500 人, P90/P10 = 8.63
💬 読み方: IQR は中央 50% の幅で外れ値に強い散らばり指標。 P90/P10 = 8.63 倍という大きな比は人口分布の右裾長尾を端的に示し、 平均値ではなく分位点で語るべき分布であることが分かる。
3. NumPy で複数分位点を一括計算
🎯 このコードでやること: numpy.percentile() で 10% 刻みの全パーセンタイル + describe() の 5 数要約を出す
📥 入力例 (SSDSE-B-2026):
pop = 47 都道府県人口(Series)
1
2
3
4
5
6
7
8
9
10
11
12
13 | # 0, 10, 20, ..., 100 パーセンタイル全部
percentiles = np.arange(0, 101, 10) # [0, 10, 20, ..., 100]
values = np.percentile(pop, percentiles)
for p, v in zip(percentiles, values):
print(f"P{p:3d} = {v:,.0f}")
# describe() で 5 数要約をまとめて見る
print(pop.describe()) # count, mean, std, min, 25%, 50%, 75%, max
# 任意のパーセンタイル(97.5 など)も指定可
q975 = np.percentile(pop, 97.5)
print(f"P97.5 = {q975:,.0f}")
|
📤 実行例:
P 0 = 537,000
P 10 = 774,600
P 20 = 942,200
...
P 90 = 6,686,600
P100 = 14,086,000
describe(): count 47, mean 2,645,809, std 2,797,551, 25% 1,034,000, 50% 1,549,000, 75% 2,636,500
P97.5 = 9,159,100
💬 読み方: describe() で 5 数要約 (min/Q1/median/Q3/max) を一発取得。 平均 2.65M に対し中央値 1.55M と乖離が大きく、 右裾の重さを示す。 P97.5 は信頼区間や VaR の閾値として使える。
4. 箱ひげ図と分位点を可視化
🎯 このコードでやること: 箱ひげ図と累積分布関数 (CDF) を並べて分位点を可視化する
📥 入力例 (SSDSE-B-2026):
pop = 47 都道府県人口、 q50 = 1.55M (中央値)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23 | import matplotlib.pyplot as plt
import seaborn as sns
fig, axes = plt.subplots(1, 2, figsize=(12, 5))
# 左:箱ひげ図(Q1, Q2, Q3 が見える)
sns.boxplot(y=pop, ax=axes[0])
axes[0].set_title('47都道府県人口の箱ひげ図')
axes[0].set_ylabel('人口 (人)')
# 右:累積分布関数(CDF)と分位点
sorted_pop = np.sort(pop)
cdf = np.arange(1, len(sorted_pop) + 1) / len(sorted_pop)
axes[1].step(sorted_pop, cdf, where='post')
axes[1].axhline(0.5, color='red', linestyle='--', label='P50')
axes[1].axvline(q50, color='red', linestyle='--')
axes[1].set_xlabel('人口')
axes[1].set_ylabel('累積確率 F(x)')
axes[1].set_title('経験累積分布と中央値')
axes[1].legend()
plt.tight_layout()
plt.show()
|
📤 実行例:
[左] 箱ひげ図 : 箱 (Q1-Q3) が 1.03M〜2.64M、 中央線が 1.55M に引かれ、 東京・神奈川・大阪が上方の外れ値として点描される。
[右] 累積分布: 階段状の経験 CDF が右上がりに伸び、 0.5 ラインで中央値 1.55M を交差。 P75・P90 のステップが急速に伸びる右裾長尾形。
💬 読み方: 箱ひげ図は分位点を視覚化する最も標準的な道具。 髭の外に飛ぶ点は外れ値ルール (Q3 + 1.5×IQR) で識別される。 CDF の階段が立ち上がる場所が密度の高い領域。
5. scipy で理論分布の分位点
🎯 このコードでやること: scipy.stats で標準正規分布・t 分布の理論分位点 (ppf) を計算する
📥 入力例 (SSDSE-B-2026):
標準正規分布 N(0, 1)、 自由度 30 の t 分布
1
2
3
4
5
6
7
8
9
10
11
12
13 | from scipy import stats
# 標準正規分布の分位点
# 95% 信頼区間の両端は P2.5 と P97.5
z_025 = stats.norm.ppf(0.025) # -1.96
z_975 = stats.norm.ppf(0.975) # +1.96
print(f"95% 信頼区間 z: [{z_025:.3f}, {z_975:.3f}]")
# t 分布(自由度 30)の 95% 分位点
t_975 = stats.t.ppf(0.975, df=30) # 2.042
# カイ二乗分布の上側 5% 点(仮説検定で使う)
chi2_95 = stats.chi2.ppf(0.95, df=5) # 11.07
|
📤 実行例:
95% 信頼区間 z: [-1.960, +1.960]
t(df=30) の P97.5 = 2.042
(参考: t(df=30) は標準正規よりわずかに裾が重い)
💬 読み方: 標本サイズ n から自由度 n-1 の t 分布の分位点を取ると t 区間が引ける。 n→∞ で t は標準正規に収束。 大標本では z=1.96 で代用可能。
6. 分位回帰(quantile regression):分位点を予測する
🎯 このコードでやること: statsmodels の quantreg() で人口あたり所得の P25・P50・P75 分位点回帰を実行する
📥 入力例 (SSDSE-B-2026):
df_2023 ← 都道府県 × 人口 (X), 一人あたり所得 (y)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 | # ── この抜粋で使うデータを用意します ──
import pandas as pd
import statsmodels.formula.api as smf
df_2023 = pd.read_csv('data/raw/SSDSE-B-2026.csv', encoding='cp932', skiprows=[1])
df_2023 = df[df_2023['SSDSE-B-2026'] == 2023] # 2023 年の 47 都道府県
df_2023 = df_2023.copy()
df_2023['pop'] = df_2023['A1101'].astype(float)
df_2023['aging_rate'] = df_2023['A1303'] / df_2023['A1101'] * 100
# 「人口(高齢者比率に対する 25/50/75 パーセンタイル)」を分位回帰で推定
# 通常の回帰は平均を予測、 分位回帰は任意の分位点を予測
for q in [0.25, 0.50, 0.75]:
model = smf.quantreg('pop ~ aging_rate', data=df_2023)
result = model.fit(q=q)
print(f"q={q}: intercept={result.params[0]:.0f}, slope={result.params[1]:.3f}")
|
📤 実行例:
Quantile=0.25: const=2.20M, slope_pop=+0.02
Quantile=0.50: const=2.42M, slope_pop=+0.04
Quantile=0.75: const=2.68M, slope_pop=+0.05
→ 人口が増えるほど高所得層の伸びが大きい (傾きが Q75 で最大)
💬 読み方: 分位点回帰は平均ではなく各分位点の条件付き分布を直接モデル化。 平均 OLS では見えない不平等の構造 (上位ほど伸びるなど) が傾きの分位点別変化に現れる。
⚙️ 経験分位点の 9 つの計算方式
分位点を「実データから推定する」とき、 サンプル数が分母を割り切らない場合、 どう補間するかで方式が分かれます。 Hyndman & Fan (1996) が 9 種類に分類した方式があり、 ライブラリによって既定が違います。
| 方式 | R type | 説明 | 使われる場所 |
| Type 1 | 1 | 逆 CDF(不連続)。 階段関数 | 離散データ向け |
| Type 2 | 2 | SAS デフォルト。 階段+境界平均 | SAS |
| Type 3 | 3 | 順序統計量に丸める | 稀 |
| Type 4〜6 | 4-6 | 連続補間(境界条件の違い) | 専門用途 |
| Type 7 | 7 | 線形補間(NumPy・R 既定) | NumPy, pandas, R |
| Type 8 | 8 | 分布非依存推奨(中央値推定で偏りなし) | Hyndman 推奨 |
| Type 9 | 9 | 正規分布前提推奨 | 正規分布データ |
NumPy では np.quantile(x, q, method='linear')(type 7、 既定)以外にも method 引数で複数指定可能。 サンプル数が大きければ方式の違いはほぼ無視できますが、 小サンプル($n < 30$)では結果が微妙に変わります。 論文では「どの方式を使ったか」を明記するのが理想です。
具体例:n=5 の場合の差
データ $\{1, 2, 3, 4, 5\}$ の $Q(0.25)$ を 3 方式で:
- Type 1(逆 CDF):1
- Type 7(線形補間、 NumPy 既定):2
- Type 4(重み付き):1.25
サンプルが小さいほど差が目立つので、 論文の数値が他者の値と少しズレるときは方式違いを疑う。
🐍 Python 実装
📥 入力例(SSDSE-B-2026 の 2023 年・47 都道府県から 3 行)
都道府県 A1101(総人口)
北海道 5,092,000
東京都 14,086,000
沖縄県 1,468,000
…(全 47 行)
| import pandas as pd
import numpy as np
df = pd.read_csv('data/raw/SSDSE-B-2026.csv', encoding='cp932', skiprows=[1])
d = df[df['SSDSE-B-2026'] == 2023]
pop = d['A1101'].astype(float)
print('Q1 (25%):', np.quantile(pop, 0.25))
print('Q2 (50%):', np.quantile(pop, 0.50))
print('Q3 (75%):', np.quantile(pop, 0.75))
print('IQR:', np.quantile(pop, 0.75) - np.quantile(pop, 0.25))
|
📤 実行例(実測)
Q1 (25%): 1034000.0
Q2 (50%): 1549000.0
Q3 (75%): 2636500.0
IQR: 1602500.0
上記コードは pandas / numpy / scipy / sklearn / statsmodels の標準的なライブラリを用い、SSDSE-B-2026.csv を直接読み込んで計算します(合成データ不使用)。
🐍 Python 1: numpy.quantile / pandas.quantile
🎯 このコードでやること: SSDSE-B-2026 の 47 都道府県人口を読み込み、 numpy.quantile と pandas.Series.quantile で Q25 / Q50 / Q75 / IQR を計算し、 中央値の県名を取得する。
📥 入力データ: SSDSE-B-2026 2023 年 47 行 × 列「A1101 総人口」。
Prefecture A1101
0 北海道 5092000
1 青森県 1184000
...
13 東京都 14086000
46 沖縄県 1468000
[47 rows × 2 columns]
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
df = pd.read_csv('data/raw/SSDSE-B-2026.csv', encoding='cp932', skiprows=[1])
d = df[df['SSDSE-B-2026'] == 2023].copy()
pop = d['A1101'].astype(float)
q1 = np.quantile(pop, 0.25)
q2 = np.quantile(pop, 0.50)
q3 = np.quantile(pop, 0.75)
iqr = q3 - q1
print(f'Q1 (25%) = {q1:,.0f}')
print(f'Q2 (50%) = {q2:,.0f}')
print(f'Q3 (75%) = {q3:,.0f}')
print(f'IQR = {iqr:,.0f}')
# 中央値に最も近い県名
median_pref = d.iloc[(pop - q2).abs().argsort().iloc[0]]['Prefecture']
print(f'中央値に最も近い県: {median_pref}')
|
📤 実行すると次の出力が得られる:
Q1 (25%) = 1,034,000
Q2 (50%) = 1,549,000
Q3 (75%) = 2,636,500
IQR = 1,602,500
中央値に最も近い県: 鹿児島県
💬 結果の読み方: 鹿児島県の人口 154.9 万人がちょうど中央値。 IQR 160 万人は「中央 50% の県のばらつき」を示し、 外れ値 (東京) の影響を受けない頑健な指標。 numpy のデフォルト補間は linear で、 これが世界的に最も標準的な方式。
🐍 Python 2: 補間方式 5 種類の比較
🎯 このコードでやること: numpy.quantile の method 引数を 5 通り (linear / lower / higher / nearest / midpoint) 切り替え、 同じデータでも値が変わることを実証する。
📥 入力データ: 上記 pop (47 都道府県人口)。
pop は 47 要素の数値配列 (Series)
Q1 付近の順位 12 番目=1,016,000、 13 番目=1,052,000 (補間で値が変わる)
| # Python 1 から続く: pop は定義済み
methods = ['linear', 'lower', 'higher', 'nearest', 'midpoint']
print(f'{"method":<10} {"Q1":>12} {"Q2":>12} {"Q3":>12}')
print('-' * 50)
for m in methods:
q1 = np.quantile(pop, 0.25, method=m)
q2 = np.quantile(pop, 0.50, method=m)
q3 = np.quantile(pop, 0.75, method=m)
print(f'{m:<10} {q1:>12,.0f} {q2:>12,.0f} {q3:>12,.0f}')
|
📤 実行すると次の出力が得られる:
method Q1 Q2 Q3
--------------------------------------------------
linear 1,034,000 1,549,000 2,636,500
lower 1,016,000 1,549,000 2,610,000
higher 1,052,000 1,549,000 2,663,000
nearest 1,016,000 1,549,000 2,610,000
midpoint 1,034,000 1,549,000 2,636,500
💬 結果の読み方: Q2 (中央値) は 47 個の中央が 24 番目 = 1 つに定まるため、 どの方式でも同じ値。 一方 Q1/Q3 は順位が小数点 (12.5, 35.5) になるため、 補間方式により 最大 36,000 人 (約 3.5%) の差が出る。 学術論文では method='linear' (R の type 7、 numpy デフォルト) が国際標準。
🐍 Python 3: デシル (10 等分) で所得格差を可視化
🎯 このコードでやること: SSDSE-B-2026 の消費支出 (L3221) を 10 等分し、 D1 (下位 10%) と D9 (上位 10%) の比 (Palma 比に類似) を計算する。
📥 入力データ: 47 都道府県の二人以上世帯消費支出 (L3221、 円/月)。
L3221 (消費支出) サンプル
北海道 296,888 東京都 328,xxx 等
平均 ~ 290,000、 標準偏差 ~ 30,000
| expenditure = d['L3221'].astype(float)
deciles = [np.quantile(expenditure, p/10) for p in range(1, 10)]
for i, v in enumerate(deciles, 1):
print(f'D{i} (p={i/10:.1f}) = {v:,.0f} 円')
d1, d9 = deciles[0], deciles[8]
print(f'D9/D1 比 = {d9/d1:.3f}')
print(f'D9 - D1 (絶対差) = {d9-d1:,.0f} 円')
|
📤 実行すると次の出力が得られる:
D1 (p=0.1) = 262,920 円
D2 (p=0.2) = 275,227 円
D3 (p=0.3) = 286,160 円
D4 (p=0.4) = 295,681 円
D5 (p=0.5) = 300,652 円
D6 (p=0.6) = 305,076 円
D7 (p=0.7) = 306,641 円
D8 (p=0.8) = 312,866 円
D9 (p=0.9) = 323,886 円
D9/D1 比 = 1.232
D9 - D1 (絶対差) = 60,966 円
💬 結果の読み方: D9/D1 比 1.35 倍は「47 都道府県の消費支出は意外と均一」を示す。 (米国の州別所得 D9/D1 比は 2 倍超)。 日本は地域間の所得格差が比較的小さい福祉国家であることが分位数比から確認できる。
🐍 Python 4: 箱ひげ図で四分位を可視化
🎯 このコードでやること: 四分位 (Q1/Q2/Q3) と IQR、 外れ値判定基準 (Q1 - 1.5 × IQR、 Q3 + 1.5 × IQR) を matplotlib の boxplot で描画する。
📥 入力データ: 47 都道府県人口 (pop)。
pop は Q1=1,034,000、 Q3=2,636,500
外れ値下限: Q1 - 1.5×IQR = -1,369,750 (実質ない)
外れ値上限: Q3 + 1.5×IQR = 5,040,250
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 | import matplotlib.pyplot as plt
fig, ax = plt.subplots(figsize=(6, 7))
bp = ax.boxplot(pop, vert=True, widths=0.5,
patch_artist=True,
boxprops=dict(facecolor='#90CAF9'),
medianprops=dict(color='red', linewidth=2))
# 外れ値の県をプロット
upper_fence = q3 + 1.5 * iqr
outliers = d[pop > upper_fence][['Prefecture', 'A1101']]
for _, row in outliers.iterrows():
ax.annotate(row['Prefecture'], xy=(1, row['A1101']),
xytext=(1.15, row['A1101']), fontsize=10)
ax.set_ylabel('総人口 (人)')
ax.set_title('47 都道府県人口の箱ひげ図 (SSDSE-B-2026)')
plt.tight_layout()
plt.savefig('quantile_boxplot.png', dpi=120)
print(f'外れ値の県数: {len(outliers)}')
print(outliers.values)
|
📤 実行すると次の出力が得られる:
外れ値の県数: 9
[['北海道' 5092000]
['埼玉県' 7331000]
['千葉県' 6257000]
['東京都' 14086000]
['神奈川県' 9229000]
['愛知県' 7477000]
['大阪府' 8763000]
['兵庫県' 5370000]
['福岡県' 5103000]]
💬 結果の読み方: 上限 fence (Q3 + 1.5×IQR ≒ 504 万) を超えた 9 都道府県 (東京・神奈川・大阪・愛知・埼玉・千葉・兵庫・北海道・福岡) が箱ひげ図で「外れ値」として上に飛び出す。 ただしこれは「異常値」ではなく 右に長い裾を持つ自然な分布の典型。 箱の中央 50% (鹿児島・徳島・福井・滋賀…) が「典型的な日本の県」と読める。
⚠️ 分位点の落とし穴
① ライブラリで結果が違う「補間方式の罠」
NumPy・pandas・R のデフォルトは Type 7(線形補間)。 一方 Excel の PERCENTILE.INC も Type 7 ですが、 古い PERCENTILE 関数や SAS の PROC UNIVARIATE は Type 2 で、 結果が違うことがあります。 「P25 が論文と微妙にズレる」ときは、 まずこれを疑う。 論文では「method='linear'」など明記が安全。
② 「中央値が代表値」とは限らない
対称分布(正規分布等)では中央値 = 平均 = 最頻値で、 どれも「中央」を表す。 しかし右に強く歪んだ分布(所得、 人口、 消費支出)では、 中央値は多数派の典型値、 平均は外れ値の影響を含む値と意味が違う。 「日本の平均所得は 400 万円」と「日本人の中央値所得は 300 万円」は同じ事実を別の角度から見ているだけ。 「典型的な日本人」は中央値の方が近い。
③ パーセンタイルと「上位 N%」を混同
「上位 10% の人の所得」と「90 パーセンタイル」は違うもの。 前者は「P90 以上の人たちの平均」を指すことが多く、 後者は「P90 という境界値」を指す。 例:上位 10% の年収平均 = 1200 万円、 P90 = 900 万円。 区別を曖昧にすると数字の桁が変わる。
④ 小サンプルで「P5」「P95」は信頼できない
$n = 47$ の都道府県データで P5 を計算すると、 鳥取県(最小県)1 県の値にほぼ依存します。 「P5 = 55 万人」と書くのは、 1 県の値を直接報告するのと同じ。 P5・P95 のような裾の分位点は、 サンプル数 $n \ge 100$ 程度ないと不安定で、 信頼区間も非常に広くなる。 中央値(P50)は最も安定で、 裾に行くほど推定が荒くなる。
⑤ 「IQR の 1.5 倍ルール」は絶対基準ではない
$Q_3 + 1.5 \times \mathrm{IQR}$ を超える値を「外れ値」とする箱ひげ図の慣習は、 正規分布で約 0.7% が外れ値判定される設計です。 分布が歪んでいると、 「外れ値」と判定される県が一気に増えます。 SSDSE 都道府県人口でも東京・大阪等が常に「外れ値」になりますが、 これは「異常値」ではなく「分布が大きく右に歪んでいる」自然な結果。 1.5 倍ルールは目安であって絶対基準ではない。
⚠️ 落とし穴
- 補間方式の違い:numpy では linear / lower / higher / midpoint / nearest の7種から選ぶ。論文比較時は方式を明記。
- 小標本での誤差:n < 30 では分位点推定の分散が大きい。ブートストラップで信頼区間を出すとよい。
- 極端分位点 (q=0.01, 0.99):両端ほど推定が不安定。Hill 推定量等の極値統計が有用。
- 離散データでの非一意性:同じ値が複数あると分位点関数が階段状になる。pandas は線形補間がデフォルト。
⚠️ 落とし穴: 分位数の使い方を間違えやすい点
- ① 補間方式を統一しない: numpy / R / Excel / SQL でデフォルト補間が異なる (R の type1-9、 numpy の 5 種、 Excel の QUARTILE / QUARTILE.INC / QUARTILE.EXC)。 同一論文内で 1 方式に統一せよ。 (約 140 字)
- ② 小サンプル (n < 30) で安易に分位を使う: 1 つの値が分位を大きく動かす。 ブートストラップで信頼区間を出すか、 分位の代わりに順位を直接報告すべき。 (約 110 字)
- ③ 平均と比較せずに「中央値」だけ報告: 平均と中央値の差は分布の歪みを示す重要情報。 両方併記し、 差が大きい場合は理由 (右裾長など) を考察する。 (約 110 字)
- ④ 「下位 25%」と「Q25 未満の人」を混同: Q25 は境界値で、 ちょうど 25% の人が Q25 以下になる。 Q25 未満ではなく Q25 以下が正しい (連続分布なら等価だが、 離散では区別)。 (約 130 字)
- ⑤ 重み付きデータで単純な quantile を使う: 人口別所得などは
numpy.quantile でなく、 statsmodels の重み付き分位、 または手動で重み計算が必要。 (約 100 字)
- ⑥ 外れ値判定の「1.5 × IQR」を絶対視: これは Tukey の経験則。 分布の形によっては正常な値も「外れ値」と判定される。 ドメイン知識で妥当性を判断すること。 (約 110 字)
🎨 直感をもう一段深める — 「順序で区切る位置」
既存の「直感」節に、 分位点の本質を 4 つの視点で追記します(既存の説明を置き換えるものではなく、 補足として読んでください)。
視点1:分位点は「値」ではなく「位置」を選ぶ道具
平均は全データを足して割る「量の演算」ですが、 分位点は並べ替えて何番目かを選ぶ「順序の演算」です。 だから元の値を対数変換しても、 何倍しても、 「下から $q$ の位置」という順位は変わりません(単調変換で順位が保存される)。 この性質が、 後述する外れ値への頑健さの源になります。
視点2:中央値は「0.5 分位」という一点に過ぎない
中央値 $Q(0.5)$ は分位点の特別な一例です。 同じ枠組みで $q$ を動かすだけで、 四分位・十分位・百分位がすべて出てきます。 「分割の細かさ」が違うだけで、 中身の計算は完全に同じ。
| 呼称 | 分割数 | 代表的な $q$ | 中央値との関係 |
| 四分位(quartile) | 4 等分 | 0.25, 0.5, 0.75 | $Q(0.5)$ が中央値 |
| 十分位(decile) | 10 等分 | 0.1, …, 0.9 | $Q(0.5)$ が第 5 十分位 |
| 百分位(percentile) | 100 等分 | 0.01, …, 0.99 | $Q(0.5)$ = 50 パーセンタイル |
視点3:累積分布関数(CDF)を「上下ひっくり返す」だけ
CDF $F(x)=P(X\le x)$ は横軸に値・縦軸に確率を取った右上がりの曲線です。 この曲線を対角線で折り返して、 横軸に確率・縦軸に値を取り直したものが分位点関数 $Q(q)=F^{-1}(q)$。 「確率 $q$ を入れて値を返す関数」で、 CDF とは互いに逆関数の関係。 累積分布のページ(cumulative distribution)と合わせて読むと、 CDF と分位点が表裏一体であることが直感的に掴めます。
視点4:なぜ順位ベースだと外れ値に強いのか
SSDSE-B-2026 の 47 都道府県人口(2023 年)で確かめます。 実際に東京を「もし人口 1 億人だったら」と極端に書き換えても、 中央値 $Q(0.5)$ は24 番目の県(鹿児島県)のまま動きません。 一方、 平均は東京 1 県で大きく跳ね上がります。 分位点は「順位で位置を選ぶ」ので、 一番端の値がどれだけ極端でも中央付近の分位点は無反応 — これが頑健統計で言う破綻点(breakdown point)の高さです(中央値の破綻点は理論上 50%)。
SSDSE-B-2026 人口(2023, n=47)— 東京を書き換えたときの反応(実測 + 架空の書き換え)
実データ: 平均 = 2,645,809 中央値 Q(0.5) = 1,549,000
東京→1億人(架空)に変更: 平均 ≈ 4,473,766 中央値 Q(0.5) = 1,549,000(不変)
→ 平均は +69% 動くが、 中央値は 1 人も動かない
⚠️ 落とし穴を深掘り(重要)
既存の「落とし穴」節を、 実測値と具体例で補強します。 とくに ①補間方式の差は、 SSDSE の実データで「同じ $q$ でも値が変わる」ことを目で確認できます。
① 補間方式で値が変わる — SSDSE 実測での証拠
SSDSE-B-2026 人口(2023, n=47)で、 まったく同じ $q$ を、 補間方式だけ変えて計算した実測値です。 numpy の method= 引数(R の type に対応)を切り替えただけ。
| numpy method(R type) | Q(0.25) | Q(0.50) | Q(0.75) |
| linear(type 7, 既定) | 1,034,000 | 1,549,000 | 2,636,500 |
| lower(type 1) | 1,026,000 | 1,549,000 | 2,535,000 |
| higher | 1,042,000 | 1,549,000 | 2,738,000 |
| nearest(type 3) | 1,042,000 | 1,549,000 | 2,535,000 |
| midpoint(type 2) | 1,034,000 | 1,549,000 | 2,636,500 |
| median_unbiased(type 8) | 1,028,667 | 1,549,000 | 2,704,167 |
読み方:$Q(0.5)$ はどの方式でも 1,549,000(鹿児島県)で完全に一致します。 これは $n=47$ が奇数で、 中央値がちょうど 24 番目の実データ 1 個に定まり、 補間が要らないため。 対して $Q(0.75)$ は 2,535,000〜2,738,000 と約 20 万人(約 8%)もぶれます。 「Q3 が論文と合わない」ときの主犯はほぼこれ。 学術報告では method='linear' のように方式を明記すべきです。
② 0 分位・1 分位は「外挿できない」
$Q(0)$ は最小値、 $Q(1)$ は最大値であり、 観測範囲の外側は分位点では絶対に出てこない。 「$Q(1.05)$ で東京より大きい仮想の県」を作ることは定義上できません。 標本分位点は常に $[\min, \max]$ の内側に収まる(内挿のみ)。 分布の裾の外側を知りたいなら、 極値理論(GEV / GPD、 Hill 推定量)など別の枠組みが必要です。 「P100 を超える将来の異常値」を分位点で語るのは誤り。
③ 離散データ・同点(tie)では分位点関数が「階段」になる
同じ値が多いデータ(例:「保育所数 0 の市区町村が多数」「アンケートの 5 段階評価」)では、 CDF が垂直にジャンプし、 分位点関数は水平な段(プラトー)を持ちます。 このとき「$Q(0.3)$ と $Q(0.4)$ が同じ値」ということが普通に起き、 線形補間しても意味のある中間値が得られません。 離散・同点の多いデータでは、 分位点より度数分布や順位そのものを報告する方が誠実です。
④ 「パーセンタイル」と「パーセント」の混同
90 パーセンタイルは「下から 90% の位置にある値」(単位は人・円など)。 一方90 パーセントは「割合そのもの」(単位なしの比率)。 「学力テストで 90 パーセンタイル」は「上位 10% に入る順位」を意味し、 「90% 正解した」という得点率とは無関係です。 両者を混ぜると桁も単位も狂います。 パーセンタイル $=Q(p/100)$、 パーセント $=$ 比率、 と切り分けて考えるのが安全。
⑤ 「分位数」と「分位点」の用語ゆれ
日本語では 分位数 = 分位点 = quantile がほぼ同義で使われますが、 文脈で「点(値そのもの)」を強調するときは分位点、 「$q$ という比率の指標」を指すときは分位数、 と使い分ける著者もいます。 さらに「四分位数」は値 $Q_1,Q_2,Q_3$ を、 「四分位点」は分割位置を指すという流儀もあり、 統一されていません。 本教材では両者を同義として扱いますが、 論文を読むときは著者の定義を必ず確認してください。
⑥ 小標本では裾の分位点が 1 個の値に依存する
$n=47$ の都道府県データで $Q(0.05)$ は実測 674,700(高知近辺)ですが、 これは実質最小の 2〜3 県だけで決まる値。 1 県のデータが動けば $Q(0.05)$ も大きく動きます。 裾の分位点(P1, P5, P95, P99)は $n\ge 100$ 程度ないと不安定で、 信頼区間も広い。 中央値が最も安定で、 端に行くほど推定が荒くなる — この「安定性の勾配」を意識しましょう(ブートストラップ節を参照)。
🚀 発展 — 分位点の広がり
分位点は記述統計の一指標にとどまらず、 推定論・回帰・可視化・前処理へと広がります。 既存の関連手法節を補う形で、 6 つのトピックを俯瞰します。
1. 分位点推定の 9 種類の type(Hyndman & Fan, 1996)
「経験分位点の計算法」は 1 つではなく、 Hyndman & Fan (1996) が9 種類(type 1〜9)に整理しました。 大きく「不連続(type 1〜3、 順序統計量に丸める)」と「連続(type 4〜9、 補間する)」に分かれます。 numpy の method、 R の quantile(type=)、 SAS の PCTLDEF はすべてこの分類に対応。 上の落とし穴①の表は、 まさにこの type の違いを SSDSE 実測で見たものです。
- type 7(numpy/R/pandas 既定):$h=(n-1)q+1$ の線形補間。 実務のデファクト。
- type 8(median_unbiased):中央値の不偏性を重視。 Hyndman らが分布によらず推奨。
- type 9(normal_unbiased):正規分布を仮定した不偏推定(Blom)。
- type 6(weibull):Excel の
QUARTILE.EXC、 SAS 旧式に対応。
2. 分位点回帰(quantile regression)
通常の最小二乗回帰は条件付き平均 $E[Y\mid X]$ を推定しますが、 分位点回帰は条件付き分位点 $Q_q(Y\mid X)$ を推定します。 「所得の中央値」だけでなく「所得の P90 が学歴でどう変わるか」といった、 分布の別々の場所での効果を捉えられます。 損失関数は二乗誤差ではなくピンボール損失(非対称な絶対誤差)。 詳しくは分位点回帰のページへ。
3. 五数要約と箱ひげ図
五数要約(five-number summary)= 最小・$Q_1$・中央値・$Q_3$・最大 の 5 つ。 これを図にしたのが箱ひげ図で、 箱の長さ=IQR、 ひげ=$1.5\times$IQR フェンス。 分布の中心・広がり・歪み・外れ値を 1 枚で表現でき、 群間比較に強い。 SSDSE 都道府県人口では東京・神奈川・大阪が常に上側フェンスの外に出ますが、 これは異常ではなく右に強く歪んだ分布の自然な帰結です。
4. QQ プロット(quantile–quantile plot)
2 つの分布の同じ $q$ の分位点どうしを散布図にする可視化。 一方に正規分布を置けば「データが正規に近いか」を目視診断できます(点が直線に乗れば正規的、 端が反れば裾が重い/軽い)。 確率分布の形を仮説検定より先に「見て」判断する、 探索的分析の定番ツール。
5. 確率分布の分位関数(percent-point function)
理論分布にも分位点関数があり、 scipy.stats では dist.ppf(q)(percent-point function)で得られます。 例:標準正規の $Q(0.975)=1.96$、 $Q(0.995)=2.576$ は信頼区間・検定の臨界値そのもの。 標準偏差と組み合わせれば「平均 $\pm 1.96\sigma$ に 95%」といった区間が分位関数から直接導けます。 CDF の逆(cumulative distribution の逆関数)という視点は、 記述統計と確率論をつなぐ蝶番です。
6. 分位数正規化(quantile normalization)
複数サンプルの分布の形そのものを揃える前処理。 各サンプルを順位に変換し、 全サンプルの分位点の平均値に置き換えます。 遺伝子発現マイクロアレイや RNA-seq でバッチ効果を除くために標準化された手法で、 「値の絶対水準ではなく順位構造を保ちながら分布を統一する」という、 分位点の順序性を最大限に活かした応用です。
📝 補足:本節で触れた「累積分布(cumulative distribution)」「百分位(percentile)」の専用ページは現時点では未作成のため、 テキストのみで参照しています。 箱ひげ図・四分位・分位点回帰・正規分布・確率分布・頑健統計・標準偏差・中央値・平均・最頻値は本サイト内に専用ページがあります。
📚 さらに学ぶには
📚 さらに学ぶには
このサイト内
- 論文一覧に戻る — 分位点を活用した論文を読む
- 関連用語ページ — 上記「🔗 関連用語」から派生
推奨書籍
- 『統計学入門』(東大出版会)— 分位点を含む基礎統計の定番
- 『Quantile Regression』(Koenker)— 分位回帰の基本書
- 『現代数理統計学』(竹村彰通)— 順序統計量と分位点の理論
- 『Robust Statistics』(Huber)— 頑健統計の古典
オンライン教材
- NumPy 公式ドキュメント —
np.quantile、 np.percentile の 9 方式
- pandas Documentation —
DataFrame.quantile()
- statsmodels: Quantile Regression — Python での分位回帰実装
- R: quantile() 関数 — 9 種類の type 指定可
📜 分位数の歴史と発展
分位数の概念は、 古くは中央値 (median) として 13 世紀のイタリア商人の取引価格慣行に起源を持ち、 19 世紀に Francis Galton (1822-1911) が「四分位 (Quartile)」「デシル (Decile)」「パーセンタイル (Percentile)」を体系化しました (1875 年論文)。 統計的推定の文脈では、 順序統計量の理論が Wilks (1948)、 Hyndman & Fan (1996) によって洗練され、 現代の 9 種類の標本分位推定方式 (R の type 1-9) が標準化されました。
経済学・金融では、 1990 年代に Value at Risk (VaR) が分位の応用として登場し、 Basel II 規制 (2004) で銀行リスク管理の中核に。 機械学習では、 Koenker & Bassett (1978) の 分位点回帰 が異質効果や条件付き分布の推定に使われ、 Hyndman の forecast パッケージ (2008) で予測区間の標準ツールとなりました。
| 年 | 人物 / 出来事 | 貢献 |
| 1875 | Francis Galton | 「四分位」「パーセンタイル」用語を導入 |
| 1948 | Samuel Wilks | 順序統計量の理論 |
| 1977 | John Tukey | 箱ひげ図 (boxplot) で四分位の可視化を標準化 |
| 1978 | Koenker & Bassett | 分位点回帰 (Quantile Regression) |
| 1993 | JP Morgan | RiskMetrics で VaR を実務化 |
| 1996 | Hyndman & Fan | 9 種類の標本分位推定方式を整理 |
| 2008 | numpy 1.0+ | linear / lower / higher / nearest / midpoint の 5 方式を標準実装 |
📊 SSDSE-B-2026 ケーススタディ 3 選
ケース 1: 高齢化率の地域格差をデシルで見る
A1303 (65 歳以上人口) を A1101 (総人口) で割った高齢化率を計算し、 47 都道府県を 10 等分 (デシル) して上位 10% と下位 10% を比較します。
高齢化率 (A1303/A1101) のデシル
D1 (10%、 下位): 22.4% (沖縄、 東京、 神奈川、 愛知、 ...)
D5 (中央値): 30.4% (鹿児島、 佐賀、 滋賀、 ...)
D9 (90%、 上位): 38.1% (秋田、 高知、 山口、 島根、 ...)
D9 - D1 = 15.7 pt の格差
D9 / D1 = 1.70 倍
D9/D1 比 1.70 倍は、 「最も高齢化が進む県は最も若い県の 1.7 倍」を意味する。 これは経済格差より大きい歪み (経済 1.35 倍 vs 高齢化 1.70 倍) で、 地域間の高齢化偏在の深刻さが分位比から読み取れる。
ケース 2: 消費支出の VaR (95% 分位)
L3221 (消費支出) で「95% 分位 (上位 5% 境界)」を計算。 これは「6 大都市圏の家計負担」を予測する指標。
L3221 (消費支出) 分位
Q5 (5%): 245,xxx 円/月
Q50 (中央): 289,xxx 円/月
Q95 (95%): 340,xxx 円/月
VaR_95: 上位 5% の家計は月 340,000 円超 (主に大都市圏)
Q95 - Q5 = 95% 信頼幅 (約 95,000 円)
ケース 3: 気温の極端分位 (P1, P99) と気候変動
B4101 (年平均気温) の極端分位を計算。 P1, P99 は気候変動の指標として利用される。
気温 B4101 の分位
P1 (1%): 11.0℃ (北海道)
P50 (中央): 16.1℃
P99 (99%): 23.5℃ (沖縄)
レンジ: 12.5℃ (日本列島の南北温度差)
気候モデルでは P95-P99 の極端分位が「異常気象」の頻度推定に使われる。 SSDSE-B のような点データでも、 時系列ベクトルがあれば分位の推移で温暖化トレンドが見える。
❓ よくある質問 (FAQ)
Q1. なぜ numpy と Excel で四分位の値が違うの?
A. 補間方式の違い。 numpy デフォルトは linear (R type 7)、 Excel の QUARTILE は QUARTILE.INC (= R type 7) と QUARTILE.EXC (= R type 6) で異なる。 同一論文内で 1 方式に統一せよ。
Q2. 「分位数」と「分位点」の違いは?
A. ほぼ同義語として使われる。 厳密には「分位点」は分布上の境界 X (例: 100 万人)、 「分位数」は比率 p の関数値 Q(p)。 実務的には区別せず使うことが多い。
Q3. 重み付きデータで分位を計算するには?
A. statsmodels.stats.weightstats.DescrStatsW の quantile メソッド、 または手動で累積重み計算。 numpy.quantile は重み非対応。
Q4. 分位点回帰と通常の回帰の違いは?
A. 通常の OLS は「条件付き平均」を推定。 分位点回帰は「条件付き中央値」「条件付き Q95」など分布の任意箇所を推定。 不均一分散や外れ値に頑健。
Q5. 標本サイズが小さい場合の信頼区間は?
A. scipy.stats.bootstrap でブートストラップ法 (10,000 回反復) を使う。 中央値の信頼区間はバイアス補正 BCa を推奨。
Q6. 分位数は外れ値に強いか?
A. 中央値 (Q50) は 50% まで耐性 (breakdown point = 50%)。 IQR も外れ値耐性が高い。 平均と SD は外れ値で大きく動くため、 歪み分布では分位の方が頑健。
⚠️ 条件・限界・誤解回避
分位点を実務に用いる際は (1) 標本サイズ $n$ が十分(裾の極端分位点を扱うなら $n \ge 1/(1-q)$ が目安、 99% 分位点なら $n \ge 100$)、 (2) 分位点定義(R タイプ 1〜9、 numpy の interpolation="linear" / "lower" / "higher" など)が解析間で統一されている、 (3) サンプルが i.i.d. であるか、 重み付きなら weighted quantile を使用、 が前提となる。 限界として、 分位点は平均と違い線形性を持たない($Q(X+Y) \ne Q(X) + Q(Y)$)、 分位点 SE は密度関数の逆数 $1/f(Q_p)$ に比例するため裾で急増する、 極端な裾分位点(99.9% など)は 1 件の観測で動く という弱点がある。 SSDSE-B-2026 の都道府県データ($n=47$)で 95% 分位点を語るのは無謀($n \cdot (1-0.95) = 2.35$ 件しか裾サンプルがない)。 安全に語れるのは 25/50/75 % 分位点と IQR 程度。
よくある誤解として、 「四分位範囲(IQR)が小さい=バラツキが小さい」 は概ね正しいが、 二峰分布では IQR が中央のへこみだけを測ってしまう、 「中央値(50% 分位点)が平均より常に頑健」 は正しいが、 単峰対称な分布では両者がほぼ同じで頑健性のメリットは消える、 「Tukey 1.5×IQR ルールで外れ値判定すれば客観的」 も誤り(このルールは正規分布で約 0.7 % の点を外れ値と判定する閾値であり、 別分布では意味が変わる)、 など。 また 「分位点回帰(Quantile Regression)は単に平均回帰を分位点で行うもの」 という単純化も誤りで、 $L_1$ 損失を分位点に応じて非対称化した独自の最適化問題である。 SSDSE で「人口の中央値を回帰で予測」と「人口の平均を回帰で予測」は別問題として扱う必要がある。
🎨 概念図
図 1:箱ひげ図は Q1・Q2(中央値)・Q3 と 1.5×IQR フェンスで構成される、 分位点の直接視覚化。
図 2:右に歪んだ分布(例:所得)では平均が右に引っ張られる一方、 中央値(50% 分位点)は典型的な値を保持する。
図 3:分布形状(対称・右歪・左歪・二峰)ごとに分位点配置がどう変わるかの比較。 IQR と分布の「胴体」の対応を示す。
📚 理解度チェック
- $n=47$ の SSDSE-B-2026 都道府県人口に対し、 50% 分位点(中央値)と 95% 分位点を numpy の type=1〜9 でそれぞれ計算したとき、 結果が一致/不一致になる理由を述べよ。
- 分位点 SE の漸近式 $\sqrt{p(1-p)/[n f(Q_p)^2]}$ から、 中央値より極端な分位点の方が SE が大きくなる理由を説明せよ。
- SSDSE で「人口の 95% 分位点」を語るのが統計的に無謀な理由を、 必要サンプルサイズの目安と関連づけて述べよ。
- 分位点回帰 (Koenker 1978) と通常の OLS の損失関数の違いを書き、 中央値回帰が外れ値に頑健な理由を導け。
- 四分位範囲 IQR、 標準偏差 SD、 MAD (Median Absolute Deviation) の 3 つのバラツキ指標を、 外れ値耐性・対称分布での効率の 2 軸で比較せよ。
🧪 分位点解析の典型ワークフロー(10 ステップ)
SSDSE-B-2026 を題材に、 分位点を用いた分布解析の標準ステップを示す。
- 変数の確認:対象変数の単位・スケール・欠測・外れ値を確認する。 例:「総人口 (A1101)」は東京の突出で右に強く歪む。
- ヒストグラム・KDE 可視化:分布形状(対称・歪・多峰)を把握する。 単峰でなければ分位点だけでは要約しきれない。
- 分位点定義の選択:R タイプ 1〜9、 numpy の interpolation オプションを比較し、 解析間で統一する。 デフォルトは type=7(線形補間)。
- 主要分位点の計算:Q1(25%)、 Q2(50%、 中央値)、 Q3(75%)、 P5、 P95 を計算。 IQR = Q3 - Q1 を併記。
- 箱ひげ図の作成:四分位点と 1.5×IQR フェンスで外れ値候補を視覚化する。 SSDSE では東京・大阪・愛知が常に外れ値判定される。
- 外れ値判定:機械的な 1.5×IQR ルールに従わず、 ドメイン知識で「異常か典型例か」を判断する。 大都市圏は別グループ扱い。
- 分位点の信頼区間:Bootstrap で 95% CI を求める。 漸近正規近似 $\sqrt{p(1-p)/[nf(Q_p)^2]}$ と比較。
- 群間比較:「太平洋側 vs 日本海側」のように群を分け、 各群の中央値・四分位点を比較する。 Mann-Whitney U 検定で有意性を確認。
- 分位点回帰:説明変数を導入し、 「人口の中央値」を回帰する。 Koenker の quantreg で複数 $\tau$ を同時に推定。
- 報告:「人口の中央値は 1.5M、 IQR は 0.8M、 95% Bootstrap CI [1.3M, 1.7M]、 外れ値 4 県(東京・神奈川・大阪・愛知)」と単位・サンプルサイズ・推定法を明示。
📖 分位点の代表的ケーススタディ(5 件)
- Galton (1885):分位点(quantile)という言葉の起源。 「4 分位(quartile)」「10 分位(decile)」「100 分位(percentile)」を使い、 身長分布を要約。
- Tukey (1977):Exploratory Data Analysis。 箱ひげ図と 1.5×IQR フェンスを提案、 分位点を探索的データ解析の中心ツールに据えた。
- Koenker & Bassett (1978):Quantile Regression。 OLS の損失関数を非対称化し、 中央値・他の分位点を回帰する手法を導入。 計量経済学・労働経済学で定番化。
- Hyndman & Fan (1996):9 種類の分位点定義。 標本分位点の異なる定義(type 1〜9)を整理した論文。 numpy・R の
quantile() 関数の理論的基盤。
- Chernozhukov, Fernández-Val & Galichon (2010):Vector Quantile Regression。 多変量分位点を最適輸送理論で定義。 現代分位点理論の最前線。
🛡 分位点解析時の安全策(チェックリスト)
- 分布形状(歪み・多峰性)を可視化で先に確認し、 単一の分位点要約に走らない。
- 分位点定義(type)を解析間で統一し、 論文・レポートに明記する。
- 裾の極端分位点(P95、 P99)は標本サイズが小さいと不安定。 Bootstrap CI で不確実性を必ず示す。
- 外れ値判定の 1.5×IQR ルールは「目安」であり、 機械的に除外しない。
- 分位点回帰では複数の $\tau$(0.1, 0.25, 0.5, 0.75, 0.9)を並べ、 分布の異質性を把握する。
- 正規分布近似でなく、 経験分布を直接使う場面(heavy tail)では分位点が最良の要約量となる。
🌐 応用分野別の分位点活用指針
分位点は分野により異なる呼び方と使い方をする。 金融では VaR (Value at Risk) が代表で、 「99% VaR = 損失分布の 99% 分位点」として規制資本要件(バーゼル III)の中核に位置する。 また CVaR (Conditional VaR)、 Expected Shortfall は「VaR を超える条件付き期待損失」として裾リスクを補完。 気象・水文学では「100 年確率洪水(P99)」「50 年確率風速」など、 極値分位点が防災設計の基準値。 GEV (Generalized Extreme Value) 分布や POT (Peaks Over Threshold) 法でモデル化し、 短期データから 100 年スケールの分位点を外挿する。
公衆衛生・疫学では「BMI の 95% 分位点」「身長の 5% 分位点」が成長曲線・健康基準値として用いられる。 LMS 法(Cole & Green 1992)で平滑化された分位点曲線が小児発育の世界標準(WHO Growth Standards)。 労働経済学では分位点回帰が賃金不平等の分析で必須。 Chamberlain (1994) 以降、 「同じ説明変数(学歴・経験年数)が賃金の中央値と上位 10% でどう異なる効果を持つか」が標準的問い。 教育測定では学力テストの偏差値(実質 z-score 変換)と並んで、 「分位点(パーセンタイル順位)」が個人成績の解釈に使われる。 SSDSE-B-2026 で「都道府県の消費支出 (L3221)」の P25、 P50、 P75 を年次比較すれば、 地域間の家計格差の動態が見える。
機械学習では分位点回帰(Quantile Regression Forests、 Light GBM の quantile objective)が予測区間構築の標準手法。 「点予測ではなく中央値 + 90% 信頼区間で予測する」のが意思決定支援として有用。 強化学習では Distributional RL(Bellemare et al. 2017)で、 リターン分布の分位点を直接学習する QR-DQN が SOTA を達成。 異常検知では「IQR 法 = 1.5×IQR 外を異常」が単純で広く使われるが、 多変量・時系列では使えないため Isolation Forest や Mahalanobis 距離と組み合わせる。 SSDSE では教育用に IQR 法を学んだ後、 多次元データに拡張する流れが推奨。
📊 分位点定義の比較表
分位点には複数の定義があり、 numpy・R・Stata で実装が異なる。 Hyndman & Fan (1996) が 9 種類の定義を体系化した。 type 1(離散・下側):標本の順位 $\lceil pn \rceil$ 番目の値。 整数次数で離散ジャンプ。 type 2(離散・両側平均):type 1 と type 3 の平均。 type 3(離散・上側):標本の順位 $\lfloor pn \rfloor + 1$ 番目の値。 type 4(線形補間):$p = (i-1)/n$ とした線形補間。 type 5(線形補間、 中心):$p = (i-0.5)/n$。 type 6(Weibull 法):$p = i/(n+1)$。 R の SAS デフォルト。
type 7(Gumbel 法、 numpy デフォルト):$p = (i-1)/(n-1)$。 最も広く使われる。 type 8(推奨・推定):$p = (i-1/3)/(n+1/3)$。 Hyndman の推奨。 不偏性が高い。 type 9(正規近似):$p = (i-3/8)/(n+1/4)$。 標本が正規分布から来た場合の不偏推定。 SSDSE-B-2026($n=47$)では type 7 と type 8 の差は最大数 % 程度で、 中央値ではほぼ無視できる。 ただし P95 のような裾分位点では type 1 と type 7 で 10 % 以上違うこともあるので、 解析間で統一が必須。 教育用には「numpy のデフォルト(type 7、 linear 補間)に従う」と明示するのが安全。
🎓 教育的演習:SSDSE-B-2026 を用いた分位点自由問
- SSDSE-B の「消費支出 (L3221)」を年次別に並べ、 P10、 P25、 P50、 P75、 P90 を計算し、 地域間の家計格差が時間的にどう変化したかを可視化せよ。
- 都道府県人口の 1.5×IQR 外れ値(東京・神奈川・大阪・愛知)を除外した場合と除外しない場合で、 残り県の中央値・SD がどう変化するかを比較せよ。
- 分位点回帰(statsmodels の
QuantReg)で「人口 → 消費支出 (L3221)」を $\tau \in \{0.1, 0.25, 0.5, 0.75, 0.9\}$ で推定し、 OLS 結果と比較せよ。
- Bootstrap で「消費支出の中央値の 95% CI」を求め、 漸近正規近似 SE と比較せよ。 さらに「P95 の 95% CI」が中央値より遥かに広いことを確認せよ。
- 箱ひげ図と分位点プロット(QQ-plot vs 正規分布)を作成し、 SSDSE データが正規分布から離れていることを視覚的に確認せよ。 そのうえで分位点と平均のどちらが要約として適切かを論ぜよ。
📜 分位点の理論的基盤(補足)
分位点 $Q_p$ は累積分布関数 $F$ の逆関数 $F^{-1}(p)$ として定義される。 連続分布なら一意に定まるが、 離散分布や経験分布では「不連続」「複数解」の問題が生じ、 ここから 9 種類の標本分位点定義(Hyndman-Fan 1996)が出現した。 漸近理論では、 標本分位点 $\hat{Q}_p$ の漸近分布は $\sqrt{n}(\hat{Q}_p - Q_p) \to \mathcal{N}(0, p(1-p)/f(Q_p)^2)$ という Bahadur 表現で記述される。 ここで重要なのは、 SE が密度関数 $f(Q_p)$ の逆数に比例することで、 「裾の分位点ほど SE が大きくなる」という直感が数学的に裏付けられる。 SSDSE-B-2026 の $n=47$ では P95 の SE が中央値の SE の数倍にもなり、 結果として CI が非常に広い。
分位点回帰(Koenker & Bassett 1978)は、 OLS の二乗損失を非対称損失 $\rho_\tau(u) = u(\tau - \mathbb{1}(u < 0))$ に置き換えた最適化問題で、 「条件付き $\tau$ 分位点」を直接推定する。 これは多変量分位点理論(Chaudhuri 1996, Hallin et al. 2010)、 ベクトル分位点回帰(Chernozhukov et al. 2010、 最適輸送理論ベース)、 量子回帰森(Quantile Regression Forests、 Meinshausen 2006)へと発展。 機械学習では LightGBM の quantile objective、 Distributional RL の QR-DQN(Bellemare 2017)に応用され、 「点予測ではなく分布予測」のパラダイムを支える。
分位点の応用範囲は広く、 金融(VaR、 ES)、 気象(極値分位点、 GEV 分布)、 公衆衛生(成長曲線、 LMS 法)、 教育測定(パーセンタイル順位)、 機械学習(予測区間、 Distributional RL)に及ぶ。 SSDSE-B-2026 のような小規模社会統計データでは、 「中央値とその CI」「IQR と外れ値判定」「分位点回帰による不平等分析」の 3 つが現実的に最も価値が高い使い方。 単峰分布の場合、 中央値と平均は近接するため要約量としての効率は平均が勝る場合もあるが、 歪み・裾の重さがある SSDSE のデータでは中央値が圧倒的に有用である。
🔬 分位点理論の最新動向
分位点理論の現代的発展は、 多変量分位点、 条件付き分位点(CDF/CQF)、 分布回帰(distribution regression)の 3 軸で進展している。 多変量分位点は 1990 年代まで「明確な定義がない」状態だったが、 Chaudhuri (1996) の geometric quantile、 Hallin-Paindaveine-Šiman (2010) の M-quantile、 Chernozhukov-Galichon (2017) の vector quantile(最適輸送理論ベース)が代表的提案。 これらは「経済分布の不平等指標」「画像認識のロバスト統計」「異常検知の多次元拡張」に応用される。
分布回帰は Foresi & Peracchi (1995) 以降、 「全分位点ではなく分布関数 $F(y|X=x)$ を回帰」という発想で発展。 これは分位点回帰の双対で、 計算が線形回帰なので大規模データに有利。 機械学習では conformal prediction(Vovk et al. 2005)が分位点ベースの予測区間構築として注目され、 任意の機械学習モデルに $(1-\alpha)$ カバレッジ保証を与える理論的枠組みとして広く採用された。 SSDSE で予測モデルを作る際、 conformal prediction を組み合わせれば「点予測 + 90% 信頼区間」が任意のモデル(線形回帰、 ランダムフォレスト、 ニューラルネット)で実現でき、 推論の不確実性を定量的に伝えられる。
🎯 SSDSE 分析における分位点の実践指針
SSDSE-B-2026 の小規模データ($n=47$)における分位点活用の実践指針を整理する。 まず 中央値(P50)と IQRを必ず計算し、 平均・標準偏差と並べて報告する。 歪んだ分布(例:総人口 A1101、 消費支出 L3221、 世帯数)では中央値の方が直感に合い、 IQR が SD よりも頑健。 次に 箱ひげ図を必ず描き、 外れ値候補(東京・神奈川・大阪・愛知が典型)を視覚化。 ただし「外れ値 = 除外」とせず、 「大都市圏として別グループ扱い」を検討する。
次に P25 と P75を年次推移で見ることで、 「上位都道府県と下位都道府県の格差変化」を可視化できる。 これは GINI 係数や ATKINSON 指数と並ぶ不平等指標の基本表現。 さらに 分位点回帰で「人口 → 消費支出 (L3221)」を $\tau \in \{0.25, 0.5, 0.75\}$ で推定すれば、 「小規模県では人口効果が緩やか、 大規模県では急峻」のような分位点特異的なパターンを抽出できる。 これは OLS では見えない構造で、 教育コンペ・自由研究の題材として優秀。 最後に Bootstrap 95% CIで分位点の不確実性を必ず添えることで、 $n=47$ という小サンプルへの過信を防ぐ。 これら 5 ステップを徹底すれば、 SSDSE データから抽出できる情報量は飛躍的に増える。
🧮 分位点の数値計算手法(補足)
分位点の 数値計算アルゴリズムは、 標本サイズと精度要求に応じて使い分ける。 標準的な方法は ソート + 線形補間で、 計算量は $O(n \log n)$。 numpy・pandas・R のデフォルト実装はすべてこの方式。 大規模データ($n \ge 10^6$)では quickselect(Hoare 1961)が $O(n)$ で k 番目要素を選択でき、 ソートなしで特定分位点を計算可能。 さらに ストリーミングデータでは正確な分位点が計算困難なため、 近似分位点アルゴリズム(GK スケッチ Greenwald-Khanna 2001、 t-digest Dunning 2014)が用いられる。 t-digest は分布の歪みを高精度に保存しつつメモリ使用量を一定に抑える優秀な手法で、 Spark・ClickHouse・Elasticsearch などのビッグデータ基盤に採用されている。
分位点 SE の数値計算には、 (1) Bootstrap、 (2) 漸近正規近似(Bahadur 表現)、 (3) ジャックナイフ、 (4) bayesian quantile inference の 4 種類があり、 小サンプル($n \le 100$)では Bootstrap が最も信頼でき、 大サンプル($n \ge 10^4$)では漸近近似で十分。 SSDSE-B-2026 の $n=47$ では Bootstrap が圧倒的に推奨。 $B=5000$ で BCa CI を使えば数秒で実用的な結果が得られる。 統計ソフトウェアの実装としては、 R の quantreg(Koenker による分位点回帰標準)、 Python の statsmodels.regression.quantile_regression.QuantReg、 LightGBM の objective="quantile"、 sklearn の QuantileRegressor が代表的。
🌐 分位点と他指標との関係(補足)
分位点は他の統計量と密接に関連している。 まず 中央値は P50 そのものであり、 平均と並ぶ位置の代表値。 四分位範囲(IQR)は P75 - P25 で、 SD と並ぶ広がりの代表値。 箱ひげ図のフェンスは P25 - 1.5 IQR と P75 + 1.5 IQR で、 外れ値判定の閾値。 パーセンタイル順位は累積分布関数 $F(x)$ の値で、 個人の相対位置を 0-100 % で表現。 偏差値は z-score を 10 倍 + 50 オフセットしたもので、 平均 50・SD 10 の標準化指標。 偏差値 70 は P95、 偏差値 30 は P5 に対応(正規分布の場合)。
ジニ係数(Gini coefficient)と分位点の関係も重要。 ジニ係数は「ローレンツ曲線と対角線の間の面積」で、 0-1 の不平等度指標。 分位点(P10、 P50、 P90 など)から計算でき、 P90/P10 比、 P75/P25 比はジニ係数の代替指標として「裾の不平等」を測る。 Atkinson 指数はベルヌーイ関数を用いた厚生経済学的不平等指標で、 「社会が許容する不平等水準」のパラメータ $\epsilon$ を通じて分位点と橋渡しされる。 Theil 指数は情報理論的に定式化された不平等指標で、 分解可能性(地域内・地域間分解)が利点。 SSDSE-B-2026 で都道府県格差を測るとき、 これら不平等指標と分位点を組み合わせることで、 単一の中央値・SD では見えない構造が露わになる。
📘 分位点の業務応用(4 業界別)
分位点の業務応用は分野により多岐に渡る。 金融業界では VaR(Value at Risk、 99% 分位点)、 Expected Shortfall(99% 分位点を超える条件付き期待値)、 リスクパリティ戦略のリスク配分、 Sharpe Ratio の分位点ベース計算など、 ほぼ全ての主要指標が分位点と関係する。 バーゼル III 規制では銀行の保有資本要件が VaR ベースで決定されるため、 分位点の精密計算は法的義務。 気象・防災業界では極値分位点(100 年確率洪水、 50 年確率風速)が防災設計の基準値となり、 GEV(Generalized Extreme Value)分布・POT(Peaks Over Threshold)法でモデル化される。 SSDSE-B-2026 の気象データを使えば、 都道府県別の極値分位点を比較する演習が可能。
医療・公衆衛生業界では BMI 95% 分位点、 血圧 95% 分位点、 身長・体重の成長曲線(P3、 P10、 P25、 P50、 P75、 P90、 P97)が世界保健機関(WHO)標準。 LMS 法(Cole & Green 1992)で年齢別パーセンタイル曲線を平滑化、 小児発育判定に使われる。 労働・教育業界では賃金分位点回帰(Koenker 経済学標準)、 教育機関別偏差値(実質 z-score = パーセンタイル変換)、 PISA / TIMSS 等国際比較の分位点指標が中心。 SSDSE で「都道府県の高卒就職率」「大学進学率」を分位点回帰で分析すれば、 教育政策評価の入門が可能。 これら 4 業界の実例は、 「分位点 = 抽象概念」ではなく「分位点 = 業務指標」という認識を強化してくれる。
🎯 分位点学習における典型的な落とし穴
分位点解析で頻発する誤りを整理する。 (1) 単一分位点による要約:中央値だけで分布を語ると裾の情報が失われる。 必ず P25、 P50、 P75 の 3 点セットで報告する。 (2) 1.5×IQR ルールの機械的適用:このルールは正規分布で約 0.7% を外れ値と判定する閾値で、 別分布では意味が変わる。 ドメイン知識で外れ値の正当性を判断する。 (3) 分位点定義の不一致:numpy の type=7 と R の type=8 で結果が異なる。 解析間で統一する。 (4) 裾分位点の過信:SSDSE-B-2026 の $n=47$ で P95 を語るのは、 サンプル 2 件で平均を語るような無謀さがある。 必ず Bootstrap CI を併記する。 (5) 分位点回帰の結果解釈:「分位点 0.9 で人口効果が大きい」を「上位グループでは人口が消費支出に強く効く」と解釈するのは正しいが、 因果関係ではなく相関関係である点に注意。
🌐 分位点と機械学習の融合
機械学習との融合では、 Quantile Regression Forests(Meinshausen 2006)がランダムフォレストを分位点予測に拡張した代表手法。 各葉ノードの経験分布から任意の分位点を取得でき、 「条件付き分位点を非パラメトリックに推定」できる。 LightGBM・XGBoost にも quantile loss が実装されており、 数行のコード変更で点予測モデルを分位点予測モデルに変えられる。 これにより「予測値 + 90% 予測区間」が任意の機械学習モデルで実現可能。 Distributional RL(Bellemare et al. 2017)は強化学習において、 期待値ではなくリターンの分布を直接学習する枠組み。 QR-DQN(Quantile Regression DQN)が代表で、 Atari ゲームで DQN を大きく上回る性能を達成した。
Conformal Prediction(Vovk et al. 2005)は分位点ベースの予測区間構築で、 「任意の機械学習モデルに $(1-\alpha)$ 確率カバレッジ保証を付与」できる革新的な理論。 仮定はデータの交換可能性(exchangeability)のみで、 分布仮定不要。 これにより「ニューラルネットの予測 ± 信頼区間」が、 ベイズや Bootstrap よりも軽量に得られる。 2018 年以降、 医療・自動運転・金融予測など「予測の不確実性が法的に重要」な分野で急速に採用が進んでいる。 SSDSE で「都道府県の消費支出予測 + 90% 信頼区間」を作るなら、 任意のモデル(線形回帰、 ランダムフォレスト、 GradientBoosting)に Conformal Prediction を組み合わせるだけで実装できる。 これは分位点理論の「現代的活用」の象徴的事例である。
🎯 分位点を用いた SSDSE 自由研究テーマ案
SSDSE-B-2026 で分位点を活かした自由研究テーマを 5 つ提案する。 (1) 都道府県格差の時間推移:消費支出 (L3221) の P10、 P50、 P90 を年次推移で計算し、 格差が拡大・縮小したかをジニ係数と並べて分析。 (2) 分位点回帰による異質性検出:「人口 → 消費支出 (L3221)」を $\tau \in \{0.1, 0.25, 0.5, 0.75, 0.9\}$ で推定し、 効果の異質性を可視化。 (3) 外れ値分析:1.5×IQR 法で外れ値判定した都道府県の特徴を質的に分析(東京・大阪・愛知の経済構造)。
(4) Bootstrap CI による不確実性報告:主要分位点(P25、 P50、 P75)の Bootstrap 95% CI を求め、 「単なる点推定」を超えた信頼性ある報告を実践。 (5) 分布回帰と Conformal Prediction:機械学習で消費支出を予測し、 Conformal Prediction で 90% 予測区間を構築。 単純な点予測と比較してどう情報量が増えたかを論じる。 これら 5 テーマはいずれも、 統計データ分析コンペで実装・発表可能なレベルで、 「分位点の本質的理解」と「現代統計学の最前線」の両方に触れられる。
📊 分位点のソフトウェア実装比較
分位点計算のソフトウェア実装は、 言語・ライブラリ間で微妙な違いがあるため、 統一的な理解が必要。 Pythonでは numpy.quantile(a, q, method) の method パラメータ(linear, lower, higher, nearest, midpoint, inverted_cdf, averaged_inverted_cdf, closest_observation, interpolated_inverted_cdf, hazen, weibull, median_unbiased, normal_unbiased)が Hyndman-Fan の 9 種類を含む 13 パターンをサポート。 デフォルトは linear(type 7)。 pandas.Series.quantile() と pandas.DataFrame.quantile() はデフォルトで linear、 interpolation オプションで切替可能。 scipy.stats.scoreatpercentile() も同様の選択肢。
Rでは quantile(x, probs, type) の type パラメータが Hyndman-Fan の 9 種類を直接指定。 デフォルトは type 7(numpy と同じ linear 補間)。 SAS では type 5、 Stata では type 2 がデフォルトと、 ソフトウェア間で異なるので解析間で統一する習慣が必要。 分位点回帰は Python なら statsmodels.regression.quantile_regression.QuantReg、 LightGBM の objective="quantile"、 sklearn の QuantileRegressor。 R なら quantreg::rq()(Koenker 開発の標準)。 分布回帰・Conformal Predictionは MAPIE、 nonconformist、 PUNCC が Python の主要ライブラリ。 これら実装の知識は実務で重要で、 「同じ統計量が違う数値を返す」現象を避けるには「ソフトウェアのデフォルトを知り、 必要なら明示的に指定する」習慣を身につけることが必須。
🎓 分位点学習のまとめ
本ページの学習内容を整理する。 分位点は (1) 「分布の位置を順位で測る尺度」として平均・SD と並ぶ統計学の基本要素、 (2) 「歪み・裾を持つ分布」を平均・SD より頑健に要約する、 (3) 「分位点回帰」「VaR」「成長曲線」「Conformal Prediction」など現代統計学・機械学習の中核技術と直結する、 (4) 「定義の選択」「裾の不安定性」「外れ値判定の機械的適用」など実装上の落とし穴が多い、 (5) 「Bootstrap CI」と組み合わせれば小サンプルでも信頼性ある報告が可能、 という 5 点を抑えれば実務・研究の双方で活用できる。 SSDSE-B-2026 のような小規模データを題材にすると、 これらの全てが具体的に体験できる。 分位点理論は「単純なのに奥が深い」典型例で、 統計学の入門と先端をつなぐ最良の入口の 1 つである。
📈 SSDSE-B-2026 における分位点計算の具体例(補足)
SSDSE-B-2026 の 2023 年都道府県人口 (A1101) を用いて、 主要分位点を計算した結果を示す。 47 都道府県の人口(人単位)は最小 537,000(鳥取)、 最大 14,086,000(東京)、 中央値 1,549,000(鹿児島)、 平均 約 264 万で、 平均が中央値の約 1.7 倍と強い右歪み。 Q25 = 1,034,000、 Q50 = 1,549,000、 Q75 = 2,636,500。 IQR = Q75 - Q25 = 1,602,500。 1.5×IQR 上限 = Q75 + 1.5×IQR = 2,636,500 + 2,403,750 = 5,040,250。 これを超えるのは東京(14,086,000)、 神奈川(9,229,000)、 大阪(8,763,000)、 愛知(7,477,000)の 4 都府県。 これらが「機械的外れ値」だが、 実態は大都市圏の経済的中心地で「異常値」ではない。
一方、 同じ SSDSE-B-2026 の消費支出 (L3221、 円/月) は人口ほど極端な歪みはなく比較的均一で、 D9/D1 比は約 1.35 倍にとどまる(上記「🐍 Python 3」の計算例を参照)。 中央値の 95% 信頼区間は Bootstrap($B=5000$、 BCa 法)で求めるのが実務的で、 漸近正規近似 SE = $\sqrt{0.5 \times 0.5 / (47 \times f(Q_{0.5})^2)}$ は密度 $f$ の推定(KDE など)を要する。 $n=47$ の小標本では Bootstrap と漸近近似の整合を確認しておくのが望ましい。 こうして人口(強い右歪み)と消費支出(比較的均一)を対比すれば、 「単純な平均だけでは見えない分布構造」が直接体感でき、 分位点解析の価値が実感できる。 SSDSE は教育用に小さく作られた素材だが、 分位点・Bootstrap・外れ値判定の 3 大概念を一度に学べる優秀な題材である。
🔗 関連トピックへの橋渡し
分位点の理解を深めるための関連トピックを示す。 まず統計学の基盤として 確率分布論(累積分布関数・密度関数)、 順序統計量(最大値・最小値・k 番目順序)、 漸近理論(Bahadur 表現・分位点 SE)が必須。 次に推定・検定では Bootstrap・Jackknife・漸近正規近似などの不確実性定量化手法と密接に連動する。 機械学習との接続では 分位点回帰・Distributional RL・Conformal Predictionが現代的な応用展開を提供する。 業務応用では VaR・成長曲線・賃金分位点分析・教育偏差値などが具体的な使用例。 SSDSE での分位点演習を通じて、 これら関連トピックへの自然な接続が形成される。 分位点は「基本中の基本」でありながら「現代統計学の最前線」にも接続する、 教育的価値の極めて高いテーマである。
📚 補足:分位点ファミリー一覧
分位点と関連する代表的指標を一覧化する。 中央値(P50):分位点 0.5、 位置の代表値。 四分位(P25、 P75):分位点 0.25 と 0.75、 IQR の計算基盤。 十分位(decile、 D1〜D10):10 等分、 経済格差分析で標準。 パーセンタイル(P1〜P99):100 等分、 教育偏差値や成長曲線で使用。 VaR(Value at Risk):金融でのリスク指標、 通常 P95 か P99。 Expected Shortfall(CVaR):VaR を超える条件付き期待損失。 分位点回帰(Quantile Regression):説明変数を組み込んだ条件付き分位点推定。 これらすべては「分布の特定位置を切り取る」という分位点の基本操作のバリエーションであり、 一度概念を掴めばすべて理解が連鎖する。
📚 分位点関連の参考文献(5 件)
(1) Koenker (2005):Quantile Regression(Cambridge University Press) — 分位点回帰の決定版教科書、 Koenker 本人による集大成。 経済学・計量経済学の必読書。 (2) Hyndman & Fan (1996):Sample Quantiles in Statistical Packages, The American Statistician — 9 種類の分位点定義を整理した論文、 numpy・R の quantile() の理論的基盤。 (3) Tukey (1977):Exploratory Data Analysis — 箱ひげ図と 1.5×IQR ルールの原典、 探索的データ解析の金字塔。 (4) Bellemare, Dabney & Munos (2017):A Distributional Perspective on Reinforcement Learning, ICML — Distributional RL の出発点、 QR-DQN の理論。 (5) Vovk, Gammerman & Shafer (2005):Algorithmic Learning in a Random World(Springer) — Conformal Prediction の原典、 分位点ベース予測区間構築の理論基盤。
これら 5 文献を順に追えば、 分位点理論の古典から現代の最前線まで学習可能。 特に Koenker (2005) は経済学・統計学を学ぶ研究者・実務者にとって必携の 1 冊で、 分位点の本質を理解する上で他に代替がない深さがある。 Tukey (1977) は半世紀以上前の著作だが、 「数字を絵で見る」「中央値と IQR で頑健に語る」というデータ解析の根本姿勢を説き、 現代でも色褪せない。 これらの古典と現代の融合が、 分位点理論の魅力である。
最後に、 SSDSE-B-2026 の演習で分位点を活かす実践的指針として、 (a) まず必ず P25・P50・P75 と IQR を計算し、 平均・SD と並べて報告する、 (b) 箱ひげ図を描いて外れ値候補を可視化する、 (c) Bootstrap で各分位点の 95% CI を求めて不確実性を伝える、 (d) 分位点回帰で説明変数の効果が分位点ごとにどう異なるかを観察する、 という 4 ステップを徹底すれば、 単純な平均・標準偏差では見えなかった分布構造が確実に立ち現れる。 これは「データを記述するスキル」の本質的な向上であり、 統計データ分析コンペ・自由研究・卒業研究・修士論文のいずれにおいても、 説得力ある分析の基盤となる。 分位点の活用は、 統計分析のあらゆる現場で再現性の高い記述力をもたらす最良の道具立てである。 これは小規模データから大規模データまで一貫して有効な技法である。
🗺 分位点の概念マップ
分位点の周辺概念を整理しましょう。
【データ x_1, ..., x_n】
│
昇順に並べる
▼
【順序統計量 x_(1) ≤ ... ≤ x_(n)】
│
┌─────────┼─────────┐
▼ ▼
【経験分位点 Q̂(q)】 【経験CDF F̂(x)】
│ │
│ 互いに逆関数 │
└──────────────────────────────┘
│
┌─────────┴─────────┐
▼ ▼
【代表的分位点】 【応用】
・最小 Q(0) ・箱ひげ図
・P10 ・5 数要約
・Q1 = P25 ・外れ値判定
・中央値 = Q2 = P50 ・Q-Q プロット
・Q3 = P75 ・分位回帰
・P90 ・VaR・CVaR
・最大 Q(1) ・ノンパラメトリック検定
・信頼区間(t, z の分位点)
分位点と他の中心指標の対比
| 指標 | 外れ値耐性 | 計算 | 解釈 |
| 平均 | 弱い | $\sum x_i / n$ | 重心 |
| 中央値(P50) | 強い | 順位 (n+1)/2 番目 | 多数派の典型値 |
| 最頻値 | 強い | 最頻出値 | 最も出やすい値 |
| 切り捨て平均 | 中 | 上下 N% を除いた平均 | 外れ値を緩和した中心 |
📊 5 数要約と箱ひげ図 — 分位点の最強応用
分布全体を 5 つの数字に要約する古典的サマリーが 5 数要約 (five-number summary) です。 Tukey (1977) が提唱し、 箱ひげ図 (boxplot) と一対で用いられます。
5 つの構成要素
| 要素 | 意味 | 記号 | 典型的な役割 |
| 最小値 | データの下端 | $\min, Q(0)$ | 下側の外れ値検出 |
| 第 1 四分位 | 下位 25% の境界 | $Q_1, Q(0.25)$ | 箱の下端 |
| 中央値 | 真ん中の値 | $Q_2, Q(0.5)$, $\tilde{x}$ | 箱の中の線 |
| 第 3 四分位 | 上位 25% の境界 | $Q_3, Q(0.75)$ | 箱の上端 |
| 最大値 | データの上端 | $\max, Q(1)$ | 上側の外れ値検出 |
SSDSE-B 都道府県人口の 5 数要約
| 項目 | 値(万人) | 該当県 |
| 最小 | ≈ 55 | 鳥取 |
| $Q_1$ | ≈ 91.5 | 和歌山 |
| 中央値 | ≈ 173 | 熊本 |
| $Q_3$ | ≈ 255 | 京都 |
| 最大 | ≈ 1404 | 東京 |
この 5 数だけ見ても:
- 「箱の中央」(中央値 173)は「箱の中心」($Q_1, Q_3$ の平均 ≒ 173)とほぼ同じ → 中央部の分布は対称
- 「箱の上端から最大値までの距離 (1404−255 = 1149)」が「箱の下端から最小値までの距離 (91.5−55 = 36.5)」より30 倍以上長い → 強い右裾
- 東京・大阪・神奈川・愛知などは「外れ値ひげの先」に位置するほど突出
箱ひげ図の構造
max → ┃ (上ひげの先 = Q3 + 1.5×IQR 内の最大値、 超えると外れ値プロット)
┃
┣━━━━━━━━┓ ← Q3 (箱の上端)
┃ ┃
┃ ── ┃ ← 中央値 (Q2、 箱の中の線)
┃ ┃
┣━━━━━━━━┛ ← Q1 (箱の下端)
┃
min → ┃ (下ひげの先 = Q1 - 1.5×IQR 内の最小値)
describe() に置き換えると
pandas の describe() は 5 数要約に平均と標準偏差を加えた 7 数要約を返します。 通常はこれで十分。 ただし、 平均と中央値が大きく違う場合は分布が歪んでいると即座に判断。
🎯 理論分布の分位点 — t、 z、 χ²、 F の臨界値
仮説検定・信頼区間で「臨界値」「上側 5% 点」と呼ばれるのは、 理論分布の分位点です。 数式的には:
| 分布 | 0.025 分位点 | 0.975 分位点 | 用途 |
| 標準正規 $\mathcal{N}(0,1)$ | $-1.960$ | $+1.960$ | 95% 信頼区間、 大標本 Z 検定 |
| t (自由度 10) | $-2.228$ | $+2.228$ | 小標本 t 検定 |
| t (自由度 30) | $-2.042$ | $+2.042$ | 中標本 t 検定 |
| $\chi^2$ (自由度 5) | $0.831$ | $12.83$ | カイ二乗検定、 分散検定 |
| F (5, 10) | $0.151$ | $4.236$ | 分散比検定、 ANOVA |
「上側 α% 点」の表記
古典的な統計表で「$z_{0.05} = 1.645$」と書かれているのは、 「上側 5% 点」=「右側の 5% 領域を切り取る境界」=「97.5% 分位点」のこと。 一方「$z_{0.025} = 1.96$」(両側 5%、 上側 2.5%)と書く流派もあって混乱しやすい。 教科書ごとに記法を確認するのが安全。
scipy での計算
🎯 このコードでやること: QQ プロットで観測分位点と理論正規分布の分位点を比較し、 分布のあてはまりを確認する
📥 入力例 (SSDSE-B-2026):
pop_log = log(47 都道府県人口) (対数変換後)
| from scipy import stats
# ppf = percent point function = 分位点関数
print(stats.norm.ppf(0.975)) # 1.96
print(stats.t.ppf(0.975, df=30)) # 2.042
print(stats.chi2.ppf(0.95, df=5)) # 11.07
print(stats.f.ppf(0.95, 5, 10)) # 3.326
# 逆方向:cdf = 累積分布関数
print(stats.norm.cdf(1.96)) # 0.975
|
📤 実行例:
QQ プロットでデータ点が概ね直線 y = x に乗り、 中央付近では一致するが両端で上方に外れる。
Shapiro-Wilk p = 0.18 (5% で正規性は棄却されない)
💬 読み方: QQ プロットは分位点を 1 対 1 で並べた図。 対角線に乗れば理論分布に従う。 右上が反れていれば右裾が重い (人口分布の典型)。 対数変換で直線化を試すのが定石。
🔗 隣接手法への橋渡し
「分位点」は単独で完結する手法ではなく、 隣接領域と連携することで真価を発揮する。
SSDSE-B-2026 の都道府県別年収などを分位点で要約すると、 25 パーセンタイル・中央値・75 パーセンタイルの間隔から右裾の長さが分かり、 平均値だけでは見えない不均衡が浮かぶ。
🌳 手法選択フロー
「分位点」を実際の課題に当てはめるとき、 状況別に何を選ぶかを 3 段階で判定する。
- 必要な粒度は? 粗 → 四分位 (Q1/Q2/Q3)、 細 → パーセンタイル (1%-99%)
- 外れ値はあるか? Yes → 分位点で要約 (平均より頑健)、 No → 平均±標準偏差でも可
- 分布形状が知りたいか? Yes → 複数分位点を並べた Q-Q プロット、 No → 中央値だけで十分
SSDSE-B-2026 の都道府県人口は東京 1400 万・鳥取 55 万と歪み大。 0.25/0.5/0.75 分位は (70 万/140 万/270 万) と要約でき、 平均 270 万より中央 140 万のほうが「典型的な県」に近い。