論文一覧に戻る 🕸 論文ネットワーク 🗺 用語ネットワーク 統計データ分析コンペ 教育用再現集
2018年度 統計データ分析コンペティション | 日本統計協会賞(大学生・一般の部)

地方創生に向けた東京一極集中是正のための
定量的都市圏選定指標の提案

⏱️ 推定読了時間: 約20分
池田 泰成・柴辻 優樹・鶏内 朋也・石川 貴啓・佐野 岳史(慶應義塾大学リーディングプログラム) 大学生・一般の部・日本統計協会賞 教育用標準データセット(国勢調査)+国土数値情報・RESAS(報告値)
🔬 AHP🔬 パーセンタイル🔬 加重平均🏷 移住・人口移動🏷 防災・災害
🔬 手法タグ / 🏷 応用タグ(クリックで同タグの論文をネットワーク検索)
🔬 再現カルテ — 原論文と同じデータ・同じ手法で再現

この教材は原論文と同じデータを読み込み、同じ手順で計算し直しています。画面に出る数値と図は、あなたのブラウザがその場で計算した結果です。

原論文が使ったデータ国勢調査・平成 22 年都市公園データ・平成 24 年地域経済循環率・平成 25 年財政力指数・平成 27 年鉄道データ・平成 27 年面積当たりの平均不動産取引価格・平成 28 年行政区域データ
分析単位:市区町村
中核手法:階層分析法
この教材が使うデータ
原論文(PDF)地方創生に向けた東京一極集中是正のための定量的都市圏選定指標の提案
日本統計協会賞/池田 泰成、柴辻 優樹、鶏内 朋也、石川 貴啓、佐野 岳史(慶應義塾大学リーディングプログラム)
✅ この教材でできること
  • 分析に使うデータは同梱済みで、ブラウザ上でそのまま読み込める
⚠️ この教材ではできないこと(原論文との違い)
  • 原論文は市区町村を単位に分析しているが、この教材は都道府県が単位

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

📝 3行で分かる要約

目次

  1. 研究のテーマと目的
  2. 使用データと再現可能性の整理
  3. 分析の流れ:AHP → パーセンタイル配点 → 加重平均
  4. 図1:都道府県別 転入超過数ランキング(実SSDSE-B・実再現)
  5. 図2:東京圏の人口シェア(実SSDSE-B・実再現)
  6. 図3:各シナリオ上位5都市(報告値の可視化)
  7. 図4:シナリオ横断の頑健な候補(報告値の集計)
  8. 結果の解釈と考察
  9. まとめと今後の課題
  10. データ・コードのDL
  11. ⚠️ よくある誤解
  12. 📖 用語集
  13. 📐 手法ガイド
  14. 🚀 発展の可能性
  15. 🎯 自分でやってみよう
  16. 🤔 Q&A
  17. 🐍 ブラウザで動かす

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

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

このページで実SSDSEから実再現できるのは図1・図2(東京一極集中の背景)だけです。コードの編集は不要です。図3・図4の都市圏選定結果は、原論文が国土数値情報・RESAS・市区町村版データを組み合わせて算出したもので現行SSDSE-Bに収録列が無いため、原論文 表4-2 の報告値(順位)を転記して可視化します。

1
データをダウンロードする 独立行政法人統計センターの SSDSE(教育用標準データセット)配布ページから、以下をダウンロードします。
SSDSE-B-2026.csv ← SSDSE-B(都道府県・時系列データ)📥 直接DL
⬇ SSDSEダウンロードページを開く
2
ファイルを所定のフォルダに配置する ダウンロードしたCSVを、プロジェクトの data/raw/ フォルダに入れます。
2026 統計・データ解析コンペ/ ├── code/ │ └── 2018_U3_suri.py ← 実行するスクリプト └── data/ └── raw/ SSDSE-B-2026.csv ← ここに置く(図1・図2で使用)
3
スクリプトをそのまま実行する ターミナルでプロジェクトルートに移動し、以下を実行します。
python3 code/2018_U3_suri.py
図は html/figures/ に自動保存されます。図1・図2は SSDSE-B の総人口(A1101)・転入(A5101)・転出(A5102)の2023年値から実再現、図3・図4は原論文 表4-2 の報告値から可視化します。
研究のテーマと目的

日本では人口・政治・経済・文化の諸機能が東京へ集中している。原論文は「人口や大学数は東京圏だけで全国の約30%、学生数は約40%」と指摘し、過密による住宅・通勤・防災上のリスク、そして2011年の東日本大震災を契機に再燃した首都機能移転の議論を出発点にしている。

そこで著者らは、地方創生の観点から「首都機能を移すのにふさわしい都市圏の中核都市はどこか」を、感覚ではなく定量的な指標で選び出すことを目指した。従来のAHPによる首都機能移転研究が委員の定性評価に依存し経済的観点を欠いていた点を克服し、地理・経済・生活の3観点の公的データから客観的にスコア化する点が新しい。手法の中心は階層分析法(AHP)と、順位に基づく加重平均である。

