論文一覧に戻る 🕸 論文ネットワーク 🗺 用語ネットワーク 統計データ分析コンペ 教育用再現集
審査員奨励賞
2022年度 | 大学生・一般の部

地域格差から見る人口移動

⏱️ 推定読了時間: 約20分
2022年度 統計データ分析コンペティション | 野村 京加(名古屋市立大学経済学部 会計ファイナンス学科) | 住民基本台帳・県民経済計算・SSDSE-B ほか(本ページ実再現は SSDSE-B) | ロジットモデル(移住オッズ比の回帰分析)
🔬 オッズ比🔬 ロジスティック回帰🔬 ロジットモデル🔬 相関分析🏷 移住・人口移動🏷 格差・貧困🏷 経済・産業
🔬 手法タグ / 🏷 応用タグ(クリックで同タグの論文をネットワーク検索)
🔬 再現カルテ — 原論文と同じデータ・同じ手法で再現(一部を除く)

この教材は原論文と同じデータを読み込み、同じ手順で計算し直しています。画面に出る数値と図は、あなたのブラウザがその場で計算した結果です。
⚠ ただし一部は再現していません:都道府県ペアの移住オッズ比と県内総生産が SSDSE-B に無いため、 原論文 表2 の推定は再現していません。 係数は報告値をそのまま転記して可視化しています。

原論文が使ったデータSSDSE-B・住民基本台帳人口移動報告・県民経済計算・一般職業紹介状況・都道府県庁間の距離
分析単位:都道府県
中核手法:ロジットモデル
この教材が使うデータ
原論文(PDF)地域格差から見る人口移動
審査員奨励賞/野村 京加(名古屋市立大学経済学部)
✅ この教材でできること
  • 分析に使うデータは同梱済みで、ブラウザ上でそのまま読み込める
突合監査の結果、主要データと中核手法はいずれも原論文と一致しています。

▶ ここに書いてある分析は、ページ下部の「🐍 ブラウザで動かす」でそのまま実行できます(インストール不要)。動かしているのは code/2022_U5_11_shorei.py(224 行)そのものです。

📝 3行で分かる要約

目次

  1. 研究のテーマと目的
  2. 使用データと再現可能性の整理
  3. 分析の流れ:オッズ比 → 地域格差の差 → ロジット回帰
  4. 図1:推定結果(表2)の可視化(報告値)
  5. 図2:都道府県別 純移動率ランキング(実再現)
  6. 図3:高校卒業後進学率ランキング(実再現)
  7. 図4:大学数と純移動率の関係(実再現)
  8. 結果の解釈と提言
  9. まとめと今後の課題
  10. データ・コードのDL
  11. ⚠️ よくある誤解
  12. 📖 用語集
  13. 📐 手法ガイド
  14. 🚀 発展の可能性
  15. 🎯 自分でやってみよう
  16. 🤔 Q&A
  17. 🐍 ブラウザで動かす

🎯 この記事を読むと何ができるようになるか

📥 データの準備(再現コードを動かす前に)

このページで実再現できるのは図2〜図4(純移動率・進学率・大学数)です。コードの編集は不要です。(原論文の中心である県間移住のオッズ比と県内総生産は SSDSE-B に列が無いため、図1(表2の推定結果)は原論文の報告値を転記して可視化します。)

1
データをダウンロードする 独立行政法人統計センターの SSDSE(教育用標準データセット)配布ページから、以下をダウンロードします。
SSDSE-B-2026.csv ← SSDSE-B(都道府県別・基礎データ、社会・人口統計体系)📥 直接DL
⬇ SSDSEダウンロードページを開く
2
ファイルを所定のフォルダに配置する ダウンロードしたCSVを、プロジェクトの data/raw/ フォルダに入れます。
2026 統計・データ解析コンペ/ ├── code/ │ └── 2022_U5_11_shorei.py ← 実行するスクリプト └── data/ └── raw/ SSDSE-B-2026.csv ← ここに置く
3
スクリプトをそのまま実行する ターミナルでプロジェクトルートに移動し、以下を実行します。
python3 code/2022_U5_11_shorei.py
図は html/figures/ に自動保存されます。県間移住オッズ比・県内総生産など SSDSE-B 収録外の指標はスクリプト内に原論文の報告値を転記して可視化し、純移動率・進学率・大学数は SSDSE-B から実再現します。
研究のテーマと目的

日本では長年、東京一極集中という形で都市部にヒト・モノ・カネが集まる一方、地方ではそれらが流出し格差が広がっている。著者はこのうち特に「ヒト」に着目した。都市部への人口集中は地価高騰や交通渋滞を、地方には過疎化や産業衰退を招く。所得や労働生産性が低い地方から都市部に人が流出し、賃金・教育・労働生産性という地域格差がさらに広がる——この人口流出の要因を突き止めれば、対策が打てるはずだと考えた。

そこで著者は「県をまたぐ移住は、賃金・教育・労働機会などの地域格差で説明できる」という問いを立てた。地域格差を表すデータとして県内総生産・有効求人倍率・高校卒業後の進学率・大学数・専修学校数・短期大学数を、加えて移動のしやすさとして都道府県間距離を取り上げる。日本で移住の契機になりやすい「進学」「就職・転勤」に焦点を当てた分析である。

