論文一覧に戻る 🕸 論文ネットワーク 🗺 用語ネットワーク 統計データ分析コンペ 教育用再現集
2019年度 統計データ分析コンペティション | 統計活用奨励賞 [高校生の部]

日本で暮らす外国人の動向から見た多民族化

⏱️ 推定読了時間: 約35分
大段 利々子(広島大学附属高等学校 2年) | 高校生の部 | 相関分析・散布図・時系列分析
🔬 散布図・回帰直線🔬 時系列分析🔬 相関分析🏷 外国人・国際
🔬 手法タグ / 🏷 応用タグ(クリックで同タグの論文をネットワーク検索)
🔬 再現カルテ — 原論文と同じデータ・同じ手法で再現(一部を除く)

この教材は原論文と同じデータを読み込み、同じ手順で計算し直しています。画面に出る数値と図は、あなたのブラウザがその場で計算した結果です。
⚠ ただし一部は再現していません:福島県の 3 市町村を除外した「人口増減率 × 外国人比率」の相関は、 市町村単位の除外操作が SSDSE では行えないため再現していません。 その行は原論文の報告値です。

原論文が使ったデータSSDSE-A・SSDSE-B・在留外国人統計
分析単位:市区町村
中核手法:相関分析
この教材が使うデータ
原論文(PDF)日本で暮らす外国人の動向から見た多民族化
統計活用奨励賞/
✅ この教材でできること
  • 分析に使うデータは同梱済みで、ブラウザ上でそのまま読み込める
突合監査の結果、主要データと中核手法はいずれも原論文と一致しています。

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

🏅 論文審査会コメント(審査員はここを評価した)
「高等学校で履修する統計技術を用いて、データの特異な変動を発見すると共に、考察も丁寧で、日本に住む外国人の人口の実態や動向を適切に示し、結論には意外性はないが、ち密な展開が行われ論文として読みごたえがある。記載された図のひとつは別のものではないかとの指摘(注)もあったが、大変優秀な論文と評価された。(注:公開版では図を修正済み)」
出典:統計センター「統計データ分析コンペティション」受賞論文PDF掲載の審査講評。プロの審査員が何を評価し、何を注文したかは論文の読み方の最良の手本になる。
📝 3行で分かる要約

目次

  1. 研究概要と背景
  2. データと再現方針(原論文とSSDSE現行版の対応)
  3. 総人口と外国人人口の相関
  4. 事業所数と外国人人口の相関
  5. 人口密度と外国人比率 — 「二極化」の発見
  6. 外国人比率の年次推移と「5年毎のスパイク」
  7. 都道府県別ランキング(塗り分けマップの再表現)
  8. 市町村の財政状況と外国人人口
  9. 結論 — 二極化と地方創生への示唆
  10. 📥 データの準備
  11. 💼 実社会での応用
  12. ⚠️ よくある誤解
  13. 📖 用語集
  14. 📐 手法ガイド
  15. 🚀 発展の可能性
  16. 🎯 自分でやってみよう
  17. 🤔 Q&A
  18. 🐍 ブラウザで動かす

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

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

このページの分析を自分で再現するには、以下の手順でデータを準備してください。コードの編集は不要です。

1
データをダウンロードする 独立行政法人 統計センターの SSDSE(教育用標準データセット)配布ページから、以下の2ファイルをダウンロードします。
SSDSE-A-2025.csv ← SSDSE-A(市区町村データ)📥 直接DL SSDSE-B-2026.csv ← SSDSE-B(都道府県・時系列データ)📥 直接DL
⬇ SSDSEダウンロードページを開く
2
ファイルを所定のフォルダに配置する ダウンロードしたCSVを、プロジェクトの data/raw/ フォルダに入れます。
2026 統計・データ解析コンペ/ ├── code/ │ └── 2019_H4_katsuyo.py ← 実行するスクリプト └── data/ └── raw/ SSDSE-A-2025.csv ← ここに置く SSDSE-B-2026.csv ← ここに置く
3
スクリプトをそのまま実行する ターミナルでプロジェクトルートに移動し、以下を実行します。
python3 code/2019_H4_katsuyo.py
図は html/figures/ に自動保存されます。
研究概要と背景

日本人の人口が減少を続ける一方で、日本に暮らす外国人は増加している。法務省の統計では、総人口に占める在留外国人の割合は2019年に2%を超えた。著者は「多民族化が人口問題解決の鍵になる」という仮説の下、SSDSE(教育用標準データセット)のSSDSE-2019A(市区町村)とSSDSE-2019B(都道府県・時系列)から人口・地方経済関連のデータを抽出し、外国人人口・外国人比率と各種地域指標の相関分析を行った。

著者は夏に「AIG高校生外交官渡米プログラム」で約3週間アメリカに滞在し、移民国家の多様性を肌で感じた経験からこの問いを立てた。「増加する外国人は、人口減少の歯止めになっているのか? 外国人割合の地域格差はどんな要因と関連しているのか?」——コンビニで外国人店員を見かけるという日常の実感を、公的統計で定量的に検証していく。

論文の概要(コンペ公式の紹介文より) 多民族化が人口問題解決の鍵になるという仮説の下、SSDSEから人口、地方経済関連データを抽出して相関分析を行った。その結果、外国人比率の高い地域が都市部と地場産業を有する地方とに二極化していることなどを示し、新たな産業の展開が外国人の増加、地方創生につながる可能性を指摘している。
論文審査会コメント(要旨) 高等学校で履修する統計技術を用いて、データの特異な変動を発見すると共に、考察も丁寧で、日本に住む外国人の人口の実態や動向を適切に示している。結論には意外性はないが、ち密な展開が行われ論文として読みごたえがある——と評価された(公開版では図の一部が修正済みである旨の注記あり)。
分析の流れ
SSDSE-2019A/B
市区町村+
都道府県時系列
散布図+
相関係数
(CORREL)
塗り分けマップ
・時系列
折れ線
ヒストグラムで
分布確認
二極化の発見
・地方創生
への示唆

SSDSE-A(市区町村) SSDSE-B(都道府県・時系列) 相関分析 散布図・回帰直線 塗り分けマップ・時系列

データと再現方針(原論文とSSDSE現行版の対応)

原論文が使ったデータ

