論文一覧に戻る 🕸 論文ネットワーク 🗺 用語ネットワーク 統計データ分析コンペ 教育用再現集
2020年度(令和2年度)統計データ分析コンペティション | 統計活用奨励賞[大学生・一般の部]

第二期「まち・ひと・しごと総合戦略」における
日本の目指すべき将来に向けた社会構造分析及び提案
Lasso回帰で「転出」と「出生」の要因を選び、主成分分析+クラスタリングで地方経済の連携を描く

⏱️ 推定読了時間: 約35分
冨尾 燿平・眞保 祐樹(中央大学大学院 理工学研究科 経営システム工学専攻) | SSDSE-2020A(市町村別・1741市区町村)/平成28年経済センサス‐活動調査
🔬 LASSO🔬 クラスター分析🔬 シルエット分析🔬 主成分分析🔬 交差検証🏷 移住・人口移動🏷 労働・雇用🏷 人口・少子化
🔬 手法タグ / 🏷 応用タグ(クリックで同タグの論文をネットワーク検索)
🔬 再現カルテ — データが公開されておらず、原論文の報告値をたどる形で再現

この教材は、元データが公開されていないため再計算ができません。原論文が論文中に報告した数値をたどって図表にし、「その数値からどこまで言えるか」を読み解く形で学びます。数値そのものは原論文からの引用であり、この教材が計算したものではありません。

原論文が使ったデータSSDSE-A・平成 28 年経済センサス‐活動調査・国土地理院による緯度・経度データ
分析単位:その他
中核手法:Lasso 回帰・主成分分析・kmeans++法・シルエット分析
この教材が使うデータCSV は読み込まない(原論文が報告した数値をそのまま図表化して読み解く)
原論文(PDF)第二期「まち・ひと・しごと総合戦略」における日本の目指すべき将来に向けた社会構造分析及び提案
統計活用奨励賞/冨尾燿平・眞保祐樹(中央大学大学院理工学研究科)
⚠️ この教材ではできないこと(原論文との違い)
  • 元データが公開されていないため、数値の再計算はできない(原論文が報告した値をたどる形で学ぶ)
📄 原論文との違いを、もっと詳しく
📄 原論文:LASSO・主成分分析・クラスタリング等を組み合わせて社会構造を分析。
📘 本教材:原論文の報告値を転記して図表化。再計算は行っていない。
⚠️ 注意:ページ中の数値は原論文の報告値。
🚀 原論文と同じ粒度で挑戦したい人へ

原論文と同じ粒度のデータは、この教材にも同梱しています。これを読み込めば、原論文と同じ細かさで分析をやり直せます(下の「🐍 ブラウザで動かす」でコードを書き換えて試せます)。ただし原論文が使った項目がすべて収録されているとは限りません。足りない項目は、上の「できないこと」に書いた出典から取ってくる必要があります。

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

🏅 論文審査会コメント(審査員はここを評価した)
「論旨が明確で、課題の設定が比較的きちんとしており、そこそこの手法を用いて政策的提言まで繋げたものと言える。」
出典:統計センター「統計データ分析コンペティション」受賞論文PDF掲載の審査講評。プロの審査員が何を評価し、何を注文したかは論文の読み方の最良の手本になる。
📝 3行で分かる要約

目次

  1. 研究の背景と目的
  2. 課題設定と使用データ
  3. 手法:Lasso回帰・主成分分析・クラスタリング
  4. 課題1・2の結果(Lasso回帰)
  5. 課題3の結果(主成分分析+クラスタリング)
  6. 結論と提言
  7. 📥 図の再生成について
  8. 💼 実社会での応用
  9. ⚠️ よくある誤解
  10. 📖 用語集
  11. 📐 手法ガイド
  12. 🚀 発展の可能性
  13. 🎯 自分でやってみよう
  14. 🤔 Q&A
  15. 🐍 ブラウザで動かす

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

⚠️ このページの図はすべて「原論文の報告値」の可視化です(再計算ではありません) 原論文は 市区町村別の SSDSE-2020A(1741市区町村・128変数)と 平成28年経済センサス‐活動調査(稼ぐ力・雇用力)を用い、 「三大都市の除外」「異常値の除去」「10万人当たりへの修正」「特定11県の抽出」といった独自の前処理を行っています。 これらは本教材が同梱する都道府県版の SSDSE には収録されておらず、手元では再推定できません。 そこで本ページの図1〜4は、原論文の 表1・表2・表4 に記載された数値をそのまま描き直したものです(図の脚注にも二重に明記)。 シルエット図・所属クラスタの日本地図(原論文 図1)は再表現できないため、表と文章で示し「グラフは原論文参照」とします。