54市
分析対象(人口20万人以上の中核市)
15指標
地理・経済・生活の評価軸
約30%
東京圏の人口シェア(実データ29.7%)
前橋・金沢・高崎
素点上位の中核都市(報告値)
研究の問い 東京一極集中を是正するために首都機能を移すなら、地理・経済・生活の観点から見てどの中核都市が都市圏の中心にふさわしいかを、定量的な指標で客観的に選定できるか。
分析のキモ:観点の重みを変えて「頑健な候補」を探す 地理・経済・生活のどれを重視するかで最適な都市は変わる。著者は素点(等重み)に加え、各観点を重視した3シナリオを作り、どのシナリオでも上位に残る都市を頑健な候補として読み解く。単一の正解ではなく重みへの感度を見るのが特徴。

大学生・一般の部・日本統計協会賞 中核市54市 AHP(階層分析法) パーセンタイル配点・加重平均

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

原論文は54の中核市を単位に、地理・経済・生活の15指標を複数の出典から集めている。指標の元データは市区町村レベルで、国勢調査・国土数値情報・RESASにまたがる。

主なデータと出典(原論文 3章・使用データ)

観点指標の例出典本ページでの扱い
地理面積、空港・新幹線駅までの距離、鉄道・都市公園データ教育用標準データセット(国勢調査2015)/国土数値情報(都市公園・鉄道・行政区域)報告値の可視化(市区町村・GIS由来、SSDSE-B外)
経済地域経済循環率、財政力指数、面積当たり平均不動産取引価格RESAS 地域経済分析システム報告値(SSDSE-Bに列なし)
生活人口・世帯など生活環境に関わる指標教育用標準データセット(国勢調査2015、市区町村)報告値(市区町村版、現行SSDSE-B外)
背景(実再現)総人口(A1101)・転入(A5101)・転出(A5102)SSDSE-B-2026(2023年)実再現(東京一極集中の確認)
再現可能性の整理(このページの図の作り方)
  • 報告値の可視化(再計算ではない):都市圏選定の総合スコアは、国土数値情報のGIS計算(空港・新幹線駅までの距離など)やRESASの経済指標、市区町村版の国勢調査を組み合わせて算出されており、現行の SSDSE-B(都道府県・時系列)には該当列が無い。したがって図3(各シナリオ上位5)は原論文 表4-2 の順位を転記して可視化する。
  • 報告値の集計:図4は、図3の報告順位をシナリオ横断で数え上げただけ(各都市が上位5に何回入ったか)で、新しい数値は一切作っていない。
  • 実再現できる部分:原論文の出発点である「東京一極集中」は SSDSE-B の総人口・転入・転出で確認できる。図1(転入超過数ランキング)・図2(東京圏の人口シェア)は2023年の実データから実再現する。ただし原論文当時(2015年前後)とは年次が異なる。
  • 新しい数値の捏造はしない:報告値・集計値・実再現値をラベルで分離する。原論文の点数(表4-1)は画像のため転記せず、順位のみを扱う。GDP・県内総生産など SSDSE-B に無い列は使わない。

分析の流れ:AHP → パーセンタイル配点 → 加重平均

分析の流れ
対象の選定
人口20万人以上の
中核市54市
指標の階層化
地理・経済・生活
の15指標(AHP)
順位→配点
25/50/75%点で
1〜4点に変換
加重平均
重視0.6・他0.2
でスコア化
シナリオ比較
素点・地理・経済
・生活で順位化

① 中核市54市を対象にする(原論文 3章)

都市圏は複数都市が協力して大都市機能を担うため、著者は政令指定都市の次に大きい区分である中核市(2018年4月時点で人口20万人以上の54市)を候補にした。地方創生の先行研究でも、高度医療などを担う地域として中核都市が対象とされてきた。

② 15指標をパーセンタイルで配点する(原論文 3章)

指標ごとに単位もスケールも違うため、54市で順位を計算し、その順位を25/50/75パーセンタイルで区切って1・2・3・4点に変換する。順位ベースにすることで、外れ値の大きさに左右されず横並び比較できる。全指標の点を足したものが素点

③ AHPと加重平均でシナリオを作る(原論文 2章・3章)

階層分析法(AHP)で「地方創生」という目標の下に地理・経済・生活のカテゴリと指標を階層化。重視する観点の合計点に0.6、他の2観点に0.2を掛けた加重平均で、地理重視・経済重視・生活重視の3シナリオの得点を算出した。

スコアは指標と重みの選び方に依存する 審査講評も「結論の妥当性は選択した項目に強く依存する」と指摘する。どの15指標を選ぶか・どんな重みを置くかで順位は動く。総合スコアは唯一の正解ではなく、前提を明示した上での一つの見方として読むのが正しい。
1
図1:都道府県別 転入超過数ランキング(実SSDSE-B・実再現)

まず、原論文の出発点である「東京一極集中」が実データでどう表れるかを見る。都市圏選定指標そのものは現行SSDSEで再計算できないため、ここは背景の実証として、SSDSE-Bの転入・転出から転入超過数(社会増減)を都道府県別に並べる。

やってみよう実SSDSE-B を読み込み、2023年の都道府県データに絞る【実再現の土台】
  • ① このコードの目的:SSDSE-B-2026 を cp932 で読み、日本語ラベル行を skiprows=[1] で外し、年度==2023 に絞る。総人口(A1101)・転入(A5101)・転出(A5102)から転入超過数東京圏の人口シェアを計算する。都市圏スコアは扱わず、原論文の背景「東京一極集中」だけを実データで確認する土台づくり
  • ② 前後のつながり:図3・図4の都市圏選定は報告値ベースになる。その前に、なぜ首都機能移転が問題になるのかという原論文の動機を、今のSSDSEで手を動かして裏づけておく部分。