ln( Eij,t / Eii,t ) = α + β·reci,t + γ·( Xj,t − Xi,t ) + δ·Dij + yeart + prefecturei + prefecturej + u
Eij=i→jの移住者数/rec=進学率/X=各移住要因/D=都道府県間距離/year・prefecture=ダミー
研究の問い 地方から都市部への県をまたぐ移住は、何によって起きるのか。県内総生産・有効求人倍率・進学率・大学数・専修学校数・短期大学数という地域格差と、都道府県間距離のうち、本当に移住を左右しているのはどれか。
分析のキモ:移住を「オッズ比」に、格差を「差」に直して回帰する 著者は、都道府県 i から j へ移る確率を i に留まる確率で割ったオッズ比の対数を被説明変数にした(集計ロジットモデル)。説明変数の地域格差は移住先 j と移住元 i の差 (Xj−Xi) で表す。先行研究(落合2015・當麻2016)と同じ枠組みを、SSDSE が揃う 2007〜2017 年に適用したのが見どころ。

大学生・一般の部 住民基本台帳+県民経済計算+SSDSE-B ロジットモデル オッズ比の回帰 地域格差=移住先−移住元の差

使用データと再現可能性の整理

本研究は複数の出典を組み合わせている。被説明変数の県間移住者数は総務省「住民基本台帳人口移動報告」、県内総生産は内閣府「県民経済計算」、有効求人倍率は厚生労働省「一般職業紹介状況」、進学率・大学数・短期大学数・専修学校数は SSDSE-B、都道府県間距離は国土地理院から取っている。分析期間は SSDSE の掲載開始(2007年)と当時の最新公開(2017年)に合わせた 2007〜2017 年である。

主なデータと出典(原論文 2〜3節)

役割データ出典本ページでの扱い
被説明変数都道府県 i→j の移住者数(オッズ比の対数)総務省 住民基本台帳人口移動報告報告値の可視化
豊かさ県内総生産の対数の差内閣府 県民経済計算報告値の可視化
就業機会有効求人倍率の差厚生労働省 一般職業紹介状況報告値の可視化
教育(進学)移住前の高校卒業後進学率SSDSE-B(進学者数/卒業者数)実再現
教育(機関)大学数・短期大学数・専修学校数の差SSDSE-B大学数を実再現
移動コスト都道府県間距離国土地理院 都道府県庁間の距離報告値(表2)
人口移動転入者数・転出者数(純移動率)SSDSE-B(A5101/A5102/A1101)実再現
再現可能性の整理(このページの図の作り方)
  • 報告値の可視化(再計算ではない):原論文の中心である都道府県ペア i→j の移住オッズ比は住民基本台帳の県間移動マトリクスが必要で SSDSE-B に列が無く、県内総生産(県民経済計算)も SSDSE-B に列が無い。よって図1(表2 の推定結果)は原論文の報告値を符号・桁そのまま転記して可視化する。
  • 実再現できる部分:SSDSE-B に収録がある転入 A5101・転出 A5102・総人口 A1101から純移動率(図2)、高校卒業者数 E4601・進学者数 E4602から進学率(図3)、大学数 E6102と純移動率の関係(図4)を実データで再計算する。ただし SSDSE-B の収録年は 2012〜2023 年で原論文の 2007〜2017 年とは異なり、都道府県ペアではなく都道府県単位で近似している点を各図注に明記する。
  • 新しい数値の捏造はしない:報告値と再計算値はラベルで分離する。図4 の相関係数は本ページで計算した再計算値で、原論文の係数(0.0018618)とは別物である。GDP・県内総生産・高齢化率など SSDSE-B に無い列は分析に使わない。

分析の流れ:オッズ比 → 地域格差の差 → ロジット回帰

分析の流れ
移住者数 Eij
住民基本台帳
i→j の人数
オッズ比の対数
ln(Eij/Eii)
被説明変数
地域格差の差
Xj−Xi
県内総生産・大学数…
ロジット回帰
表2:各変数の
推定値・t値・p値
解釈・提言
進学の選択肢を
地方に増やす

① 移住をオッズ比に直す(3節・式2)

各年について都道府県 i から j への移動確率 pij を、i から i への(留まる)移動確率 pii で割る。人口 popi が約分され、結果は移住者数の比 Eij/Eii になる。その対数を被説明変数にする。

② 地域格差を「移住先−移住元の差」にする

県内総生産(対数)・有効求人倍率・大学数・短期大学数・専修学校数は、移住先 j と移住元 i の差 (Xj−Xi) にする。差が大きい(=移住先の方が豊か・学校が多い)ほど移住しやすいか、を見る。進学率だけは移住前 i の値を使う。

③ 距離とダミーを加えてロジット回帰(表2)

都道府県間距離、年ダミー、移住前・移住先の都道府県ダミーを加えてロジットモデルで推定。各変数の推定値・t値・p値を読む。サンプルは 47×46×11 = 23,782。

符号の予想を立ててから推定する 著者は推定の前に符号を予想した(県内総生産・進学率・学校数は正、距離は負、有効求人倍率は正)。結果、有効求人倍率だけが予想と逆の負になった。予想と実測のズレを、代理変数の適切さという観点から考察するのがこの研究の誠実な点である。
1
図1:推定結果(表2)の可視化(報告値)

まず原論文の中心的な結果である、ロジットモデルの推定結果(表2)を見る。被説明変数の県間移住オッズ比と県内総生産は SSDSE に無い変数のため、原論文 表2 の報告値を符号・桁そのまま転記して可視化する(再計算ではない)。