📥 図の再生成について(再現コードを動かす前に)

このページの図は 原論文の報告値を可視化しただけなので、外部データのダウンロードは不要です。 図を再生成するには、プロジェクトルートで次を実行するだけです(コードの編集も不要)。

1
スクリプトをそのまま実行する
python3 code/2020_U4_katsuyo.py
図は html/figures/ に自動保存されます。スクリプトは報告値を配列として持っているだけで、CSVは読み込みません。
2
原論文と同じ分析を自分で行いたい場合 教育用標準データセットのうち 市町村別の SSDSE-2020A(本論文が使用したバージョン)や 平成28年経済センサス‐活動調査の「稼ぐ力/雇用力」、国土地理院の緯度・経度データが必要です。 SSDSEは 独立行政法人統計センター が配布しています。 ⬇ SSDSE配布ページ(統計センター)
1
研究の背景と目的

今後わが国は、人口急減・超高齢化という大きな社会的課題に直面するとされる。原論文は冒頭で、 2020年3月の日本の人口が 1億2596万人であること、国立社会保障・人口問題研究所の推計で 2065年には8808万人まで減少し、65歳以上の老年人口比率が 38.4%(ほぼ4割が高齢者)、 生産年齢人口比率が 51.4%(2015年の60.7%を大きく下回る)になることを引用している。

こうした人口減少は、出生率の低下に加えて、地方から都市へ若者が流出し都市部の低出生率の影響を受けることで加速する。 そこで政府は「まち・ひと・しごと創生本部」を設け、2019年に 第二期「まち・ひと・しごと総合戦略」を閣議決定した。 本研究は、この戦略の基本目標を参考に、人口減少・超高齢化への対策を統計的に分析するものである。

原論文は、対策を大きく2つに分け、さらに3つの「課題」として設定する。

本研究の課題設定(原論文より)
人口減少の緩和
課題1
地方部の転出数を下げる
課題2
出生率の向上
地方部の経済活性化
課題3
産業の地域間連携・人材活用の流動化と雇用機会の増加

課題1・2 では問題を構造化して取り組むべき対策を考え、課題3 では地理的条件と「稼ぐ頭」とする業種を考慮した連携体制を提案する。 2040年には 消滅可能性都市(2010→2040年に20〜39歳の若年女性人口が5割以下に減少する市区町村)が全体の約半数の 896自治体になるとされることから、原論文は連携性の分析を 自治体レベルでなく都道府県レベルで行う方針をとる。

SSDSE-2020A Lasso回帰 主成分分析 k-means++ シルエット分析

2
課題設定と使用データ

課題1・課題2 では、教育用標準データセット市町村別データ SSDSE-2020A(1741市区町村・128変数)から 必要な部分だけを使う。課題3 では平成28年経済センサス‐活動調査の「稼ぐ力」「雇用力」と、国土地理院の緯度・経度データを使う。

課題目的変数対象説明変数の数主な前処理
課題1転出者数1575 市区町村107 三大都市(東京都・大阪府・愛知県)除外、福島県の異常値(総人口0の富岡町ほか等)除去、10万人当たりに修正
課題2出生数589 市区町村108 合計特殊出生率が全国平均より低い11県(北海道・宮城・秋田・埼玉・千葉・東京・神奈川・新潟・京都・大阪・奈良)に限定、10万人当たりに修正
課題3(クラスタリング)47 都道府県98産業の稼ぐ力+緯度・経度主成分分析で次元圧縮(累積70%)後にクラスタリング
「稼ぐ力」と「雇用力」とは(原論文の定義) 雇用力=ある地域の特定産業における従業者比率。稼ぐ力=修正特化係数の対数変換値で、 「ある地域の特定産業の相対的な集積度(=強み)」と解釈できる。原論文は稼ぐ力を正負それぞれ無限大方向の整数へ丸めて離散化し、各産業の特徴を明確化している。

DS LEARNING POINT 1

「目的変数を減らしたいのに転出者数を目的変数にする」?

