ニュースや経済記事でよく聞く「ジニ係数」。これは「格差」や「不平等」の度合いを客観的に示すための重要な指標です。
1. ジニ係数とは?その定義と基本的な見方
ジニ係数は、イタリアの統計学者コッラド・ジニが考案した、社会の富の分配の偏りを示すための単一の数字です。
| 指標 | 意味 |
| 0 | 完全な平等 |
| 1 | 完全な不平等 |
ジニ係数は常に 0から1 の間の値を取り、1に近づくほど格差が大きいことを意味します。
2. 📐 ローレンツ曲線との関係
ジニ係数は、前のページで解説したローレンツ曲線から計算されます。ローレンツ曲線が格差を「図(グラフ)」で表すのに対し、ジニ係数はそれを「数字」で表したものです。
計算の仕組み
ジニ係数 \(\text{G}\) は、ローレンツ曲線と完全平等線に囲まれた面積の比率で定義されます。

$$G = \frac{A}{A + B}$$
- \(\text{A}\) (三日月型の面積): 完全平等線とローレンツ曲線の間の面積。この面積こそが「格差」の大きさを示しています。
- \(\text{A + B}\) (三角形の面積): 完全平等線の下側の三角形の面積。この面積は常に \(0.5(横軸1 \times 縦軸1 \times 1/2)\)で一定です。
つまり、ローレンツ曲線が右下に大きくたるんで面積 \(\text{A}\) が広がるほど、ジニ係数 \(\text{G}\) は1に近づき、格差が大きいと判断されます。
3. 🔍 ジニ係数の一般的な目安
ジニ係数は、その数字が何を意味するのかを判断するための目安(ベンチマーク)があります。
国際的に、所得格差を示すジニ係数においては、0.4を超えると「危険水域」あるいは「格差が大きい」と見なされることが一般的です。
ただし、ジニ係数は計測方法や対象(所得、資産、消費など)によって値が大きく異なるため、あくまで参考値として捉える必要があります。
4. ジニ係数の計算方法
個々のデータ(離散データ)からジニ係数を計算するには、
$$G = \frac{A}{A + B}$$を用いて計算します。
実際には、ローレンツ曲線の下側の面積 \(\text{B}\) を求めるための台形公式を用いた近似計算が最も一般的です。
$$G = 1 – 2 \times B$$
💡 \( G = 1 – 2 \times B の変換 \)
\( G = \frac{A}{A + B} \) という定義式は、以下の簡単な代数操作により、「ローレンツ曲線の下側の面積 \(\text{B}\)」だけを使った計算式に変換できます。
ステップ 1: \(\text{A}\) を \(\text{B}\) で表す
三角形全体の面積は \(A + B = 0.5\) なので、不平等な面積 \(\text{A}\) は次のように表せます。
$$\text{面積 } A = 0.5 – \text{面積 } B$$
ステップ 2: ジニ係数の式に代入する
この関係を、ジニ係数の定義 $$G = \frac{A}{A+B}$$
に \(A + B = 0.5\) を代入します。 $$G = \frac{A}{0.5}$$
次に\(\text{面積 } A = 0.5 – \text{面積 } B\)を代入します
$$G = \frac{0.5 – B}{0.5}$$
分数を分けて計算すると、
$$G = \frac{0.5}{0.5} – \frac{B}{0.5}$$
ジニ係数は、「1」から、「ローレンツ曲線の下側の面積 B を2倍したもの」を引くことで求められます。
$$\mathbf{G = 1 – 2B}$$
離散データにおけるB面積の計算式
ジニ係数 \(\text{G}\) は、以下の台形公式の総和を用いてローレンツ曲線の下側の面積 \(\text{B }\) を計算し、そこから導かれます。
$$B = \sum_{i=1}^{n} \frac{1}{2} (Y_i + Y_{i-1}) (X_i – X_{i-1})$$
- \(n\): 総数
- \(X_i\): Xの累積比率(横軸)
- \(Y_i\): Yの累積比率(縦軸)
ローレンツ曲線

ローレンツ曲線の下側のイメージ

