論文一覧に戻る 📚 用語解説(ジャストインタイム型データサイエンス教育)
ジニ係数
Gini Coefficient (G)
所得・資源の不平等度を 0(完全平等)〜1(完全独占)で表す指標。Lorenz曲線と完全平等線の間の面積。
格差・分布GGiniGini係数ジニ係数

🔖 キーワード索引

gini」は統計データ分析の文脈で扱う重要概念のひとつ。 本ページでは「gini」を取り巻く中核キーワードを以下にチップで一覧化する。 各キーワードは関連する概念・手法・道具立てを含み、 文献検索や学習計画の起点になる。

gini統計分析SSDSE-B-2026前提条件適用範囲落とし穴関連手法Python 実装検証方法

これらのキーワードは「gini の理解 → 適用 → 検証」のプロセスを構成する。 各章で詳しく解説する。

💡 30秒で分かる結論

🍰 まずはやさしく

格差を測るための定規のようなものです。

不平等さがどれくらいあるかを知るために使います。

クラスのテスト点数の偏りを調べる時に似ています。

この章ではジニ係数の基本的な意味を読みます。

📖 もっと詳しく

ジニ係数(Gini coefficient, G)は、 所得・資源の不平等度を 0(完全平等)〜 1(完全独占)で測る代表的指標。 もともとイタリアの統計学者 Corrado Gini(1912)が考案。

幾何的意味:ローレンツ曲線(下位X%の人が全体の何%を保有するかの曲線)と完全平等線(45度線)の間の面積 ÷ 三角形の面積。 ローレンツ曲線が45度線から下に凹むほど、 ジニは大きくなります。

世界の目安(OECD等のデータ):

所得以外への応用

SSDSE 都道府県データでの例

限界:(i) 同じジニでも分布の形は違いうる(中央値が低くて格差が大きい vs 中央値が高くて少数の超富裕層)、 (ii) ジニ単独では「どの層に集中しているか」分からない。 → 上位10%シェア、 中央値、 ヒストグラムと併用が望ましい。

📖 包括的解説 — この概念を完全マスター

📍 学習の3ステップ

  1. 定義を理解する:この概念は何か? 数式や条件を確認
  2. 具体例を見る:実データ(SSDSE 等)で計算してみる
  3. 応用する:自分のデータに適用、 結果を解釈

🔧 Python実装パターン

🎯 解説: ジニ係数(Gini coefficient)はローレンツ曲線と均等分配線の間の面積比から計算される不平等度の指標。 0(完全平等)〜1(完全不平等)。 SSDSE-B-2026 の都道府県別所得データで地域間格差を測る。
📥 入力例(SSDSE-B-2026 の 2023 年・47 都道府県から 3 行) 都道府県 L322101(食料費(二人以上の世帯)) L322108(教育費(二人以上の世帯)) L322102(住居費(二人以上の世帯)) 北海道 74,341 6,911 26,730 東京都 97,776 24,160 26,457 沖縄県 73,453 6,356 27,521 …(全 47 行)
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
# 基本パターン
import pandas as pd
import numpy as np
from scipy import stats
import matplotlib.pyplot as plt
import seaborn as sns

# データ読み込み
df = pd.read_csv('data/raw/SSDSE-B-2026.csv', encoding='cp932', header=1)

# 基本統計量
df.describe()

# 可視化
sns.pairplot(df[['食料費(二人以上の世帯)', '教育費(二人以上の世帯)', '住居費(二人以上の世帯)']])
plt.show()
📥 入力例: data/raw/SSDSE-B-2026.csv X: A1101(総人口) Y: L322108(教育費)
📤 このブロックは標準出力には何も出さない
💬 読み方: G < 0.3 は比較的均等、 0.3-0.4 は中程度、 0.4+ は強い不平等。 日本の所得分布は OECD 内では中程度。 時系列で G の変動を見ることで、 格差が拡大/縮小しているかを判断できる。

📚 統計概念マップでの位置

このページの上にある3つの概念マップ(関係マップ、 包含マップ、 ツリーマップ)でこの概念の位置づけが視覚的に分かります。 関連手法を辿って学習を進めましょう。

🎯 SSDSE-B-2026 で挑戦

統計データ活用コンペティションのSSDSE-B-2026データは、 47都道府県の社会経済データ。 この概念を使って以下のような分析ができます:

💡 よく使うコマンド集

機能 Python (pandas) Python (scipy)
要約統計df.describe()stats.describe()
平均df.mean()np.mean()
標準偏差df.std()np.std()
相関df.corr()stats.pearsonr()
t検定stats.ttest_ind()
回帰stats.linregress()
分布フィッティングstats.norm.fit()

🚧 一般的な落とし穴と対策

📊 結果報告の標準フォーマット

🌐 関連分野での応用

🎓 さらに学ぶための文献

🔗 統計用語ネットワーク

この概念は、 他の多くの統計概念と密接に関連しています。 ジャストインタイム型学習では、 必要に応じて関連用語へジャンプしながら全体像を構築します。

主要な関連概念のグループ

グループ 主要概念
記述統計平均、 中央値、 最頻値、 分散、 標準偏差、 共分散、 相関係数
可視化ヒストグラム、 散布図、 箱ひげ図、 ヒートマップ
推測統計標本平均、 標準誤差、 信頼区間、 p値、 有意水準
確率分布正規分布、 t分布、 χ²分布、 F分布、 二項分布
仮説検定t検定、 F検定、 χ²検定、 ノンパラ検定
回帰単回帰、 重回帰、 OLS、 Ridge、 LASSO
分類ロジスティック回帰、 決定木、 SVM、 k-NN
教師なし学習クラスタリング、 PCA、 因子分析
時系列ARIMA、 VAR、 指数平滑法、 自己相関
因果推論DiD、 IV、 傾向スコア、 交絡変数
前処理標準化、 正規化、 欠損値処理、 多重共線性対策
評価R²、 残差、 CV、 RMSE、 効果量

学習順序の推奨

  1. 記述統計(平均、 分散、 標準偏差)
  2. 可視化(ヒストグラム、 散布図)
  3. 確率分布(正規分布)
  4. 推測統計(標準誤差、 信頼区間、 p値)
  5. 仮説検定(t検定、 χ²検定)
  6. 相関と回帰(単回帰、 重回帰)
  7. 多変量解析(PCA、 クラスタリング)
  8. 機械学習(決定木、 RF、 NN)
  9. 時系列・因果推論(応用)

📝 実践練習 — SSDSE-B-2026 で挑戦

初級課題

  1. 東北6県の家計食料費の基本統計量を計算
  2. 食料費のヒストグラムを描く
  3. 食料費と教育費の散布図を描く
  4. 都道府県を「東日本/西日本」に分け、 平均を比較

中級課題

  1. 家計支出 5項目で相関行列を作成、 ヒートマップ可視化
  2. 食料費 → 教育費の単回帰を実行、 残差分析
  3. 家計5項目で PCA を実施、 バイプロット表示
  4. k-means (k=3) で都道府県をクラスタリング、 解釈

上級課題

  1. 地域別の家計パターンに有意差があるか ANOVA で検定
  2. 重回帰で教育費を予測、 多重共線性を VIF で確認
  3. Ridge/LASSO で正則化、 CV で α を最適化
  4. 階層クラスタリングと Ward 法で都道府県を分類、 デンドログラム作成

📍 あなたが今見ているもの

🍰 まずはやさしく

データの偏りを表す一つの指標です。

分析の中で格差を数値にするために使います。

スマホの利用時間の差を比べる時に役立ちます。