課題2 の表記に注意。原論文の本文では、課題2 のLasso回帰も便宜上「転出者数を目的変数とし…」と書かれているが、 分析の目的は 出生数(出生率)の要因特定であり、選択変数の解釈も出生数に対して行われている。 教材では課題2 の目的変数を 出生数として扱う(結果の解釈は原論文の表2・本文に忠実)。

📐 手法:Lasso回帰・主成分分析・クラスタリング

本研究は3つの手法を組み合わせる。ここでは各手法の考え方を、原論文の使い方に沿って整理する。

課題1・2:Lasso回帰(L1正則化つき回帰)

100を超える候補変数の中から「転出/出生に効いている変数」だけを選びたい。Lassoは損失関数に係数の絶対値の和(L1ペナルティ)を加え、 不要な係数をちょうど0にすることで 変数選択多重共線性の回避を同時に行う。原論文は次の損失関数(1)を最小化する。

Σi ( yi − ( β0 + Σk βk xik ) )2   +   λ Σkk|

目的変数・説明変数は平均0・分散1に標準化し、正則化パラメータ λ は交差検証で 10−3 ≦ λ ≦ 102 の範囲を探索して最適値を選ぶ。

課題3:主成分分析(PCA)

98産業の「稼ぐ力」は高次元データ。PCAで 累積寄与率が7割に達する第10主成分までを選び、少数の軸に圧縮してから解釈・クラスタリングに使う。 各主成分の 因子負荷量を見れば、その軸がどの産業に強く結びついているかが分かる。

課題3:k-means++ とシルエット分析

圧縮した主成分に緯度・経度を加え、k-means++で都道府県をクラスタリング。クラスタ数は シルエット分析で決める。 原論文はシルエット図について、①各クラスタである程度のサンプルのシルエット係数が全体平均を超えていること、②各クラスタのサンプル数(プロットの厚さ)が全体的に等しいこと、の2点を満たす数を適切と判断し、クラスタ数24 を採用した。

4
課題1・2の結果(Lasso回帰)

Lasso回帰の結果、課題1 では 14変数、課題2 では 20変数が選択された。表1に交差検証による決定係数と正則化パラメータを示す。

回帰決定係数正則化パラメータ λ選択変数数
課題1(転出数)0.6910.114
課題2(出生数)0.7210.0420

表1:交差検証による回帰の決定係数と正則化パラメータの値(原論文の報告値)。

まず表1の決定係数を図にしておく。以降のコードは CSVを読み込まず、原論文の報告値を配列にして描くだけである。目的は「手元の環境でも図を再生成できるようにしつつ、値は原論文に忠実に保つ」こと。

やってみよう準備:ライブラリ読み込みと報告値の定義
📝 コード
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
import os
import numpy as np
import matplotlib
matplotlib.use('Agg')
import matplotlib.pyplot as plt
from matplotlib.patches import Patch

plt.rcParams['font.family'] = 'Hiragino Sans'
FIG_DIR = 'html/figures'
os.makedirs(FIG_DIR, exist_ok=True)

# --- 原論文の報告値(PDFの表から転記。ここでは再計算しない)---
R2     = {'課題1(転出数)': 0.691, '課題2(出生数)': 0.721}   # 表1 決定係数
LAMBDA = {'課題1(転出数)': 0.1,   '課題2(出生数)': 0.04}    # 正則化パラメータλ

# 表2・課題1:選択された14変数と標準偏回帰係数(抜粋。全14変数はスクリプト参照)
kadai1 = [
    ('単独世帯数', 0.283754),          # 転出を最も増やす
    ('第3次産業就業者数', 0.080344),   # 都市志向の職種は正
    ('第2次産業就業者数', -0.049717),  # 土地に根付く職種は負
]
▼ 実行結果
================================================================
原論文の報告値(可視化のみ・再計算ではない)
================================================================
表1  課題1 決定係数=0.691 (λ=0.1),  課題2 決定係数=0.721 (λ=0.04)
表2  課題1で選択された変数数 = 14(うち正 12 / 負 2)
表2  課題2で選択された変数数 = 20(うち正 7 / 負 13)
表4  第10主成分までの累積寄与率 = 69.3%(原論文:約7割)
💡 解説
  • matplotlib.use("Agg") — 画面表示せず図をファイル保存するための指定。
  • R2LAMBDAkadai1原論文の表1・表2から転記した報告値。ここで計算しているのではなく「書き写している」点が重要。
  • 実行結果には、報告値の要約(決定係数、選択変数の正負の内訳、累積寄与率69.3%)が表示される。