📝 コード
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
# SSDSE-B-2026.csv は cp932・2行目が日本語ラベル行なので skiprows=[1] で外す。
# 先頭列名 'SSDSE-B-2026' が年度、A1101=総人口、A5101=転入者数、A5102=転出者数。
df = pd.read_csv(DATA_B, encoding='cp932', skiprows=[1])
d23 = df[df['SSDSE-B-2026'] == 2023].copy()

# 転入超過数(社会増減)= 転入 − 転出。プラスなら人口が流入超過。
d23['転入超過数'] = d23['A5101'] - d23['A5102']

national_pop = d23['A1101'].sum()
tokyo_area = ['東京都', '神奈川県', '埼玉県', '千葉県']
share_area = d23.loc[d23['Prefecture'].isin(tokyo_area), 'A1101'].sum() / national_pop * 100
share_tokyo = d23.loc[d23['Prefecture'] == '東京都', 'A1101'].iloc[0] / national_pop * 100

print('=== [1] 実SSDSE-B 2023年データ(実再現の土台)===')
print(f'対象都道府県数: {len(d23)}')
print(f'全国総人口(2023): {national_pop:,} 人')
print(f'東京圏(1都3県)の人口シェア: {share_area:.2f}%(東京都単独 {share_tokyo:.2f}%)')
print('転入超過数 上位5:')
print(d23.sort_values('転入超過数', ascending=False)[['Prefecture', '転入超過数']].head(5).to_string(index=False))
▼ 実行結果
=== [1] 実SSDSE-B 2023年データ(実再現の土台)===
対象都道府県数: 47
全国総人口(2023): 124,353,000 人
東京圏(1都3県)の人口シェア: 29.68%(東京都単独 11.33%)
転入超過数 上位5:
Prefecture  転入超過数
       東京都  58489
      神奈川県  22088
       埼玉県  17850
       千葉県  16375
       大阪府  13071
  • ④ 実行結果の読み取り:① 2023年の47都道府県が読み込め、全国人口は約1億2435万人。② 東京圏(1都3県)の人口シェアは29.68%で、原論文が背景に挙げた「東京圏で全国の約30%」を実データで再現できた。③ 転入超過(人口流入超)の上位は東京都(+58,489)・神奈川・埼玉・千葉とすべて東京圏で、集中がいまも続くことが分かる。
やってみよう転入超過数を都道府県ランキングにして一極集中を可視化する【実再現・図1】
  • ① このコードの目的:転入超過数の降順に47都道府県を並べ、東京圏をオレンジ、その他の流入超過県を青、流出超過県を灰で塗り分けた横棒グラフを描く。あわせて流入超過が何県あるか、東京圏がその何%を占めるかを集計する。
  • ② 前後のつながり:図1で「人はどこへ集まっているか」を実データで押さえる。原論文が是正しようとした一極集中の実像を掴んでおくと、次に見る都市圏選定(分散先の候補探し)の意義が理解しやすくなる。
📝 コード
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
rank = d23.sort_values('転入超過数', ascending=False).reset_index(drop=True)
top_area = rank[rank['転入超過数'] > 0]  # 流入超過の県
inflow_n = len(top_area)
tokyo_area_inflow = rank[rank['Prefecture'].isin(tokyo_area)]['転入超過数'].sum()
positive_total = top_area['転入超過数'].sum()

print('=== [2] 図1: 転入超過数ランキング(実再現)===')
print(f'転入超過(プラス)の都道府県数: {inflow_n} / 47')
print(f'東京圏4都県の転入超過合計: {tokyo_area_inflow:,} 人')
print(f'全プラス県の合計に占める東京圏の割合: {tokyo_area_inflow/positive_total*100:.1f}%')

fig, ax = plt.subplots(figsize=(9, 11))
colors = [C_ORANGE if p in tokyo_area else (C_BLUE if v > 0 else C_GRAY)
          for p, v in zip(rank['Prefecture'], rank['転入超過数'])]
ax.barh(rank['Prefecture'], rank['転入超過数'], color=colors)
ax.invert_yaxis()
ax.axvline(0, color='#333', lw=0.8)
ax.set_xlabel('転入超過数(転入−転出、2023年)[人]')
ax.set_title('図1【実再現】都道府県別 転入超過数ランキング(実SSDSE-B-2026・2023年)\n'
             'オレンジ=東京圏(1都3県)・青=その他の流入超過県・灰=流出超過県',
             fontsize=12)
ax.tick_params(axis='y', labelsize=8)
plt.tight_layout()
plt.savefig(f'{FIG_DIR}/2018_U3_fig1.png', bbox_inches='tight')
plt.close()
▼ 実行結果
=== [2] 図1: 転入超過数ランキング(実再現)===
転入超過(プラス)の都道府県数: 6 / 47
東京圏4都県の転入超過合計: 114,802 人
全プラス県の合計に占める東京圏の割合: 84.1%
  • ④ 実行結果の読み取り:① 転入超過(プラス)はわずか6県だけで、残り41道府県は人口流出。② うち東京圏4都県だけで流入超過の合計の84.1%を占め、棒グラフでも東京都が突出する。③ 「地方から東京へ」という流れが数値・図の両面で明確で、原論文が首都機能移転を論じる動機が実データで裏づけられる。