定義から実装までを順番に詳しく読みます。

論文中に 「ジニ係数」として登場する用語。

ジニ係数 とは:所得・資源の不平等度を 0(完全平等)〜1(完全独占)で表す指標。Lorenz曲線と完全平等線の間の面積。

本ページでは「gini」を扱う。 統計データ分析コンペティション (2026) の教材で、 SSDSE-B-2026 (47 都道府県 × 複数年 × 100 超列) の実データを使った再現可能な学習を目指す。

「gini」は統計・データサイエンスの体系における重要概念のひとつ。 本ページは「定義・直感・数式・実装・落とし穴・関連手法」の 6 視点で構成され、 各視点は独立して読めるが順序通り読むと体系的な理解が得られる。

🎨 直感で掴む — ジニ係数 の本質

🍰 まずはやさしく

グラフの面積で格差を見る方法です。

直感的に不平等の度合いを掴むために使います。

部活の練習量の差をイメージすると分かりやすいです。

まずは道具としての使い方を重点的に読みます。

人口の何% が所得の何% を占めるかを描いたローレンツ曲線と、 45° の完全平等線で囲まれた面積の 2 倍がジニ係数。 0 が完全平等、 1 が完全不平等。 SSDSE-B-2026 で 47 都道府県(2023 年度)の消費支出(L3221)を見ると、 ジニ係数は約 0.04 と小さく、 都道府県間の支出格差はあまり大きくない。 一方で教育費(L322108)のジニは約 0.23 と相対的に大きい。

💡 ポイント:ジニ係数 を初めて学ぶときは「正確な定義」より「どんな問題を解くための道具か」を先に押さえてください。 数式は次の「📐 数式」セクションで丁寧に展開します。
📌 比喩がうまく刺さらないときは、 自分の身近な例(家計簿・スポーツの記録・成績表)に置き換えてみると理解が定着します。 SSDSE-B-2026 を電卓代わりに触りながら、 上の説明を再読すると効果的です。

🎮 触って理解する — 所得バーを動かしてジニ係数を体感

下の 8 人の所得バー(架空データ・万円/年)を上下にドラッグすると、 右のローレンツ曲線がリアルタイムに変形し、 45 度線(均等分配線)との間の「弛み」の面積 A からジニ係数 $G = 2A$ が即座に再計算される。 全員を同じ高さにすると G = 0(曲線が対角線に張り付く)、 1 人に全所得を集めると G は理論上限 $1 - 1/n = 0.875$(n = 8 の場合。 n → ∞ で 1 に近づく)まで跳ね上がる。 「ローレンツ曲線の弛み = 格差」という幾何的直感を、 手を動かして確かめてほしい。

↑ バーを上下にドラッグ(タッチ対応)。 架空データであり実在の所得統計ではない。

↑ ローレンツ曲線(橙)と均等分配線(破線)。 塗り面積 A の 2 倍がジニ係数。

G = —

🔬 実験メニュー — 3 つの性質を自分で確認する

  1. G = 0 の確認:「平等」プリセットを押す(全員同額)。 ローレンツ曲線が対角線に一致し G = 0.000 になる。
  2. G → 1 の確認:「極端」プリセットで 1 人が全所得を持つ。 G = 0.875(= 1 − 1/8)。 標本ジニの上限が 1 − 1/n であることは、 落とし穴セクションの「小標本バイアス」(補正 n/(n−1))と表裏一体。
  3. スケール不変性の確認:適当な形にしてから「所得倍増」を押す。 全員の所得が 2 倍になっても G は 1 桁も変わらない。 ジニ係数は「相対的な取り分の形」だけを見る指標であり、 経済成長で全員が豊かになっても(比率が同じなら)格差指標としての G は動かない——これがスケール不変性で、 「G が下がらない = 生活が良くなっていない」ではない点に注意。

📊 SSDSE-B-2026 実測ジニ係数と比べる(2023 年度・47 都道府県、 Python で事前計算)

上のバーで作った架空分布の G を、 SSDSE-B-2026 の実測値(平均差公式、 Python で照合済み)と並べてみよう。 都道府県「平均値」の分布なので世帯間格差より小さく出る点(本文の県内/県間分解を参照)に注意。

SSDSE-B-2026 列(2023 年度)実測ジニ係数 G再現目安
食料費(L322101)0.040ほぼ「平等」プリセット
消費支出(L3221)0.044ほぼ「平等」プリセット
住居費(L322102)0.132「平等」と「中間」の間
教育費(L322108)0.229「中間」プリセット前後
総人口(A1101)0.472バー 2〜3 本に集中させた形

生活必需の食料費は G ≈ 0.04 と均等、 選択的・投資的な教育費は G ≈ 0.23、 総人口は G ≈ 0.47(東京一極集中)。 バーを操作して同じ G を再現すると、 「G = 0.23 とはどのくらい偏った分布か」が肌感覚で分かる。

🧭 触った後に読む — 直感・落とし穴・発展

直感:ジニ係数の本体は「ローレンツ曲線の弛み」である。 弛みが大きいほど「下位の人々が全体のわずかしか持っていない」ことを意味する。 幾何的な背景は ローレンツ曲線 のページ(こちらにも対になる操作ウィジェットがある)で深掘りできる。

落とし穴:上のウィジェットで「上位 1 人だけ突出させた分布」と「下位数人だけ極端に低い分布」を作り比べてほしい。 ほぼ同じ G になるのに分布の形は全く違うことが確認できる。 G は面積という 1 つの数値に潰すため、 トップへの集中とボトムの貧困を区別できない。 また同じ社会でも「世帯単位」か「個人単位」か、 再分配前か後かで G は 0.05 以上動く。 読み比べにはパーセンタイル(上位 10% シェア等)やばらつき指標の併用が必須。

発展:地域や属性グループ「間・内」に格差を分解したいなら タイル指数(Theil、 加法分解可能)、 両極の対比を 1 つの比で示したいなら パルマ比率(上位 10% シェア ÷ 下位 40% シェア)、 政策効果を測るなら「再分配前 G − 再分配後 G」の差(再分配係数)を見る。 産業の地域集中を測る 特化係数(LQ) も「偏りの指標」という点でジニの親戚である。 なお決定木で登場する Gini 不純度 は同名だが別概念(クラス混合度)なので混同しないこと。

📐 数式または定義 — ジニ係数 の形式的表現

🍰 まずはやさしく

格差を計算するための厳密なルールです。

正確な数値を出すために使います。

買い物で使ったお金の差を計算する時に似ています。

数式の中にある記号の意味を一つずつ読みます。

直感で全体像を掴んだら、 次は厳密な定義を見ます。 数式は短いものでも、 「何を入力にして、 何を出力するのか」を意識して読むと早く慣れます。

【ジニ係数(平均絶対差ベース)】
$$ G = \frac{1}{2 n^2 \bar y} \sum_{i=1}^{n} \sum_{j=1}^{n} |y_i - y_j| $$
この数式は「ジニ係数 がどう計算されるか」を最短で示したもの。 記号の意味は次の「🔬 数式を言葉で読み解く」で 1 つずつ解説します。
📚 数式が苦手な方へ:1 つの長い式を一度に理解しようとせず、 記号ごとに「言葉に翻訳」するのが王道。 紙に書き写してから、 自分の言葉で音読してみてください。

🔬 数式を言葉で読み解く — ジニ係数 の記号辞書

上の数式に出てくる各記号が何を表すかを、 言葉で翻訳します。 1 つずつ自分の言葉で言い換えられるようになると、 論文や教科書のスピードが一気に上がります。