💡 TIPS リストの各要素 (名前, 係数) はタプル。[::-1] で逆順にすると横棒グラフが上から降順に並ぶ。
やってみよう図1:Lasso回帰の決定係数を描く
📝 コード
1
2
3
4
5
6
7
8
9
labels = list(R2.keys())
vals   = [R2[k] for k in labels]

fig, ax = plt.subplots(figsize=(7, 4.5))
ax.bar(labels, vals, color=['#B45309', '#2E7D32'], width=0.55)
ax.set_ylabel('交差検証による決定係数 R^2')
ax.set_title('図1:Lasso回帰の決定係数(原論文 表1の報告値)')
fig.savefig(os.path.join(FIG_DIR, '2020_U4_fig1.png'), dpi=150)
print('fig1 saved')
▼ 実行結果
fig1 saved
💡 解説
  • 目的:課題1(0.691)と課題2(0.721)の決定係数を並べ、モデルの当てはまりの良さを一目で比較する。
  • ax.bar(labels, vals, ...) で棒グラフを描画。色は課題1=茶、課題2=緑。
  • 実行結果は fig1 saved の1行のみ(図はファイルに保存される)。両課題とも決定係数0.7前後で、地域差の約7割を説明できていることが読み取れる。
Lasso回帰の決定係数(報告値)
図1:Lasso回帰の決定係数(原論文 表1の 報告値の可視化・再計算ではない)。課題1=0.691、課題2=0.721。

課題1(地方部の転出数)で選ばれた14変数

やってみよう図2:課題1で選択された14変数の標準偏回帰係数
📝 コード
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
# 課題1(転出数):係数の大きい順に横棒グラフ。正=赤 / 負=青
names  = [n for n, _ in kadai1][::-1]
coefs  = [c for _, c in kadai1][::-1]
colors = ['#C0392B' if c > 0 else '#2980B9' for c in coefs]

fig, ax = plt.subplots(figsize=(9, 6.5))
ax.barh(range(len(names)), coefs, color=colors)
ax.axvline(0, color='black', lw=0.8)
ax.set_yticks(range(len(names)))
ax.set_yticklabels(names)
ax.set_xlabel('標準偏回帰係数(標準化済み)')
fig.savefig(os.path.join(FIG_DIR, '2020_U4_fig2.png'), dpi=150)
print('fig2 saved')   # 課題2(20変数)も同じ要領で fig3 を描く
▼ 実行結果
fig2 saved
💡 解説
  • 目的:どの変数が転出を「増やす向き(正・赤)」「抑える向き(負・青)」に効いているかを可視化する。
  • ax.barh で横棒、axvline(0) で符号の境界(ゼロ線)を引く。
  • 実行結果は fig2 saved。図から 単独世帯数(+0.284)が転出を最も増やす一方、第2次産業就業者数(−0.050)は転出を抑えることが読み取れる。課題2 の20変数も同じ要領で fig3 を描く。
課題1の標準偏回帰係数(報告値)
図2:課題1(転出数)Lasso回帰で選択された14変数の標準偏回帰係数(原論文 表2の 報告値の可視化・再計算ではない)。
📌 原論文による解釈
第2次産業(負)
加工業はその土地柄を活かした産業で、就業者が土地に根付いて働くため転出が少ない(係数が負)。
第3次産業(正)
運輸・金融・商業・サービス業は仕事の都合で都市部への転出が多く、係数が正。
単独世帯数(最大の正)
結婚している人は「単身赴任したくない」「持ち家で他県に移れない」等で転出しにくい。単独世帯は制約が少なく、仕事の選択肢を求めて他都道府県へ移動しやすい。
学校数の変量
離島など人口規模が小さく転出の多い市区町村では、総人口当たりの中学校数・高校数が大きくなるため係数が有意になったと解釈。

課題1の結論:地方部の「仕事内容における多様性の欠乏」を解決する必要がある。

表2a:課題1(転出数)選択14変数

変数標準偏回帰係数
1単独世帯数0.283754
2中学校数0.231302
3出生数0.137405
415〜64歳人口(男)0.116443
5小学校教員数0.093421
6第3次産業就業者数0.080344
7従業者数(公務)0.074825
8第2次産業就業者数-0.049717
9教育費(市町村財政)0.046383
10婚姻件数0.041152
1115歳未満人口(女)0.032370
1265歳以上人口(女)-0.017277
13中学校教員数0.015751
14高等学校数0.005963