やってみよう原論文 表2 の推定結果(各変数の推定値・t値・p値)を転記する
  • ① このブロックの目的:ロジットモデルの推定値を、符号・桁そのままに書き出す。被説明変数は移住オッズ比の対数 ln(Eij/Eii)。県間移住マトリクスと県内総生産が SSDSE に無いため再計算ではなく報告値の転記。
  • ② 前後のつながり:「どの地域格差が移住を左右するのか」を一望する本研究の核心。ここで正に効いた変数(県内総生産・進学率・学校数)が、結果の解釈と提言(進学の選択肢を地方に)につながる。
▼ 実行結果(原論文の報告値)
=== [1] 原論文 表2 推定結果(報告値・再計算ではない)===
            変数       推定値     t値    p値
    県内総生産の対数の差  0.749159  63.09 0.000
      有効求人倍率の差 -0.210239  -9.15 0.000
高校卒業後の進学率(移住前)  0.028804  24.09 0.000
       短期大学数の差  0.003667   2.13 0.033
         大学数の差  0.001862   2.26 0.024
       専修学校数の差 -0.001627  -6.03 0.000
       都道府県間距離 -0.001580 -82.01 0.000
※ 被説明変数=移住オッズ比の対数 ln(E_ij/E_ii)。有意水準5%で全変数が有意。
Fig1 saved (report values)
  • ④ 実行結果の読み取り:県内総生産の対数の差 +0.749(t=63.09)が圧倒的に大きく、豊かな地域へ移住する傾向が最も強い。② 移住前の進学率 +0.029大学数の差 +0.0019短期大学数の差 +0.0037も正で、教育機関が多く進学志向の高い地域が移住を促す。③ 一方有効求人倍率の差は −0.210と予想(正)に反して負、専修学校数の差 −0.0016都道府県間距離 −0.0016も負。就業機会や専修学校では移住を説明できず、距離が遠いほど移住しにくい。すべて原論文の報告値である。
ロジットモデル推定結果(表2)の係数(報告値の可視化)
図1:移住オッズ比の決定要因 — 原論文 表2 の推定値。報告値の可視化(再計算ではない)。赤=正の効果、青=負の効果。県内総生産の対数の差(+0.749)が最大、有効求人倍率の差(−0.210)は予想に反して負。数値はすべて原論文の報告値。
📊 この図の読み方
0の縦線
右(正)=その格差が大きいほど(移住先の方が高いほど)移住しやすい、左(負)=移住しにくい。
いちばん長い赤棒
県内総生産の対数の差(+0.749)。豊かさの格差が移住を最も強く引き寄せる。進学率・大学数・短大数も正。
青い棒
有効求人倍率の差(−0.210)・専修学校数の差・都道府県間距離。就業機会では説明できず、距離が遠いほど移住しにくい。
2
図2:都道府県別 純移動率ランキング(実再現)

原論文の中心テーマ「人口移動の地域格差」を、SSDSE-B の実データで確かめる。ここは実再現で、転入・転出・総人口から都道府県ごとの純移動率を計算する。原論文の県間ペア・オッズ比ではなく都道府県単位の近似だが、東京一極集中という問題意識が実データで見える。

やってみよう純移動率を SSDSE-B から都道府県別に実再現する【実再現・図2】
  • ① このコードの目的:SSDSE-B-2026 を cp932・ラベル行 skiprows=[1] で読み込み、2023年(df[df["SSDSE-B-2026"]==2023])について A5101 転入A5102 転出A1101 総人口から純移動率(‰)=(転入−転出)/総人口×1000を計算する。進学率・大学数も同時に作る。
  • ② 前後のつながり:原論文が扱う「地方から都市部への人口流出」を、都道府県単位の純移動として可視化する出発点。ここで作った変数が図2〜図4のすべてに使われる。
📝 コード
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
# 先頭列名 'SSDSE-B-2026' が年度。ラベル行 skiprows=[1] を読み飛ばす。
df = pd.read_csv(DATA_B, encoding='cp932', skiprows=[1])
d = df[df['SSDSE-B-2026'] == 2023].copy()          # 2023 年の 47 都道府県

# 使う列(コード)を数値化:A1101 総人口 / A5101 転入 / A5102 転出
#   E4601 高校卒業者数 / E4602 進学者数 / E6102 大学数
for c in ['A1101', 'A5101', 'A5102', 'E4601', 'E4602', 'E6102']:
    d[c] = pd.to_numeric(d[c], errors='coerce')

# 純移動率(‰) = (転入 - 転出) / 総人口 × 1000
d['純移動率'] = (d['A5101'] - d['A5102']) / d['A1101'] * 1000
# 高校卒業後進学率(%) = 進学者数 / 卒業者数 × 100(原論文の進学率変数に対応)
d['進学率'] = d['E4602'] / d['E4601'] * 100
d['大学数'] = d['E6102']

print("=== [0] データ概要(SSDSE-B・2023年・実再現)===")
print(f"対象年: 2023 / 都道府県数: {len(d)}")
print(f"純移動率(‰)  平均 {d['純移動率'].mean():6.3f}  最小 {d['純移動率'].min():6.3f}  最大 {d['純移動率'].max():6.3f}")
print(f"進学率(%)    平均 {d['進学率'].mean():6.2f}  最小 {d['進学率'].min():6.2f}  最大 {d['進学率'].max():6.2f}")
print(f"大学数       平均 {d['大学数'].mean():6.1f}  最小 {int(d['大学数'].min())}      最大 {int(d['大学数'].max())}")
▼ 実行結果
=== [0] データ概要(SSDSE-B・2023年・実再現)===
対象年: 2023 / 都道府県数: 47
純移動率(‰)  平均 -1.678  最小 -5.017  最大  4.152
進学率(%)    平均  57.56  最小  46.69  最大  74.12
大学数       平均   17.2  最小 2      最大 144
  • ④ 実行結果の読み取り:純移動率の平均は −1.68‰、最小 −5.02‰、最大 +4.15‰と県によって大きく開く。進学率も 46.7〜74.1% と幅が広い。移住元と移住先で条件が大きく違う(=地域格差がある)ことが、分析の前提として確認できる。
