この教材は原論文と同じデータを読み込み、同じ手順で計算し直しています。画面に出る数値と図は、あなたのブラウザがその場で計算した結果です。
| 原論文が使ったデータ | SSDSE・国勢調査・e-stat・統計ダッシュボード・RESAS 分析単位:都道府県 中核手法:因果連鎖分析・ランダムフォレスト回帰・SHAP・固定効果変換 |
|---|---|
| この教材が使うデータ |
|
| 原論文(PDF) | 若年女性の社会増減についての要因分析 統計数理賞/三輪 俊太郎(滋賀大学大学院データサイエンス研究科) |
▶ ここに書いてある分析は、ページ下部の「🐍 ブラウザで動かす」でそのまま実行できます(インストール不要)。動かしているのは code/2021_U3_suri.py(295 行)そのものです。
このページの女性の社会増減率ランキング(図3)と婚姻率との相関(図4)は、以下の手順で自分で再現できます。コードの編集は不要です。(SHAP重要度ランキング=図1、業種別増減率=図2は、業種別就業者数などSSDSE-Bに無いデータを使うため、原論文の報告値を可視化します。)
data/raw/ フォルダに入れます。html/figures/ に自動保存されます。
人口減少は平成末期の地方制度のキーワードである。人口減少には、死亡数と出生数の差による自然増減と、地域間の移動に伴う社会増減の2つの側面がある。東京圏への年齢階層別の転入超過数を見ると、15〜29歳の若年者が大部分を占めている。
先行研究(林)は、2000年以後は都市部の若年層で男性より女性の比率が高くなっており、女性は「都市部に集まり、都市部から出て行かない」傾向にあると指摘した。女性は出産を担うため、社会増減と自然増減の両面に関わる。地方は出生率が高くても、社会移動で若年女性が少なければ人口の持続可能性は乏しい——ここに若年女性のみを対象に社会移動要因を探る意義がある。
大学生・一般の部 国勢調査・SSDSE・e-Stat・RESAS ランダムフォレスト回帰 SHAP値 固定効果変換・特化係数・HHI・GGI
要因を網羅的に検討するため、著者は因果連鎖分析を用いた。若年女性の社会移動につながる直接的な行動として「進学」「就職」「Uターン」「Iターン」を想定し、それぞれに関わる要因を可能な限り挙げて変数選択の方針とした。代理変数も積極的に用いており、例えば「交通手段の利便性」の代わりにガソリン消費量を代理変数とした。
| 項目 | 内容 |
|---|---|
| 目的変数 | 国勢調査における各都道府県の30〜34歳女性人口 |
| 対象時点 | 2005年・2010年・2015年(国勢調査の3時点) |
| 単位 | 47都道府県(市町村ではなく都道府県。公的統計の範囲が広いため) |
| 変数数 | 145変数(人口・世帯/福祉・社会保障/自然環境/生活時間/教育/経済/ジェンダー等) |
| データ形状 | 47都道府県 × 3時点 × 145変数のパネルデータ |
| 出典 | 提供されたSSDSEのほか、e-Stat・統計ダッシュボード・RESAS |
3時点のパネルをそのままRFに入れると、都道府県や時点による異質性が混ざる。そこで固定効果変換を行い、各変数から各時点における全都道府県の平均値を控除した(時点による異質性をキャンセル)。この変換は関数形として線形を仮定し、ランダム効果は無いと前提している点に留意が必要、と著者は述べている。
ランダムフォレストは決定木を元とした機械学習手法で、サンプルサイズより説明変数が多くても安定した結果が出せること、多重共線性や変数の分布形状を問わないことが特徴。scikit-learn の RandomForestRegressor を用い、141件(47都道府県×3)を訓練64%・バリデーション16%・テスト20%に分割。optuna で kfold法3分割の交差検証により RMSE を最小化するようパラメータチューニングした。
SHAPは、予測結果を各説明変数の貢献度に分解する指標。図3(重要度の棒グラフ)で「どの変数が効いたか」、図4(サマリプロット)で「値が高いと予測値が上がるか下がるか(相関の向き)」を読み取る。
原論文の図3・図4で示されたSHAP重要度の上位変数と、その相関の向きを1枚に整理する。この図は再計算ではなく、原論文の報告値(順位と向き)をそのまま可視化したものである(業種別就業者数・特化係数はSSDSE-Bに無いため)。
=== [2] 報告値:SHAP 重要度ランキング(原論文 図3・図4)=== 順位 相関の向き 変数 1 正 特化係数 就業者数(女) L学術研究・専門・技術サービス業 2 正 婚姻件数 3 負 就業者数(女) Q複合サービス事業 4 負 就業者数 家族従事者 5 正 特化係数 就業者数(女) H運輸業・郵便業 6 正 特化係数 就業者数 G情報通信業 7 正 特化係数 就業者数(女) K不動産業・物品賃貸業 8 正 就業者数(女) K不動産業・物品賃貸業 9 正 就業者数 G情報通信業 10 — 通勤通学の平均時間 女性有業者 11 負 就業者数(女) A農業・林業 12 正 就業者数(女) H運輸業・郵便業 報告値:テストデータの決定係数 R² = 0.774(RMSE = 1.44804, 図2) 報告値:医療・福祉就業者数と若年女性人口の相関(原数値・2015年)= −0.49 向きは原論文本文で明示された業種のみ(正/負)。「—」は本文で向きの明示なし。 → html/figures/2021_U3_fig1_radar.png 保存完了
SHAPで正の相関が出た産業が、日本全体でどう伸びたのかを確認するため、著者は国民経済計算上の2005年→2015年の増減率を表3にまとめた。この図は原論文 表3 の報告値を可視化したものである(国民経済計算はSSDSE-Bに無い)。
=== [3] 報告値:表3 国民経済計算 2005→2015 増減率 === 業種 付加価値額% 就業者数% 専門・科学技術・業務支援サービス業 28.3 23.3 運輸・郵便業 5.1 1.8 情報通信業 0.8 5.4 不動産業 9.8 12.2 (参考)保健衛生・社会事業 30.9 40.7 国内総生産 1.0 0.0 原論文の記述:全体はほぼ横ばいだが、専門・科学技術サービス業と保健衛生・社会事業で伸びが大きい。
以下の相関の向き・数値はすべて原論文の報告値である。
| 相関の向き | 業種(就業者比率・特化係数) | 著者の解釈 |
|---|---|---|
| 正(+) | 学術研究・専門・技術サービス業/運輸業・郵便業/情報通信業/不動産業・物品賃貸業 | 都市部に偏って集積するホワイトカラー系。若年女性が就業機会を見出している |
| 負(−) | 複合サービス事業(郵便局・農協)/家族従事者/農業・林業 | 全国に満遍なく広がり都市集積が起きにくい |
婚姻件数は若年女性人口と正の相関(貢献度2位)。地方における婚姻数増加の取り組みは有効と考えられる、と著者は述べる。一方、女性の家族従業者は負の相関で、外に出て働く生活スタイルが多い場所に若年女性が集まっていることが窺えた。教育・福祉・ジェンダー(GGI)については、SHAP上の貢献度は認められなかった。
国勢調査は5年前の居住地を調査しており、業種・年齢5歳階級ごとの転入・転出数が得られる。表4は2010年国勢調査における東京都への女性の転入超過数(20〜34歳の合計)の主な業種で、原論文 表4 の報告値である(再計算ではない)。
| 業種 | 東京都への女性転入超過数(20〜34歳合計) | 向き |
|---|---|---|
| G 情報通信業 | +8,368 | 最大の転入超 |
| M 宿泊業・飲食サービス業 | +6,959 | 転入超 |
| I 卸売業・小売業 | +6,782 | 転入超 |
| P 医療・福祉 | +4,687 | 20代は転入超・30〜34歳は転出 |
| J 金融業・保険業 | +2,775 | 転入超 |
| L 学術研究・専門・技術サービス業 | +2,633 | 転入超 |
| N 生活関連サービス業・娯楽業 | +2,199 | 転入超 |
| K 不動産業・物品賃貸業 | +1,002 | 転入超 |
| A 農業・林業 | −497 | 全年齢階級で東京都から転出超過 |
情報通信業の転入超過が最大。著者は「情報通信業などで完全リモートワークが可能な企業と地方が連携し就業に繋げる」方向性を提案。また農業は全年齢階級で東京都から転出超過であり、「女性が農業で働きやすい環境を整える」施策も考えられるとした。
原論文の目的変数(30〜34歳女性人口)はSSDSE-Bに無い。しかしSSDSE-Bには女性の転入者数・転出者数があるので、原論文の核心概念である「社会増減」を女性全体で実データから再現できる。まず読み込む。
header=1 で読み込み、都道府県行(地域コード R+5桁、全国 R00000 を除外)の2023年を残す。転入者数(女)−転出者数(女)=女性の社会増減を計算し、女性人口千人あたりに規格化する。婚姻率も同様に用意する。99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 | df_raw = pd.read_csv(DATA_B, encoding='cp932', header=1) # 都道府県行のみ(地域コード R+5桁、全国 R00000 を除外) mask = (df_raw['地域コード'].astype(str).str.match(r'^R\d{5}$', na=False) & (df_raw['地域コード'] != 'R00000')) df_all = df_raw[mask].copy() # 最新の 2023 年(女性の転入・転出・婚姻件数が揃う年) d = df_all[df_all['年度'] == 2023].copy().reset_index(drop=True) num_cols = ['総人口', '総人口(女)', '転入者数(日本人移動者)(女)', '転出者数(日本人移動者)(女)', '婚姻件数'] for c in num_cols: d[c] = pd.to_numeric(d[c], errors='coerce') # 女性の社会増減 = 転入(女) − 転出(女)。人口比で規格化して都道府県間で比較可能に d['女性純移動'] = d['転入者数(日本人移動者)(女)'] - d['転出者数(日本人移動者)(女)'] d['女性純移動率'] = d['女性純移動'] / d['総人口(女)'] * 1000 # 女性人口千人あたり d['婚姻率'] = d['婚姻件数'] / d['総人口'] * 1000 # 人口千人あたり d['地域'] = d['都道府県'].map(REGION_MAP) d = d.dropna(subset=['女性純移動率', '婚姻率']).reset_index(drop=True) |
=== [1] SSDSE-B 読み込み(女性の社会増減を用意)=== 対象:47都道府県(2023年) 女性純移動率 平均 -1.82 / 最大 +4.55 / 最小 -5.85(女性人口千人あたり) 女性が社会増(転入超)の都道府県:6 / 47 → 残り41県は社会減(転出超) 原論文の目的変数は国勢調査の 30〜34 歳女性人口。SSDSE-B には年齢×性別の 内訳が無いため、ここでは「女性全体の社会増減(転入−転出)」で核心の構図を確認する。
226 227 228 229 230 231 | ds = d.sort_values('女性純移動率', ascending=False).reset_index(drop=True) print('▼ 転入超(社会増)上位5') print(ds[['都道府県', '女性純移動率']].head(5).to_string(index=False)) print('▼ 転出超(社会減)上位5') print(ds[['都道府県', '女性純移動率']].tail(5).iloc[::-1].to_string(index=False)) print('原論文の背景「東京圏への若年女性の一極集中」が、女性全体の社会増減でも確認できる。') |
=== [4] 実再現:女性の社会増減率ランキング(2023, SSDSE-B)=== ▼ 転入超(社会増)上位5 都道府県 女性純移動率 東京都 4.546152 千葉県 2.695693 神奈川県 2.682004 埼玉県 2.645895 大阪府 1.748031 ▼ 転出超(社会減)上位5 都道府県 女性純移動率 長崎県 -5.849254 青森県 -4.837061 岩手県 -4.589701 山形県 -4.418561 鳥取県 -3.957143 原論文の背景「東京圏への若年女性の一極集中」が、女性全体の社会増減でも確認できる。
原論文で産業以外の唯一の上位要因だった婚姻件数。婚姻件数はSSDSE-Bに収録されているので、実データで確かめられる。婚姻率と女性の社会増減率の相関を計算する。
254 255 256 257 258 259 | xr = d['婚姻率'].values yr = d['女性純移動率'].values r_val, p_val = stats.pearsonr(xr, yr) slope, intercept, _, _, _ = stats.linregress(xr, yr) print(f'相関係数 r = {r_val:.3f}(p = {p_val:.4f}, N = {len(d)})') print('原論文は、婚姻件数が若年女性人口への貢献度2位で「正の相関」と報告している。') |
=== [5] 実再現:婚姻率 × 女性純移動率の相関(2023)=== 相関係数 r = 0.791(p = 0.0000, N = 47) 原論文は、婚姻件数が若年女性人口への貢献度2位で「正の相関」と報告している。 SSDSE-B(2023) の実データでも、婚姻率と女性の社会増減率は強い正の相関(r=0.79)を示し、 原論文の「婚姻数と若年女性人口は正の相関」という核心が実データで再確認できた。 ※ ただし原論文は 30〜34 歳女性人口を目的変数とした RF+SHAP による貢献度であり、 これは横断(1時点)の単純相関。手法・目的変数が異なる近似的な確認である点に注意。
特定産業の集積が若年女性人口と相関しているが、専門・科学技術・業務支援サービス業などは都市部に集積するため、地方が産業面で都市部と対抗することは困難だと著者は述べる。より小さな面積で産業集積を図るか、よりニッチな部分で若年女性を惹きつけるしかないのではないか、と提言する。
表4で転入超過が最大だった情報通信業に着目し、「完全リモートワークが可能な企業と地方が連携して就業に繋げる」方向性を提案。また、農業は全年齢階級で東京都から転出超過であることから、「女性が農業で働きやすい環境を整える」施策も挙げている。産業面以外では、婚姻数増加に向けた取り組みが有効と考えられる。
本研究は、若年女性の社会移動に関わる要因を145変数・3時点で網羅的に検討し、固定効果変換+ランダムフォレスト+SHAPで優先すべき要因を抽出した点に価値がある。特定産業の集積(専門・技術サービス業など)と婚姻件数が若年女性人口と正の相関を持つことを示し(予測精度 R²=0.774)、地方の持続可能性に向けた施策(リモートワーク連携・農業環境整備・婚姻支援)を提言した。
このページの女性の社会増減率ランキング(図3)と婚姻率との相関(図4)は、以下から再現できます。
🐍 再現コード(.py) 📊 SSDSE-B-2026.csv
※ SHAP重要度ランキング(図1)と業種別増減率(図2)は、業種別就業者数・特化係数・国民経済計算などSSDSE-B外のデータに基づくため、原論文の報告値を可視化したものです。図3・図4は女性全体の社会増減での近似的な確認で、原論文の目的変数(30〜34歳女性人口)とは異なります。
この研究を読むとき・まねするときに陥りやすい誤解を整理する。
クリックすると各用語の詳しい解説ページに移動できます。
この研究で使われている手法を、手を動かす順に説明する。
この研究の「関連は見つけたが因果は不明」という結論は、次の研究の出発点になる。
再現コードを少し変えるだけで試せる課題を、易しい順に用意した。
d = df_all[df_all['年度'] == 2023] を 2022 や 2015 に変えて、女性の社会増減率ランキングが年で変わるか確かめよう。sklearn.ensemble.RandomForestRegressor を回し、feature_importances_ で重要変数を出そう。shap ライブラリを入れ、難易度4のRFモデルに shap.TreeExplainer を適用して、婚姻率・出生率などの貢献度と向きを可視化しよう。原論文の図3・図4を自分のデータで再現する体験になる。pip install shap。まず数変数の小さなモデルから始めると読み解きやすい。「多数の要因から重要なものを機械学習で探索し、政策に活かす」発想は、現場でも広く使われている。
この研究を読んで浮かびやすい疑問に答える。
この論文を理解できたか、クリックで確認しましょう。間違えても解説が出ます。
このページの分析は、この画面の中でそのまま実行できます。
Python をインストールする必要も、CSV をダウンロードする必要もありません。
下のセルの 「▶ ブラウザで実行」 を上から順に押すか、
「▶ 最初から全部実行」 で一気に流してください。
表示されるのは、本文の図表とまったく同じ計算の結果です
(動かしているのは再現スクリプト code/2021_U3_suri.py そのもの)。
コードは書き換えられます。「✏️ 書き換える」で数字や変数を変えて ▶ を押すと、 結果がどう変わるかをその場で確かめられます(元に戻すボタンつき)。 ページを開いた時点で裏で実行環境の準備が始まっているので、待ち時間はほとんどありません。 初回だけ実行環境の取得にインターネット接続が必要です。