都道府県別 転入超過数ランキング(実SSDSE-B・2023)
図1:都道府県別 転入超過数(転入−転出)ランキング。実SSDSE-B-2026・2023年・A5101/A5102からの実再現。オレンジ=東京圏(1都3県)、青=その他の流入超過県、灰=流出超過県。原論文の指標本体ではなく「東京一極集中」の背景を実データで確認したもの。
📊 この図の読み方
棒の長さ
転入超過数(人)。右(正)ほど人口が流入超過、左(負)ほど流出超過。
東京圏が独占
プラスは6県のみ。上位4位すべてが東京圏で、流入超過の8割超を占める。
位置づけ
実再現(実SSDSE-B)。原論文の都市圏スコアではなく、その動機となる一極集中の実証。
2
図2:東京圏の人口シェア(実SSDSE-B・実再現)

転入超過の集中を、今度は人口ストックのシェアで確かめる。原論文は「東京圏で全国の約30%」と述べた。この主張を、SSDSE-Bの総人口(A1101)で実際に計算して検証する。

やってみよう東京圏の人口シェアを積み上げ棒で示す【実再現・図2】
  • ① このコードの目的:[1]で計算した東京圏(1都3県)の人口シェアと、その他43道府県のシェアを棒グラフにする。原論文の「約30%」という背景記述が実データで裏づけられるかを見る。
  • ② 前後のつながり:図1の「流れ(フロー)」に対し、図2は「たまり(ストック)」で一極集中を示す。フローもストックも東京圏に偏る、という二段構えで原論文の問題意識を固める部分。
📝 コード
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
labels = ['東京圏\n(東京・神奈川・埼玉・千葉)', 'その他43道府県']
values = [share_area, 100 - share_area]

print('=== [3] 図2: 東京圏の人口シェア(実再現)===')
print(f'東京圏(1都3県)シェア: {share_area:.2f}%')
print(f'その他43道府県シェア: {100-share_area:.2f}%')
print('→ 原論文が背景で述べた「東京圏で全国の約30%」を実データで確認。')

fig, ax = plt.subplots(figsize=(7, 5))
bars = ax.bar(labels, values, color=[C_ORANGE, C_GRAY], width=0.55)
for b, v in zip(bars, values):
    ax.text(b.get_x() + b.get_width() / 2, v + 1, f'{v:.1f}%',
            ha='center', fontsize=13, fontweight='bold')
ax.set_ylim(0, 80)
ax.set_ylabel('全国人口に占める割合[%]')
ax.set_title('図2【実再現】東京圏の人口シェア(実SSDSE-B-2026・2023年)\n'
             '1都3県に全国人口の約3割が集中',
             fontsize=12)
plt.tight_layout()
plt.savefig(f'{FIG_DIR}/2018_U3_fig2.png', bbox_inches='tight')
plt.close()
▼ 実行結果
=== [3] 図2: 東京圏の人口シェア(実再現)===
東京圏(1都3県)シェア: 29.68%
その他43道府県シェア: 70.32%
→ 原論文が背景で述べた「東京圏で全国の約30%」を実データで確認。
  • ④ 実行結果の読み取り:東京圏(1都3県)の人口シェアは29.68%で、国土面積のわずか約3.6%の地域に全国人口の約3割が集中している。② 東京都単独でも11.33%を占める。③ 原論文の「東京圏で全国の約30%」という記述が、現行の実データでもほぼそのまま成り立つことが確認でき、一極集中是正という問題設定の妥当性を支える。
東京圏の人口シェア(実SSDSE-B・2023)
図2:東京圏(東京・神奈川・埼玉・千葉)の人口シェア。実SSDSE-B-2026・2023年・A1101からの実再現:29.68%。原論文が背景で述べた「東京圏で全国の約30%」を実データで確認したもの。
📊 この図の読み方
棒の高さ
全国人口に占める割合(%)。東京圏(1都3県)が29.7%、その他43道府県で70.3%。
面積との対比
1都3県の国土面積は約3.6%。狭い地域に人口が過度に集まっている。
位置づけ
実再現。原論文の「約30%」を実データで裏づける。
3
図3:各シナリオ上位5都市(報告値の可視化)

ここからが原論文の成果である都市圏の中核都市の選定結果だ。素点(等重み)と、地理・経済・生活を重視した3シナリオそれぞれの上位5都市を見る。この総合スコアはGIS距離計算やRESAS経済指標に依存し現行SSDSEで再計算できないため、原論文 表4-2 の順位を転記して可視化する(再計算ではない)。

やってみよう原論文 表4-2 の各シナリオ上位5を表にする【報告値の可視化・図3】
  • ① このコードの目的:原論文 表4-2「中核都市の点数ランキング」の上位5都市を、素点・地理重視・経済重視・生活重視の4列でそのまま転記し、表として可視化する。点数(表4-1)は画像のため扱わず、順位のみを転記して新しい数値は作らない
  • ② 前後のつながり:図1・図2で一極集中という「問題」を実データで確認した。その分散先として原論文が選んだ「答え」がこの表。重みを変えると顔ぶれがどう入れ替わるかを一望する部分。