やってみよう純移動率を降順に並べてランキング図にする【実再現・図2】
  • ① このコードの目的:計算した純移動率を昇順に並べて横棒グラフにし、流入超過(赤)と流出超過(青)を色分けする。上位・下位5県も抜き出して表示する。
  • ② 前後のつながり:原論文の「東京一極集中/地方の過疎化」という問題意識を、2023年の実データで裏づける。オッズ比そのものは SSDSE に無いので、純移動率で近似している点が図注のポイント。
📝 コード
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
# (原論文の県間ペア・オッズ比ではなく都道府県単位の近似。)
rank = d.sort_values('純移動率', ascending=True)
print("=== [2] 都道府県別 純移動率(2023・実再現・単位‰)===")
top = d.sort_values('純移動率', ascending=False).head(5)
bot = d.sort_values('純移動率', ascending=True).head(5)
print("流入超過 上位5:", "  ".join(f"{p}{v:+.2f}" for p, v in zip(top['Prefecture'], top['純移動率'])))
print("流出超過 下位5:", "  ".join(f"{p}{v:+.2f}" for p, v in zip(bot['Prefecture'], bot['純移動率'])))

fig, ax = plt.subplots(figsize=(8, 11))
bar_colors = ['#e05c5c' if v > 0 else '#4e9af1' for v in rank['純移動率']]
ax.barh(rank['Prefecture'], rank['純移動率'], color=bar_colors, alpha=0.85)
ax.axvline(0, color='black', linewidth=1)
ax.set_xlabel('純移動率(‰)= (転入−転出)/総人口×1000', fontsize=11)
ax.set_title('図2:都道府県別 純移動率ランキング(2023年・SSDSE-B 実再現)\n'
             '赤=流入超過, 青=流出超過', fontsize=12, fontweight='bold')
ax.grid(axis='x', alpha=0.3)
plt.tight_layout()
plt.savefig(os.path.join(FIG_DIR, '2022_U5_11_fig2_rank.png'), dpi=150, bbox_inches='tight')
plt.close()
▼ 実行結果
=== [2] 都道府県別 純移動率(2023・実再現・単位‰)===
流入超過 上位5: 東京都+4.15  千葉県+2.62  埼玉県+2.43  神奈川県+2.39  福岡県+1.69
流出超過 下位5: 長崎県-5.02  青森県-4.70  岩手県-4.12  山形県-4.08  福島県-3.92
Fig2 saved (real)
  • ④ 実行結果の読み取り:流入超過は東京都(+4.15‰)・千葉・埼玉・神奈川・福岡と大都市圏に集中し、流出超過は長崎(−5.02‰)・青森・岩手・山形・福島と地方が並ぶ。原論文が問題視した都市部への人口集中と地方の流出が、都道府県単位の純移動でもはっきり確認できる。
都道府県別 純移動率ランキング(2023年・SSDSE-B・実再現)
図2:都道府県別 純移動率ランキング(2023年)。実再現。SSDSE-B の A5101/A5102/A1101 から算出。赤=流入超過、青=流出超過。東京・千葉・埼玉など大都市圏が流入、地方が流出。原論文は 2007〜2017年の県間ペアのオッズ比を分析しており、本図は収録年(2023)・粒度(都道府県単位)が異なる近似である。
📊 この図の読み方
0の縦線
右(赤)=転入が転出より多い流入超過、左(青)=流出超過。棒の長さが人口比での移動の大きさ。
赤い上位
東京・千葉・埼玉・神奈川・福岡。大都市圏が人を集める「東京一極集中」の構図。
青い下位
長崎・青森・岩手・山形・福島。地方から人が出ていく。原論文が取り組んだ地方の過疎化に対応。
3
図3:高校卒業後進学率ランキング(実再現)

原論文で正の効果(+0.029)が出た説明変数「移住前の高校卒業後進学率」を、SSDSE-B から実再現する。実再現で、進学者数を卒業者数で割って求める。進学率の高い地域ほど、進学を機に県外へ出やすいという原論文の解釈の背景を確かめる。

やってみよう高校卒業後進学率を SSDSE-B から都道府県別に実再現する【実再現・図3】
  • ① このコードの目的:SSDSE-B の E4602 高校卒業者のうち進学者数E4601 高校卒業者数で割って高校卒業後進学率(%)を計算し、降順に並べる。原論文が移住要因に用いた進学率変数を、実データで再現する。
  • ② 前後のつながり:図1で進学率が正に効いていた(+0.029)背景を、実データで裏づける部分。進学率が高い地域ほど、進学を機に県外へ移住しやすい、という原論文の解釈につながる。
📝 コード
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
# SSDSE-B の E4602(進学者数)/E4601(卒業者数) から実計算する。
srank = d.sort_values('進学率', ascending=True)
print("=== [3] 高校卒業後進学率(2023・実再現・単位%)===")
stop = d.sort_values('進学率', ascending=False).head(3)
sbot = d.sort_values('進学率', ascending=True).head(3)
print("進学率 高い3県:", "  ".join(f"{p}{v:.1f}" for p, v in zip(stop['Prefecture'], stop['進学率'])))
print("進学率 低い3県:", "  ".join(f"{p}{v:.1f}" for p, v in zip(sbot['Prefecture'], sbot['進学率'])))