ローレンツ曲線の下側の面積を求めるには、上記の図のように、各エリアが台形になっている点を利用して計算します
5. ⚾ 実践:プロ野球データから見る計算例
実際のデータでジニ係数を計算してみたいと思います。以下は2025年の読売ジャイアンツの選手別の打点の一覧です。※実際には1打点もあげていない選手も多数いますが、今回は1打点をあげている選手のみを対象として計算してみたいと思います。
もしも全選手が均等に打点をあげているのであればジニ係数は0に近づき、特定の先週に集中しているのであれば1に近づきます。
| 選手 | 打点 |
|---|---|
| キャベッジ | 51 |
| 岡本 和真 | 49 |
| 泉口 友汰 | 39 |
| 岸田 行倫 | 39 |
| リチャード | 39 |
| 吉川 尚輝 | 32 |
| 中山 礼都 | 32 |
| 丸 佳浩 | 26 |
| 坂本 勇人 | 22 |
| 選手 | 打点 |
|---|---|
| 増田 陸 | 21 |
| 甲斐 拓也 | 20 |
| 若林 楽人 | 16 |
| 佐々木 俊輔 | 10 |
| 大城 卓三 | 10 |
| ヘルナンデス | 8 |
| 浅野 翔吾 | 8 |
| オコエ 瑠偉 | 5 |
| 門脇 誠 | 4 |
| 選手 | 打点 |
|---|---|
| 浦田 俊輔 | 4 |
| 山﨑 伊織 | 3 |
| 赤星 優志 | 2 |
| 岡田 悠希 | 2 |
| 山瀬 慎之助 | 2 |
| 荒巻 悠 | 1 |
| 井上 温大 | 1 |
| 小林 誠司 | 1 |
| 石川 達也 | 1 |
計算結果
このデータに基づき、打点の少ない選手から順に累積比率を計算し、面積 \(\text{B}\) を求めると以下のようになります。
- ローレンツ曲線の下側の面積 \(\text{B}\)を計算:$$B \approx 0.23835$$
- ジニ係数 \(\text{G}\) を算出:$$G = 1 – 2 \times 0.23835 \approx 0.5233$$
この \(\text{G} = 0.523\) という値は、一般的な経済指標の「格差大」とされる 0.4 を大きく超えており、チーム打点が少数の主力選手に大きく偏っている(依存度が高い)ことを、客観的な数値で示しています。

面積 \(\text{B}\)の内訳
| 選手名 | 台形面積 |
|---|---|
| 小林 誠司 | 0.00004 |
| 井上 温大 | 0.00012 |
| 石川 達也 | 0.00021 |
| 荒巻 悠 | 0.00029 |
| 山瀬 慎之助 | 0.00041 |
| 赤星 優志 | 0.00058 |
| 岡田 悠希 | 0.00074 |
| 山﨑 伊織 | 0.00095 |
| 門脇 誠 | 0.00124 |
| 浦田 俊輔 | 0.00157 |
| オコエ 瑠偉 | 0.00194 |
| 浅野 翔吾 | 0.00248 |
| ヘルナンデス | 0.00314 |
| 大城 卓三 | 0.00389 |
| 佐々木 俊輔 | 0.00471 |
| 若林 楽人 | 0.00579 |
| 甲斐 拓也 | 0.00728 |
| 増田 陸 | 0.00897 |
| 坂本 勇人 | 0.01075 |
| 丸 佳浩 | 0.01273 |
| 吉川 尚輝 | 0.01513 |
| 中山 礼都 | 0.01777 |
| 泉口 友汰 | 0.02071 |
| 岸田 行倫 | 0.02393 |
| リチャード | 0.02716 |
| 岡本 和真 | 0.03080 |
| キャベッジ | 0.03493 |
R言語でジニ係数を計算する
R言語でジニ係数を計算するプログラムです
# データの準備
players_data <- data.frame(
選手名 = c("キャベッジ", "岡本 和真", "泉口 友汰", "岸田 行倫", "リチャード",
"吉川 尚輝", "中山 礼都", "丸 佳浩", "坂本 勇人", "増田 陸",
"甲斐 拓也", "若林 楽人", "大城 卓三", "佐々木 俊輔", "浅野 翔吾",
"ヘルナンデス", "オコエ 瑠偉", "門脇 誠", "浦田 俊輔", "山﨑 伊織",
"山瀬 慎之助", "赤星 優志", "岡田 悠希", "小林 誠司", "井上 温大",
"石川 達也", "荒巻 悠"),
打点 = c(51, 49, 39, 39, 39, 32, 32, 26, 22, 21, 20, 16, 10, 10, 8, 8, 5, 4, 4, 3, 2, 2, 2, 1, 1, 1, 1)
)
# 打点で降順にソート
players_data <- players_data[order(players_data$打点), ]
# 累積打点の計算
players_data$打点累計 <- cumsum(players_data$打点)
# 総打点と総選手数
total_rbi <- sum(players_data$打点)
total_players <- nrow(players_data)
# ローレンツ曲線に必要な累積比率の計算
x<-(1:total_players) / total_players
y<-players_data$打点累計 / total_rbi
# 曲線下の面積(Area B)を計算
# 台形の面積 = (上底 + 下底) * 高さ / 2
# ここでは 幅(diff(x)) * 平均の高さ((y[i] + y[i+1]) / 2) を足し合わせます
area_under_curve <- sum(diff(x) * (head(y, -1) + tail(y, -1)) / 2)
# ジニ係数 = 1 - (2 * 曲線下の面積)
gini_index <- 1 - (2 * area_under_curve)
# 計算結果をコンソールに表示
print(paste("ジニ係数:", round(gini_index, 4)))