大学進学率

大学進学率は都道府県・性別によってかなり違うという話題を見かけたが、描かれていた散布図のアスペクト比(縦横比)が1ではなく、見にくかったので、描きなおすことにした。

まずデータは最新(2023年)の学校基本調査。学校基本調査 / 令和5年度 初等中等教育機関・専修学校・各種学校 卒業後の状況調査 卒業後の状況調査票(高等学校 全日制・定時制)(Excelファイル名 sy0281.xlsx)がそれっぽい。

import numpy as np
import matplotlib.pyplot as plt

都道府県 = ["北海道", "青森", "岩手", "宮城", "秋田", "山形", "福島", "茨城",
            "栃木", "群馬", "埼玉", "千葉", "東京", "神奈川", "新潟", "富山",
            "石川", "福井", "山梨", "長野", "岐阜", "静岡", "愛知", "三重",
            "滋賀", "京都", "大阪", "兵庫", "奈良", "和歌山", "鳥取", "島根",
            "岡山", "広島", "山口", "徳島", "香川", "愛媛", "高知", "福岡",
            "佐賀", "長崎", "熊本", "大分", "宮崎", "鹿児島", "沖縄"]

男計 = np.array([18311, 5013, 4872, 9034, 3584, 4515, 7418, 11993,
                 8161, 8041, 27147, 23403, 47684, 31651, 8465, 4214, 4737, 3388,
                 3862, 8641, 8177, 15307, 29857, 7098, 6003, 10595, 33229, 20659,
                 5294, 3757, 2275, 2824, 8202, 10896, 5081, 2769, 4039, 5115,
                 2763, 19703, 3697, 5535, 7261, 4716, 4702, 6708, 6832])

男大学等 = np.array([9582, 2562, 2177, 4987, 1615, 2092, 3523, 6745,
                     4567, 4423, 17716, 14705, 33743, 21573, 4505, 2226, 2729, 2081,
                     2379, 4393, 4887, 8889, 18454, 3840, 3691, 7625, 22523, 13535,
                     3311, 2089, 1116, 1356, 4453, 6833, 2157, 1548, 2259, 2712, 1433,
                     11025, 1640, 2486, 3279, 2300, 2135, 2765, 2961])


女計 = np.array([18064, 4791, 4732, 8680, 3407, 4252, 7076, 11294,
                 7642, 7500, 25299, 22417, 49128, 30998, 8008, 4094, 4639, 3279,
                 3406, 8116, 7947, 14317, 29860, 7010, 5732, 10764, 33186, 20749,
                 5047, 3532, 2315, 2688, 7620, 10738, 4899, 2733, 3949, 4875,
                 2649, 19492, 3443, 5398, 6746, 4427, 4427, 6620, 6796])

女大学等 = np.array([9167, 2681, 2392, 4798, 1709, 2190, 3742, 6297,
                     4418, 4455, 16169, 13937, 36720, 21076, 4228, 2548, 2920, 2098,
                     2070, 4702, 4794, 8085, 19058, 3884, 3540, 7973, 22363, 14232,
                     3361, 2069, 1273, 1400, 4567, 7149, 2527, 1731, 2402, 2911, 1598,
                     11892, 1778, 2811, 3586, 2472, 2299, 3422, 3346])

男進学率 = 男大学等 / 男計
女進学率 = 女大学等 / 女計

plt.scatter(男進学率, 女進学率)
plt.axis("scaled")
plt.axis([0.4, 0.76, 0.4, 0.76])
plt.xlabel("大学等進学率 男")
plt.ylabel("大学等進学率 女")
plt.plot([0.4, 0.76], [0.4, 0.76])
for x, y, s in zip(男進学率, 女進学率, 都道府県):
    plt.text(x, y, s)
大学等進学率

女のほうが進学率が高くなってしまった。これは「大学等」に短大が含まれるためのようだ。

改めて探し直し。e-Statで「学校基本調査」で検索し、令和5年度→初等中等教育機関・専修学校・各種学校→卒業後の状況調査→卒業後の状況調査票(高等学校 全日制・定時制)の285番「都道府県別大学・短期大学等への進学者数」がそれっぽい。パーマリンクは学校基本調査 / 令和5年度 初等中等教育機関・専修学校・各種学校 卒業後の状況調査 卒業後の状況調査票(高等学校 全日制・定時制)(Excelファイル名 sy0285.xlsx)。

こちらの計(男・女)は進学者の計のようなので、計はさきほどのものを使い、「大学(学部)」(男・女)の数を拾い出す:

男大学 = np.array([9410, 2430, 2053, 4834, 1552, 2011, 3441, 6689,
                   4514, 4347, 17590, 14540, 33572, 21394, 4379, 2154,
                   2680, 2060, 2309, 4226, 4778, 8741, 18276, 3704,
                   3625, 7494, 22260, 13389, 3234, 2065, 1025, 1308,
                   4403, 6791, 2094, 1504, 2215, 2635, 1393, 10699,
                   1612, 2436, 3200, 2152, 2067, 2630, 2873])

女大学 = np.array([8022, 2166, 2010, 4110, 1353, 1769, 2990, 5759,
                   3875, 3855, 14565, 12737, 35408, 19651, 3654, 2092,
                   2490, 1783, 1777, 3871, 4101, 7241, 17475, 3295,
                   3104, 7374, 20037, 13018, 2937, 1750, 1011, 1173,
                   3909, 6503, 2046, 1538, 2015, 2470, 1337, 10043,
                   1453, 2287, 3038, 1709, 1747, 2196, 2966])

男進学率 = 男大学 / 男計
女進学率 = 女大学 / 女計

plt.plot(男進学率, 女進学率, "o")
plt.axis("scaled")
plt.axis([0.32, 0.73, 0.32, 0.73])
plt.xlabel("大学進学率 男")
plt.ylabel("大学進学率 女")
plt.plot([0.32, 0.73], [0.32, 0.73], lw=1)
for x, y, s in zip(男進学率, 女進学率, 都道府県):
    plt.text(x, y, s)
大学進学率

関連する散布図はいろいろ描けそう。例えば接種率とコロナで使った可住地人口密度(対数目盛):

可住地人口密度 = [234.7, 385.8, 330.4, 730.9, 301.5, 373.7, 437.7,
    719.4, 648.4, 852, 2843.7, 1761, 9792.9, 6252.6, 490.1, 566.5, 817.6,
    712.9, 849.8, 635.2, 898.6, 1325.4, 2527.1, 864.9, 1081.7, 2200.5,
    6619.7, 1964.1, 1554.6, 829.5, 617.2, 518.9, 851.8, 1213.3, 795.6,
    720.6, 950.7, 800.3, 600.2, 1848.3, 610.2, 792.2, 625.1, 630.9, 580,
    483.6, 1242.9]

for x, y, z, s in zip(可住地人口密度, 男進学率, 女進学率, 都道府県):
    plt.plot([x, x], [y, z], "k", lw=1)
    plt.text(x, y, s)
plt.plot(可住地人口密度, 男進学率, "o")  # ブルー
plt.plot(可住地人口密度, 女進学率, "o")  # オレンジ
plt.xscale("log")
plt.xlabel("可住地人口密度")
plt.ylabel("大学進学率")
人口密度と大学進学率