fig, ax = plt.subplots(figsize=(8, 11))
ax.barh(srank['Prefecture'], srank['進学率'], color='#f0a500', alpha=0.85)
ax.set_xlabel('高校卒業後進学率(%)= 進学者数 / 卒業者数 × 100', fontsize=11)
ax.set_title('図3:都道府県別 高校卒業後進学率(2023年・SSDSE-B 実再現)',
             fontsize=12, fontweight='bold')
ax.grid(axis='x', alpha=0.3)
plt.tight_layout()
plt.savefig(os.path.join(FIG_DIR, '2022_U5_11_fig3_fe_coef.png'), dpi=150, bbox_inches='tight')
▼ 実行結果
=== [3] 高校卒業後進学率(2023・実再現・単位%)===
進学率 高い3県: 東京都74.1  京都府74.0  神奈川県69.4
進学率 低い3県: 沖縄県46.7  宮崎県48.0  鹿児島県48.1
Fig3 saved (real)
  • ④ 実行結果の読み取り:進学率は沖縄 46.7% 〜 東京 74.1%と約27ポイントも開く。上位は東京・京都・神奈川下位は沖縄・宮崎・鹿児島。進学率が高い都市部では進学時に県外へ出る選択肢が広く、原論文が言う「進学率が高い地域ほど移住しやすい」機序と整合する。
都道府県別 高校卒業後進学率ランキング(2023年・SSDSE-B・実再現)
図3:都道府県別 高校卒業後進学率ランキング(2023年)。実再現。SSDSE-B の E4602/E4601(進学者数/卒業者数)から算出。沖縄46.7%〜東京74.1%。原論文ではこの進学率(移住前)の推定値が +0.0288(報告値)で、進学率が高い地域ほど移住しやすいとされた。
📊 この図の読み方
大きな県差
進学率は46.7〜74.1%と約27ポイント開く。都市部(東京・京都)が高く、地方が低い。
正の効果の背景
原論文では進学率の推定値が +0.0288(報告値)。進学率が高い地域ほど、進学を機に県外へ移住しやすい。
位置づけ
実再現。進学率という変数そのものは SSDSE-B で計算できる。回帰係数(+0.0288)は原論文の報告値。
4
図4:大学数と純移動率の関係(実再現)

原論文は「大学数が多い地域に移住する(正の効果 +0.0019)」を報告している。その傾向を、大学数と純移動率の県横断的な関係として実再現する。ここで計算する相関係数は本ページの再計算値で、原論文の回帰係数とは別物である点に注意する。

やってみよう大学数と純移動率の関係を散布図で実再現する【実再現・図4】
  • ① このコードの目的:SSDSE-B の E6102 大学数と純移動率の相関係数を計算し、散布図と回帰直線を描く。原論文が正の効果を報告した「大学数の多さと人口流入」の関係を、都道府県横断で可視化する。
  • ② 前後のつながり:図1で大学数の差が正に効いていた(+0.0019)ことを、実データの散布図で直感的に確かめる部分。ただし相関係数は再計算値で、原論文の回帰係数とは分けて扱う。
📝 コード
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
#   0.0018618 とは別物であり混同しない。)
r = d['大学数'].corr(d['純移動率'])
print("=== [4] 大学数と純移動率の関係(2023・実再現)===")
print(f"大学数と純移動率の相関係数 r = {r:+.3f}(本ページの再計算値。原論文の係数とは別物)")
print("→ 大学が多い都道府県ほど人口が流入する県横断的な傾向が確認できる。")

fig, ax = plt.subplots(figsize=(9, 6))
ax.scatter(d['大学数'], d['純移動率'], s=60, color='#5cb85c', alpha=0.8, edgecolor='white')
for _, row in d.iterrows():
    if row['大学数'] > 25 or abs(row['純移動率']) > 3:
        ax.annotate(row['Prefecture'], (row['大学数'], row['純移動率']),
                    fontsize=8, alpha=0.7, xytext=(3, 3), textcoords='offset points')
slope, intercept = np.polyfit(d['大学数'], d['純移動率'], 1)
xr = np.linspace(d['大学数'].min(), d['大学数'].max(), 100)
ax.plot(xr, slope * xr + intercept, 'k--', linewidth=1.4, label=f'回帰直線 (r={r:+.2f})')
ax.axhline(0, color='gray', linewidth=0.8, linestyle=':')
ax.set_xlabel('大学数(校・2023年)', fontsize=11)
ax.set_ylabel('純移動率(‰)', fontsize=11)
ax.set_title('図4:大学数と純移動率(2023年・SSDSE-B 実再現, N=47)\n'
             '大学が多い県ほど流入超過', fontsize=12, fontweight='bold')
ax.legend(fontsize=10)
ax.grid(alpha=0.3)
plt.tight_layout()
plt.savefig(os.path.join(FIG_DIR, '2022_U5_11_fig4_scatter.png'), dpi=150, bbox_inches='tight')
▼ 実行結果
=== [4] 大学数と純移動率の関係(2023・実再現)===
大学数と純移動率の相関係数 r = +0.671(本ページの再計算値。原論文の係数とは別物)
→ 大学が多い都道府県ほど人口が流入する県横断的な傾向が確認できる。
Fig4 saved (real)
  • ④ 実行結果の読み取り:大学数と純移動率の相関係数は r = +0.671(本ページの再計算値)。大学が多い都道府県ほど人口が流入するという右上がりの傾向がはっきり見える。東京(144校)が突出し流入超過、大学の少ない地方は流出側に固まる。原論文の「教育機関が多い地域へ移住する」という結論と方向性が一致する。