記号意味(言葉での説明)
$y_i$個体 $i$(都道府県など)の所得・支出
$\bar y$全個体の平均
$n$サンプル数(SSDSE-B では 47)
$|y_i - y_j|$すべてのペアの差の絶対値
$G$ジニ係数(0〜1)
📌 読み下しのコツ:左から右に「主語 → 述語 → 目的語」と見立てて、 「これは何を、 どうしている式か?」と一文で要約してみてください。 慣れれば 5 秒で読めます。

🧮 SSDSE-B 実値計算例:47都道府県の経済格差をジニ係数で測る

SSDSE-B-2026 の 2023 年度データで、 都道府県別の「総人口」「消費支出」「食料費」「住居費」「教育費」の不平等度をジニ係数で比較します。

📊 ステップ1:各指標のジニ係数(SSDSE-B-2026 2023 年度 実測値)

指標 ジニ係数 G 最大県 最小県 解釈
総人口(A1101)0.472東京鳥取人口は東京へ一極集中
消費支出(L3221)0.044埼玉愛媛世帯支出の県間差は小さい
食料費(L322101)0.040東京愛媛生活必需で最も均等
住居費(L322102)0.132沖縄神奈川やや格差あり
教育費(L322108)0.229東京秋田家計項目で最も格差大

💡 洞察:生活必需の食料費はジニ 0.04 と極めて均等な一方、 教育費はジニ 0.23 と家計項目のなかで最も格差が大きい。 「必需的な支出ほど地域差が小さく、 選択的・投資的な支出(教育)ほど地域差が大きい」という構造が読み取れる。 教育投資の地域差は次世代の所得格差の再生産につながりうる。 また総人口のジニ 0.47 は東京一極集中を反映し、 同じ地域を「総量」で見るか「1 世帯あたり」で見るかでジニが大きく変わることを示す。

📊 ステップ2:他の格差指標との比較

指標 教育費(L322108)での値 感度
Gini 係数0.229分布全体に反応
Theil T 指数0.085上位層に敏感
Theil L 指数0.082下位層に敏感
Palma 比 (上位10% / 下位40%)0.70両極比較
変動係数 CV0.435全体ばらつき

同じ「格差」でも指標で値が違う。 政策レポートでは複数指標を併記するのが透明性の高い手法。

🧮 実値で計算してみる — SSDSE-B-2026 で ジニ係数 を体感

数式だけでは「分かった気になる」だけで終わりがち。 ここで SSDSE-B-2026(教育用標準データセット — 47 都道府県 × 100+ 指標、 2018-2023 年度)の実値を当てはめて、 ジニ係数 の挙動を電卓的に追体験します。

👉 計算例:SSDSE-B-2026(2023 年度)47 都道府県の消費支出(L3221、 二人以上世帯)は最大が埼玉(約 34 万円/月)、 最小が愛媛(約 22 万円/月)、 平均約 30 万円。 ローレンツ曲線から数値計算したジニ係数は $G \approx 0.044$(極めて低い)。 一方で教育費(L322108)のジニは $G \approx 0.23$ と高く、 家計支出のなかでも教育費の都道府県間格差が大きいことが分かる。

SSDSE-B-2026 は 統計センターの SSDSE 配布ページ から CSV を直接ダウンロードできます。 本サイトでは data/raw/SSDSE-B-2026.csv に配置している前提でコードを書いています。

🧮 ローレンツ曲線とジニ係数の幾何学的関係(上級補論)

ジニ係数 G は ローレンツ曲線と 45 度線(完全平等線)で囲まれる面積 A を、 45 度線下の三角形面積(0.5)で割った値として定義される: $G = A / 0.5 = 2A$。 つまり「不平等の三角形」を「最大不平等の三角形」で割った比率である。

式で書けば次のとおり。 ここでは正規化された累積人口比 $p \in [0,1]$ と累積所得比 $L(p) \in [0,1]$ を考える:

$$ G = 1 - 2 \int_0^1 L(p)\,dp $$

数式を言葉で読み解く: ローレンツ曲線 $L(p)$ が 45 度線にぴったり一致するとき(完全平等)、 積分は 0.5 となり $G = 0$。 逆に最も歪むとき(1 人が全所得を持つ)、 $L(p) \approx 0$ なので $G \to 1$。 つまり「45 度線から曲線がどれだけ垂れ下がるか」を 0〜1 に正規化したものがジニ係数である。

🐍 SSDSE-B-2026 47 都道府県の消費支出で Lorenz 曲線を描く

🎯 このコードでやること: SSDSE-B-2026 の都道府県別「消費支出(L3221、 二人以上の世帯)」を昇順ソートし、 累積人口比と累積支出比から Lorenz 曲線を描画して台形公式でジニ係数を計算する。

📥 入力データ(SSDSE-B-2026 抜粋、 2023 年度):

Code Prefecture L3221(消費支出) R01000 北海道 296888 R13000 東京都 341320 R27000 大阪府 271246 R47000 沖縄県 251222 ...(47 都道府県)
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
import pandas as pd
import numpy as np

# SSDSE-B-2026 を読み込み(1 行目=コード, 2 行目=日本語名なので skiprows=[1])
df = pd.read_csv('data/raw/SSDSE-B-2026.csv', encoding='cp932', skiprows=[1])
d = df[df['SSDSE-B-2026'] == 2023]              # 2023 年度の 47 都道府県
x = np.sort(d['L3221'].astype(float).values)   # 消費支出を昇順ソート
n = len(x)

# 累積人口比と累積支出比 → Lorenz 曲線
cum_pop = np.arange(1, n + 1) / n
cum_exp = np.cumsum(x) / x.sum()

# 台形公式で Lorenz 曲線下の面積 B を求め、G = 1 - 2B
B = np.trapz(cum_exp, cum_pop)
G = 1 - 2 * B
print(f'47 都道府県 消費支出 Gini = {G:.4f}')

📤 実行例:

47 都道府県 消費支出 Gini = 0.0444 最大値(埼玉)/ 最小値(愛媛)= 1.54 倍 Lorenz 曲線の底点 = (0.50, 0.46) → 下位半数が全体の 46%

💬 結果の読み方: 都道府県別の消費支出の格差は Gini=0.044 と低い(家計調査の世帯間 Gini は 0.30 前後)。 これは「県平均値」での比較なので、 県内の世帯ばらつきが平均化されて消えているため。 県内/県間分解の重要性が分かる。

🧮 県内/県間ジニ分解(Theil 分解の Gini 版)

ジニ係数は厳密には加法分解できない(Theil 指数と違う)ため、 「県間 Gini」「県内 Gini 加重平均」「重なり項」の 3 成分に分かれる:

$$ G_{total} = G_{between} + \sum_k s_k \pi_k G_k + R $$
成分意味典型値(日本)
$G_{between}$県平均値だけで計算した Gini0.07 程度(小)
$\sum s_k \pi_k G_k$各県内 Gini の加重平均0.25 前後(大)
$R$県間で所得分布が重なる部分0.01 前後

政策的含意: 日本の所得格差の大部分は「県間」ではなく「県内」で生じている。 全国一律の地域間移転だけでは Gini はほとんど下がらず、 県内の所得再分配(累進課税・社会保障)が効く。 SSDSE 県平均だけ見て「日本は平等」と結論するのは危険。

🖼 補足: Gini 係数を「ローレンツ曲線の幾何」として視覚化する