📝 コード
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
# 原論文 表4-2「中核都市の点数ランキング」の上位5を転記(点数=表4-1は画像のため非収録)。
# 列: 素点(粗点) / 地理重視 / 経済重視 / 生活重視。順位のみを可視化し数値は作らない。
top5 = pd.DataFrame({
    '素点(粗点)': ['前橋市', '金沢市', '高崎市', '高知市', '福島市'],
    '地理重視': ['前橋市', '高知市', '宇都宮市', '高崎市', '川口市'],
    '経済重視': ['宇都宮市', '金沢市', '大分市', '那覇市', '高崎市'],
    '生活重視': ['前橋市', '福島市', '鳥取市', '長崎市', '金沢市'],
}, index=['1位', '2位', '3位', '4位', '5位'])

print('=== [4] 図3: 原論文 表4-2 各シナリオ上位5(報告値の可視化)===')
print(top5.to_string())
print('素点 下位(原論文 5章・低い順): 岡崎市, 大津市, 八尾市, 佐世保市, +同点で明石市・函館市・青森市')

fig, ax = plt.subplots(figsize=(9, 3.6))
ax.axis('off')
tbl = ax.table(cellText=top5.values, rowLabels=top5.index,
               colLabels=top5.columns, cellLoc='center', loc='center')
tbl.auto_set_font_size(False)
tbl.set_fontsize(11)
tbl.scale(1, 1.7)
for j in range(len(top5.columns)):
    tbl[0, j].set_facecolor(C_BLUE)
    tbl[0, j].set_text_props(color='white', fontweight='bold')
ax.set_title('図3【報告値の可視化】原論文 表4-2 各シナリオ上位5都市\n'
             '(AHP+パーセンタイル配点による選定結果。順位のみ転記・再計算ではない)',
             fontsize=12, pad=14)
plt.tight_layout()
plt.savefig(f'{FIG_DIR}/2018_U3_fig3.png', bbox_inches='tight')
plt.close()
▼ 実行結果
=== [4] 図3: 原論文 表4-2 各シナリオ上位5(報告値の可視化)===
   素点(粗点)  地理重視  経済重視 生活重視
1位    前橋市   前橋市  宇都宮市  前橋市
2位    金沢市   高知市   金沢市  福島市
3位    高崎市  宇都宮市   大分市  鳥取市
4位    高知市   高崎市   那覇市  長崎市
5位    福島市   川口市   高崎市  金沢市
素点 下位(原論文 5章・低い順): 岡崎市, 大津市, 八尾市, 佐世保市, +同点で明石市・函館市・青森市
  • ④ 実行結果の読み取り:素点の上位は前橋市・金沢市・高崎市・高知市・福島市。先行研究で候補だった福島市が別指標でも上位に入った点が注目される。② 経済重視では宇都宮市・金沢市・大分市・那覇市・高崎市が並び、原論文によればうち4市で地域経済循環率が100%超。③ 生活重視では鳥取市・長崎市など中国・四国以西が上位に上がり、重視する観点で最適都市が大きく変わることが読み取れる。④ 素点の下位は岡崎市・大津市など大都市圏に近い市(原論文5章)。
各シナリオ上位5都市(原論文 表4-2 の報告値の可視化)
図3:各シナリオ(素点・地理重視・経済重視・生活重視)の上位5中核都市。原論文 表4-2 の順位を転記した報告値の可視化(再計算ではない)。点数(表4-1)は画像のため扱わず、順位のみ。総合スコアはGIS・RESAS由来で現行SSDSE-Bでは再計算できない。
📊 この図の読み方
列=シナリオ
左から素点・地理重視・経済重視・生活重視。重視観点に0.6・他に0.2の重み。
顔ぶれの変化
経済重視は宇都宮・金沢・大分・那覇、生活重視は鳥取・長崎など。観点で最適都市が変わる。
位置づけ
報告値の可視化。順位のみ転記で、点数の再計算・捏造はしていない。
4
図4:シナリオ横断の頑健な候補(報告値の集計)

シナリオごとに上位は入れ替わるが、どのシナリオでも上位に残る都市こそ、重みの置き方に左右されない有力候補といえる。図3の報告順位を横断集計して、各都市が上位5に何回入ったかを数える。

やってみよう図3の報告順位を横断集計し、頑健な候補を数える【報告値の集計・図4】
  • ① このコードの目的:図3の報告値(4シナリオ×上位5都市)をまたいで、各都市が上位5に登場した回数を数える。新しい数値は作らず、報告された順位を数え上げるだけ。3回以上をオレンジで強調する。
  • ② 前後のつながり:図3では観点ごとの違いが目立った。ここでは逆に観点によらず安定して選ばれる都市を浮かび上がらせ、原論文の「複数観点で望ましい都市」という結論を定量的に整理する締めくくり。
📝 コード
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
# 図3の報告値(4シナリオ×上位5)を横断集計。何回上位5に登場したかを数えるだけで、
# 新しい数値は作らない。複数シナリオで頑健に上位となる都市が見える。
from collections import Counter
cnt = Counter()
for col in top5.columns:
    for city in top5[col]:
        cnt[city] += 1
robust = pd.Series(cnt).sort_values(ascending=False)

print('=== [5] 図4: 上位5への登場回数(報告値の集計)===')
print(robust.to_string())