表2b:課題2(出生数)選択20変数

変数標準偏回帰係数
1婚姻件数0.287830
265歳以上人口(男)-0.252630
3小学校児童数0.249220
4転入者数(日本人移動者)0.137510
5図書館数-0.098040
6保育所等在所児数0.077730
7完全失業者数(女)-0.069470
8従業者数(生活関連サービス業,娯楽業)-0.059030
9幼稚園在園者数0.053850
10経常収支比率(市町村財政)-0.031530
11民生費(市町村財政)0.027590
12一般病院数-0.012820
13農家数(販売農家)-0.006390
14事業所数(電気・ガス・熱供給・水道業)-0.004500
15中学校教員数-0.004480
16非水洗化人口-0.004430
17従業者数(建設業)-0.004360
18核家族世帯数0.004170
19第2次産業就業者数-0.002250
20中学校数-0.000570

表2:Lassoで選択された説明変数と標準偏回帰係数の推定値(原論文の報告値)。赤=正、青=負。

課題2(出生数)で選ばれた20変数

課題2の標準偏回帰係数(報告値)
図3:課題2(出生数)Lasso回帰で選択された20変数の標準偏回帰係数(原論文 表2の 報告値の可視化・再計算ではない)。
📌 原論文による解釈
婚姻件数(正・最大)
出生数を上げるには婚姻件数を増やすべき。
65歳以上人口(男)(負)
高齢者数が多い地域ほど出生数が下がる要因として選択され、妥当と解釈。
完全失業者数(女)(負)
失職による経済的打撃で子どもを産みにくくなると解釈。

課題2の結論:働き方の多様性の欠乏」が問題。若者に結婚という選択肢を与えるには、仕事に柔軟性を持たせ、家事・生活との両立と経済的・時間的余裕が必要。

課題1・2に共通する発見 両課題に共通して「仕事に対する多様性」が求められていた。これを解決することで、地方からの転出者数が減少し、都市部での結婚数が増えて出生数が向上し、「人口減少の緩和」につながると原論文は結論づける。
5
課題3の結果(主成分分析+クラスタリング)

各都道府県の「稼ぐ力」(98産業)に主成分分析を適用し、累積寄与率が約7割に達する第10主成分までを採用した。

やってみよう図4:主成分の寄与率と累積寄与率
📝 コード
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
# 主成分分析(稼ぐ力98産業)の寄与率と累積寄与率(表4の報告値)
cum = np.cumsum(pca_contrib) * 100

fig, ax = plt.subplots(figsize=(9, 5))
ax.bar(pca_pc, [c * 100 for c in pca_contrib], color='#6A1B9A')  # 各主成分の寄与率
ax2 = ax.twinx()
ax2.plot(pca_pc, cum, color='#E65100', marker='o')               # 累積寄与率
ax2.axhline(70, color='#C62828', ls='--')   # 第10主成分まで=累積約70%
fig.savefig(os.path.join(FIG_DIR, '2020_U4_fig4.png'), dpi=150)
print('fig4 saved')
▼ 実行結果
fig4 saved
💡 解説
  • 目的:各主成分がどれだけ情報を説明するか(寄与率)と、第何主成分まででどれだけ説明できるか(累積寄与率)を1枚で示す。
  • ax.twinx() で右軸を追加し、棒(寄与率)と折れ線(累積)を重ねる。axhline(70) で70%の目安線。
  • 実行結果は fig4 saved。第10主成分までで累積 約70%に達し、原論文の採用基準と一致することが読み取れる。
主成分の寄与率と累積寄与率(報告値)
図4:主成分分析(稼ぐ力98産業)の寄与率と累積寄与率(原論文 表4の 報告値の可視化・再計算ではない)。
📌 第1・第2主成分の意味(因子負荷量からの解釈)
PC1(寄与率18.9%)
水産業・水運業(水産養殖業・漁業・水運業)に高い因子負荷量。→ 海に面しているかを示す尺度。
PC2(寄与率18.0%)
航空運輸業・インターネット付随サービス業(都市部が強み)と、製造業・林業(地方部が強み)が 逆符号。→ 都市部と地方部を判別する尺度。

圧縮した主成分に緯度・経度を加え、k-means++ でクラスタリング。シルエット分析により最適クラスタ数を 24 と設定した。 クラスタごとに各産業の稼ぐ力の平均が大きい上位3産業を「主要産業」とし、その平均雇用力を算出した(原論文 表5)。