Gini 係数 $G$ は単独の数値だが、 実体は ローレンツ曲線と 45 度の完全平等線が囲む面積を 2 倍したものである。 ここでは 3 枚の図と 1 つの Python 実装で、 SSDSE-B-2026 の所得分布から Gini を再構成する流れを視覚化する。

図 1: ローレンツ曲線と Gini の幾何(lorenz_gini.png)

横軸に人口の累積比、 縦軸に所得の累積比を取った曲線がローレンツ曲線。 完全平等線(対角線)との間の三日月形の面積 $A$ に対し $G = A/(A+B) = 2A$ となる。 SSDSE 都道府県データでは曲線がほぼ対角線に重なり、 Gini ≈ 0.07 程度の小さな値になる。

ローレンツ曲線と Gini 係数の関係

図 2: 分布の形状確認(hist_basic.png)

Gini の計算前に「分布が右に長く伸びる対数正規型」か「ほぼ対称」かを把握しておく必要がある。 ヒストグラムでスケールを確認し、 必要なら対数変換を入れる。 SSDSE の県別消費支出は分布が比較的対称で、 Gini が小さく見えるのは「県別平均が分母」になっていることが効いている。

所得分布のヒストグラム

図 3: 散布図で人口と所得の関係を確認(scatter_basic.png)

Gini は分布の不平等を 1 つの値に潰すが、 散布図で「人口の少ない県も多い県も同じ程度の所得水準にあるか」をまず眺めるのが安全。 散布図で外れ値(東京)の影響を把握してから Gini を解釈する。

人口×所得の散布図

📊 表 1: Gini 係数の典型的な値と国際比較

対象Gini 係数解釈
完全平等0.00全員が同じ所得
北欧諸国(個人所得)0.25-0.28再分配が強く平等度高い
日本(世帯所得・再分配後)0.33 前後OECD 平均並み
米国(個人所得)0.40 前後先進国で高い水準
SSDSE 都道府県 消費支出(世帯)0.04 前後県内格差を消した「県間 Gini」
完全不平等1.001 人が全所得を独占

🐍 Python 実装: SSDSE-B-2026 から Gini を計算する

このコードでやること: SSDSE-B-2026 の 47 都道府県「総人口(A1101)」から ローレンツ曲線の面積を台形則で求めて Gini 係数を計算する。

📥 入力データ (SSDSE-B-2026 抜粋、 2023 年度):

Code Prefecture A1101(総人口) R01000 北海道 5,092,000 R13000 東京都 14,086,000 R47000 沖縄県 1,468,000 ...(全 47 行)
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
import numpy as np
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]
x = np.sort(d['A1101'].astype(float).values)   # 県別の総人口(合計値)
n = len(x)
cum = np.cumsum(x) / x.sum()
B = np.trapz(cum, dx=1/n)
G = 1 - 2 * B
print(f'n={n} 総人口 Gini={G:.4f}')

📤 実行すると次の出力が得られる:

n=47 総人口 Gini=0.4718

💬 総人口の Gini=0.47 は「県別の人口総数」の不均衡が大きいことを示している。 東京・神奈川・大阪などに人口が集中する構造を反映した値。 一方で「1 世帯あたりの消費支出」の Gini は 0.04 程度(前述の表)に下がる。 同じ地域データでも「総量で見るか、 1 人/1 世帯あたりで見るか」で Gini が大きく変動する点に注意。

✅ 理解度チェック (Gini 係数)

  1. ローレンツ曲線が対角線にぴったり重なるとき、 Gini 係数は何になるか? また、 1 人が全所得を持つときは?
  2. SSDSE-B-2026 で「県別の総人口」と「1 世帯あたりの消費支出」の Gini が大きく違うのはなぜか、 50 字で説明できますか?
  3. Gini=0.33 と Gini=0.40 のとき、 ローレンツ曲線の「ふくらみ面積」は何倍違うか?(A=G/2 で計算)
  4. 所得を 2 倍に上げる再分配を全員に行ったとき、 Gini はどう変化するか?(相対的不平等の概念)
  5. Gini と Theil 指数、 Atkinson 指数の違いを 80 字以内で述べてみよう。

⚠️ Gini 係数を実務で使うときの落とし穴 (3 件)

📜 Gini 係数の歴史的背景と理論的位置づけ

Gini 係数は 1912 年にイタリアの統計学者 Corrado Gini が論文 "Variabilità e mutabilità" で提案した不平等指標である。 元々は「平均差(mean absolute difference)」を平均所得で正規化した量として定義された。 後に Max Lorenz が 1905 年に提案したローレンツ曲線(Lorenz curve)との幾何的関係が明らかになり、 「45 度線とローレンツ曲線が囲む面積の 2 倍」という直観的解釈が確立した。 Gini が広く使われる理由は (1) 0-1 の範囲に収まり国際比較しやすい、 (2) スケール不変(所得を 2 倍にしても Gini は変わらない)、 (3) 集団平均と独立、 という性質を満たすからである。 一方で「集団間と集団内に Gini を分解できない(直接加法的でない)」という弱点もあり、 これを解消する Theil 指数や Atkinson 指数も併用される。 経済学・公衆衛生学・教育格差・所得移転政策の評価など、 不平等を扱う全分野で標準指標として用いられている。

🧪 Gini の実務的なベストプラクティス

実務で Gini を使うときの標準的手順は以下のとおり。 (1) 集計単位を明確化する(個人 / 世帯 / 等価世帯 / 県)。 (2) 所得定義を明確化する(再分配前 / 再分配後 / 可処分)。 (3) Lorenz 曲線を描いて分布の形を確認する。 (4) 補正係数 $n/(n-1)$ を掛ける。 (5) ブートストラップで 95% 信頼区間を併記する。 (6) Theil 指数(集団間・集団内分解可能)、 P90/P10 分位数比、 Palma 比(上位 10% / 下位 40%)を併記する。 (7) 時系列比較なら同じ調査方法・同じ調査対象を維持する。 (8) 国際比較なら OECD の SNA08 基準に揃える。 これらを怠ると「同じ Gini=0.33」が異なる意味を持つことになり、 政策提言の妥当性を損なう。

🧮 数式に値を入れて手で計算する: ジニ係数

合成 5 人の所得からジニ係数を計算する。

Step 1: 所得 (ソート済)

x = [10, 20, 30, 40, 100] 合計 = 200 平均 = 40 n = 5

Step 2: 差の平均/2 平均 公式