fig, ax = plt.subplots(figsize=(9, 5))
bar_colors = [C_ORANGE if v >= 3 else (C_BLUE if v == 2 else C_GRAY) for v in robust.values]
ax.barh(robust.index, robust.values, color=bar_colors)
ax.invert_yaxis()
ax.set_xlabel('4シナリオ(素点・地理・経済・生活)中で上位5に入った回数')
ax.set_xticks([0, 1, 2, 3, 4])
for i, v in enumerate(robust.values):
    ax.text(v + 0.05, i, str(v), va='center', fontweight='bold')
ax.set_title('図4【報告値の集計】シナリオ横断で上位5に入った回数\n'
             'オレンジ=3回以上(頑健な候補)/原論文 表4-2 の順位を集計・数値は非捏造',
             fontsize=12)
plt.tight_layout()
plt.savefig(f'{FIG_DIR}/2018_U3_fig4.png', bbox_inches='tight')
plt.close()
▼ 実行結果
=== [5] 図4: 上位5への登場回数(報告値の集計)===
前橋市     3
金沢市     3
高崎市     3
高知市     2
福島市     2
宇都宮市    2
川口市     1
大分市     1
那覇市     1
鳥取市     1
長崎市     1
  • ④ 実行結果の読み取り:前橋市・金沢市・高崎市が4シナリオ中3回で最多、重みの置き方に関わらず頑健な候補だと分かる。② 高知市・福島市・宇都宮市が2回で続く。③ 原論文が「福島市は様々な観点で望ましい性質を備える」と評価した点や、前橋・高崎の群馬勢が安定して強い点が、報告値の集計からも裏づけられる。
シナリオ横断で上位5に入った回数(報告値の集計)
図4:4シナリオ(素点・地理・経済・生活)を横断して各中核都市が上位5に入った回数。原論文 表4-2 の報告順位を集計したもの(新しい数値は非捏造)。オレンジ=3回以上の頑健な候補。
📊 この図の読み方
棒の長さ
4シナリオ中で上位5に入った回数。多いほど重みに左右されない有力候補。
頑健な3市
前橋・金沢・高崎が3回。福島・高知・宇都宮が2回で続く。
位置づけ
報告値の集計。図3の順位を数えただけで、点数の再計算・捏造はない。

結果の解釈と考察

著者は表4-1・表4-2の結果から、次のように考察した(原論文5章)。

① 福島市など「複数観点で望ましい都市」がある(原論文 5章)

素点で上位の福島市は、先行研究でも移転先候補に挙がっていた。別の指標を用いた本分析でも上位に入ったことは、同市が地理・経済・生活の様々な観点で望ましい性質を備えることの裏づけだと著者は述べる。前橋・金沢・高崎も複数シナリオで安定して上位だった(本ページ図4)。

② 政令指定都市へのアクセスを重視した結果、候補が広がった(原論文 5章)

先行研究が東京へのアクセスを見たのに対し、本研究は各地方の政令指定都市へのアクセスを考慮した。その結果、関東・東北・中部以外にも候補が現れた。特に四国の高知市は近くに政令指定都市が無いにもかかわらず上位で、著者は「高知市を中心としたネットワークの可能性」を示唆する。

③ 大都市圏に近い都市は総じて下位(原論文 5章)

素点最下位クラスの岡崎市・大津市は、他シナリオでも下位5に入った。生活重視では東京・名古屋・大阪の大都市圏に近い市が下位を占め、大都市圏の過密の影響がうかがえる。著者は「地理環境重視で低い市は総じて全体スコアも低い」とし、アクセスの重要性が他要素へ波及する可能性を指摘した。

より正確な分析のために(補足) これらは選んだ15指標と重みに条件づけられた結果である。審査講評も「結論の妥当性は選択した項目に強く依存する」「項目間の相関を示すべき」「統計モデル的接近も期待」と指摘している。実際、著者自身も指標は独立でなく相互作用していると認め、パーセンタイル配点は順位を1〜4点に粗く丸めるため僅差と大差を同じ1点差にしてしまう。順位・重み・配点区切りの取り方次第でランキングは動きうるため、結論は「一つの有力な見方」として読むのが正確である。

まとめと今後の課題

本研究は、東京一極集中を是正する首都機能の移転先として、どの中核都市がふさわしいかという問いに、AHPとパーセンタイル配点・加重平均で定量的に迫った。54の中核市を地理・経済・生活の15指標で評価し、素点では前橋・金沢・高崎・高知・福島が上位、重視する観点を変えると顔ぶれが入れ替わる一方、前橋・金沢・高崎は複数シナリオで頑健に上位だった。著者は福島市など複数観点で望ましい都市の存在と、政令指定都市アクセスを軸にした候補の広がりを示した。本ページでは、選定スコアは報告値として可視化・集計し、出発点の東京一極集中だけを実SSDSEで実再現して切り分けた。

この研究の限界 ①結論は選んだ15指標と重みに強く依存する(審査講評も指摘)。②指標間の相関・相互作用を統御できておらず、著者自身が多変量解析等の必要性を認める。③本来の目的は「都市圏」の選定だが、活用可能なデータの制約で「都市圏の中心にふさわしい都市」の選出に留まっている。④パーセンタイル配点は順位を粗く丸めるため僅差を反映しにくい。⑤再現面では、選定スコアがGIS・RESAS由来で現行SSDSE-Bに無く、実SSDSEで再現できるのは一極集中の背景(人口・転入・転出)のみ。
この研究から学べること 単位のばらばらな多指標を順位→パーセンタイル配点→加重平均で一本のスコアに集約し、重みを変えたシナリオ比較で頑健な候補を探る発想。そして、報告値の可視化・報告順位の集計・実データの実再現を切り分ける誠実さ。地方創生という重要テーマへの定量的接近と結論のインパクトが評価され、大学生・一般の部・日本統計協会賞に選ばれた。

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