グラフは原論文参照: シルエット図と「所属クラスタごとに都道府県を色分けした日本地図」(原論文 図1)は、市区町村/都道府県別の独自クラスタリング結果であり、本教材の同梱データからは再表現できません。ここでは主要産業を で示します。全24クラスタは原論文 表5 を参照してください。

表5(抜粋):各クラスタの都道府県と主要産業(原論文の報告値)

クラスタ都道府県主要産業1主要産業2主要産業3
cluster1東京都50 各種商品卸売業46 航空運輸業73 広告業
cluster2山梨県, 長野県28 電子部品・デバイス・電子回路製造業26 生産用機械器具製造業27 業務用機械器具製造業
cluster5北海道, 青森県03 漁業(水産養殖業を除く)97 国家公務02 林業
cluster9岩手県, 秋田県, 山形県, 福島県28 電子部品・デバイス・電子回路製造業02 林業26 生産用機械器具製造業
cluster12栃木県, 群馬県, 静岡県31 輸送用機械器具製造業29 電気機械器具製造業27 業務用機械器具製造業
cluster16愛知県, 大阪府51 繊維・衣服等卸売業55 その他の卸売業25 はん用機械器具製造業
cluster17神奈川県, 兵庫県25 はん用機械器具製造業71 学術・開発研究機関26 生産用機械器具製造業
cluster18長崎県, 鹿児島県04 水産養殖業03 漁業(水産養殖業を除く)45 水運業
cluster23新潟県, 富山県, 岐阜県28 電子部品・デバイス・電子回路製造業26 生産用機械器具製造業24 金属製品製造業

表5抜粋:cluster1=東京都は各種商品卸売業・航空運輸業・広告業と都市型サービスに特化。地方クラスタは製造業・水産業・林業に特化。全24クラスタは原論文参照。

📌 原論文による解釈
近隣が同一クラスタに
おおよそ近隣の都道府県が同じクラスタに入った。緯度・経度を変数に加えた効果。
遠方が同一クラスタ(cluster16,17)
愛知・大阪(16)、神奈川・兵庫(17)のように遠方でも同一クラスタ。緯度経度だけでなく経済規模・特性も反映された証拠。
雇用力が全国平均を下回る産業
クラスタ内で人材を流動的に活用し経済的連携を行うことで、主要産業を強固にできると期待。

課題3の結論:同様の産業に強みを持つ都道府県間で連携体制を構築し、主要産業に付随する事業を多彩に創出することで、地方部でも「仕事内容に対する多様化」と経済活性化を実現できる。

6
結論と提言
0.691
課題1(転出数)
Lasso決定係数
0.721
課題2(出生数)
Lasso決定係数
24
課題3
最適クラスタ数

人口減少の緩和:課題1・2 のLasso回帰から、「仕事に対する多様性」を持たせることで地方からの転出者数を減らし、婚姻件数を増やして出生数を高められることが分かった。 具体策として原論文は「オフィスに囚われない個人の働き方の選択肢を増やす」ことを挙げる。

地方部の経済活性化:課題3 のクラスタリングから、同様の産業に強みを持つ都道府県で連携体制を作り、 主要産業に付随する事業を多彩に創出することで、地方でも仕事の多様性と経済活性化を両立できると提言する。

限界(原論文が挙げる今後の課題)
  • 説明変数間の関係を捉える解析(共分散構造分析等)は行っていない。
  • ある1時点のデータを用いたため、時間に伴う社会変化を反映できていない。時系列データによる分析が今後の課題。
受賞 2020年度 統計データ分析コンペティション 統計活用奨励賞[大学生・一般の部]。 審査会コメント:「論旨が明確で、課題の設定が比較的きちんとしており、そこそこの手法を用いて政策的提言まで繋げたものと言える。」

⚠️ よくある誤解

この論文の手法と結果を読むときに陥りやすい誤解を整理します。