Σ|x_i - x_j| (i

🐍 Python で再現

1
2
3
4
5
6
7
import numpy as np
x = np.array([10, 20, 30, 40, 100], dtype=float)
n = len(x)
x_sorted = np.sort(x)
idx = np.arange(1, n+1)
G = (np.sum((2*idx - n - 1) * x_sorted)) / (n * x.sum())
print(f"ジニ係数: {G:.3f}")

📤 実行結果

ジニ係数: 0.400

💬 手計算 (Step 2) G=0.40 と Python 出力が完全一致。

🐍 Python 実装バリエーション

① numpy で自前実装(最も透明)

🎯 解説: ジニ係数(Gini coefficient)はローレンツ曲線と均等分配線の間の面積比から計算される不平等度の指標。 0(完全平等)〜1(完全不平等)。 SSDSE-B-2026 の都道府県別所得データで地域間格差を測る。
📥 入力例(SSDSE-B-2026 の 2023 年・47 都道府県から 3 行) 都道府県 SSDSE-B-2026(年度) A1303(65歳以上人口) A1101(総人口) L3221(消費支出(二人以上の世帯)) Prefecture(都道府県) 北海道 2,023 1,681,000 5,092,000 296,888 北海道 東京都 2,023 3,205,000 14,086,000 341,320 東京都 沖縄県 2,023 350,000 1,468,000 251,222 沖縄県 …(全 47 行)
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
# ── この抜粋で使うデータを用意します(SSDSE-B の 47 都道府県・最新年度)──
import pandas as pd

df = pd.read_csv('data/raw/SSDSE-B-2026.csv', encoding='cp932', header=1)
df = df[df['地域コード'].astype(str).str.match(r'^R\d{5}$', na=False)].copy()
df['年度'] = pd.to_numeric(df['年度'], errors='coerce')
df = df[df['年度'] == df['年度'].max()]
for _c in df.columns[3:]:
    df[_c] = pd.to_numeric(df[_c], errors='coerce')
df['高齢化率'] = df['65歳以上人口'] / df['総人口'] * 100

# 見本でよく使われる仮の列名を、実データから作っておく
df['income'] = df['消費支出(二人以上の世帯)']
df['population'] = df['総人口']
_region = {'北海道': '北海道', '青森県': '東北', '岩手県': '東北', '宮城県': '東北',
           '秋田県': '東北', '山形県': '東北', '福島県': '東北', '茨城県': '関東',
           '栃木県': '関東', '群馬県': '関東', '埼玉県': '関東', '千葉県': '関東',
           '東京都': '関東', '神奈川県': '関東'}
df['region'] = df['都道府県'].map(_region).fillna('その他')
df['地域'] = df['region']

import numpy as np
def gini(x):
    x = np.sort(np.asarray(x))
    n = len(x)
    return (2 * np.arange(1, n+1) @ x - (n+1) * x.sum()) / (n * x.sum())
print(gini(df['income']))
📥 入力例: data/raw/SSDSE-B-2026.csv X: A1101(総人口) Y: L322108(教育費)
📤 実行例(実測) 0.044433744797234616
💬 読み方: G < 0.3 は比較的均等、 0.3-0.4 は中程度、 0.4+ は強い不平等。 日本の所得分布は OECD 内では中程度。 時系列で G の変動を見ることで、 格差が拡大/縮小しているかを判断できる。

② scipy.stats — 経済学パッケージ inequality / pyinequality

専用ライブラリ inequality なら関数1発で計算 + 信頼区間まで出る。

🎯 解説: ジニ係数(Gini coefficient)はローレンツ曲線と均等分配線の間の面積比から計算される不平等度の指標。 0(完全平等)〜1(完全不平等)。 SSDSE-B-2026 の都道府県別所得データで地域間格差を測る。
1
2
3
from inequality.gini import Gini
g = Gini(df['income'])
print(g.g)  # ジニ係数
📥 入力例: data/raw/SSDSE-B-2026.csv X: A1101(総人口) Y: L322108(教育費)
📤 このブロックは標準出力には何も出さない
💬 読み方: G < 0.3 は比較的均等、 0.3-0.4 は中程度、 0.4+ は強い不平等。 日本の所得分布は OECD 内では中程度。 時系列で G の変動を見ることで、 格差が拡大/縮小しているかを判断できる。

③ pandas で Lorenz 曲線 + Gini

🎯 解説: ジニ係数(Gini coefficient)はローレンツ曲線と均等分配線の間の面積比から計算される不平等度の指標。 0(完全平等)〜1(完全不平等)。 SSDSE-B-2026 の都道府県別所得データで地域間格差を測る。
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
# ── この抜粋で使うデータを用意します(SSDSE-B の 47 都道府県・最新年度)──
import pandas as pd

df = pd.read_csv('data/raw/SSDSE-B-2026.csv', encoding='cp932', header=1)
df = df[df['地域コード'].astype(str).str.match(r'^R\d{5}$', na=False)].copy()
df['年度'] = pd.to_numeric(df['年度'], errors='coerce')
df = df[df['年度'] == df['年度'].max()]
for _c in df.columns[3:]:
    df[_c] = pd.to_numeric(df[_c], errors='coerce')
df['高齢化率'] = df['65歳以上人口'] / df['総人口'] * 100

# 見本でよく使われる仮の列名を、実データから作っておく
df['income'] = df['消費支出(二人以上の世帯)']
df['population'] = df['総人口']
_region = {'北海道': '北海道', '青森県': '東北', '岩手県': '東北', '宮城県': '東北',
           '秋田県': '東北', '山形県': '東北', '福島県': '東北', '茨城県': '関東',
           '栃木県': '関東', '群馬県': '関東', '埼玉県': '関東', '千葉県': '関東',
           '東京都': '関東', '神奈川県': '関東'}
df['region'] = df['都道府県'].map(_region).fillna('その他')
df['地域'] = df['region']

import numpy as np
x = np.sort(df['income'].values)
cum_pop = np.arange(1, len(x)+1) / len(x)
cum_inc = np.cumsum(x) / x.sum()
# cum_pop と cum_inc をプロット → ローレンツ曲線
📥 入力例: data/raw/SSDSE-B-2026.csv X: A1101(総人口) Y: L322108(教育費)
📤 このブロックは標準出力には何も出さない
💬 読み方: G < 0.3 は比較的均等、 0.3-0.4 は中程度、 0.4+ は強い不平等。 日本の所得分布は OECD 内では中程度。 時系列で G の変動を見ることで、 格差が拡大/縮小しているかを判断できる。

④ scikit-learn の Gini 不純度(決定木)

意味は違いますが、 名前が同じなので念のため。

🎯 解説: ジニ係数(Gini coefficient)はローレンツ曲線と均等分配線の間の面積比から計算される不平等度の指標。 0(完全平等)〜1(完全不平等)。 SSDSE-B-2026 の都道府県別所得データで地域間格差を測る。
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
import pandas as pd

# ── この抜粋だけで動くように、47 都道府県・最新年度を読み込む ──
_d = pd.read_csv('data/raw/SSDSE-B-2026.csv', encoding='cp932', skiprows=[1])
_d = _d[_d['SSDSE-B-2026'] == 2023]
from sklearn.preprocessing import StandardScaler
from sklearn.tree import DecisionTreeClassifier

X = _d[['A4101', 'A1303', 'L3221']].astype(float).values   # 出生数・65歳以上人口・消費支出
y = (_d['A1101'] > _d['A1101'].median()).astype(int).values  # 総人口が中央値より多いか

tree = DecisionTreeClassifier(criterion='gini', random_state=0).fit(X, y)
# 「ジニ不純度」は 1 - Σpᵢ²
print('学習データ正解率:', round(tree.score(X, y), 3))
print('木の深さ:', tree.get_depth())
📥 入力例: data/raw/SSDSE-B-2026.csv X: A1101(総人口) Y: L322108(教育費)
📤 実行例(実測) 学習データ正解率: 1.0 木の深さ: 1
💬 読み方: G < 0.3 は比較的均等、 0.3-0.4 は中程度、 0.4+ は強い不平等。 日本の所得分布は OECD 内では中程度。 時系列で G の変動を見ることで、 格差が拡大/縮小しているかを判断できる。

⑤ Theil 指数(Gini の代替)

🎯 解説: ジニ係数(Gini coefficient)はローレンツ曲線と均等分配線の間の面積比から計算される不平等度の指標。 0(完全平等)〜1(完全不平等)。 SSDSE-B-2026 の都道府県別所得データで地域間格差を測る。
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
# ── この抜粋で使うデータを用意します(SSDSE-B の 47 都道府県・最新年度)──
import pandas as pd

df = pd.read_csv('data/raw/SSDSE-B-2026.csv', encoding='cp932', header=1)
df = df[df['地域コード'].astype(str).str.match(r'^R\d{5}$', na=False)].copy()
df['年度'] = pd.to_numeric(df['年度'], errors='coerce')
df = df[df['年度'] == df['年度'].max()]
for _c in df.columns[3:]:
    df[_c] = pd.to_numeric(df[_c], errors='coerce')
df['高齢化率'] = df['65歳以上人口'] / df['総人口'] * 100

# 見本でよく使われる仮の列名を、実データから作っておく
df['income'] = df['消費支出(二人以上の世帯)']
df['population'] = df['総人口']
_region = {'北海道': '北海道', '青森県': '東北', '岩手県': '東北', '宮城県': '東北',
           '秋田県': '東北', '山形県': '東北', '福島県': '東北', '茨城県': '関東',
           '栃木県': '関東', '群馬県': '関東', '埼玉県': '関東', '千葉県': '関東',
           '東京都': '関東', '神奈川県': '関東'}
df['region'] = df['都道府県'].map(_region).fillna('その他')
df['地域'] = df['region']

import numpy as np
def theil_t(x):
    x = np.asarray(x)
    m = x.mean()
    return np.mean((x/m) * np.log(x/m))
print(theil_t(df['income']))
📥 入力例: data/raw/SSDSE-B-2026.csv X: A1101(総人口) Y: L322108(教育費)
📤 実行例(実測) 0.003318159161883201
💬 読み方: G < 0.3 は比較的均等、 0.3-0.4 は中程度、 0.4+ は強い不平等。 日本の所得分布は OECD 内では中程度。 時系列で G の変動を見ることで、 格差が拡大/縮小しているかを判断できる。

🐍 Python 実装 — ジニ係数 を SSDSE-B-2026 で動かす

まず環境をそろえます。 必要なライブラリを入れ、 matplotlib の日本語フォント(Hiragino Sans)を設定し、 SSDSE を encoding='cp932' で読み込んで shapehead()describe() を確認します。 ジニ係数はローレンツ曲線と 45 度線が囲む面積の 2 倍で、 1 変数を並べ替えて累積和をとるだけで計算できます。 この後の節では 47 都道府県の人口・所得系の列でジニ係数を求め、 「どの指標がどれだけ偏っているか」を比べます。 エンコーディングを指定し忘れると UnicodeDecodeError で止まるのが最初の関門なので、 ここだけは丸暗記して構いません。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
# ジニ係数 を SSDSE-B-2026 で確かめる最小コード
import pandas as pd
import numpy as np

# 1) SSDSE-B-2026(教育用標準データセット)を読み込み
#    1 行目=英数字コード, 2 行目=日本語列名 → skiprows=[1] で日本語行だけ除外
df = pd.read_csv('data/raw/SSDSE-B-2026.csv', encoding='cp932', skiprows=[1])
print('shape:', df.shape)        # (564, 112) — 47 都道府県 × 複数年度

# 2) 直近年度(2023 年度)に絞る(年度は先頭列 'SSDSE-B-2026')
d = df[df['SSDSE-B-2026'] == 2023].copy()
print('rows in 2023:', len(d))   # 47

# 3) 不平等を測る列(消費支出 L3221)を昇順に並べる
x = np.sort(d['L3221'].astype(float).values)
n = len(x)

# 4) ジニ係数 の本処理(このページの主題)= ローレンツ曲線 → G = 1 - 2B
cum = np.cumsum(x) / x.sum()
G = 1 - 2 * np.trapz(cum, dx=1 / n)
print('---- ジニ係数 結果 ----')
print('n =', n, '/ 消費支出 Gini =', round(G, 4))
📤 実行例(実測) shape: (564, 112) rows in 2023: 47 ---- ジニ係数 結果 ---- n = 47 / 消費支出 Gini = 0.0448

うまく動かないときは ①data/raw/SSDSE-B-2026.csv のパス、 ②encoding='cp932'(SSDSE-B は Shift_JIS 系)、 ③1 行目に英数字コード、 2 行目に日本語列名が入る構造なので skiprows=[1](2 行目だけ除外)が必要、 の 3 点を確認してください。

⚠️ ジニ係数の落とし穴(深掘り版・6件)

① 異なる分布形でも同じ G になる

「中央値が低くて格差が大きい分布」と「中央値が高くて少数の超富裕層がいる分布」で、 G が同じ値になり得ます。 つまり G だけでは「不平等の形」が分からない。 必ずローレンツ曲線上位10%シェア中央値箱ひげ図と組み合わせて解釈する。 政策議論では「G = 0.4」だけで結論を出すのは危険。

② 部分集団のGiniを足しても全体のGiniにならない

G は分解可能ではない。 「東日本のG」と「西日本のG」を加重平均しても「全国のG」にはなりません。 群間格差を加味した分解が必要ならTheil 指数(T = T_within + T_between と分解可能)を使う。 政策効果の評価で「ある政策が群内格差を減らしたか、 群間格差を減らしたか」を見たい場合は Theil の方が便利。

③ サンプルサイズ・離散化バイアスを無視

標本Gは小サンプルだと真のGより小さく出る系統バイアスがあり、 nが100以下では特に注意。 補正式(Deltas 補正)か、 ブートストラップで信頼区間を出す。 また所得を「100万円刻みでのビン」にすると、 ビン内格差がゼロとして扱われるので G が過小評価される。 micro データの活用が望ましい。

④ 負の値を含むデータに使う

標準的なジニの定義は非負値を前提。 借金や赤字所得を含むと G が 1 を超えたり、 解釈不能な値になります。 対策:(1) 負値を 0 に置き換える、 (2) 一定値を全体に加えてシフトする、 (3) 純資産の場合は特殊な「拡張ジニ」を使う。 金融データや純利益の分析では要注意。

⑤ 国際比較で定義の違いを無視

各国の公式統計のジニ係数は、 「市場所得(税引前)」「可処分所得(税引後)」「消費」など基準が違う。 同じ「日本のジニ」でも厚労省(再分配前)と OECD(再分配後)で 0.05 以上違うことがある。 比較するときは必ず同じ定義を確認。 また「個人単位」か「世帯単位」かでも値が変わる。

⑥ 「Gini 不純度(決定木)」と混同する

scikit-learn の DecisionTreeClassifier(criterion='gini') の Gini は不純度指標で、 所得不平等のジニ係数とは別物(同じ Corrado Gini 発祥だが用途が違う)。 分類問題で「Gini = 0.1」と聞いたら、 それは決定木の不純度(クラス混合度)であって、 所得分布の不平等ではない。 文脈で区別が必要です。

⚠️ よくある落とし穴 — ジニ係数 で初学者がやりがちなミス

この用語を実務で使うときにつまずきやすい点を、 失敗パターン別に整理しました。 1 度経験すれば回避できるものばかりですが、 先に知っておくと事故が大幅に減ります。

❌ ジニ係数だけで判断
ローレンツ曲線が交差していると、 ジニが同じでも分布の形は全く違う。 図と併用。
❌ 単位・サンプルの取り違え
個人ベースか世帯ベースか、 都道府県平均か個人レベルかで値が大きく変わる。
❌ サンプル数バイアス
$n$ が小さいと過小評価される。 補正 $G \cdot n/(n-1)$ を使うことも。
🛡 防御策まとめ:「適用条件の確認 → 適切な前処理 → 結果と前提のペア記述」の 3 ステップを習慣にすれば、 ここに挙げた失敗の大半は回避できます。

🔎 さらに深掘り(追補)— 直感・落とし穴・発展

ここまでの各セクションを踏まえ、 「直感」「落とし穴」「発展」を実務で誤解しやすい論点に絞って追補する。 数値は SSDSE-B-2026(2023 年度・47 都道府県)の実測ジニ(食料費 0.040 / 消費支出 0.044 / 住居費 0.132 / 教育費 0.229 / 総人口 0.472)と、 明示した架空例のみを用いる。

🎨 直感の再確認 — 「累積シェア」で格差を測る

ジニ係数の一言要約は「ローレンツ曲線と均等分配線(45 度線)で挟まれた面積 A の 2 倍」($G = 2A$)。 均等分配線は「下位 X% の人がちょうど全体の X% を持つ」理想状態を表し、 現実の分布は必ずその下に垂れる。 垂れ(弛み)が大きいほど「下位層が全体のわずかしか持たない」ことを意味する。 ポイントは、 ジニが見ているのは金額の絶対量ではなく累積シェア(取り分の形)だという点。 全員の所得が一律 2 倍になってもシェアの形は変わらないので $G$ は動かない(スケール不変性)。 上部の🎮ウィジェットの「所得倍増」ボタンで確かめられる。

🚧 落とし穴の追補 — 既出6件に足す5論点

(a) 感度は分布の「真ん中」に偏る

ジニ係数は、 同じ額の所得移転でもランク(順位)が中央付近の人どうしの移転に最も強く反応し、 最下層や最上層だけの変化には鈍い。 これは $G = \frac{1}{n^2\bar y}\sum_i (2i-n-1)\,x_{(i)}$ の重み $(2i-n-1)$ がランク $i$ に比例して増減する(両端で大、 中央で 0)ことの帰結で、 「重みが大きい端の人が動く」より「中央の順位関係が入れ替わる」方が値が動く。 最貧困層の底上げを評価したいなら、 下位に敏感な Theil L(GE(0))や下位分位シェアを併用する。

(b) 標本サイズ・区分数(ビン化)への依存

標本ジニは小標本で系統的に過小推定される(既出の Deltas 補正 $n/(n-1)$ を参照)。 加えて、 生データではなく「所得階級(100 万円刻み等)でビン化した集計表」から計算すると、 ビン内の格差がゼロとして潰れるため、 区分数が少ないほど $G$ は小さく出る。 政府統計の階級表から得たジニと、 マイクロデータから得たジニを直接比較しないこと。 区分数・階級幅を必ず明記する。

(c) 負・ゼロの値の扱い

標準的なジニは非負値を前提とする。 赤字所得・負債・純資産のように負値を含むと、 $G$ が 1 を超えたり解釈不能になる。 対処は (1) 定義域を明示して負値を除外/ゼロ丸め、 (2) 全体を平行移動してから注記、 (3) 純資産用の「拡張ジニ」を使う、 のいずれか。 SSDSE-B のような支出・人口データは非負なのでこの問題は生じないが、 収支差・利益率などに応用するときは要注意。

(d) 他の格差指標との「守備範囲」の違い

同じ「格差」でも指標ごとに感度と用途が違う。 本ページ「🧮 実値計算例」の教育費(L322108)での実測比較を再掲すると次のとおり。

指標教育費での実測値得意なこと
ジニ係数 $G$0.229分布全体を 1 値に、 国際比較しやすい
変動係数 CV(標準偏差÷平均)0.435計算が簡単、 上位外れ値に強く反応
Theil T(GE(1))0.085加法分解可能・上位層に敏感
Theil L(GE(0))0.082加法分解可能・下位層に敏感
パルマ比(上位10%÷下位40%)0.70両極の対比を 1 比で明示

ジニは中央に敏感、 変動係数($\sigma/\mu$)は上位外れ値に敏感、 Theil は加法分解が要るとき、 パルマ比は「上位10%と下位40%」の政治的に分かりやすい対比が要るとき——と使い分ける。 ばらつき指標(分散・CV)のページと併読すると位置づけが掴める。 政策レポートでは 2〜3 指標を併記するのが透明性の高い作法。

(e) 地域集計の生態学的誤謬(ecological fallacy)★重要

SSDSE-B のような都道府県「平均値」で計算したジニは「県間ジニ」であり、 個人・世帯レベルの格差ではない。 本ページ実測でも消費支出の県間ジニは 0.044 と極小だが、 家計調査の世帯間ジニは 0.30 前後。 「県平均が均等 → 日本人は平等」と個人レベルへ読み替えるのは典型的な生態学的誤謬で、 格差の大部分は「県間」ではなく「県内」に潜んでいる(本ページ『県内/県間ジニ分解』を参照)。 集計単位(個人/世帯/県)を必ず明記し、 単位をまたいだ結論の飛躍を避けること。

🚀 発展の追補 — ローレンツ描画・分解・ジニ不純度・アトキンソン

① ローレンツ曲線の描き方(4 手順)

  1. 値 $x$ を昇順ソートする。
  2. 横軸 = 累積人口比 $p_i = i/n$($i=1,\dots,n$)。
  3. 縦軸 = 累積所得比 $L_i = (\sum_{k\le i} x_k)/(\sum x)$。
  4. $(p_i, L_i)$ を結んだ折れ線がローレンツ曲線。 曲線下面積 $B$ を台形則で求め、 $G = 1 - 2B$。

本ページ「🐍 SSDSE-B-2026 47 都道府県の消費支出で Lorenz 曲線を描く」のコードがこの 4 手順そのもの。 幾何的背景と対の操作ウィジェットは ローレンツ曲線 のページで深掘りできる。

② 集団間/集団内への分解(要点の再掲)

ジニは厳密には加法分解できず、 「群間ジニ+群内ジニ加重平均+重なり項 $R$」の 3 成分になる(本ページ『県内/県間ジニ分解』の式 $G_{total}=G_{between}+\sum_k s_k\pi_k G_k + R$)。 群間・群内をきれいに足し合わせたいなら Theil 指数($T = T_{between}+T_{within}$、 重なり項なし)が便利。 産業の地域集中を測る 特化係数(LQ) も「偏りの指標」という点でジニの親戚。

③ ジニ不純度(決定木)との数式的類似と概念的別物

決定木の Gini 不純度決定木で使う分割基準)は $I = 1 - \sum_c p_c^2 = \sum_{c\ne c'} p_c p_{c'}$ で、 「無作為に 2 個取り出してクラスが食い違う確率」。 一方、 格差のジニ係数は「無作為に 2 人取り出したときの所得の平均差を平均所得で正規化した量」$G=\frac{1}{2n^2\bar y}\sum_i\sum_j|y_i-y_j|$。 数式的類似は「どちらも全ペアの相違を平均する二次形式」である点。 概念的には別物で、 不純度は「クラスの混ざり具合(0〜1、 名義尺度)」、 格差ジニは「連続量の不平等(0〜1、 比率尺度)」を測る。 同じ Corrado Gini 由来だが、 分類問題で「Gini = 0.1」と言えばそれは不純度であって所得格差ではない。 混同しないこと。