データ内容原論文での用途
SSDSE-2019A市区町村別データ(2016年前後の公的統計)総人口・外国人人口・事業所数・生産年齢人口・人口密度・市町村財政指標の相関分析
SSDSE-2019B都道府県別・時系列データ(2005–2016年)外国人比率の年次推移。外国人人口=総人口−日本人人口として算出
法務省「在留外国人統計」(e-Stat国籍・地域別の在留外国人数地域別在留外国人の割合と推移(円グラフ・棒グラフ)

主な変数の定義(原論文と同じ)

外国人比率 = 外国人人口 ÷ 総人口 × 10000 (人/1万人)
生産年齢人口比率 = 15〜64歳人口 ÷ 総人口 × 100 (%)
人口増減率 = (出生数+転入数−死亡数−転出数)÷ 総人口 × 100 (%)
外国人人口(都道府県・時系列) = 総人口 − 日本人人口

本ページの再現方針(トリアージ)

原論文の忠実な再現について
原論文はSSDSE-2019A/2019B(2016年前後のデータ)を使用しています。本ページは現行版 SSDSE-A-2025(2020年国勢調査ベース)・SSDSE-B-2026(2012–2023年)で同じ分析を再実行し、原論文の報告値と本再現の値を並記します。原論文と同一定義で再現できない分析は、「原論文の報告値」であることを明示した表で提示します(新しい数値の捏造はしません)。
原論文の分析本ページでの扱い
図1:総人口×外国人人口(散布図・相関)実データ再現(図1
図2:事業所数×外国人人口実データ再現(図2
図3:人口増減率×外国人比率原論文の報告値のみ(現行SSDSE-Aの転入・転出は「日本人移動者」のみで同一定義の再現が不可)
図4:生産年齢人口比率×外国人比率相関係数を実データで再計算(下表)
図5:都道府県別外国人比率の塗り分けマップ同一指標をランキング棒グラフで再表現(図5)。地図は原論文参照
図6・図7:外国人比率の年次推移(2005–2016)実データ再現(図4、2012–2023年)
図8:経常収支比率・実質公債費比率×外国人人口実データ再現(図6
図9・表1:人口密度×外国人比率、上位市町村実データ再現(図3
図10・図11:外国人比率の平均±標準偏差・ヒストグラム本文・チャレンジ課題で解説(グラフは原論文参照)
図12:地域別在留外国人の割合(e-Stat)原論文の報告値を表で提示(SSDSE未収録。グラフは原論文参照)

原論文が報告した相関係数と本再現の対照表

相関係数はすべて Excel の CORREL 関数(=Pearsonの相関係数)による。「原論文」列は原論文の報告値(2016年データ)、「再現」列は本ページがSSDSE-A-2025(2020年)で再計算した値である。

変数の組市区町村都道府県
原論文の報告値本再現(2020年)原論文の報告値本再現(2020年)
総人口 × 外国人人口0.8790.8820.9320.949
事業所数 × 外国人人口0.8990.8970.9530.959
人口増減率 × 外国人比率0.276(福島県の3市町村を除外)再現不可※0.684再現不可※
生産年齢人口比率 × 外国人比率0.3800.4190.6630.748
人口密度 × 外国人比率0.3650.3410.6570.577
※ SSDSE-A-2025の転入者数・転出者数は「日本人移動者」のみのため、原論文の定義(外国人を含む増減率)では再計算できない。
再現の一致度 4年違うデータ(2016年→2020年)でも、相関係数は最大0.09程度の差に収まり、「人口・事業所数と外国人人口の強い正の相関」「比率どうしでは中程度の相関」という原論文の結論はすべて追認できた。市区町村より都道府県の方が相関が強く出る点(集計単位の効果)も同じである。
1
総人口と外国人人口の相関

まず「人口の多い地域ほど外国人も多いのか」を確かめる。原論文は市区町村・都道府県の2つの集計レベルで散布図を描き、回帰直線を添えた(原論文 図1)。

市区町村・都道府県の総人口と外国人人口の散布図
図1【実データ再現】:市区町村(左)・都道府県(右)の総人口と外国人人口(SSDSE-A-2025・2020年国勢調査)。原論文 図1(2016年データ)の再現。原論文の報告値は r = 0.879(市町村)・0.932(都道府県)、回帰直線は y=0.0182x−0.3232(R²=0.7732)・y=0.0221x−22.534(R²=0.8686)。
📌 この散布図の読み方
このグラフは
横軸に総人口、縦軸に外国人人口をとり、1点=1市区町村(左)または1都道府県(右)を打った散布図
読み方
点が右上がりに並ぶほど「人口が多い地域ほど外国人も多い」。破線は回帰直線で、r(相関係数)が1に近いほど直線への集まりが強い。
なぜそう解釈できるか
r = 0.88〜0.95 は「非常に強い正の相関」。ただし人数どうしの相関は地域の規模(人口)に引きずられて大きく出やすい点に注意(後の図3では「比率」で規模の影響を除く)。
読み取りポイント
  • 原論文の報告値:相関係数は市町村 0.879、都道府県 0.932 —「高い正の相関」
  • 本再現(2020年):市区町村 r = 0.882、都道府県 r = 0.949 でほぼ一致
  • 右パネルでは東京都が突出。回帰直線の傾き(約0.02〜0.03)は「人口1000人あたり外国人20〜30人」に相当する
  • 原論文は、SSDSEには在留資格(永住者・特別永住者・留学・技能実習など)の内訳がないため、全外国人を包括して解析すると明記している
やってみよう図1:SSDSE-A(市区町村)を読み込み、相関係数を原論文の報告値と比較する
📝 コード
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
import pandas as pd

# SSDSE-A: 1行目=項目コード、2行目=データ年度、3行目=日本語項目名
df_a = pd.read_csv('data/raw/SSDSE-A-2025.csv', encoding='cp932', header=2)
df_a = df_a[df_a['市区町村'].notna()].copy()

# 派生変数(原論文と同じ定義)
df_a['外国人比率'] = df_a['外国人人口'] / df_a['総人口'] * 10000   # 1万人あたり
df_a['生産年齢人口比率'] = df_a['15~64歳人口'] / df_a['総人口'] * 100
df_a['人口密度'] = df_a['総人口'] / (df_a['総面積(北方地域及び竹島を除く)'] / 100)

# 都道府県レベル=市区町村を合算
df_p = df_a.groupby('都道府県', as_index=False)[
    ['総人口', '外国人人口', '15~64歳人口', '事業所数(民営)']].sum()

# 相関係数(Excel の CORREL と同じ Pearson の r)
r_muni = df_a['総人口'].corr(df_a['外国人人口'])
r_pref = df_p['総人口'].corr(df_p['外国人人口'])
print(f"総人口×外国人人口: 市区町村 r={r_muni:.3f} / 都道府県 r={r_pref:.3f}")
print("原論文の報告値   : 市町村   r=0.879 / 都道府県 r=0.932")
▼ 実行結果
SSDSE-A-2025: 1741 市区町村

=== 相関係数の比較(原論文2016年データ → 本再現2020/2021年データ) ===
変数の組                           原論文·市町村    再現·市町村  原論文·都道府県   再現·都道府県
総人口×外国人人口                        0.879     0.882     0.932     0.949
事業所数×外国人人口                       0.899     0.897     0.953     0.959
生産年齢人口比率×外国人比率                   0.380     0.419     0.663     0.748
人口密度×外国人比率                       0.365     0.341     0.657     0.577
💡 解説
  • header=2 — SSDSE-Aは先頭2行がコードと年度なので、3行目を列名として読み込みます。
  • .corr() — pandasの相関係数はExcelの CORREL 関数と同じPearsonの r。原論文はExcelで計算しましたが、結果は同等です。
  • groupby('都道府県').sum() — 市区町村を県単位に合算して「都道府県レベル」を作ります。原論文もSSDSE-2019Aから都道府県別データを集計しています。
💡 Python TIPS 相関係数は単位に依存しないので、人口を千人単位に変換してもrは変わりません。一方、回帰直線の傾きや切片は単位で変わります。
2
事業所数と外国人人口の相関

外国人の主な在留目的は就労・就学・研修である。そこで「働く場所の多さ」を表す事業所数(商店・工場・事務所・学校・病院など、経済活動を行う場所的単位)と外国人人口の関係を調べた(原論文 図2)。

市区町村・都道府県の事業所数と外国人人口の散布図
図2【実データ再現】:市区町村(左)・都道府県(右)の事業所数(民営・2021年経済センサス)と外国人人口(2020年国勢調査)。原論文 図2(2016年データ)の再現。原論文の報告値は r = 0.899(市町村)・0.953(都道府県)、回帰直線は y=0.3981x−0.2942(R²=0.8084)・y=0.5231x−26.025(R²=0.9084)。
読み取りポイント
  • 原論文の報告値:市町村 r = 0.899、都道府県 r = 0.953。総人口との相関よりわずかに強い
  • 本再現(2020/2021年):市区町村 r = 0.897、都道府県 r = 0.959 — 4年後のデータでも符号・水準ともに一致
  • 原論文はこの結果を「生産性を期待された外国人が、経済活動の場が多い地域に暮らしている」ことの表れと解釈している
  • ただし事業所数も総人口も「地域の規模」を表すため互いに強く相関する。見かけの相関の可能性はこの後の「比率」の分析で検討される

DS LEARNING POINT 1

「実数どうしの相関」と「比率どうしの相関」を使い分ける

人数×人数の相関(図1・図2:r ≈ 0.9)は地域の規模に引きずられて大きく出る。一方、規模の影響を除いた比率どうし(生産年齢人口比率×外国人比率:r = 0.380/0.663、人口密度×外国人比率:r = 0.365/0.657 — いずれも原論文の報告値)では相関は中程度に下がる。原論文はこの2段構えで「規模の効果」と「構造の効果」を区別しており、これは地域データ分析の基本作法である。

# 実数どうし → 規模に引きずられ r が大きく出る r1 = df['総人口'].corr(df['外国人人口']) # ≈ 0.88 # 比率どうし → 規模の影響を除いた「構造」の関係 df['外国人比率'] = df['外国人人口'] / df['総人口'] * 10000 r2 = df['生産年齢人口比率'].corr(df['外国人比率']) # ≈ 0.4
やってみよう図2:散布図+回帰直線を市区町村・都道府県の2パネルで描く
📝 コード
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
import numpy as np
import matplotlib.pyplot as plt

def scatter_two(dm, dp, x, y, xlab, ylab, title, fname, xdiv=1000, ydiv=1000):
    fig, axes = plt.subplots(1, 2, figsize=(12.5, 5.4))
    for ax, d, name in [(axes[0], dm, '市区町村'), (axes[1], dp, '都道府県')]:
        dd = d[[x, y]].dropna()
        xs, ys = dd[x] / xdiv, dd[y] / ydiv
        r = dd[x].corr(dd[y])
        ax.scatter(xs, ys, s=26, color='#3F6BB5', alpha=0.55)
        m, b = np.polyfit(xs, ys, 1)              # 回帰直線(1次式)
        xr = np.linspace(xs.min(), xs.max(), 100)
        ax.plot(xr, m * xr + b, 'k--', linewidth=1.4)
        ax.set_title(f'{name}(n={len(dd)})  r = {r:.3f},  R² = {r**2:.3f}')
        ax.set_xlabel(xlab); ax.set_ylabel(ylab)
    fig.suptitle(title, fontweight='bold')
    fig.savefig(fname, bbox_inches='tight')

scatter_two(df_a, df_p, '事業所数(民営)', '外国人人口',
            '事業所数(千事業所)', '外国人人口(千人)',
            '図2(再現):事業所数と外国人人口', '2019_H4_fig2.png')
▼ 実行結果
2019_H4_fig1.png saved.
2019_H4_fig2.png saved.
💡 解説
  • np.polyfit(xs, ys, 1) — 1次の多項式(=直線)を最小二乗法でフィット。Excelの散布図に「近似曲線(線形)」を追加する操作に対応します。
  • r**2 — 単回帰では決定係数R²は相関係数rの2乗。原論文が図中に示した「R²」と同じ量です。
  • 市区町村と都道府県を同じ関数で並べて描くことで、集計単位による違いが一目で比較できます。
💡 Python TIPS 同じ形式の図を何枚も作るときは関数化が鉄則。「コピペで6枚」はミスの温床です。
3
人口密度と外国人比率 — 「二極化」の発見

本論文のハイライト。人口が増加し生産年齢人口が多い地域は人口密度も高いはず——と予測して人口密度×外国人比率の散布図を描いたところ、確かに正の相関(原論文の報告値:市町村 0.365、都道府県 0.657)はあるものの、人口密度が低いのに外国人比率が極めて高い市町村が見つかった(原論文 図9・表1)。

人口密度と外国人比率の散布図(市区町村・都道府県)
図3【実データ再現】:人口密度と外国人比率(SSDSE-A-2025・2020年)。原論文 図9の再現。赤点は外国人比率上位5市町村。原論文(2016年)の上位3は 1位 川上村・2位 大泉町・3位 南牧村で、2020年データでも同じ顔ぶれが上位を占める。原論文の報告値は r = 0.365(市町村)・0.657(都道府県)。

外国人比率が高い市町村ランキング(原論文 表1 との対照)

順位原論文の報告値(2016年)本再現(2020年国勢調査)
市区町村外国人比率(/1万人)市区町村外国人比率(/1万人)
1長野県 川上村1575.86長野県 川上村1899.17
2群馬県 大泉町1464.01群馬県 大泉町1756.28
3長野県 南牧村1255.87長野県 南牧村1394.20
4東京都 新宿区914.56北海道 占冠村1110.26
5東京都 豊島区765.16東京都 豊島区847.91
6東京都 港区703.62埼玉県 蕨市847.17
7東京都 台東区696.46岐阜県 美濃加茂市818.85
8東京都 荒川区686.69茨城県 常総市781.64
9岐阜県 美濃加茂市640.26東京都 新宿区778.97
10岐阜県 坂祝町597.42東京都 荒川区773.15
読み取りポイント:なぜこの村・町なのか(原論文の考察)
  • 長野県 川上村・南牧村:日本一のレタス産地など高原野菜の農業地帯。労働力を外国人技能実習生が支える。IoTを活用した「スマート農業」の推進でも注目される
  • 群馬県 大泉町:大手メーカーの工場が集まる製造業の町。日系人の在留資格優遇(就労制限なし)を背景に平成以降外国人が急増
  • 東京都 新宿区・豊島区など:大学・専門学校や就職を背景とした都市型の外国人集住
  • → 外国人比率の高い地域は「大都市」と「地場産業をもつ地方」に二極化している——本論文の中心的発見
  • 本再現(2020年)では上位3位の顔ぶれが原論文と完全に一致し、比率はさらに上昇。占冠村(リゾート)や蕨市・常総市など新顔も現れ、二極化の進行がうかがえる

DS LEARNING POINT 2

外れ値は「除外する対象」ではなく「発見の入口」

相関係数 r = 0.34 という「弱い相関」だけを見て終わらず、散布図の左上に浮かぶ外れ値(低密度・高外国人比率)に注目し、その市町村名を特定して産業構造まで調べたことが、この論文を「読みごたえがある」と評価させた核心である。審査会コメントの「データの特異な変動を発見」もこの姿勢を指している。

# 外れ値の正体を特定する:上位10市町村を表示 top10 = df_a.nlargest(10, '外国人比率')[['都道府県', '市区町村', '外国人比率']] print(top10) # → 川上村・大泉町・南牧村…と「名前」で確認して考察につなげる
やってみよう図3:外国人比率の上位市町村を特定し、散布図に名前を書き込む
📝 コード
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
top10 = df_a.nlargest(10, '外国人比率')[
    ['都道府県', '市区町村', '外国人比率', '総人口', '人口密度']]
for i, (_, row) in enumerate(top10.iterrows(), 1):
    print(f"{i:>2}. {row['都道府県']} {row['市区町村']:<8} "
          f"{row['外国人比率']:>8.2f} /1万人")

# 散布図の上位5点に市町村名を注記
dd = df_a[['人口密度', '外国人比率', '市区町村']].dropna()
top5 = dd.nlargest(5, '外国人比率')
for _, row in top5.iterrows():
    ax.annotate(row['市区町村'], (row['人口密度'], row['外国人比率']),
                xytext=(6, 2), textcoords='offset points',
                fontsize=9, color='#C62828', fontweight='bold')
▼ 実行結果
=== 外国人比率が高い市区町村 上位10(2020年・本再現) ===
 1. 長野県 川上村       1899.17 /1万人  (人口密度    20.7 人/km2)
 2. 群馬県 大泉町       1756.28 /1万人  (人口密度  2334.4 人/km2)
 3. 長野県 南牧村       1394.20 /1万人  (人口密度    24.4 人/km2)
 4. 北海道 占冠村       1110.26 /1万人  (人口密度     2.3 人/km2)
 5. 東京都 豊島区        847.91 /1万人  (人口密度 23182.1 人/km2)
 6. 埼玉県 蕨市         847.17 /1万人  (人口密度 14536.8 人/km2)
 7. 岐阜県 美濃加茂市      818.85 /1万人  (人口密度   757.8 人/km2)
 8. 茨城県 常総市        781.64 /1万人  (人口密度   492.0 人/km2)
 9. 東京都 新宿区        778.97 /1万人  (人口密度 19175.9 人/km2)
10. 東京都 荒川区        773.15 /1万人  (人口密度 21405.0 人/km2)
2019_H4_fig3.png saved.
💡 解説
  • nlargest(10, '外国人比率') — 指定列の上位n行を取り出す。並べ替え+先頭切り出しより速くて読みやすい定番です。
  • ax.annotate(...) — 散布図の点に市町村名などのラベルを付けます。外れ値の「正体」を図の中で示すのは伝わる図の必須テクニック。
  • 川上村(密度20人/km²)と豊島区(密度2.3万人/km²)が同じ「高外国人比率」側に並ぶ——これが二極化の直感的な意味です。
💡 Python TIPS f"{x:>8.2f}" は「右詰め8桁・小数2桁」。表形式のprint出力を揃えると確認ミスが減ります。
4
外国人比率の年次推移と「5年毎のスパイク」

SSDSE-B(都道府県・時系列)には外国人人口の項目がない。原論文は「外国人人口=総人口−日本人人口」という工夫でこれを算出し、2005〜2016年の外国人比率の推移を折れ線グラフにした(原論文 図6)。すると大多数の都道府県で緩やかな増加に加え、2005・2010・2015年と5年毎に急峻で一時的な増加という奇妙なパターンが現れた。

都道府県別外国人比率の年次推移(2012-2023年)
図4【実データ再現】:都道府県別 外国人比率の年次推移(SSDSE-B-2026・2012–2023年、外国人人口=総人口−日本人人口)。原論文 図6・図7(2005–2016年)の再現。原論文が2005・2010・2015年に発見したスパイクが、本再現でも2015・2020年(国勢調査年、点線)に再現される。色付き線は原論文が図7で個別に追った東京都・群馬県・広島県。
📌 この折れ線グラフの読み方
このグラフは
47本の線=47都道府県の外国人比率(1万人あたり)の時系列
読み方
全体として右肩上がり(外国人比率は増加傾向)だが、2015年・2020年だけ全県一斉に跳ね上がり、翌年に戻る。
なぜそう解釈できるか
全県で同時に起きる変動は、実態の急変ではなく調査・定義の切り替わりを疑うのが筋。国勢調査年は「総人口−日本人人口」に国籍不詳者などが含まれ、推計年と定義がずれる。
読み取りポイント(原論文の考察と本再現)
  • 原論文の発見:日本人人口は5年毎に一時的に低下し、外国人人口は一時的に増加。総人口には5年毎の急変がない → 差し引きで作った「外国人人口」にだけスパイクが出る
  • 原論文の仮説:5年区切りの年は国勢調査の年に当たるため、日本人と外国人の定義(例:無国籍・国籍不詳の扱い)が他の年の推計と異なる可能性がある
  • 本再現でも確認:全国計の外国人比率は 2014年131.5 → 2015年221.2 → 2016年155.4、2019年210.7 → 2020年365.0 → 2021年216.7 と、国勢調査年だけ跳ねる
  • 審査会が称えた「データの特異な変動の発見」がまさにこれ。グラフの異常を「作図ミス」と流さず、調査制度から説明した点が高く評価された

DS LEARNING POINT 3

「差し引きで作った変数」は定義の切れ目に敏感

外国人人口=総人口−日本人人口という導出変数は、引き算する2系列の定義が揃っている限り有効だが、国勢調査年(実測)と推計年で「日本人人口」の扱いが変わると、その差分に不連続が集中して現れる。導出変数を使うときは元系列の出典・定義の切り替わり年を必ず確認しよう。原論文は「5年毎の調査基準は共通なので、5年おきの比較(2005 vs 2010 vs 2015)なら経年比較が可能」と整理し、図10・図11の分析につなげている。

df_b['外国人人口'] = df_b['総人口'] - df_b['日本人人口'] # 導出変数 # 国勢調査年(2015・2020)は実測、他の年は人口推計 → 定義の切れ目に注意
やってみよう図4:SSDSE-Bから外国人比率の時系列を作り、スパイクを確認する
📝 コード
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
df_b = pd.read_csv('data/raw/SSDSE-B-2026.csv', encoding='cp932', header=1)
df_b = df_b[df_b['都道府県'] != '全国'].copy()

# 原論文と同じ算出方法:外国人人口 = 総人口 − 日本人人口
df_b['外国人人口'] = df_b['総人口'] - df_b['日本人人口']
df_b['外国人比率'] = df_b['外国人人口'] / df_b['総人口'] * 10000

# 年×都道府県の表に変換して47本の折れ線を描く
pivot = df_b.pivot_table(index='年度', columns='都道府県', values='外国人比率')

# 全国計でスパイクを数値確認
nat = df_b.groupby('年度')[['総人口', '日本人人口']].sum()
nat['外国人比率'] = (nat['総人口'] - nat['日本人人口']) / nat['総人口'] * 10000
for y in nat.index:
    mark = ' ←国勢調査年' if y in (2015, 2020) else ''
    print(f"  {y}: {nat.loc[y, '外国人比率']:>6.1f}{mark}")
▼ 実行結果
=== 国勢調査年スパイクの確認(全国計・外国人比率 /1万人) ===
  2012:  123.0
  2013:  126.5
  2014:  131.5
  2015:  221.2 ←国勢調査年
  2016:  155.4
  2017:  171.3
  2018:  189.2
  2019:  210.7
  2020:  365.0 ←国勢調査年
  2021:  216.7
  2022:  233.2
  2023:  254.0
2019_H4_fig4.png saved.
💡 解説
  • pivot_table(index='年度', columns='都道府県') — 縦持ちデータを「年×県」の表に組み替えると、そのまま47本の折れ線が描けます。
  • スパイクの年(2015・2020)が原論文(2005・2010・2015)とちょうど5年周期でつながっている点に注目。原論文の発見は10年後のデータでも再現される構造的な現象だと分かります。
  • トレンド自体も 123 → 254(/1万人)と約2倍になっており、「多民族化の進行」という原論文の大きな見立ても追認できます。
💡 Python TIPS groupby('年度').sum() で全国計を作ってから比率を計算すること。県別比率の単純平均は人口の重みを無視した別物になります。
5
都道府県別ランキング(塗り分けマップの再表現)

原論文はExcelの「塗り分けマップ」機能で2016年の都道府県別外国人比率を日本地図上に可視化した(原論文 図5、値域26.35〜280.10人/1万人)。本ページでは同一指標をランキング棒グラフとして再表現する(地図そのものは原論文を参照)。

都道府県別外国人比率ランキングの棒グラフ
図5【実データ再現・再表現】:都道府県別 外国人比率(SSDSE-A-2025・2020年国勢調査)。原論文 図5は塗り分けマップ。本図は同一指標をランキング棒グラフで再表現したもの。原論文の報告(2016年)では1位東京都・2位愛知県・3位群馬県・4位岐阜県・5位三重県・6位大阪府、18位広島県、47位青森県。
読み取りポイント
  • 原論文の報告値(2016年):1位 東京都、2位 愛知県、3位 群馬県、4位 岐阜県、5位 三重県、6位 大阪府 … 18位 広島県 … 47位 青森県
  • 本再現(2020年):1位 東京都 344.1、2位 愛知県 306.8、3位 群馬県 275.5、4位 三重県 252.6、5位 岐阜県 247.5 … 17位 広島県 170.5、47位 秋田県 38.1 — 上位の顔ぶれはほぼ不変
  • 上位は関東・甲信越・東海・関西に集中し、原論文が指摘した地域偏在がそのまま確認できる。愛知・群馬・岐阜・三重は製造業集積地であり、「働き場所」との結びつきを裏付ける
  • 著者の地元・広島県は中位(18位→17位)。原論文はこの「1位・3位・中位」の対比で東京都・群馬県・広島県を図7の個別分析に選んだ
やってみよう図5:都道府県ランキングを計算し、原論文の順位と比べる
📝 コード
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
df_p['外国人比率'] = df_p['外国人人口'] / df_p['総人口'] * 10000
rank = df_p.sort_values('外国人比率', ascending=False).reset_index(drop=True)

for i in range(6):
    print(f"{i+1}{rank.loc[i, '都道府県']} {rank.loc[i, '外国人比率']:.1f}")
hiro = rank.index[rank['都道府県'] == '広島県'][0] + 1
print(f"…{hiro}位 広島県、47位 {rank.loc[46, '都道府県']}")

# ランキング棒グラフ(塗り分けマップの代替表現)
fig, ax = plt.subplots(figsize=(13.5, 6))
ax.bar(range(47), rank['外国人比率'])
ax.set_xticks(range(47))
ax.set_xticklabels(rank['都道府県'], rotation=60, ha='right', fontsize=8.5)
▼ 実行結果
=== 都道府県別外国人比率ランキング(2020年・本再現) ===
1位 東京都 344.1
2位 愛知県 306.8
3位 群馬県 275.5
4位 三重県 252.6
5位 岐阜県 247.5
6位 静岡県 236.8
…17位 広島県 170.5、47位 秋田県 38.1
2019_H4_fig5.png saved.
💡 解説
  • sort_values(..., ascending=False) — 降順に並べ替え。reset_index(drop=True) で0始まりの順位インデックスに振り直します。
  • 塗り分けマップは「どこか」が伝わる反面、面積の大きい県が目立ちすぎて順位や差の大きさが読めない弱点があります。ランキング棒グラフは順位と水準差を正確に伝える補完表現です。
  • 2016年→2020年で4位と5位(岐阜・三重)が入れ替わった程度で、構造は安定しています。
💡 Python TIPS 地図表現をPythonでやるなら geopandas+国土数値情報の県境ポリゴンが定番。ただしまず棒グラフ・散布図で数値を固めてからにしましょう。
6
市町村の財政状況と外国人人口

外国人が多い市町村は財政的にどんな地域か。原論文は外国人比率ランキング1位・3位・中位の東京都・群馬県・広島県を取り上げ、市町村の経常収支比率(財政構造の弾力性を示す指標。一般に70〜80%が適正水準とされ、高いほど財政の自由度が低い)と実質公債費比率(収入に対する借金返済の割合)に対して外国人人口の散布図を描いた(原論文 図8)。

東京都・群馬県・広島県の市町村における経常収支比率・実質公債費比率と外国人人口
図6【実データ再現】:東京都・群馬県・広島県の市町村における経常収支比率(上段)・実質公債費比率(下段)と外国人人口(SSDSE-A-2025、財政指標2021年・外国人人口2020年)。原論文 図8(2016年前後)の再現。各パネルに本再現の r と原論文の報告値 r を併記

相関係数:原論文の報告値と本再現の対照

指標原論文の報告値本再現(2020/2021年)
経常収支比率 × 外国人人口東京都−0.365−0.297(n=62)
群馬県−0.268+0.320(n=35)符号逆転
広島県−0.164+0.215(n=23)符号逆転
実質公債費比率 × 外国人人口東京都−0.440−0.673(n=62)
群馬県−0.391−0.271(n=35)
広島県−0.011−0.168(n=23)
読み取りポイント
  • 原論文の結論:東京都と群馬県では経常収支比率・実質公債費比率が高い(=財政が苦しい)市町村ほど外国人人口が少ない。首都圏では財務状況が良好な地域に外国人が多く暮らすが、地方都市(広島県)ではその傾向は認められない
  • 本再現:東京都の負の相関は追認(実質公債費比率では −0.673 とむしろ強い)。一方、群馬・広島の経常収支比率は符号が逆転した。n が23〜35と小さい県レベルの弱い相関は年次でぶれやすい——という教訓も得られる
  • 原論文自身も広島県では r ≈ −0.16/−0.01 と「傾向なし」に近い値を報告しており、「相関が弱い場合は結論を限定する」誠実な書き方をしている
やってみよう図6:3県×2指標の相関係数を計算し、原論文の報告値と比べる
📝 コード
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
prefs3 = ['東京都', '群馬県', '広島県']
orig_keijo = {'東京都': -0.365, '群馬県': -0.268, '広島県': -0.164}  # 原論文の報告値
orig_saimu = {'東京都': -0.440, '群馬県': -0.391, '広島県': -0.011}  # 原論文の報告値

for pref in prefs3:
    d = df_a[df_a['都道府県'] == pref]
    for xcol, orig in [('経常収支比率(市町村財政)', orig_keijo),
                       ('実質公債費比率(市町村財政)', orig_saimu)]:
        dd = d[[xcol, '外国人人口']].dropna()
        r = dd[xcol].corr(dd['外国人人口'])
        print(f"  {pref} {xcol[:7]}×外国人人口: "
              f"原論文 {orig[pref]:+.3f} → 再現 {r:+.3f} (n={len(dd)})")
▼ 実行結果
=== 市町村財政と外国人人口の相関(原論文の報告値 → 本再現) ===
  東京都 経常収支比率×外国人人口: 原論文 -0.365 → 再現 -0.297 (n=62)
  東京都 実質公債費比率×外国人人口: 原論文 -0.440 → 再現 -0.673 (n=62)
  群馬県 経常収支比率×外国人人口: 原論文 -0.268 → 再現 +0.320 (n=35)
  群馬県 実質公債費比率×外国人人口: 原論文 -0.391 → 再現 -0.271 (n=35)
  広島県 経常収支比率×外国人人口: 原論文 -0.164 → 再現 +0.215 (n=23)
  広島県 実質公債費比率×外国人人口: 原論文 -0.011 → 再現 -0.168 (n=23)
2019_H4_fig6.png saved.
💡 解説
  • dropna() — 財政指標は特別区や一部町村で欠損があるため、相関計算の前に除外します。nを必ず出力して「何自治体で計算したか」を明示しましょう。
  • 符号が逆転した群馬・広島の経常収支比率は、原論文でも |r| < 0.3 の弱い相関。弱い相関は再現でひっくり返り得る——これは統計リテラシーの重要な実地教材です。
  • コロナ禍の地方財政対策(2021年度は交付金増で経常収支比率が全国的に改善)も、原論文の時期との違いとして考えられます。
💡 Python TIPS 辞書に「原論文の報告値」を持たせて再現値と並べてprintする形にすると、突き合わせ漏れがなくなります。

結論 — 二極化と地方創生への示唆

原論文の主要な発見(原論文の報告値・解釈)

  1. 外国人は「人口が多い・働き場所が多い・人口増加率と生産年齢人口比率が高い・財務状況が良好な」地域に集中:総人口(r=0.879/0.932)・事業所数(r=0.899/0.953)との強い正の相関、人口増減率(0.276/0.684)・生産年齢人口比率(0.380/0.663)との正の相関(いずれも原論文の報告値)。都道府県別では関東・甲信越・東海・関西中心の地域偏在。
  2. 外国人比率の高い地域は二極化している:経済・産業基盤や学校の豊富な大都市(新宿区・豊島区など)と、人口密度が低いのに外国人比率が極めて高い地方(川上村・大泉町・南牧村など)。後者は高原野菜・製造業という地場産業の労働力を外国人が支える地域である。
  3. 時系列には国勢調査年の特異な変動がある:外国人比率は2005〜2016年で緩やかに増加する一方、5年毎(国勢調査年)に急峻な一時的増加が現れる。調査集計における日本人・外国人の定義差が原因と考察。
  4. 2016年の地域別在留外国人はアジアが83%(原論文の報告値、e-Stat「在留外国人統計」より):中国・韓国・ベトナム・フィリピン・ネパール・インドネシアなど多彩で、2012年以降増加を続けている。

地域別在留外国人の割合(原論文 図12 の報告値)

地域アジア南米ヨーロッパ北米その他(アフリカ・オセアニア・無国籍等)
2016年の割合83%10%3%3%約1%

※ 本表は原論文の報告値をそのまま示したもの(再計算ではない)。出典は法務省「在留外国人統計」(e-Stat)。円グラフ・棒グラフ(推移)は原論文 図12 を参照。SSDSEには国籍・地域別の在留外国人データは収録されていない。

原論文の結論(研究のまとめ)
  • 放っておけば人口減少・少子高齢化が止まらない人口希薄な市町村の中に、地域の産業特性を生かして積極的に外国人を迎え入れ、生産年齢人口と収益性の高い産業を維持している地域がある
  • これらの地域の受け入れの知見が他地域へ波及すれば、外国人の増加が地方創生につながる可能性がある
  • ロボット技術やICTを活用した省力化・高品質生産の新しい農業・工業を各地に展開し、外国人にとって労働・研修の場として魅力的な地域づくりを進めることが、多民族化を通じた人口問題の一つの解決策になる
  • 民族性・宗教性の多様性を地域レベルで受け入れることが、外国人が孤立しない「活力ある多民族化」の条件。日本型の産業構造を外国人が母国に持ち帰れば新しい国際貢献にもなる
原論文が自認する限界と今後の課題
  • 各年の都道府県別外国人比率のヒストグラム(原論文 図11)を確認すると正規分布していないため、「都道府県全体の外国人比率が統計的に増加した」と現時点で示すのは難しいと判断。平均±標準偏差(AVERAGE・STDEV.S、原論文 図10)の比較にとどめた
  • この検定にはノンパラメトリック手法の適用が必要であり、今後の課題とした(→ 本ページ「発展の可能性」「チャレンジ」で実践方法を示す)
  • 2005年と2010年の間で分布の形が大きく変化(外国人比率が低い県が減少)。2008年のリーマンショック前後の外国人労働市場の変化との関係を興味深い論点として挙げている
  • 相関分析であるため因果の向きは特定できない(原論文も「原因と結果の関係の詳細はわからない」と明記)
教育的価値(この論文から学べること)
  • 高校の統計技術で完結する研究設計:CORREL・散布図・塗り分けマップ・折れ線・ヒストグラムだけで、二極化の発見から制度考察まで到達している
  • データにない変数を作る工夫:「外国人人口=総人口−日本人人口」という導出と、その副作用(国勢調査年のスパイク)への気づき
  • 検定をあえて保留する誠実さ:分布が正規でないと確認したら「増加した」と言い切らず、ノンパラ手法を今後の課題とした——結論を急がない姿勢の見本

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

分析スクリプト(2019_H4_katsuyo.py)
データ・ツール出典・説明
SSDSE-A-2025(市区町村データ) 独立行政法人 統計センター SSDSE(教育用標準データセット)。1741市区町村×125項目。総人口・外国人人口・事業所数・市町村財政指標など。原論文はSSDSE-2019Aを使用。
SSDSE-B-2026(都道府県・時系列データ) 同上。47都道府県×2012–2023年×107項目。総人口・日本人人口から外国人人口を導出。原論文はSSDSE-2019B(2005–2016年)を使用。
法務省「在留外国人統計」(e-Stat 国籍・地域別・在留資格別の在留外国人数。原論文が図12(地域別割合)で使用。本ページでは原論文の報告値を表で提示。

本教育用コードはSSDSE-A-2025・SSDSE-B-2026の実公的統計データを使用(合成データ不使用)。出典:独立行政法人 統計センター。

教育用再現コード | 2019年度 統計データ分析コンペティション 統計活用奨励賞 [高校生の部]
原論文: 大段 利々子(広島大学附属高等学校2年)「日本で暮らす外国人の動向から見た多民族化」
使用データ: SSDSE-A-2025・SSDSE-B-2026(独立行政法人 統計センター)

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

この論文のような地域データの相関分析で初心者がやりがちな勘違いをまとめます。本文を読む前にも、読んだ後にも、目を通してみてください。

❌ 「相関がある=因果関係がある」ではない
事業所数と外国人人口の相関(r ≈ 0.9)は、「事業所が多いから外国人が来る」とも「外国人が来るから事業所が増える」とも「総人口という第三の変数が両方を大きくしている」とも解釈できます。

原論文自身が「原因と結果の関係の詳細は、わからない」と明記しているのは正しい作法です。相関の発見 → 因果の主張に飛ぶには、差分の差分法などの因果推論デザインが必要です。
❌ 「地域の相関」を「個人の話」に当てはめてはいけない(生態学的誤謬)
「生産年齢人口比率が高いほど外国人比率が高い」(r = 0.663・原論文の報告値)は県単位の関係であって、「働き盛りの個人は外国人と接点が多い」のような個人レベルの主張は導けません。

集計データから個人の性質を推論する誤りを生態学的誤謬(ecological fallacy)と呼びます。市区町村(r = 0.380)と都道府県(r = 0.663)で相関の強さが変わったように、集計単位が変わるだけで相関は変わるのです(可変単位地区問題)。
❌ 「外れ値を除外すれば正しい結果」ではない
人口密度×外国人比率の散布図で川上村・大泉町・南牧村を「外れ値だから」と機械的に除外していたら、この論文の中心的発見(二極化)は存在しなかったことになります。

正しい対処:(1) 外れ値の正体(市町村名・産業構造)を調べる、(2) 除外する場合は理由を明記する(原論文も人口増減率の分析で「福島県の3市町村は極端な人口減少のため除外」と明記)、(3) 含めた結果と除外した結果の両方を示す。
❌ 「折れ線が跳ねた=実態が急変した」ではない
外国人比率が5年毎に跳ね上がるグラフを見て「その年に外国人が急増した」と読むのは誤りです。全都道府県で同時に起きて翌年に戻る変動は、調査・定義の切り替わり(国勢調査の実測値 vs 推計値、国籍不詳の扱い)のサインです。

時系列データでは「出典が同じ調査か」「定義変更・制度変更の年はいつか」を必ず確認しましょう。原論文はこの疑いを立てて国勢調査との対応に行き着いた点が高く評価されました。
❌ 「rが同じなら関係も同じ」ではない
r = 0.34(市区町村の人口密度×外国人比率)の散布図には、「右上がりの傾向」と「左上に浮かぶ二極化の村」が同居していました。相関係数は直線的関係の強さを1つの数字に潰すため、同じrでも散布図の形は全く違うことがあります(アンスコムの数値例が有名)。

教訓:rを計算したら必ず散布図を目で見る。原論文はすべての相関に散布図を添えています。
❌ 「平均が上がった=統計的に増加した」ではない
都道府県別外国人比率の平均は2005→2010→2015年で上がっていますが(原論文 図10)、原論文はヒストグラムで分布を確認し、正規分布でないため「統計的に増加を示すのは現時点では難しい」とあえて結論を保留しました。

分布が歪んでいるとき・nが小さいときの群間比較には、ノンパラメトリック手法(Wilcoxon符号付き順位検定・Kruskal-Wallis検定など)が必要です。「検定していないことを増加と言い切らない」——高校生の論文としては出色の誠実さです。

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

この論文の理解に必要な用語を初心者向けに解説します。本文中で見慣れない言葉が出てきたら、ここに戻って確認してください。

相関係数 r
2変数が「一緒に増減する傾向」の強さと向きを−1〜+1で表す指標。ExcelではCORREL関数、pandasでは.corr()。+1に近いほど強い正の相関。原論文の分析の主役。
散布図
横軸・縦軸に2変数をとり、1点=1地域として打った図。相関係数とセットで使い、外れ値や非直線的な関係を目で確認する。
回帰直線
散布図の点に最もよく当てはまる直線 y = ax + b。Excelの「近似曲線(線形)」。傾きaは「xが1増えたときyが平均いくつ増えるか」。
決定係数 R²
回帰直線がyのばらつきの何割を説明するか(0〜1)。単回帰では相関係数rの2乗。原論文は各散布図にR²を併記している。
外国人比率
総人口1万人あたりの外国人数(原論文の定義)。人数の比較では地域規模に引きずられるため、規模の影響を除くのに使う。
生産年齢人口
生産活動の中核をなす15歳以上65歳未満の人口。総務省の2018年推計で日本の生産年齢人口割合は59.7%と過去最低(原論文が引用)。
時系列データ
同じ対象を複数時点で観測したデータ。SSDSE-Bは47都道府県×年次のパネル形式で、推移の分析に使える。
ヒストグラム
データを階級に分けて度数を棒で表した図。分布の形(正規か、歪んでいるか、二山か)を確認する基本ツール。原論文は検定の前提確認に使用。
正規分布
釣鐘型の左右対称な分布。t検定など多くのパラメトリック検定はデータ(または標本平均)の正規性を前提とする。
ノンパラメトリック手法
正規分布などの分布仮定を置かず、順位に基づいて検定する手法群。分布が歪んでいる・nが小さいときに有効。原論文が「今後の課題」に挙げた。
外れ値
他のデータから極端に離れた値。この論文では川上村・大泉町などの外れ値の正体を調べたことが「二極化」の発見につながった。
塗り分けマップ
地域ごとの値を色の濃淡で地図上に表す可視化(コロプレス図)。Excelの「塗り分けマップ」グラフで作成できる。地理的パターンの把握に強い。
国勢調査と人口推計
国勢調査は5年に1度の全数調査(実測)、その間の年は人口推計(推計値)。両者で日本人・外国人・国籍不詳の扱いが異なり、これが時系列のスパイクの原因になる。
経常収支比率
地方公共団体の財政構造の弾力性を示す指標。人件費など経常的経費に充てた一般財源÷経常的な一般財源収入。70〜80%が適正水準とされ、高いほど財政の自由度が低い。
実質公債費比率
自治体の収入に対する借金(公債費)返済の割合(3年平均)。財政力指数と並ぶ自治体財政の健全性指標。
SSDSE
教育用標準データセット(Standardized Statistical Data Set for Education)。独立行政法人 統計センターが公開する、主要な公的統計を地域別に一覧できる表形式データ。A(市区町村)・B(都道府県時系列)など複数の系列がある。
e-Stat
政府統計の総合窓口。各府省の統計データを一括検索・取得できるポータルサイト。原論文は在留外国人統計(法務省)をここから取得した。

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

この論文はすべて「高校で学ぶ統計技術」で構成されています。各手法について「何のためか」「結果をどう読むか」「何に注意するか」を解説します。

◆ 統計の基本概念(どの論文にも共通)

🔍 相関係数 r の強さの目安
何?
2変数の直線的な関係の強さを−1〜+1で表す数値。この論文の全分析の共通言語。
目安
|r| ≧ 0.7:強い相関 / 0.4〜0.7:中程度 / 0.2〜0.4:弱い / < 0.2:ほぼ無相関(分野により基準は変わる)。
何がわかる?
総人口×外国人人口の r = 0.879〜0.953(原論文の報告値)は「非常に強い」、人口密度×外国人比率の 0.365 は「弱い〜中程度」と読み分けられる。
読み方
rは直線的関係だけを測る。散布図とセットで見る、実数か比率かを確認する、集計単位(市町村か県か)を明記する——の3点が読み違い防止の基本。
🗂️ 集計データ分析の落とし穴(集計単位の効果)
何?
同じ変数ペアでも、市区町村単位と都道府県単位では相関係数が変わる現象。この論文では一貫して「都道府県の方が相関が強い」。
なぜ起きる?
集計を粗くすると地域内のばらつきが平均されて消え、大きな構造(都市 vs 地方)だけが残るため、相関は強く出やすい。
何がわかる?
集計レベルによる違い自体が情報になる。市区町村レベルで相関が弱いのは、川上村型の「例外」が多数存在するから。
読み方
地域の相関を個人に適用する「生態学的誤謬」に注意。分析単位を必ず明記し、可能なら複数の単位で並記する(原論文はこれを実践している)。

◆ この論文で使われている手法

🔗 相関分析(Excel CORREL / pandas .corr())
何?
2つの変数の「一緒に増減する傾向の強さと向き」を−1〜+1の相関係数rで数値化する手法。
どう使う?
ExcelならCORREL(範囲1, 範囲2)、pandasならdf[x].corr(df[y])。散布図を先に描き、直線的な関係が見えることを確認してから計算する。
何がわかる?
「事業所数が多い地域ほど外国人が多い」といった地域指標間の関連の強さを、市区町村・都道府県それぞれで定量化できる。
結果の読み方
r > +0.7 は強い正の相関。相関は因果関係を示さない点、実数どうしの相関は地域規模に引きずられる点に注意。
⚠️ 注意点
(1) Pearsonのrは外れ値に弱い——川上村のような点が1つあるだけでrが動くので、Spearmanの順位相関で頑健性を確認するとよい。(2) 実数×実数は「規模」を拾う——比率化(人口あたり)した分析を併置する。(3) 集計単位でrが変わる——市区町村と都道府県の両方を報告する。(4) 曲線的な関係は捉えない——散布図の目視が必須。
📈 散布図と回帰直線(単回帰)
何?
2変数の関係を点で可視化し、最小二乗法で直線 y = ax + b を当てはめる手法。Excelの「近似曲線」機能に対応。
どう使う?
散布図に回帰直線とR²を添える。原論文は全12図中6図でこの形式を使い、傾き・切片・R²を図中に明記した。
何がわかる?
関係の向き・強さに加え、傾きから「総人口1000人あたり外国人約20人」のような具体的な換算ができる。
結果の読み方
R²(単回帰ではr²)は直線がyのばらつきを説明する割合。R²=0.81なら8割を説明。残り2割の「直線から外れた点」にこそ発見がある。
⚠️ 注意点
(1) 外挿しない——データ範囲の外(例:人口0の村)に直線を延ばした予測は無意味。切片が負になっても「外国人人口が負」ではなく単なる当てはめの結果。(2) 外れ値1点で直線が回転する——除外前後の直線を比べる。(3) R²が高い=正しいモデルではない——規模どうしの回帰はR²が高く出て当然。(4) 縦横の単位(千人・1万人あたり等)を軸ラベルに明記する
📉 時系列の折れ線グラフ
何?
年次データを線でつなぎ、推移・トレンド・急変を読む最も基本的な時系列可視化。
どう使う?
47都道府県分を重ね描きして全体傾向を見る(原論文 図6)、注目する地域だけ取り出して詳細に見る(同 図7)、の2段構え。
何がわかる?
外国人比率の長期的増加と、5年毎の一時的スパイクという「二層構造」を分離して発見できる。
結果の読み方
全系列が同時に動く変動は実態変化ではなく調査・定義の変化を疑う。1系列だけの急変はその地域固有の出来事(工場進出・災害など)を疑う。
⚠️ 注意点
(1) 出典の混在に注意——国勢調査年(実測)と推計年ではデータの作られ方が違う。(2) 縦軸の起点——0起点でないグラフは変化を誇張する。(3) 実数か比率か——人口が減る地域では実数横ばいでも比率は上がる。(4) 導出変数(総人口−日本人人口)は元系列の定義の切れ目に敏感——この論文の最重要教訓。
📊 ヒストグラムによる分布の確認
何?
データを階級に区切り度数を棒で示す図。平均・標準偏差だけでは見えない「分布の形」を確認する。
どう使う?
検定や平均比較の前に描く。原論文は2005・2010・2015年の都道府県別外国人比率のヒストグラムを並べ、正規分布でないことを確認した(原論文 図11)。
何がわかる?
分布が右に歪んでいる(東京など少数の高比率県が裾を引く)こと、2005→2010年で分布の形自体が変化したこと。
結果の読み方
正規分布が仮定できなければ、平均±標準偏差やt検定に基づく「増加した」という主張は保留し、ノンパラメトリック検定を検討する。
⚠️ 注意点
(1) 階級幅で印象が激変する——幅を2〜3通り試す。(2) n=47は少ない——形の判断は慎重に。Shapiro-Wilk検定などの正規性検定を併用するとよい。(3) 歪んだ分布の代表値は平均より中央値が適することが多い。(4) 年どうしを比べるなら軸の範囲と階級を揃える
🗾 塗り分けマップ(コロプレス図)
何?
地域別の値を色の濃淡で地図に表す可視化。Excelの「塗り分けマップ」グラフ機能で手軽に作れる。
どう使う?
都道府県別外国人比率を日本地図にプロットし、地理的な偏り(関東・東海への集中)を一望する(原論文 図5)。
何がわかる?
ランキング表では気づきにくい「隣接県のまとまり」(群馬-岐阜-三重-愛知の製造業ベルト)などの空間パターン。
結果の読み方
色が濃い=値が大きい。ただし色の段階の切り方(等間隔か分位か)で印象が大きく変わるため、凡例の値域を必ず確認する。
⚠️ 注意点
(1) 面積の大きい地域が過大に目立つ——北海道は1道で東京の40倍の面積。(2) 実数で塗らない——人口の多い県が濃くなるだけ。必ず比率・人口あたりで塗る。(3) 順位や差の大きさは読めない——本ページの図5のようにランキング棒グラフを併用する。(4) 市区町村レベルの多様性(川上村など)は県単位の地図では消える

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

この研究をさらに発展させるための3つの方向性を示します。「今回わかったこと(X)」から「次に検証すべき仮説(Y)」を立て、「具体的に何をするか(Z)」まで考えてみましょう。

① 原論文の「今後の課題」を実行する:ノンパラメトリック検定
結果 X
原論文は外国人比率の分布が正規でないため「都道府県全体で増加した」と統計的に示すのを保留し、ノンパラメトリック手法を今後の課題とした。
新仮説 Y
同じ都道府県を2時点で比べる対応ありデータなら、Wilcoxon符号付き順位検定で「外国人比率は増加した」を分布仮定なしに検定できる。
課題 Z
(1)SSDSE-B-2026から国勢調査年どうし(2015年と2020年)の47都道府県の外国人比率を取り出す。(2)scipy.statsのwilcoxonで検定する。(3)増加が有意か、効果の大きさ(中央値差)はどれほどかを報告する。
② e-Stat「在留外国人統計」で内訳に踏み込む
結果 X
SSDSEには在留資格・国籍別のデータがなく、原論文は全外国人を包括して分析した(地域別割合はe-Statで補完:アジア83%など)。
新仮説 Y
技能実習(川上村型)・身分に基づく在留資格(大泉町型)・留学(新宿区型)で、集まる地域の特徴(産業構造・人口密度)が系統的に異なるはず。
課題 Z
(1)e-Statから市区町村別・在留資格別の在留外国人数を取得する。(2)在留資格別に人口密度・事業所構成比との相関を再計算する。(3)「二極化」がどの在留資格によって駆動されているかを分解して示す。
③ 「地方創生モデル」の効果検証へ
結果 X
地場産業を生かして外国人を受け入れる地域(川上村・大泉町)が生産年齢人口を維持している、と原論文は考察した(相関に基づく仮説)。
新仮説 Y
外国人受け入れが進んだ市町村は、類似の産業構造・人口規模の市町村と比べて、その後の生産年齢人口や事業所数の減少が緩やかである(因果効果)。
課題 Z
(1)外国人比率の伸びが大きい市町村と、産業構造が似た比較対照の市町村をマッチングする。(2)差分の差分法で受け入れ前後の人口・経済指標の変化を比較する。(3)制度変更(2019年の特定技能創設など)を自然実験として使えないか検討する。

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

学んだだけでは身につきません。実際に手を動かすのが最強の学習方法です。本ページのスクリプトをベースに、以下のチャレンジに挑戦してみてください。難易度別に5つ用意しました。

★☆☆☆☆ 入門
CH1. 同じデータで分析を再現する
付属のPythonスクリプトをそのまま実行し、図1〜図6を再現してください。原論文はExcelだけで同じ分析をしています——Excel派はCORREL関数と散布図で図1を作ってみましょう。
ポイント: 出力された相関係数が本文の「原論文の報告値との対照表」とどこまで一致するか確かめる。
★★☆☆☆ 初級
CH2. 自分の県の「順位」と上位市町村を調べる
図5のランキングで自分の住む県は何位か、県内で外国人比率が高い市区町村はどこかを出力してください。
ポイント: その市区町村の産業(農業?製造業?観光?)を調べ、川上村型・大泉町型・新宿区型のどれに近いか考察する。
★★★☆☆ 中級
CH3. ヒストグラムで分布を確認する(原論文 図10・図11 の再現)
SSDSE-B-2026から2015年・2020年の都道府県別外国人比率のヒストグラムと平均±標準偏差を作図し、正規分布と言えるか確認してください。
ポイント: 階級幅を変えると印象がどう変わるか。Shapiro-Wilk検定(scipy.stats.shapiro)の結果も添えると原論文の一歩先へ行けます。
★★★★☆ 上級
CH4. 原論文の「今後の課題」=ノンパラ検定に挑戦
2015年と2020年(いずれも国勢調査年で定義が共通)の47都道府県の外国人比率について、Wilcoxon符号付き順位検定で「増加した」と言えるか検定してください。
ポイント: scipy.stats.wilcoxon(x2020 - x2015, alternative='greater')。原論文が保留した結論に、原論文が指名した手法で決着をつける挑戦です。
★★★★★ 発展
CH5. オリジナルの問いを立てて分析する
本論文の枠組み(実数の相関→比率の相関→外れ値の正体調べ→時系列)を借りて、自分の問いを立ててください。 例:「外国人比率と保育所等数・小学校数に関係はあるか(多文化共生の受け皿)」「外国人延べ宿泊者数(SSDSE-B収録)と在留外国人は別の地域に集まるのか」など。
ポイント: 問い・データ・手法・結論を1ページのレポートにまとめる。それが次の統計データ分析コンペへの応募原稿になります。
💡 ヒント: 詰まったら本サイトの他の論文(相関分析・SSDSE-Aを使っている)のスクリプトをコピーして組み合わせるのが効率的です。手法ガイド・用語集も参考に。

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

本論文で学んだ手法(地域データの相関分析・可視化)は、研究の世界だけでなく、行政・企業・NPOの現場でも様々に活用されています。具体的なシーンを紹介します。

🏛️
多文化共生政策の立案
外国人集住都市(大泉町・美濃加茂市など)の自治体は、本論文と同様の統計分析で外国人住民の分布・産業との関係を把握し、日本語教育・医療通訳・防災情報多言語化などの施策配分を決めています。
🏭
企業の人材戦略・立地選定
製造業や農業法人は、地域の労働力人口・外国人材の集積状況と事業所立地の関係を分析して工場・農場の立地や採用計画を立てます。特定技能・技能実習の受け入れ計画にも地域統計が使われます。
🌾
地方創生・スマート農業
川上村のようにIoT活用と外国人材で高収益農業を維持する自治体の事例分析は、地方創生交付金事業の設計に活きています。「どの地域モデルが移転可能か」の検討は本論文の二極化分析の延長線上です。
📰
データジャーナリズム
新聞・テレビの「外国人住民は今」といった特集は、国勢調査・在留外国人統計を市区町村単位で集計し、塗り分けマップやランキングで可視化します。本論文とまったく同じワークフローです。
🎓
学術研究(人口学・移民研究)
人口学・経済地理学・社会学の実証研究では、外国人人口の地域分布と産業構造・労働市場の関係が主要テーマの一つ。集計単位の効果や生態学的誤謬への対処も研究の標準装備です。
🏫
教育行政・学校現場
外国につながる児童生徒の分布予測は、日本語指導教員の配置計画に直結します。市区町村別の外国人人口動態の時系列分析は、教育委員会の需要予測の基礎データです。

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

この論文を読んで初心者が抱きやすい疑問に、教育的観点から答えます。

Q1. この分析、自分でもできますか?
はい。原論文はExcelだけ(CORREL・散布図・塗り分けマップ・折れ線・ヒストグラム)で完結しており、高校の情報・数学の範囲で再現できます。SSDSEは統計センターのサイトから無料でダウンロードでき、本ページのPythonスクリプトを使えばコマンド一つで全図が再現されます。
Q2. 本ページの再現値と原論文の報告値が少し違うのはなぜですか?
原論文はSSDSE-2019A/B(2016年前後のデータ)、本ページは現行のSSDSE-A-2025(2020年国勢調査)・SSDSE-B-2026を使っているためです。4年分の実態変化とデータセット改訂の影響を含みますが、相関係数の差は概ね0.1未満で、結論(強い正の相関・二極化・国勢調査年スパイク)はすべて追認できました。逆に、群馬県・広島県の経常収支比率のような弱い相関(|r|<0.3)は符号が反転しており、「弱い相関は頑健でない」という教訓になります。
Q3. 「外国人人口=総人口−日本人人口」という計算は正しいのですか?
SSDSE-Bに外国人人口の項目がない中での合理的な近似ですが、厳密には差分に「国籍不詳」が混ざります。特に国勢調査年は国籍不詳者が多く計上されるため、この導出変数が5年毎に跳ねる原因になります。原論文はまさにこの副作用を「特異な変動」として発見し、考察につなげました。データにない変数を作る工夫と、その限界の自覚をセットで学べる好例です。
Q4. 相関があるなら「外国人を受け入れれば人口問題が解決する」と言えますか?
言えません。本論文の分析はすべて相関であり、原論文自身も「原因と結果の関係の詳細は、わからない」と明記しています。外国人が集まるから地域経済が維持されるのか、経済が強い地域に外国人が集まるのか、両方向がありえます。原論文の結論はあくまで「地場産業型の受け入れ地域が地方創生のモデルになり得る」という仮説の提示です。因果に踏み込むには「発展の可能性③」のような検証デザインが必要です。
Q5. なぜ塗り分けマップ(原論文 図5)がこのページにないのですか?
本ページは同一指標(都道府県別外国人比率)をランキング棒グラフとして再表現しています(図5)。地図表現は地理的パターンの把握に優れる一方、順位や差の大きさが読み取りにくいためです。原論文の地図(2016年、値域26.35〜280.10人/1万人)は原論文PDFを参照してください。
Q6. 高校生の論文として、どこが評価されたのですか?
審査会コメントによれば、(1)高校で履修する統計技術の範囲でデータの特異な変動(国勢調査年スパイク)を発見したこと、(2)考察が丁寧で外国人人口の実態・動向を適切に示したこと、(3)結論に意外性はなくとも「ち密な展開」で読みごたえがあること、が評価されました。派手な手法よりも、基本手法の丁寧な積み上げと異常への感度が受賞につながった好例です。

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

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

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

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

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