誤解1:「決定係数0.69なら因果が証明された」
決定係数は 当てはまりの良さであって因果の証明ではありません。Lassoで係数が正でも「その変数が転出の原因」とは限らず、あくまで関連の強さと符号を示すだけです。原論文自身も、変数間の関係(共分散構造分析)は未実施と断っています。
誤解2:「Lassoで選ばれなかった変数は無関係」
Lassoは相関の強い変数群から代表を1つ残して他を0にする性質があります。選ばれなかった変数が無意味とは限らず、選ばれた変数と情報が重複していただけの場合があります。
誤解3:「このページの図は手元データで再計算した結果だ」
いいえ。図1〜4は 原論文の表1・表2・表4に載っている数値をそのまま描き直した「報告値の可視化」です。原論文は市区町村別のSSDSE-2020Aと経済センサスに独自前処理を施しており、本教材同梱の都道府県版データでは再推定できません。図の脚注にも明記しています。
誤解4:「クラスタ数24は正解ラベルの数」
クラスタリングは教師なしで、24は「正解」ではなくシルエット分析の基準を満たす選ばれた数です。基準や乱数の初期値が変われば結果は変わり得ます。

📖 用語集

本論文を読むうえで押さえておきたい用語をまとめます。

Lasso回帰
損失関数に係数の絶対値の和(L1ペナルティ λΣ|β|)を加えた回帰。不要な係数を0にして変数選択多重共線性の回避を同時に行う。
正則化パラメータ λ
ペナルティの強さ。大きいほど多くの係数が0になる。原論文は交差検証で 10⁻³〜10² を探索し、課題1でλ=0.1、課題2でλ=0.04を採用。
標準偏回帰係数
変数を標準化(平均0・分散1)してから推定した回帰係数。単位に依存せず、変数間で影響の大きさを比較できる。
決定係数
モデルが目的変数のばらつきをどれだけ説明できるかの指標(0〜1)。課題1で0.691、課題2で0.721。
主成分分析(PCA)
多数の変数を、情報をできるだけ保ったまま少数の合成変数(主成分)に圧縮する手法。
寄与率/累積寄与率
各主成分が全分散のうち説明する割合/上位主成分までの合計。原論文は累積約7割の第10主成分までを採用。
因子負荷量
各主成分と元の変数の結びつきの強さ。符号と大きさから主成分の意味を解釈する。
k-means++
初期中心の選び方を改良したk-means法。データを指定数のクラスタに分ける教師なし手法。
シルエット分析
各点が自分のクラスタにどれだけよく収まっているかを−1〜1のシルエット係数で評価し、最適なクラスタ数の判断に使う。
稼ぐ力
修正特化係数の対数変換値。ある地域の特定産業の相対的な集積度(=強み)を表す。
雇用力
ある地域の特定産業における従業者比率。
合計特殊出生率
1人の女性が生涯に産む子どもの数の推計。原論文は課題2でこれが全国平均より低い11県を対象にした。
消滅可能性都市
2010→2040年に20〜39歳の若年女性人口が5割以下に減る市区町村。全国で896自治体と推計。
SSDSE
独立行政法人統計センターが配布する教育用標準データセット。本論文は市町村別のSSDSE-2020Aを使用。

📐 手法ガイド(手法別の注意点)

各手法を自分で使うときに気をつけたいポイントを、本論文の使い方に即して整理します。

Lasso回帰
いつ使う
説明変数が多く、そこから「効いている変数」を絞り込みたいとき。
前処理
変数は必ず標準化する(スケールが違うとペナルティが不公平になる)。原論文も平均0・分散1に標準化。
λの決め方
交差検証で範囲を探索して選ぶ。恣意的に決めない。
落とし穴
相関の強い変数群では代表だけが残る。「選ばれた=原因」と読み替えない。
主成分分析(PCA)
いつ使う
高次元データ(本論文は98産業)を少数の軸に圧縮し、解釈やクラスタリングを容易にしたいとき。
前処理
変数の単位・分散が異なる場合は標準化(相関行列ベース)が基本。
主成分数
累積寄与率(本論文は約7割で第10主成分まで)やスクリープロットで決める。
解釈
因子負荷量の符号・大きさで各軸の意味を読む(PC1=海に面するか、PC2=都市/地方)。
k-means++ + シルエット分析
いつ使う
ラベルなしのデータを似たもの同士のグループに分けたいとき。
クラスタ数
事前に与える必要がある。シルエット係数などで複数候補を比較して決める(本論文は24)。
注意
初期値・乱数で結果が変わる(k-means++は初期値を改良)。スケールの大きい変数に引っ張られるため標準化を検討。
本論文の工夫
主成分に緯度・経度を加え、産業特性と地理的近さの両方を反映させた。

🚀 発展の可能性