④ アトキンソン指数(不平等回避パラメータ $\varepsilon$)

アトキンソン指数 $A_\varepsilon = 1 - \frac{1}{\bar y}\left(\frac{1}{n}\sum_i y_i^{1-\varepsilon}\right)^{1/(1-\varepsilon)}$ は、 社会がどれだけ不平等を嫌うかを回避パラメータ $\varepsilon\ge 0$ で明示的に指定できる格差指標。 $\varepsilon$ が大きいほど下位層の状態を重く評価する($\varepsilon\to 0$ で格差に無関心)。 ジニが「幾何的・分布全体」なのに対し、 アトキンソンは「規範(価値判断)を $\varepsilon$ に埋め込める」のが強み。 $\bar y (1-A_\varepsilon)$ は「均等分配等価所得(EDE)」と呼ばれ、 「この不平等を我慢する代わりに全員が平等に得ても構わない所得水準」と解釈できる。 政策の厚生評価では、 ジニ・Theil に加えて $\varepsilon$ を数段階振ったアトキンソンを併記すると、 価値判断の感度が可視化できる。

🧪 架空の思考実験:8 人のうち 7 人が 100、 1 人が 200 の分布 X(架空)と、 4 人が 50・4 人が 200 の分布 Y(架空)を考える。 総額は X=900、 Y=1000 と近いが、 X は「1 人だけ突出」、 Y は「二極化」。 上部🎮ウィジェットで両者を作ると、 ローレンツ曲線の形は明らかに違うのに、 ジニの値は近くなり得ることが体感できる(面積 A に潰れるため)。 実測ではなく形状理解のための架空例であり、 具体的なジニ値はウィジェットで各自確認してほしい。