このページの図は、以下から再現できます。

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

※ 図1(転入超過数ランキング)・図2(東京圏の人口シェア)はSSDSE-B-2026から算出した実再現です(2023年)。図3(各シナリオ上位5)は、原論文の都市圏選定スコアが国土数値情報(GIS距離計算)・RESAS(地域経済循環率・財政力指数・不動産取引価格)・市区町村版の国勢調査に由来し現行SSDSE-Bに列が無いため、原論文 表4-2 の順位を転記して可視化したものです。図4はその報告順位をシナリオ横断で集計した値で、新たな数値の捏造はしていません。原論文の点数(表4-1)は画像のため転記せず、順位のみを扱っています。

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

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

誤解1:「素点1位の前橋市が“客観的に最適な移転先”だ」
スコアは選んだ15指標と重みの置き方に条件づけられた結果にすぎない。審査講評も「結論は選択項目に強く依存する」と指摘する。指標や重みを変えれば順位は動く。総合スコアは唯一の正解ではなく前提つきの一つの見方
誤解2:「このページの図3・図4は実SSDSEを計算し直したもの」
図3は原論文 表4-2 の順位を転記した報告値の可視化、図4はそれをシナリオ横断で数えた集計。都市圏選定スコアはGIS距離計算やRESAS経済指標に由来し現行SSDSE-Bに列が無い。実SSDSEから作ったのは図1・図2(東京一極集中の背景)だけで、図注に区別を明記している。
誤解3:「パーセンタイル配点なら公平で厳密だ」
順位を25/50/75パーセンタイルで1〜4点に丸めるため、1位と20位が同じ4点になることもあり、僅差と大差の情報が失われる。順位ベースは外れ値に強い反面、粗い評価になる点に注意。
誤解4:「指標が15個あるから多角的で偏りがない」
指標どうしは独立ではなく相互作用している(著者自身が5章で明言)。例えば地理アクセスが良い都市は経済・生活でも有利になりやすく、似た情報を重複して数えている可能性がある。講評も「項目間の相関を示すべき」と述べる。

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

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

階層分析法(AHP)
目標・評価基準・選択肢を階層構造にし、一対比較で重みを決めて総合評価する意思決定手法。本研究は「地方創生」の下に地理・経済・生活のカテゴリと15指標を階層化した。
加重平均
各項目に重み(重要度)を掛けて平均する方法。本研究は重視する観点に0.6、他の2観点に0.2の重みを付けてシナリオ別スコアを算出した。
パーセンタイル
データを小さい順に並べたとき、下から何%の位置かを表す値。本研究は54市の順位を25/50/75パーセンタイルで区切り、1〜4点に配点した。
再現可能性
他者が同じデータ・手順で同じ結果を得られること。本ページは報告値の可視化・報告順位の集計・実データの実再現を分けて表示している。
SSDSE
統計センターが提供する教育用標準データセット。本ページ図1・図2はSSDSE-B(都道府県・時系列)の総人口・転入・転出を用いた。原論文の都市圏指標は市区町村版・GIS・RESAS由来で現行版に収録が無い。

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

この研究の中心であるAHPと、順位→配点→加重平均によるスコア化を、注意点まで順に説明する。

全体像
54の中核市を対象に、15指標をAHPで階層化 → 各指標の順位をパーセンタイルで1〜4点に配点 → 重視観点0.6・他0.2の加重平均でスコア化 → 素点+3シナリオで順位づけ。予測ではなく「どの都市が移転先にふさわしいか」を多基準で順位づけする意思決定分析である。
🧭 階層分析法(AHP)
何をする
「目標→評価基準→選択肢」を階層に分け、基準どうしの重要度を比較して重みを決め、総合スコアで選択肢を順位づける多基準意思決定手法。
本研究での使い方
「地方創生」を目標に、地理・経済・生活のカテゴリと15指標を階層化し、観点ごとの重みを変えたシナリオで中核市を評価した。
注意
重みの決め方に主観が入り、選ぶ指標で結論が変わる。重みと指標の根拠(なぜそれを選んだか)を明示することが不可欠。
📊 順位→パーセンタイル配点
何をする
単位の異なる指標を比較するため、値ではなく54市中の順位を使い、25/50/75パーセンタイルで区切って1・2・3・4点に変換する。
本研究での使い方
距離(km)・面積(km²)・経済循環率(%)など単位バラバラの15指標を、すべて1〜4点の共通尺度に揃えて合算した。
注意
順位ベースは外れ値に強い反面、僅差も大差も同じ点差になり情報が粗くなる。区切り位置(何パーセンタイルか)で結果が変わる。
⚖️ 加重平均とシナリオ分析
何をする
各項目に重要度(重み)を掛けて合計する。重みを変えた複数シナリオを比べると、結論が前提にどれだけ左右されるか(感度)が分かる。
本研究での使い方
重視する観点に0.6、他2観点に0.2を掛け、地理・経済・生活の3重視シナリオを作って順位の変化を比較した。
注意
重みは分析者が決める前提。1つの重みだけで結論せず、複数シナリオで頑健な候補を見るのが誠実な使い方。
🏙️ 分析対象の設計(中核市54市)
何をする
比較する母集団を明確な基準で決める。ここでは「人口20万人以上の中核市(2018年時点54市)」に統一し、都市規模の条件を揃えた。
本研究での使い方
都市圏の中心を担いうる規模として中核市を選び、政令指定都市は別扱いにして比較の土台を整えた。
注意
対象の選び方で結論が変わる。中核市以外(政令市・特例市)を含めれば別の候補が出る可能性がある点に留意する。

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