大学数と純移動率の散布図(2023年・SSDSE-B・実再現)
図4:大学数と純移動率(2023年, N=47)。実再現。SSDSE-B の E6102(大学数)と純移動率の関係。右上がりで r=+0.67。この相関係数は本ページの再計算値であり、原論文が報告した大学数の差の係数(+0.0018618)とは別物(被説明変数も粒度も異なる)。
📊 この図の読み方
右上がりの傾き
大学が多い県ほど純移動率が高い(流入超過)。r=+0.67 で中程度以上の正の相関。
東京の外れ値
大学144校で純移動率も最大。教育機関の集積と人口流入が同時に起きている。
報告値との違い
この r は再計算値。原論文の大学数の差の係数(+0.0019)は、被説明変数がオッズ比で粒度も県ペアのため、値としては別物。

結果の解釈と提言

推定結果(表2・報告値)を、著者は次のように読み解いている。効いたのは豊かさ(県内総生産)と教育(進学率・大学数・短大数)で、予想に反して就業機会(有効求人倍率)は移住を説明しなかった

県内総生産・教育機関=「選択肢の多さ」への移住(原論文 5節)

県内総生産の対数の差が正(+0.749)で、県内総生産が低い県から高い県へ移住する。公共交通が整い、サービスや設備が充実した地域が選ばれる。進学率(+0.029)・大学数(+0.0019)・短期大学数(+0.0037)も正で、進学志向が高く教育機関が多い地域へ移住する。進学率の高い地域は教育・学歴への意識が高く、進学時に選択肢の広い県外へ出る人が多い、と著者は解釈する。

予想と違った有効求人倍率と専修学校(原論文 5節)

有効求人倍率の差は予想(正)に反して負(−0.210)。有効求人倍率が高い地域へ就業機会を求めて移るという結果は得られず、就職での移住は求人数以外の要因で決まるとみられる。専修学校数の差も負(−0.0016)で、専修学校に通うための移住は少ない。都道府県間距離は負(−0.0016)で、引越し費用などのコストが大きい遠方には移住しにくい。

移住の構図(原論文の解釈)
地方=県内総生産・大学が少ない
豊かで学校の多い都市部へ
地方の過疎化・産業衰退
格差がさらに拡大

提言:進学の選択肢を地方に増やす(原論文 6節)

教育機関の数や県内総生産に表れる「生活の中で選択肢が多いこと」が移住を促す一方、就業機会の差では移住を説明できなかった。ここから著者は、地方からの人口流出を止め格差拡大を防ぐには、若者の進学の選択肢を地方にもより増やす必要があると提言する。

この考察の限界 著者自身、有効求人倍率が就職時の魅力や地域性の代理変数として適切でなかった可能性を認めている。企業の本社数や事業所数を就業機会の変数に加えれば、違う結果になるかもしれない、と述べている。

まとめと今後の課題

本研究は、県をまたぐ移住は地域格差のどれで説明できるかという問いに、移住オッズ比の対数を被説明変数にしたロジットモデルで挑んだ(2007〜2017年、47×46×11=23,782サンプル)。結果(報告値)は、県内総生産の対数の差 +0.749・進学率 +0.029・大学数の差 +0.0019・短大数の差 +0.0037が正で、豊かさと教育機関という「選択肢の多さ」がある地域へ移住する。逆に有効求人倍率の差 −0.210は予想に反して負で、就業機会では移住を説明できなかった。提言は進学の選択肢を地方に増やすことである。本ページでは、純移動率・進学率・大学数を SSDSE-B で実再現し(図2〜4)、県間移住オッズ比と県内総生産にまつわる係数は報告値として切り分けた。

この研究の限界 ①中心の被説明変数は県間移住オッズ比で、県内総生産とともにSSDSE-B では実再現できず報告値の可視化にとどまる(純移動率・進学率・大学数のみ実再現)。②就業機会の代理変数(有効求人倍率)が適切でなかった可能性を著者自身が認めている。③本ページの実再現は収録年(2023)・粒度(都道府県単位)が原論文(2007〜2017・県ペア)と異なる近似である。
この研究から学べること 移住を「オッズ比」として確率的に捉え、地域格差を「移住先−移住元の差」で表してロジット回帰にかける組み立て方。予想と逆の符号(有効求人倍率)を代理変数の限界として誠実に考察する姿勢。そして実再現できる部分と報告値を切り分けるデータの扱い方。審査会もこの丁寧な実証を評価し、審査員奨励賞に選んだ。

データ・コードのダウンロード

このページの実再現の図(図2〜図4)は、以下から再現できます。

🐍 再現コード(.py) 📊 SSDSE-B-2026.csv

※ 図2(純移動率)・図3(進学率)・図4(大学数と純移動率)はSSDSE-Bの A5101/A5102/A1101・E4601/E4602・E6102 から算出した実再現です(収録年2023・都道府県単位)。図1(表2の推定結果)は、被説明変数の県間移住オッズ比と県内総生産がSSDSE-B外のため、原論文の報告値を符号・桁そのまま可視化したものです(新たな数値の捏造はしていません)。

⚠️ よくある誤解と注意点

この研究を読むとき・まねするときに陥りやすい誤解を整理する。