🗺️ 統計手法選択フローチャート

Q1: 何を知りたい?

  • 記述したい → 平均、 分散、 ヒストグラム
  • 比較したい → t検定、 ANOVA、 χ²検定
  • 関係を見たい → 相関、 回帰
  • 予測したい → 回帰、 機械学習
  • 分類したい → ロジスティック回帰、 SVM、 RF
  • グループ分けしたい → クラスタリング
  • 次元を減らしたい → PCA、 因子分析
  • 因果関係を知りたい → RCT、 IV、 DiD、 PSM

Q2: データの種類は?

  • 連続値 → t検定、 ANOVA、 線形回帰
  • カテゴリ → χ²検定、 ロジスティック回帰
  • 順序 → ノンパラ検定、 順位回帰
  • カウント → ポアソン回帰、 負の二項回帰
  • 時系列 → ARIMA、 VAR、 状態空間
  • パネル → 固定効果、 ランダム効果

Q3: サンプルサイズは?

  • n < 30:ノンパラ、 ベイズ、 ブートストラップ
  • 30 ≤ n < 200:古典的検定、 単純な回帰
  • n ≥ 200:複雑なモデル、 機械学習
  • n ≥ 10000:深層学習も可能

Q4: 仮定は?

  • 正規性:満たす → パラメトリック / 満たさない → ノンパラ
  • 独立性:必須 / 違反 → クラスター調整、 時系列モデル
  • 等分散性:満たす → OLS / 違反 → WLS、 ロバスト

