今回は日本人の年収ランキングを求めてみました
解説動画はこちら
参考 : 日本の人口 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万人)
自分の年収を入れて
どれくらいのランクになるか
遊んでみてくださいね
今回はこれまでです
それでは