誤解1:「有効求人倍率が負なら、求人が多い地域ほど人が出ていく」
推定値が負でも、それは他の変数を一定にしたうえでの偏効果であり、単純に「求人が多い=流出」ではない。著者は「有効求人倍率が就業機会の代理変数として不十分だった可能性」を挙げている。予想と逆の符号は、変数の妥当性を疑うサインとして受け止めるべきである。
誤解2:「県内総生産の係数が最大だから、GDPを上げれば移住が止まる」
相関・回帰因果を保証しない。県内総生産の差が大きい地域ペアで移住が多い、という関係であって、地方のGDPを上げれば必ず流出が止まるとは言えない。なお県内総生産は SSDSE-B に列が無く、本ページでは再計算していない
誤解3:「図4の相関係数(+0.67)は原論文の大学数の係数(+0.0019)と同じもの」
別物である。原論文の係数は移住オッズ比を被説明変数にした県ペアの回帰で得た偏回帰係数。図4の +0.67 は都道府県単位の大学数と純移動率の単純な相関係数で、本ページの再計算値。被説明変数も粒度も違うため、数値を混同してはいけない。
誤解4:「このページの図はすべて原論文と同じ数値を計算し直したもの」
図2〜図4(純移動率・進学率・大学数)だけがSSDSE-Bからの実再現。図1(表2の推定結果)は県間移住オッズ比と県内総生産がSSDSE-B外のため報告値の可視化(再計算ではない)。図注に区別を明記している。

📖 用語集(この記事に出てくる統計用語)

クリックすると各用語の詳しい解説ページに移動できます。

ロジットモデル
結果を確率のオッズ(比)で捉える回帰。本研究は都道府県 i→j の移住確率を i→i で割ったオッズ比の対数を被説明変数にした集計ロジットモデルで、地域格差の影響を推定した。
オッズ比
ある事象の起こりやすさを、起こらない場合との比で表したもの。ここでは「j へ移住する/i に留まる」の比 Eij/Eii を使い、その対数を回帰にかけた。
回帰係数(推定値)
説明変数が1単位増えたとき被説明変数がどれだけ動くか。表2では県内総生産の差 +0.749、進学率 +0.029 などが報告された。
t値
推定値が0からどれだけ離れているかを標準誤差で測った指標。絶対値が大きいほど有意。都道府県間距離は t=−82.01 と非常に大きい。
p値
「その係数は本当は0」という帰無仮説のもとで観測値が得られる珍しさ。0.05未満で有意。表2では年ダミー以外が p<0.05。
代理変数
直接測れない概念を近似する観測可能な変数。本研究は就業機会の代理に有効求人倍率を使ったが、著者はその妥当性に限界があったと述べている。
相関係数
2つの量が一緒に動く強さを−1〜+1で表す。図4では大学数と純移動率の相関 r=+0.67(本ページの再計算値)を示した。
SSDSE
教育用標準データセット。本ページの実再現はSSDSE-B(都道府県別)の転入・転出・総人口・卒業者数・進学者数・大学数を用いる。県間移住オッズ比・県内総生産はSSDSE-Bに無い。

📐 使っている手法をわかりやすく解説

この研究で使われている手法を、手を動かす順に説明する。

全体像
移住をオッズ比(j へ移る/i に留まる)に直し、その対数をロジットモデルで回帰する。説明変数の地域格差は移住先−移住元の差にする。各変数の推定値・t値・p値で効き方を読み、予想と符号が違う変数は代理変数の妥当性を疑う。
🔢 オッズ比と対数変換
何をする
都道府県 i から j へ移る確率を、i に留まる確率で割る。人口が約分され移住者数の比 Eij/Eii になる。その対数を被説明変数にする。
なぜ有効
確率をそのまま使うと0〜1に制限され回帰に向かないが、オッズ比の対数(ロジット)は −∞〜+∞ を動くので線形回帰に載せられる。
注意
この被説明変数を作るには都道府県ペアの移住者マトリクスが必要で、SSDSE-B には無い(住民基本台帳が必要)。本ページで実再現できないのはこのためである。
📊 ロジットモデル(回帰分析)
何をする
被説明変数(移住オッズ比の対数)を、複数の説明変数(地域格差の差・距離・ダミー)で同時に説明する。各変数の推定値・t値・p値を見る。
読み方
推定値の符号が効き方の向き、絶対値が強さ。t値の絶対値が大きく p<0.05 なら有意。県内総生産の差(+0.749)が最も強く効いた。
注意
係数は他の変数を一定にした偏効果。予想と符号が逆になったら(有効求人倍率)、変数の妥当性や欠落変数を疑う。
➖ 地域格差を「差」で表す
何をする
県内総生産・大学数などを、移住先 j と移住元 i の差 (Xj−Xi) にして説明変数にする。差が大きいほど移住が起きるかを見る。
なぜ有効
「どちらが豊か/学校が多いか」という相対的な格差が移住の動機だと考えられるため。水準そのものより差の方が移住を説明しやすい。
注意
進学率だけは移住前 i の値を使う(進学は出発地の環境が効くため)。変数ごとに差か水準かを使い分けている点に注意。

🚀 発展の可能性(結果 X → 新仮説 Y → 課題 Z)

この研究の「豊かさと教育機関のある地域へ移住し、就業機会では説明できない」という結論は、次の研究の出発点になる。

