今回は日本人の年収ランキングを求めてみました
解説動画はこちら
参考 : 日本の人口 1.245億 (2023年)
年収ランキングを求める
今回は本当に正しい値を求める事は難しいので
ザックリと近似値を求めていきます。
日本人の年収は
対数正規分布
というものに近似しています。
この分布を用いて
ざっくりと計算をしていきます。
自分の年収を入れて
どれくらいのランクになるか
遊んでみてくださいね
今回はこれまでです
それでは
解説動画はこちら
問題
年収500万円の人は、日本の年収ランキングで
何位くらいになるでしょうか?
何位くらいになるでしょうか?
参考 : 日本の人口 1.245億 (2023年)
年収ランキングを求める
今回は本当に正しい値を求める事は難しいので
ザックリと近似値を求めていきます。
日本人の年収は
対数正規分布
というものに近似しています。
この分布を用いて
ざっくりと計算をしていきます。
今回は日本人の
人口が12450万人
人口が12450万人
平均年収 450万円
年収中央値を 350万円
で設定して行います。
で設定して行います。
年収分布と上位何%を計算するコード
対数正規分布と
おおよその順位を計算するコードです
Google Colabなどに貼り付けて
incomeのスライドを変えてみてください。

年収3000万円以上の人は
0.25%くらいしかいないっぽいです
(約30万人)
おおよその順位を計算するコードです
Google Colabなどに貼り付けて
incomeのスライドを変えてみてください。
import numpy as np
import matplotlib.pyplot as plt
import math
import ipywidgets as widgets
from IPython.display import display
%matplotlib inline
# 対数正規分布のパラメータ設定
median_income = 350 # 中央値(単位: 万円)
mean_income = 450 # 平均値(単位: 万円)
sigma = math.sqrt(2 * math.log(mean_income / median_income)) # 標準偏差を計算
mu = np.log(median_income) # 対数正規分布の μ を計算
# x軸の範囲(年収100万円 ~ 3000万円)
x = np.linspace(100, 3000, 1000)
# パーセンタイルランクを計算する関数
def calc_percentile_rank(income):
return 1 - 0.5 * (1 + np.sign(income - median_income) * np.sqrt(1 - np.exp(-((np.log(income) - mu) ** 2) / (2 * sigma ** 2))))
# プロットを更新する関数
def update_plot(income):
# 確率密度関数 (PDF) を計算
pdf = (1 / (x * sigma * np.sqrt(2 * np.pi))) * np.exp(-((np.log(x) - mu) ** 2) / (2 * sigma ** 2))
percentile_rank = calc_percentile_rank(income) # ランク計算
total_population = 124_500_000 # 日本の人口
rank = (percentile_rank) * total_population
plt.clf()
# 確率密度関数をプロット
plt.figure(figsize=(12, 4))
plt.plot(x, pdf, label="Log-normal Distribution", color="blue")
plt.axvline(income, color="red", linestyle="--", label=f"Income = {income}") # incomeの位置に線を引く
plt.axvline(median_income, color='orange', linestyle='--', label=f"Median: {median_income}")
plt.axvline(mean_income, color='green', linestyle='--', label=f"Mean: {mean_income}")
plt.fill_between(x, pdf, where=(x >= income), color="lightblue", alpha=0.5) # income以上の範囲を薄い青で塗りつぶす
plt.title(f"nensyu {income} : Top {percentile_rank*100:.4f}% , Rank {rank:.0f}", fontsize=14)
plt.xlabel("Income", fontsize=12)
plt.ylabel("Density", fontsize=12)
plt.legend()
plt.grid(alpha=0.5)
plt.show()
# スライダーを作成
income_slider = widgets.IntSlider(value=500, min=100, max=3000, step=1, description='Income:')
interactive_plot = widgets.interactive(update_plot, income=income_slider)
display(interactive_plot)

まとめ
日本人の人口が12450万人
平均年収450万円
年収中央値350の設定では
平均年収450万円
年収中央値350の設定では
年収500万円くらいの人の年収は
約上位32.76% : 4078万位くらいになる
約上位32.76% : 4078万位くらいになる
年収3000万円以上の人は
0.25%くらいしかいないっぽいです
(約30万人)
自分の年収を入れて
どれくらいのランクになるか
遊んでみてくださいね
今回はこれまでです
それでは