この研究の「重視観点で最適都市が変わるが前橋・金沢・高崎は頑健」という発見は、次の研究の出発点になる。

発展1:都市ではなく「都市圏」として評価する
結果X
データの制約で「都市圏の中心にふさわしい都市」の選出に留まった(著者自身の課題)。
新仮説Y
中心都市とその近隣を束ねた「都市圏」として評価すれば、順位は変わるのではないか。
課題Z
中心都市からの距離で近隣都市のスコアを加重平均し、都市圏単位の総合特性を評価する枠組みを作る。
発展2:指標の相関を除いて統計モデルで裏づける
結果X
15指標は相互作用し、順位・重み・配点で結果が動く(講評も相関の提示を要求)。
新仮説Y
指標間の重複を除いた少数の合成軸でも、同じ頑健な候補が選ばれるのか。
課題Z
主成分分析で指標を集約したり、統計モデルで重みを推定して、AHPの主観的重みと比較検証する。

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

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

★☆☆☆☆ 難易度1
別の年の一極集中を見る
図1・図2は2023年。d23 = df[df['SSDSE-B-2026']==2023] の年を 20192020 に変えて、コロナ禍前後で東京圏の転入超過や人口シェアがどう動いたか比べてみよう。
★★☆☆☆ 難易度2
東京圏の定義を変える
tokyo_area のリストに '茨城県' を加える、または '東京都' だけにして、人口シェアが約30%からどう変わるか確かめよう。
★★★☆☆ 難易度3
パーセンタイル配点を実装する
SSDSE-Bの好きな1指標(例:総人口)で47都道府県の順位を作り、pandas.qcut を使って25/50/75パーセンタイルで1〜4点に配点する原論文の手続きを、都道府県版で再現してみよう。
★★★★☆ 難易度4
加重平均でシナリオを作る
配点した複数指標に対し、重視する観点に0.6・他に0.2の重みをかけた加重平均を計算し、重みを変えると都道府県ランキングがどう入れ替わるか(感度)を確かめよう。
★★★★★ 難易度5
なぜ都市圏スコアが実SSDSEで再現できないのか説明する
原論文の総合スコアが、なぜ現行SSDSE-B/A/C/Eで実再現できないのかを、指標が市区町村版・国土数値情報のGIS計算・RESASに由来することと、SSDSE-Bには総人口・転入・転出のような都道府県時系列しか無いことを対比して自分の言葉で説明してみよう。

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

「多基準を重みつきで集約して順位づける」AHP・加重スコアの発想は、行政・ビジネス・生活の意思決定で広く使われている。

🏢
立地・拠点の選定
工場・物流拠点・店舗の候補地を、交通・地価・人口・災害リスクなど多基準で重みづけ評価し、順位づけて選ぶ。本研究と同じ発想。
🏙️
住みやすい街ランキング
自治体を交通・医療・子育て・治安などの指標で配点し加重平均する各種「住みやすさランキング」も、重み次第で順位が変わる同型の手法。
🛒
調達・製品比較
価格・品質・納期・サポートなど複数基準で候補を採点し、重視度で重みづけして選ぶ調達評価やコンペ審査にAHPが使われる。

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

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

Q. なぜ都道府県ではなく「中核市」を対象にしたの?
A. 都市圏は複数都市が協力して大都市機能を担うため、著者は政令指定都市の次に大きい中核市(人口20万人以上・54市)を候補にしました。地方創生の先行研究でも、高度医療などを担う地域として中核都市が対象とされてきたためです。
Q. 素点1位の前橋市が「最適な移転先」と言える?
A. 言えません。スコアは選んだ15指標と重みに依存し、重視する観点を変えれば1位も変わります(図3)。審査講評も「結論は選択項目に強く依存する」と指摘しています。前橋・金沢・高崎が複数シナリオで頑健という読み方が妥当です。
Q. このページの図3・図4は原論文と同じ数値ですか?
A. 図3は原論文 表4-2 の順位を転記した報告値の可視化、図4はそれをシナリオ横断で数えた集計です。原論文の点数(表4-1)は画像のため扱わず順位のみです。実SSDSEから計算したのは図1・図2(東京一極集中の背景)だけで、新たな数値の捏造はしていません。
Q. 都市圏選定スコアはなぜ今のSSDSEで再現できないの?
A. 空港・新幹線駅までの距離(国土数値情報のGIS計算)、地域経済循環率・財政力指数・不動産取引価格(RESAS)、市区町村版の国勢調査といった都道府県時系列のSSDSE-Bに存在しないデータを組み合わせているためです。SSDSE-Bで再現できるのは、出発点の一極集中(人口・転入・転出)だけです。

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

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

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

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

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