発展1:就業機会の代理変数を差し替える(著者の今後の展望)
結果X
有効求人倍率の差は予想に反して負(−0.210・報告値)。就業機会の代理として不十分だった可能性がある。
新仮説Y
企業の本社数や事業所数を就業機会の変数にすれば、正の効果が得られるのではないか。
課題Z
本社数・事業所数のデータを都道府県ペアの差として整備し、有効求人倍率と入れ替えて再推定する。代理変数の妥当性を比較する。
発展2:地方に大学を増やすと流出が止まるかを検証する
結果X
大学数・短大数の差が正(報告値)で、教育機関が多い地域へ移住する。図4でも大学数×純移動率 r=+0.67。
新仮説Y
地方に大学・短大が新設された地域では、その後の若年層の流出が緩むのではないか。
課題Z
大学新設の前後で純移動率の変化を追跡し、因果に踏み込む。都市部と地方で効果が違うかも検討する。

🎯 自分でやってみよう(5つのチャレンジ)

再現コードを少し変えるだけで試せる課題を、易しい順に用意した。

★☆☆☆☆ 難易度1
別の年で純移動率ランキングを出す
図2のコードは df[df['SSDSE-B-2026']==2023] で2023年を選んでいる。ここを2015年や2019年に変えて、流入・流出の順位がどう変わるかを見てみよう。
★★☆☆☆ 難易度2
進学率の上位・下位5県を表で出す
図3の進学率を降順に並べ、上位5県と下位5県を表示してみよう。都市部と地方で大きく分かれることが確認できる。
★★★☆☆ 難易度3
短期大学数や専修学校数と純移動率の相関を見る
大学数 E6102 の代わりに短期大学数 E6101・専修学校数 E7101 を使って純移動率との相関を計算し、原論文の符号(短大=正、専修=負)と方向が合うか確かめよう。
★★★★☆ 難易度4
有効求人倍率と純移動率の関係を見る
SSDSE-B の F3103 月間有効求人数÷F3102 月間有効求職者数で有効求人倍率を作り、純移動率との相関を計算してみよう。原論文の負の係数と、県横断の相関が同じ向きになるかを考えてみよう。
★★★★★ 難易度5
なぜ移住オッズ比は再現できないのか説明する
原論文の被説明変数 ln(Eij/Eii) が、なぜSSDSE-Bで実再現できないのかを、都道府県ペアの移住マトリクスの有無出典(住民基本台帳 vs SSDSE)の2点から自分の言葉で説明してみよう。

💼 この手法は実社会でこう使われている

「移住や選択をオッズ比・ロジットで捉え、要因の差で説明する」発想は、行政や企業で広く使われている。

🏙️
地方創生・移住施策
どの地域格差(所得・教育・雇用)が人口流出を生むかを地域データで検証し、進学の選択肢の拡充など的を絞った施策を設計する。本研究と同じ発想。
🛒
消費者の選択分析
「A店を選ぶ/B店を選ぶ」の選択確率をオッズ比・ロジットモデルで説明し、価格や距離などの差から需要を予測する(離散選択モデル)。
🏛️
政策の効果検証(EBPM)
教育・雇用施策の効果を地域指標との回帰で当たりをつけ、予想と逆の符号が出たら代理変数を見直すなど、証拠に基づいて政策を設計する。

🤔 よくある質問(読者からの想定Q&A)

この研究を読んで浮かびやすい疑問に答える。

Q. なぜ移住を「オッズ比」に直すのですか?
A. 確率そのままだと0〜1に制限されて回帰に向きませんが、「j へ移る/i に留まる」のオッズ比の対数(ロジット)は −∞〜+∞ を動くので線形回帰にかけられます。人口も約分されて移住者数の比 Eij/Eii になり扱いやすくなります。
Q. このページの図は原論文と同じ数値ですか?
A. 図2(純移動率)・図3(進学率)・図4(大学数と純移動率)はSSDSE-Bからの実再現です。図1(表2の推定結果)は、被説明変数の県間移住オッズ比と県内総生産が住民基本台帳・県民経済計算の出典でSSDSE-Bに無いため、原論文の報告値を符号・桁そのまま転記して可視化しています。新たな数値の捏造はしていません。
Q. 有効求人倍率が負なのは、求人が多いと人が逃げるということ?
A. いいえ。他の変数を一定にした偏効果が負だっただけで、単純にそう読むのは危険です。著者自身、有効求人倍率が就業機会の代理変数として不十分だった可能性を認め、企業の本社数や事業所数を使えば違う結果になるかもしれないと述べています。
Q. 図4の相関 +0.67 と、原論文の大学数の係数 +0.0019 は同じ意味?
A. 別物です。原論文の係数は移住オッズ比を被説明変数にした県ペアの回帰で得た偏回帰係数。図4の +0.67 は都道府県単位の大学数と純移動率の単純な相関係数(本ページの再計算値)です。被説明変数も粒度も違うので、数値を混同しないでください。

✅ 理解度チェック(4問)

この論文を理解できたか、クリックで確認しましょう。間違えても解説が出ます。

🐍 ブラウザで動かす — インストール不要でこの論文の分析を再現する

このページの分析は、この画面の中でそのまま実行できます。 Python をインストールする必要も、CSV をダウンロードする必要もありません。 下のセルの 「▶ ブラウザで実行」 を上から順に押すか、 「▶ 最初から全部実行」 で一気に流してください。 表示されるのは、本文の図表とまったく同じ計算の結果です (動かしているのは再現スクリプト code/2022_U5_11_shorei.py そのもの)。

コードは書き換えられます。「✏️ 書き換える」で数字や変数を変えて ▶ を押すと、 結果がどう変わるかをその場で確かめられます(元に戻すボタンつき)。 ページを開いた時点で裏で実行環境の準備が始まっているので、待ち時間はほとんどありません。 初回だけ実行環境の取得にインターネット接続が必要です。