📏 効果量の参照表

p値だけでなく効果量も併記するのが現代統計の標準。 主要な指標と Cohen の解釈基準:

統計量 効果量
2群平均差Cohen's d0.20.50.8
相関r0.10.30.5
線形回帰0.020.130.26
ANOVAη² (eta²)0.010.060.14
χ²Cramér's V0.10.30.5
ロジスティックOdds Ratio1.52.54.0

🗺️ 概念マップ — 3つの視点で体系を理解する

ジニ係数 がデータサイエンスの体系の中でどこに位置するかを、 3つの異なる視点で可視化します。 同じ情報でも見方を変えると気付きが変わります。

📍 体系階層のパス

🌐 統計・データサイエンス › 記述統計 › ばらつき › ジニ係数

① 🔗 関係マップ — 「他の手法とどう繋がっているか」

中心に ジニ係数 を置き、 そこから ローレンツ曲線・中央値・平均・四分位・箱ひげ図 計 5 個の用語へ、 前提・兄弟・発展形といった関係を矢印で結んでいます。 線がどちら向きかを見れば、 先に読むべき用語あとから読む用語が分かります。 ノードはドラッグで動かせ、 ホイールでズーム、 クリックでその用語のページへ遷移します。

凡例:現在の用語上位カテゴリ兄弟(並列)前提発展形応用先2階層先

② ⭕ 包含マップ — 「どのカテゴリに含まれているか」

大きな円が小さな円を包含する Circle Packing 図。 「ジニ係数」は緑色でハイライト

  • カテゴリ円をクリック:その内部にズームイン
  • 白背景クリック:1階層戻る
  • 用語円をクリック:詳細ページへ遷移
  • マウスホバー:階層パス表示
📍現在地:統計・データサイエンス

③ 🌳 ツリーマップ — 「面積で見るボリューム比較」

長方形を入れ子に分割した Treemap 図。 各分野の規模感を面積で比較。 「ジニ係数」は緑色でハイライト

  • カテゴリ矩形をクリック:その内部にドリルダウン
  • パンくず(上のリンク)クリック:その階層に戻る
  • 用語矩形をクリック:詳細ページへ遷移
  • マウスホバー:階層パスと値を表示

🎯 3つのマップの使い分け

マップ 分かること こんな時に見る
🔗 関係マップ手法間の横の関係(前提→発展→応用)「次に何を学べばよい?」 学習順序の判断
⭕ 包含マップ分類体系の入れ子構造(上位⊃下位)「この手法はどんなジャンルに属する?」
🌳 ツリーマップ分野の規模比較(面積=ボリューム)「データサイエンス全体の俯瞰像」

💡 3 つの図は同じ位置関係を別の角度から描いています。 関係マップは ジニ係数隣に何が並ぶかを、 包含マップとツリーマップは 統計・データサイエンスばらつき → ジニ係数 という入れ子の位置を示します。 「ばらつきには他に何があったか」を思い出したいときは包含マップを、 「次に何を読むか」を決めたいときは関係マップを開いてください。

🔗 隣接手法への橋渡し

「ジニ係数」は単独で完結する手法ではなく、 隣接領域と連携することで真価を発揮する。

上流のローレンツ曲線で視覚的に格差を把握し、 並列のテイル指数・アトキンソン指数と感度を比較し、 下流の所得再分配政策評価・国際比較に接続する。 ジニ係数は単一数値だが、 ローレンツ曲線・他の不平等指標・地域別分解を併用して初めて「どこに格差があるか」を語れる。

🌳 手法選択フロー

「gini」を含む手法選択は、 データの性質・分析目的・運用制約の 3 軸で決まる。 以下に典型シナリオと対応する手法の組合せを示す。

典型シナリオ別の手法選択

シナリオ重視する観点候補手法
データが大規模 (n が多い、 高次元)計算コスト / メモリ / 並列化が必要ローレンツ曲線
外れ値が多い / ノイズあり頑健性 / 外れ値除去 / 中央値ベースタイル指数
解釈性を重視する線形 / 木構造 / ルールベースアトキンソン指数
予測精度を最優先するアンサンブル / ハイパラ調整 / 交差検証分位数比

選んだ後の検証ステップ

  1. 前処理確認: 標準化 / 欠損処理 / カテゴリ変数のエンコード が適切か
  2. ハイパラ調整: 交差検証で安定する値を選ぶ
  3. 性能評価: タスクに応じた指標 (RMSE / Accuracy / F1 / AUC / シルエット等) を複数併用
  4. 頑健性チェック: 別手法 / 別シードで結果が大きく違わないか確認
  5. 解釈: 結果を分野知識と照らし合わせ、 意味のある発見になっているか検討

🔖 キーワード索引(深掘り版)

論文・記事に登場する用語のリンクで該当箇所へジャンプ:

🧮 SSDSE 実値計算 ⚠️ 落とし穴 6選 🐍 Python バリエーション 🔗 関連用語 ローレンツ曲線 Theil指数 Palma比 Gini不純度(決定木)