本研究をさらに発展させるとしたら、どんな方向がありうるでしょうか。

① 時系列・パネル化
アイデア
原論文は1時点のデータ。複数年のパネルにすれば、転出・出生の変化の要因や政策の効果を追える。
② 共分散構造分析(SEM)
アイデア
原論文が課題とした「変数間の関係」を明示的にモデル化し、「仕事の多様性→転出→出生」といった経路を検証する。
③ 市区町村レベルの連携設計
アイデア
都道府県レベルの連携を、消滅可能性都市を含む市区町村単位に落とし込み、より実務的な連携先を提案する。

🎯 自分でやってみよう

手を動かして理解を深めるための練習課題です。難易度順に並べています。

★☆☆☆☆ 難易度1
図の色分けを変える
2020_U4_katsuyo.py の図2で、正=赤/負=青の配色を別の2色に変えて実行し、符号の見やすさを比べてみよう。
★★☆☆☆ 難易度2
課題2の上位5変数だけを描く
kadai2 を絶対値の大きい順に並べ替え、上位5変数だけの横棒グラフを作ってみよう(sorted(..., key=lambda x: abs(x[1])))。
★★★☆☆ 難易度3
累積寄与率が何%で第何主成分に達するか調べる
pca_contrib の累積和を計算し、累積が80%を超えるのは第何主成分か求めてみよう(本論文の採用は約70%=第10主成分)。
★★★★☆ 難易度4
自分でLassoを回してみる
都道府県版 SSDSE-B で、目的変数を1つ決め、標準化した多数の変数に sklearn.linear_model.LassoCV を適用し、選択された変数を確認しよう。※本論文の市区町村別の値とは一致しない点に注意。
★★★★★ 難易度5
PCA+クラスタリングで都道府県を分類
好きな複数変数を標準化→PCA→k-means++でクラスタリングし、シルエット係数で最適クラスタ数を検討。日本地図に色分けしてみよう。
💡 ヒント: 詰まったら本サイトの他の論文(同じ手法を使っている)のスクリプトを参考に。手法ガイド・用語集も活用しよう。

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

本論文で学んだ手法は、行政・企業・研究の現場で広く使われています。

🏛️
地方創生・移住定住政策
自治体は転出入や出生の要因分析をもとに、若者定着・子育て支援・働き方改革の施策を設計します。本論文の課題設定はまさにその実務に直結します。
🏢
産業クラスター政策・企業立地
「稼ぐ力」に基づく産業クラスタリングは、地域の強み産業の特定や、連携・誘致の相手選びに使われます。
📈
マーケティングの変数選択
多数の候補指標から売上に効くものを絞るとき、Lassoのような正則化回帰が標準的に使われます。
🧭
顧客・地域のセグメンテーション
PCA+k-meansは、顧客や地域を似たもの同士に分けるセグメント分析の定番手法です。
🎓
社会科学の実証研究
経済学・社会学・地理学などで、変数選択・次元圧縮・クラスタリングは日常的に用いられています。
📊
データジャーナリズム
地域格差の可視化・類型化の記事で、本論文と同様の手法が使われます。

🤔 よくある質問

初心者が抱きやすい疑問に、教育的観点から答えます。

Q1. このページの図を自分でも再現できますか?
はい。python3 code/2020_U4_katsuyo.py を実行すれば同じ図が再生成できます。ただしそれは原論文の報告値を描き直したもので、市区町村別の元データから再推定したものではありません。
Q2. なぜ手元で原論文の数値を再計算しないのですか?
原論文は市区町村別のSSDSE-2020Aと経済センサスに、三大都市の除外・異常値除去・10万人当たり修正・11県抽出といった独自前処理を施しています。本教材が同梱する都道府県版データには収録がなく、同じ値を再現できないためです。
Q3. Lassoと普通の重回帰は何が違いますか?
Lassoは係数にL1ペナルティを課し、不要な係数を0にします。変数が多いときの自動的な変数選択と多重共線性の回避が強みです。
Q4. 結論は「因果関係」を示していますか?
いいえ。観察データの関連を示すもので、厳密な因果の証明ではありません。原論文も変数間の構造分析は今後の課題としています。
Q5. もっと深く学ぶには?
正則化回帰(Lasso/Ridge)、主成分分析、クラスタリングは『Pythonではじめる機械学習』などの入門書で扱われています。本サイトの関連論文も読み比べてみてください。

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

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

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

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

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