🎯 この記事を読むと何ができるようになるか
- 研究の核心:「SDGs指標の地域比較都道府県別の持続可能性スコア分析」の問題意識と分析アプローチ
- 分析手法:相関係数(Pearson・Spearman)で2変数の関係の強さと向きを定量化する方法
- 分析手法:主成分分析(PCA)で多次元データを2〜3軸に圧縮し可視化する方法
- 分析手法:Ward法による階層的クラスタリングで自治体を自動グループ化する方法
- 結果の読み方:係数・p値・図表から「何が言えて何が言えないか」を判断する力
- 応用:同じデータと手法を使って、別の問いを立てて分析する発想
📥 データの準備(再現コードを動かす前に)
このページの分析を自分で再現するには、以下の手順でデータを準備してください。コードの編集は不要です。
2
ファイルを所定のフォルダに配置する
ダウンロードしたCSVを、プロジェクトの
data/raw/ フォルダに入れます。
2026 統計・データ解析コンペ/
├── code/
│ └── 2022_H5_15_shorei.py ← 実行するスクリプト
└── data/
└── raw/
SSDSE-B-2026.csv ← ここに置く
3
スクリプトをそのまま実行する
ターミナルでプロジェクトルートに移動し、以下を実行します。
python3 code/2022_H5_15_shorei.py
図は
html/figures/ に自動保存されます。
2015年に国連が採択した「持続可能な開発目標(SDGs)」は17の目標・169のターゲットからなり、
2030年までの達成が求められている。日本でも国・地方自治体レベルでの取り組みが進んでいるが、
都道府県ごとの達成状況には大きな格差が存在する。
まず「SDGs指標の地域比較都道府県別の持続可能性スコア分析」を統計的にとらえることが有効だと考えられる。
その理由は感覚や経験則だけでは、複雑な社会要因の中で「何が本当に効いているか」を見極めにくいからである。
本研究では公開データと統計手法を組み合わせ、この問いに定量的な答えを出すことを目指す。
本研究は、公的統計データ(SSDSE-B)から経済・環境・社会・人口の4カテゴリ7指標を構築し、
主成分分析(PCA)により47都道府県の「総合持続可能性スコア」を算出する。
さらにWard法クラスタリングとレーダーチャートを用いて
地域ごとの強みと弱みを多面的に可視化した。
SDGsと統計分析の接点
SDGsの達成状況を「測定」するには統計指標の設計が不可欠。複数の指標を一つの合成スコアに集約する
PCAは、SDGsダッシュボード指標の研究でも標準的に使われる手法。
分析の流れ
SSDSE-B
2022年
47都道府県
→
7指標
構築
→
標準化
PCA
→
Ward法
クラスタリング
→
地域別
レーダーチャート
SSDSE-B
主成分分析
Ward法クラスタリング
レーダーチャート
SDGs
分析データは統計数理研究所が提供する
SSDSE-B-2026(都道府県データ)の2022年断面を使用した(47都道府県)。
SDGsの4カテゴリ(経済・環境・社会・人口)に対応する7指標を以下のとおり構築した。
4カテゴリ・7指標の定義
経済指標(SDG 8: 働きがい・経済成長)
消費支出_log = log(消費支出(二人以上の世帯))
生活水準の代理変数。対数変換で右裾を圧縮。
求人倍率 = 月間有効求人数 / 月間有効求職者数
雇用充実度。1超 = 求人が求職を上回る。
環境指標(SDG 12: つくる責任・つかう責任)
ごみリサイクル率 = ごみのリサイクル率(%)
廃棄物のリサイクル達成度。
ごみ排出量_inv = 1 ÷ (1人1日当たりの排出量g)
排出量が少ないほど値が大きくなるよう逆数変換。
社会指標(SDG 4: 質の高い教育、SDG 11)
大学進学率 = 高校卒業者のうち進学者数 / 高校卒業者数 × 100(%)
高等教育へのアクセス。
保育所密度 = 保育所等数 / 総人口 × 10000
人口1万人あたりの保育所数。子育て支援の充実度。
人口持続指標(SDG 3: すこやかに)
合計特殊出生率 = 1人の女性が生涯に産む子の数の推計値
人口再生産の指標。2.07が人口維持水準。
指標の基本統計(2022年, 47都道府県)
| 指標 | 平均 | 標準偏差 | 最小 | 最大 |
| 消費支出_log(円/月) | 12.574 | 0.067 | 12.41 | 12.70 |
| 求人倍率 | 1.394 | 0.247 | 0.89 | 2.06 |
| ごみリサイクル率(%) | 18.2 | 3.8 | 9.3 | 27.6 |
| ごみ排出量_inv(×10⁻³) | 1.07 | 0.09 | 0.83 | 1.27 |
| 大学進学率(%) | 56.6 | 7.0 | 41.0 | 74.2 |
| 保育所密度(人口1万対) | 2.76 | 0.72 | 1.46 | 4.88 |
| 合計特殊出生率 | 1.358 | 0.149 | 1.04 | 1.79 |
逆数変換(ごみ排出量)の意味
「ごみ1人1日当たり排出量」は小さいほど環境負荷が低い(良い)。そのまま使うと
他の指標と方向が逆になるため、1を排出量で割って「ごみ削減達成度」に変換する。
PCAでは変数の「正の方向=望ましい状態」を揃えることが重要。
7指標をStandardScalerで標準化(平均0・分散1)した後、主成分分析を適用した。
第1主成分(PC1)は寄与率42.6%、第2主成分(PC2)は18.0%で、
PC1+PC2の累積寄与率は60.6%に達する。
PCA寄与率
| 主成分 | 固有値相当 | 寄与率 | 累積寄与率 |
| PC1 | 2.98 | 42.6% | 42.6% |
| PC2 | 1.26 | 18.0% | 60.6% |
| PC3 | 0.95 | 13.5% | 74.1% |
| PC4 | 0.73 | 10.5% | 84.6% |
| PC5〜PC7 | — | 15.4% | 100.0% |
📌 この主成分散布図の読み方
- このグラフは
- 主成分分析で抽出した第1・第2主成分を軸に、各サンプルを点で描いたグラフ。
- 読み方
- 点の位置が近いサンプルほど元の変数プロフィールが似ている。軸の端に位置するサンプルが強い特徴を持つ。
- なぜそう解釈できるか
- 矢印(バイプロット)が付いている場合、矢印の向きが「その変数が影響する方向」。矢印が長いほど主成分への寄与が大きい。
PC1スコア ランキング(上位・下位5都道府県)
| 順位 | 都道府県 | 地方 | PC1スコア | 特徴 |
| 1位 | 島根県 | 中国・四国 | +3.11 |
保育所密度・出生率が高く雇用も充実 |
| 2位 | 宮崎県 | 九州・沖縄 | +3.09 |
出生率が高く地方型の持続可能性 |
| 3位 | 沖縄県 | 九州・沖縄 | +2.93 |
合計特殊出生率1位(1.70) |
| 45位 | 神奈川県 | 関東 | −3.41 |
大学進学率高・出生率低の大都市型 |
| 46位 | 京都府 | 近畿 | −3.39 |
大学集積・若者流出型 |
| 47位 | 東京都 | 関東 | −3.37 |
消費支出最大・出生率全国最低(1.04) |
PC1の解釈(「地方型持続可能性」スコア)
PC1が高い都道府県は「保育所が多く、出生率が高い」地方型の特徴を持つ。
一方PC1が低い都道府県は「大学進学率・消費支出が高く、出生率・保育所密度が低い」
大都市圏型の特徴を持つ。これはSDGsにおける「地域格差」の構造を端的に示している。
DS LEARNING POINT 1
複合指標の構築(PCAによる合成スコアの作り方)
複数の指標を一つの「総合スコア」に集約する最もよく使われる手法がPCA(主成分分析)。
相関のある変数群を互いに直交(無相関)な主成分に変換し、
第1主成分(最も分散が大きい方向)を「代表スコア」として使う。
from sklearn.preprocessing import StandardScaler
from sklearn.decomposition import PCA
# Step1: 標準化(各変数を平均0・分散1に)
scaler = StandardScaler()
X_std = scaler.fit_transform(X_raw) # shape: (47, 7)
# Step2: PCA実行
pca = PCA(n_components=7)
pca.fit(X_std)
# Step3: スコア(主成分得点)を取得
scores = pca.transform(X_std) # shape: (47, 7)
pc1_score = scores[:, 0] # 第1主成分スコア ← 総合持続可能性指数
# Step4: 寄与率の確認
ev_ratio = pca.explained_variance_ratio_
print(f"PC1寄与率: {ev_ratio[0]*100:.1f}%")
print(f"PC2寄与率: {ev_ratio[1]*100:.1f}%")
print(f"PC1+PC2 累積: {(ev_ratio[0]+ev_ratio[1])*100:.1f}%")
主成分の「意味」を解釈するには因子負荷量(factor loadings)を確認する。
因子負荷量は「元の変数が各主成分にどの程度寄与しているか」を示す係数であり、
ヒートマップで可視化することで変数と主成分の関係を一覧できる。
📌 この相関ヒートマップの読み方
- このグラフは
- 複数の変数ペア間の相関係数(−1〜+1)を色の濃淡で示した行列図。
- 読み方
- 濃い赤(または青)が強い正(または負)の相関。対角線は自分自身との相関なので常に1.0。
- なぜそう解釈できるか
- 「説明変数どうしの相関が高い(|r| > 0.8)」マスが多いと多重共線性の警告サイン。目的変数との相関が高い変数が候補として重要。
因子負荷量の読み方
| 指標 | PC1 | PC2 | 解釈 |
| 保育所密度 | +0.48 | +0.10 |
PC1に強く寄与(保育充実 = 高スコア) |
| 合計特殊出生率 | +0.41 | +0.24 |
PC1に正寄与(出生率高 = 高スコア) |
| 求人倍率 | +0.29 | +0.45 |
PC2に特に大きく寄与(雇用充実) |
| 大学進学率 | −0.48 | −0.05 |
PC1に強く負寄与(大都市圏 = 低スコア) |
| 消費支出_log | −0.37 | +0.48 |
PC1に負、PC2に正(大都市・消費志向) |
| ごみ排出量_inv | −0.37 | +0.06 |
PC1に負(逆数=排出少が多い地方は高排出?) |
| ごみリサイクル率 | −0.14 | +0.70 |
PC2に強く寄与(リサイクル先進地域) |
PC1は「地方型(出生率・保育)vs 都市型(大学進学率・消費)」の対立軸
保育所密度・合計特殊出生率が高い地方の都道府県がPC1の正方向(高スコア)に位置し、
大学進学率・消費支出が高い大都市圏がPC1の負方向(低スコア)に位置する。
PC2はごみリサイクル率・求人倍率・消費支出の高さを反映しており、
「環境意識・経済的豊かさ」の軸と解釈できる。
DS LEARNING POINT 2
因子負荷量の解釈(どの変数がPC1・PC2を構成するか)
pca.components_ は形状(n_components, n_features)の行列。
転置すると「変数 × 成分」の因子負荷行列になる。
絶対値が大きい変数ほどその成分を強く規定する。
# 因子負荷行列の取得
loadings = pca.components_.T # shape: (n_features=7, n_components=7)
# ヒートマップで可視化(PC1〜PC4のみ表示)
import matplotlib.pyplot as plt
N_PC = 4
fig, ax = plt.subplots(figsize=(9, 6))
im = ax.imshow(loadings[:, :N_PC], cmap='RdBu_r', vmin=-1, vmax=1)
plt.colorbar(im, ax=ax, label='因子負荷量')
ax.set_xticks(range(N_PC))
ax.set_xticklabels([f'PC{i+1}' for i in range(N_PC)])
ax.set_yticks(range(len(INDICATOR_LABELS)))
ax.set_yticklabels(INDICATOR_LABELS)
# セル内に数値を表示
for i in range(len(INDICATOR_LABELS)):
for j in range(N_PC):
val = loadings[i, j]
color = 'white' if abs(val) > 0.55 else '#222'
ax.text(j, i, f'{val:.2f}', ha='center', va='center',
fontsize=10, fontweight='bold', color=color)
PCAで2次元に射影したスコアに加え、7指標全体の標準化データを使って
階層的クラスタリング(Ward法)を実行した。
Ward法はクラスター内の分散の増加を最小化するようにクラスターを統合するため、
比較的コンパクトで解釈しやすいクラスターが形成される。
📌 このデンドログラム(樹形図)の読み方
- このグラフは
- 階層的クラスタリングの過程を樹木状に示した図。どのサンプルが先に統合されたかがわかる。
- 読み方
- 縦軸(高さ)は統合時の距離(非類似度)を示す。低い位置で結合したサンプルほど似ている。水平線を引いた高さでクラスター数が決まる。
- なぜそう解釈できるか
- 水平線の高さを「大きなジャンプ」の直前に設定することでクラスター数を決める。切り取った後の各グループを変数平均で特徴づけする。
デンドログラムから読み取れること
主要なクラスター構造
- 大都市圏クラスター:東京・神奈川・埼玉・千葉・京都 —
大学進学率が高く、出生率・保育所密度が低い都市型
- 九州・沖縄クラスター:沖縄・宮崎・鹿児島・長崎 —
合計特殊出生率が全国的に高い地方型
- 中間型クラスター:東北・北陸・中国四国の多くの県 —
求人倍率・リサイクル率・保育所密度が中程度でバランスが取れている
クラスター数の決め方
デンドログラムで「枝の長さが急に長くなる」箇所(ギャップ)を探す。
縦軸の距離が大きく跳び上がる直前の結合数がクラスター数の目安となる。
本データでは4〜6クラスターが解釈しやすいと判断される。
DS LEARNING POINT 3
レーダーチャートの作り方(matplotlib.projections.polar の使い方)
レーダーチャートは極座標系(polar)を使って描く。各指標を等間隔の角度に配置し、
値を半径方向にプロットする。閉じたポリゴンにするために末尾に先頭の値を追加する。
import numpy as np
import matplotlib.pyplot as plt
# 指標数とその角度を定義
N = 4 # 指標数
labels = ['求人倍率', 'リサイクル率', '大学進学率', '出生率']
angles = np.linspace(0, 2 * np.pi, N, endpoint=False).tolist()
angles += angles[:1] # ← 末尾に先頭を追加して「閉じる」
fig, ax = plt.subplots(subplot_kw=dict(projection='polar'), figsize=(6, 6))
# データをプロット(例: 関東地方)
vals = [0.31, 0.53, 0.61, 0.24] # 正規化済みスコア
vals += vals[:1] # ← こちらも末尾に追加
ax.plot(angles, vals, linewidth=2, color='#E65100')
ax.fill(angles, vals, alpha=0.15, color='#E65100')
ax.set_xticks(angles[:-1]) # ラベルは末尾の重複を除く
ax.set_xticklabels(labels)
ax.set_ylim(0, 1)
ax.set_title('関東地方 SDGs4指標', fontsize=13)
解釈しやすい4指標(求人倍率・ごみリサイクル率・大学進学率・合計特殊出生率)を選び、
6地域ブロック(北海道・東北、関東、中部、近畿、中国・四国、九州・沖縄)の平均値を
min-max正規化(全国最小=0、全国最大=1)してレーダーチャートで比較した。
地域別 正規化スコア(0〜1スケール)
| 地方 | 求人倍率 (雇用) | ごみリサイクル率 (環境) |
大学進学率 (教育) | 合計特殊出生率 (人口) |
| 北海道・東北 | 0.50 | 0.20 | 0.16 |
0.25 |
| 関東 | 0.31 | 0.53 | 0.61 |
0.24 |
| 中部 | 0.68 | 0.37 | 0.47 |
0.53 |
| 近畿 | 0.28 | 0.18 | 0.65 |
0.41 |
| 中国・四国 | 0.61 | 0.52 | 0.35 |
0.62 |
| 九州・沖縄 | 0.45 | 0.35 | 0.13 |
0.76 |
地域別の強みと弱みの解釈
関東・近畿(大都市圏)の特徴
大学進学率はトップクラスだが、合計特殊出生率が全地域で最も低い(0.24程度)。
「教育達成度は高いが、人口の持続可能性が低い」という都市型ジレンマが鮮明に表れている。
九州・沖縄・中国四国の特徴
合計特殊出生率が高く(0.62〜0.76)、地方型の人口持続可能性が高い。
一方で大学進学率が低い傾向があり、SDGsの「教育の質」面での課題がある。
中部地方の特徴
求人倍率が全地域トップ(0.68)で雇用面に強みを持つ。
製造業基盤が強く(愛知県など)、雇用の安定が生活水準を支えている。
DS LEARNING POINT 4
SDGs達成度の統計的評価(ベンチマークと格差の可視化)
SDGsの進捗を評価するには「ベンチマーク(比較基準)」の設定が重要。
本研究ではmin-max正規化により全国最低=0・全国最高=1としたが、
国際比較では「OECD平均」や「SDGs目標値」をベンチマークにすることも多い。
地域格差の「大きさ」は標準偏差で測定できる。
import pandas as pd
import numpy as np
# 指標の地域格差を「標準偏差」で定量化
RADAR_COLS = ['求人倍率', 'ごみリサイクル率', '大学進学率', '合計特殊出生率']
# 都道府県データから地域ブロック別の平均を算出
region_means = df.groupby('地方')[RADAR_COLS].mean()
# 地域間の格差(地域平均間の標準偏差)
region_sd = region_means.std()
print("地域間格差(地域平均の標準偏差):")
print(region_sd.sort_values(ascending=False))
# min-max正規化でスケールを揃える
col_min = df[RADAR_COLS].min()
col_max = df[RADAR_COLS].max()
region_norm = (region_means - col_min) / (col_max - col_min)
# 格差指数(最大値と最小値の差)
gap = region_norm.max() - region_norm.min()
print("\n格差指数(正規化スコアの地域間最大差):")
print(gap.sort_values(ascending=False))
# → 合計特殊出生率が最も大きな地域格差を持つ
まとめ・政策的示唆
主要な発見
SSDSE-B 2022年データから構築した7指標に主成分分析を適用した結果、
都道府県の「SDGs持続可能性スコア」の構造が以下のとおり明らかになった。
-
PC1(総合持続可能性スコア, 寄与率42.6%)は「地方型 vs 都市型」の対立軸:
保育所密度・合計特殊出生率が高い地方型都道府県がPC1高スコア、
大学進学率・消費支出が高い大都市圏がPC1低スコアに位置する。
-
Ward法クラスタリングで4〜6クラスターを識別:
大都市圏クラスター・九州沖縄クラスター・北陸クラスター・東北クラスターなど、
地理的・産業的特性に対応したクラスター構造が確認された。
-
レーダーチャートで「SDGs達成の強みと弱み」を地域別に可視化:
九州・沖縄は人口持続可能性が高い一方、教育(大学進学率)に課題。
関東・近畿は教育は高いが人口持続可能性が低い。
中部は雇用(求人倍率)で全地域トップ。
-
統計が示す「SDGsのトレードオフ」:
大学進学率が高い地域ほど出生率が低い傾向があり(r<0)、
「教育の充実」と「人口の持続可能性」の間にトレードオフが存在することが示唆される。
政策的示唆
SDGsを「総合的に達成する」都道府県は存在せず、各地域は特定の指標で強みを持ちつつ
別の指標で課題を抱えている。効果的なSDGs政策設計には、
地域ごとの「弱み」指標に重点を絞った施策が必要である。
本研究の手法(PCA+クラスタリング+レーダーチャート)は
多次元的な地域比較のための汎用的フレームワークとして活用できる。
本研究の限界と今後の課題
- 断面データ(2022年1時点)のみの分析であり、時系列トレンドは考慮していない
- 7指標はSDGsの一部にすぎず、網羅的な達成度評価のためにはより多くの指標が必要
- 都道府県レベルの集計値であり、県内格差(都市・農村間)は捨象されている
- 指標の「逆数変換・対数変換」はスコアの解釈に影響するため感度分析が望ましい
教育的価値(この分析から学べること)
- SDGs指標:経済・社会・環境の3軸からなる持続可能性の指標群。複数次元を統合する考え方を学べる。
- 合成指標の作り方:標準化(z-score化)した後に加重平均する手法。重み設計が結果を左右することを意識すべき。
- 地域比較の意味:ランキング化は分かりやすいが、指標の選択・重みで順位は変わるため、ランキング絶対視は危険。
データ・コードのダウンロード
| データ | 出典 | 主な変数 |
| SSDSE-B-2026.csv(都道府県データ) |
統計数理研究所・統計センター |
消費支出、求人数、ごみ排出量、リサイクル率、進学者数、保育所数、出生率 |
| SDGs関連7指標(派生変数) |
SSDSE-B より計算 |
消費支出_log、求人倍率、ごみリサイクル率、ごみ排出量_inv、大学進学率、保育所密度、合計特殊出生率 |
本教育用コードはSSDSE-B-2026.csvの実データのみを使用(合成データ・乱数使用なし)。
図の再現には scikit-learn, scipy, matplotlib, pandas, numpy が必要。
教育用再現コード | 2022年度 統計データ分析コンペティション 審査員奨励賞 [高校生の部]
SDGs指標の地域比較:都道府県別の持続可能性スコア分析
⚠️ よくある誤解と注意点
統計分析の解釈で初心者がやりがちな勘違いをまとめます。特に「相関と因果の混同」「p値の過信」は研究現場でもよく起きる落とし穴です。本文を読む前にも、読んだ後にも、目を通してみてください。
❌ 「相関がある=因果関係がある」ではない
疑似相関(spurious correlation)とは、見かけ上は関係があるように見えるが、実際は無関係、または第三の変数(交絡変数)が両方に影響しているだけの現象です。
古典例: アイスクリームの売上 と 水難事故件数 は強く相関するが、片方が他方を引き起こしているわけではない。両者とも「夏の暑さ」という第三の変数に引きずられているだけ。
論文を読むときの心構え: 「○○と△△に強い相関が見られた」だけで終わっている主張は、本当に因果関係があるのか、それとも第三の変数(人口・所得・地理など)が共通要因として効いているだけではないかを必ず疑ってください。
❌ 「p値が小さい=重要な発見」ではない
p値が小さい(例えば p < 0.001)ことは「統計的に偶然とは考えにくい」という意味であって、「実用的に大きな効果がある」という意味ではありません。
例: 巨大なサンプルサイズ(n=100,000)では、相関係数 r=0.02 でも p < 0.001 になります。しかし r=0.02 は実用上ほぼ無視できる関係です。
正しい読み方: p値と効果量(係数の大きさ、相関係数の値)の両方をセットで判断してください。p値だけで「重要な発見」と結論づけるのは誤りです。
❌ 「回帰係数が大きい=重要な変数」ではない
回帰係数の絶対値は、説明変数の単位に強く依存します。「年収(万円)」と「失業率(%)」の係数を直接比較しても意味がありません。
正しい比較方法: (1) 標準化係数(各変数を平均0・分散1に変換した上での係数)を使う、(2) 限界効果(変数を1標準偏差動かしたときのyの変化)で比較する。
また、係数の大きさが「因果関係の強さ」を意味するわけでもありません。あくまで「相関的な関連の強さ」です。
❌ 「外れ値を除外すれば正しい結果」ではない
外れ値(極端な値)を「目障りだから」「結果が綺麗にならないから」という理由で除外するのは分析の改ざんに近い行為です。
外れ値が示すもの: 本当に重要な情報(東京の超高密度、北海道の超低密度など)であることが多い。外れ値を取り除くと「日本全体の傾向」を見誤る原因になります。
正しい対処: (1) 外れ値の出現要因を調査する(なぜ東京だけ突出するのか)、(2) ノンパラメトリック手法(Spearman相関・Kruskal-Wallis)を使う、(3) 外れ値を含む結果と除外した結果の両方を提示し、解釈を読者に委ねる。
❌ 「サンプルサイズが大きい=信頼できる」ではない
サンプルサイズ(n)が大きいと統計的検定の検出力は上がりますが、それは「偶然による誤差を減らす効果」にすぎません。
nが大きくても解消されない問題:
・選択バイアス(標本が偏っている)
・測定誤差(変数の定義が曖昧)
・欠損値のパターン(欠損がランダムでない)
・交絡変数の見落とし
例: 1万人にWeb調査して「ネット利用と幸福度は強く相関」と言っても、そもそも回答者がネットユーザー寄りに偏っているため、母集団全体の結論にはなりません。
❌ 「複雑なモデル=より良い分析」ではない
ランダムフォレスト・ニューラルネット・複雑な階層モデルなど、高度な手法を使えば「良い分析」と感じがちですが、必ずしもそうではありません。
過学習(overfitting)の罠: モデルが複雑すぎると、訓練データの偶然のパターンまで学習してしまい、新しいデータでは予測精度が落ちます。
シンプルさの価値: 重回帰分析や相関分析は「結果が解釈しやすい」「再現性が高い」という大きな利点があります。複雑な手法はシンプルな手法で答えが出ない時の最後の手段です。
❌ 「多重共線性は気にしなくていい」ではない
多重共線性とは、説明変数同士の相関が極めて強い状態のこと。これを放置すると、回帰係数の符号や大きさが入れ替わる異常事態が起こります。
典型例: 「総人口」と「労働力人口」を同時に投入すると、両者の相関が r=0.99 になり、係数推定が極端に不安定になります。「総人口は正だが、労働力人口は負」のような解釈不能な結果になりがちです。
診断と対処:
・VIF(分散拡大係数)を計算し、VIF > 10 の変数を確認
・相関行列で |r| > 0.8 のペアをチェック
・対処法:一方を除外、合成変数(PCA)に変換、Ridge回帰で安定化
❌ 「R²が高い=良いモデル」ではない
決定係数 R² はモデルの「当てはまりの良さ」を示しますが、R² が高くてもモデルが正しいとは限りません。
R² が高くなる罠:
・説明変数を増やせば R² は自動的に上がる(無関係な変数を追加してもR²は下がらない)
・時系列データでは、共通のトレンド(時間とともに増加)があるだけで R² が 0.9 を超える
・サンプルサイズが小さいとR²が過大評価される
代替指標: 調整済み R²(変数の数でペナルティ)、AIC・BIC(モデル選択基準)を併用してください。予測力の真の評価には交差検証(cross-validation)でテストデータの R² を見ること。
❌ 「ステップワイズで選んだ変数は重要」ではない
ステップワイズ法(バックワード・フォワード選択)は便利ですが、p値ベースの変数選択は再現性に問題があると批判されています。
問題点:
・同じデータでも実行順序によって最終モデルが変わる
・p値を繰り返し見ることで「偶然に有意な変数」を拾ってしまう(p-hacking)
・係数の標準誤差が過小評価され、信頼区間が嘘っぽくなる
より良い方法:
・事前に変数を理論で絞る(先行研究から候補を選ぶ)
・LASSO回帰(自動かつ統計的に正当化された変数選択)を使う
・交差検証で AIC/BIC 最小モデルを選ぶ
❌ 「線形回帰なら線形関係を前提にすべき」
重回帰分析は線形関係を前提とします。実際の関係が非線形なのに線形モデルで分析すると、本当の関係を見逃します。
非線形の例:
・U字型関係: 失業率と物価上昇率(フィリップス曲線)
・逓減効果: 所得と幸福度(年収 800万円までは強い正の効果、それ以上は飽和)
・閾値効果: 高齢化率と医療費(ある水準を超えると急激に上がる)
診断と対処:
・残差プロットで残差が0周辺に均等に分布しているか確認
・変数の対数変換・二乗項追加で非線形性を取り込む
・どうしても線形では捉えられないなら、機械学習(RF・GBM)を併用する
❌ 「データに当てはまった=予測に使える」ではない
「過去のデータでフィットしたから将来も予測できる」と思うのは危険です。
過学習(overfitting)の例: 47都道府県のデータに10個の説明変数を投入すれば、ほぼ完璧にフィットします(自由度がほぼゼロ)。でもそのモデルを新しい年度に適用すると、予測精度はほぼランダム並みに落ちることがあります。
正しい予測力の評価:
・データを訓練用 70%とテスト用 30%に分割し、テスト用での予測精度を見る
・k分割交差検証(k-fold CV)で予測の安定性を確認
・「説明変数の数 ≪ サンプルサイズ」のバランスを意識(目安:n > 10 × 変数数)
📖 用語集(この記事に出てくる統計用語)
統計の基本用語を初心者向けに解説します。本文中で見慣れない言葉が出てきたら、ここに戻って確認してください。
- p値
- 「効果がない」と仮定したときに、観察されたデータ(またはより極端なデータ)が得られる確率。0〜1の値で、慣例的に 0.05(5%)未満を「有意」と判断する。
- 有意水準
- 「偶然」と「意味のある違い」を分ける基準。通常 α=0.05(5%)を使う。p値 < α なら「有意」と判定。
- 信頼区間
- 「真の値はこの範囲にあるだろう」という幅。95%信頼区間 = 同じ実験を100回繰り返したら95回はこの範囲に真の値が入る。
- サンプルサイズ
- 分析に使ったデータ点の数(n)。一般にnが大きいほど推定が安定し、わずかな差も検出できるようになる。
- 標準誤差
- 推定値(係数など)のばらつきの目安。標準誤差が小さいほど推定値が安定している。
- 正規分布
- 釣鐘型の左右対称な分布。多くのパラメトリック検定(t検定・F検定など)は「データが正規分布に従う」ことを仮定する。
- 因果と相関
- 「相関がある」と「原因と結果の関係(因果)」は別物。アイスクリームの売上と水難事故は相関するが、原因は両者とも「夏の暑さ」。
- 外れ値
- 他のデータから極端に離れた値。分析結果を歪める原因になるため、検出して除外するか別途扱う必要がある。
- 欠損値
- データが取得できなかった部分(NaN・空白)。除外するか補完(平均代入・回帰代入など)するかが分析上の重要な判断点。
- 係数(回帰係数)
- 「説明変数 x が1単位増えたとき、目的変数 y が平均でどれだけ変化するか」を示す数値。正の値は正の影響、負の値は負の影響。
- 決定係数 R²
- 回帰モデルが目的変数のばらつきの何%を説明できるかを示す指標。0〜1の値で、1に近いほどモデルの説明力が高い。
📐 使っている手法をわかりやすく解説
統計手法について「何のためか」「結果をどう読むか」を初心者向けに解説します。
◆ 統計の基本概念(どの論文にも共通)
🔍 p値(有意確率)とは
- 何?
- 「もし本当に効果がなかったとしたら、今回の結果(またはもっと極端な結果)が偶然起きる確率」のこと。
- なぜ必要?
- 帰無仮説(「効果なし」の仮定)のもとで検定統計量の分布から計算する。
- 何がわかる?
- 「この関係は偶然ではなく、統計的に意味がある」と主張するための客観的な根拠になる。
- 読み方
- p < 0.05(5%未満)を「統計的に有意」と判断するのが慣例。ただし「p値が小さい=効果が大きい」ではない。効果量(係数の大きさ)とセットで判断する。
🗂️ ノンパラメトリック検定とは(なぜ使うのか)
- 何?
- 「データが正規分布に従う」という仮定を置かない検定手法の総称。Kruskal-Wallis検定・Mann-Whitney U検定などが代表例。
- なぜ必要?
- データの値ではなく「順位」に変換して検定統計量を計算する。外れ値や偏った分布に対しても安定して機能する。
- 何がわかる?
- サンプルサイズが小さい・データが歪んでいる・外れ値がある場合でも、グループ差の有無を検定できる。
- 読み方
- 「なぜノンパラメトリックを選ぶのか」の理由を示すには、正規性検定(Shapiro-Wilk)の結果を添えるのが望ましい。結果の解釈は対応するパラメトリック検定と同様(p < 0.05 で有意差あり)。
◆ この論文で使われている手法
📈 重回帰分析
- 何?
- 複数の説明変数(原因候補)が1つの目的変数(結果)にどれだけ影響するかを同時に推定する手法。
- どう使う?
- 目的変数 y を複数の説明変数 x₁, x₂, … で予測する式(y = a₁x₁ + a₂x₂ + … + b)を最小二乗法でフィットさせる。
- 何がわかる?
- 複数の要因が混在するなかで「どれが一番効いているか」を一度に検証できる。交絡変数を統制できる。
- 結果の読み方
- 係数(a₁, a₂…)のプラスは正の影響、マイナスは負の影響。p < 0.05 で統計的に有意。R²が1に近いほどモデルの説明力が高い。
- ⚠️ 注意点
- (1) 多重共線性を必ずVIFで確認(VIF>10で警告)。(2) 線形性の仮定—関係が曲線なら対数変換や二乗項を追加。(3) 残差プロットで正規性・等分散性を確認。(4) サンプル数は最低でも「説明変数数×10」が目安。(5) 外れ値1つで係数が大きく変わるのでCook距離で確認。
🔭 主成分分析(PCA)
- 何?
- 多数の変数を情報の損失を最小限にしながら少数の合成指標(主成分)に圧縮する手法。
- どう使う?
- 変数間の相関を利用して「最も分散が大きい方向」を第1主成分、以下順に直交する軸を抽出する。
- 何がわかる?
- 30変数あるデータを2〜3成分に要約して散布図で可視化したり、多重共線性の回避に使う。
- 結果の読み方
- 各主成分の「負荷量」を見て、どの変数がその成分を特徴づけるか解釈する。累積寄与率 70〜80% 以上なら要約として十分。
- ⚠️ 注意点
- (1) 多重共線性を必ずVIFで確認(VIF>10で警告)。(2) 線形性の仮定—関係が曲線なら対数変換や二乗項を追加。(3) 残差プロットで正規性・等分散性を確認。(4) サンプル数は最低でも「説明変数数×10」が目安。(5) 外れ値1つで係数が大きく変わるのでCook距離で確認。
🌿 Ward法クラスタリング
- 何?
- データをグループ(クラスター)に自動分類する手法。グループ内のばらつきが最小になるよう統合していく。
- どう使う?
- 統合後の「ばらつき増加」が最小になるペアを繰り返し合体させ、デンドログラム(樹形図)で可視化する。
- 何がわかる?
- 都道府県を「都市型」「農村型」などのグループに自動分類し、グループ間の特徴比較ができる。
- 結果の読み方
- デンドログラムの切り位置でクラスター数を決める。各クラスターの変数平均を見てグループを命名・解釈する。
- ⚠️ 注意点
- (1) 多重共線性を必ずVIFで確認(VIF>10で警告)。(2) 線形性の仮定—関係が曲線なら対数変換や二乗項を追加。(3) 残差プロットで正規性・等分散性を確認。(4) サンプル数は最低でも「説明変数数×10」が目安。(5) 外れ値1つで係数が大きく変わるのでCook距離で確認。
📅 時系列分析
- 何?
- 時間順に並んだデータのトレンドや周期性、変化点を分析する手法群の総称。
- どう使う?
- 折れ線グラフでトレンドを視覚化し、移動平均・指数平滑・AR/MA モデルを適用する。
- 何がわかる?
- 「出生率がいつから下がり始めたか」「コロナ前後で変化したか」などの変化を客観的に捉えられる。
- 結果の読み方
- 傾きが正なら上昇トレンド、負なら下降トレンド。変化点の前後で傾きが変わる場合は構造変化として解釈する。
- ⚠️ 注意点
- (1) 多重共線性を必ずVIFで確認(VIF>10で警告)。(2) 線形性の仮定—関係が曲線なら対数変換や二乗項を追加。(3) 残差プロットで正規性・等分散性を確認。(4) サンプル数は最低でも「説明変数数×10」が目安。(5) 外れ値1つで係数が大きく変わるのでCook距離で確認。
🌲 ランダムフォレスト + SHAP(機械学習による変数重要度)
- 何?
- 多数の決定木を組み合わせた予測モデル(RF)と、各変数の寄与度を個別に説明する SHAP値の組み合わせ。
- どう使う?
- RFで予測モデルを構築し、SHAPでゲーム理論的アプローチによって各変数の寄与を計算する。
- 何がわかる?
- 線形モデルでは捉えにくい非線形・交互作用関係も含めて「どの変数が重要か」を視覚的に示せる。
- 結果の読み方
- SHAP値プラスが予測値を上昇させる貢献、マイナスが低下させる貢献。変数重要度グラフの上位変数が最も影響力が大きい。
- ⚠️ 注意点
- (1) 多重共線性を必ずVIFで確認(VIF>10で警告)。(2) 線形性の仮定—関係が曲線なら対数変換や二乗項を追加。(3) 残差プロットで正規性・等分散性を確認。(4) サンプル数は最低でも「説明変数数×10」が目安。(5) 外れ値1つで係数が大きく変わるのでCook距離で確認。
↔️ VAR(ベクトル自己回帰)/ Granger因果検定
- 何?
- 複数の時系列変数が互いに影響し合う関係を分析する手法(VAR)と、「AがBの予測に役立つか」を検定する手法(Granger因果)。
- どう使う?
- VARは全変数を互いに説明変数として同時回帰。Granger因果はF検定でAのラグ変数がBの予測精度を向上させるかを確認する。
- 何がわかる?
- 「女性就業率と出生率はどちらが先に動くか」「リード・ラグ関係」を特定できる。
- 結果の読み方
- Granger因果 p < 0.05 → 「Aの過去値はBの予測に役立つ」(ただし真の因果とは限らない)。
- ⚠️ 注意点
- (1) 多重共線性を必ずVIFで確認(VIF>10で警告)。(2) 線形性の仮定—関係が曲線なら対数変換や二乗項を追加。(3) 残差プロットで正規性・等分散性を確認。(4) サンプル数は最低でも「説明変数数×10」が目安。(5) 外れ値1つで係数が大きく変わるのでCook距離で確認。
🚀 発展の可能性(結果 X → 新仮説 Y → 課題 Z)
この研究をさらに発展させるための3つの方向性を示します。「今回わかったこと(X)」から「次に検証すべき仮説(Y)」を立て、「具体的に何をするか(Z)」まで考えてみましょう。
① データ・時間的拡張
- 結果 X
- 本論文は特定の年度・地域の断面データ(または限られた時系列)で分析を行った。
- 新仮説 Y
- より新しい年度のデータや市区町村レベルの細粒度データを使えば、知見の時間的頑健性や地域内格差を検証できる。
- 課題 Z
- (1)統計センターから最新の SSDSE をダウンロードし、同じ分析を再実行する。(2)結果が変わった場合、その要因(コロナ・政策変化など)を考察する。(3)市区町村データ(SSDSE-A/C/F)で分析単位を細かくした場合の結果と比較する。
② 手法の発展:重回帰分析 の次のステップ
- 結果 X
- 本論文は 重回帰分析 を用いた推定を行った。
- 新仮説 Y
- パネルデータ固定効果モデル(FE)による都道府県固有の差の統制 により、本分析では統制できていない問題を解消できる可能性がある。
- 課題 Z
- (1)パネルデータ固定効果モデル(FE)による都道府県固有の差の統制 を実装し、本論文の係数推定と比較する。(2)操作変数法(IV)による内生性の解消 も試し、結果の頑健性を確認する。(3)推定結果の変化から、元の分析の仮定のどれが重要だったかを考察する。
③ 政策提言・実践への応用
- 結果 X
- 本論文は分析結果から特定の変数が目的変数に影響することを示した。
- 新仮説 Y
- 分析対象を日本全国から特定地域に絞ること、または逆に国際比較に拡張することで、政策の移転可能性と文脈依存性を検証できる。
- 課題 Z
- (1)有意な変数を「政策で変えられるもの」と「変えにくいもの」に分類する。(2)政策で変えられる変数について、係数の大きさから「どれだけ変えればどれだけ効果があるか」を試算する。(3)自治体・政策立案者への提言として、実現可能なアクションプランを1枚にまとめる。
🎯 自分でやってみよう(5つのチャレンジ)
学んだだけでは身につきません。実際に手を動かすのが最強の学習方法です。本論文のスクリプトをベースに、以下のチャレンジに挑戦してみてください。難易度別に5つ用意しました。
★☆☆☆☆ 入門
CH1. 同じデータで分析を再現する
まずは付属の Python スクリプトをそのまま実行し、論文と同じ図を再現してみてください。
ポイント: 各図がどのコード行から生成されているか辿る。エラーが出たら原因を考える。
★★☆☆☆ 初級
CH2. 説明変数を1つ追加・除外して結果を比較
本論文の分析モデルから説明変数を1つ抜いて再実行、あるいは1つ追加して再実行してください。
ポイント: 係数・p値・R² がどう変わったか観察する。多重共線性が原因で結果が変わる例を見つけられたら理想的。
★★★☆☆ 中級
CH3. 別の年度・別の都道府県で同じ分析を試す
SSDSE の別の年度(例:2015年度・2020年度)または特定都道府県のみのデータで同じ分析を実行してください。
ポイント: 時代や地域によって結論が変わるか? 変わるならその理由を考察する。
★★★★☆ 上級
CH4. 別の手法を組み合わせる
本論文の手法 + 1つの追加手法(例:重回帰 + LASSO、相関分析 + 主成分分析)で結果を比較してください。
ポイント: 手法の違いで結論が変わるか? どちらが妥当かを「なぜ」とともに説明できるように。
★★★★★ 発展
CH5. オリジナルの問いを立てて分析する
本論文の手法を借りて、あなた自身の問いを立てて分析してください。
例:「カフェの数と幸福度に関連はあるか」「教育費の高い県は出生率も高いか」など。
ポイント: 問い・データ・手法・結論を1ページのレポートにまとめる。これがデータサイエンスの「実践」。
💡 ヒント: 詰まったら本サイトの他の論文(同じ手法を使っている)のスクリプトをコピーして組み合わせるのが効率的です。手法ガイド・用語集も参考に。
💼 この手法は実社会でこう使われている
本論文で学んだ手法は、研究の世界だけでなく、行政・企業・NPO の現場でも様々に活用されています。具体的なシーンを紹介します。
🏛️
行政の政策立案
都道府県・市区町村の政策担当者は、本論文と同様のデータ分析を用いて「どこに予算を投じれば効果が出るか」を検討します。
例えば医療費削減策、移住促進策、子育て支援策などの効果予測・効果検証に直結します。
🏢
企業のマーケティング・出店戦略
小売チェーン・サービス業の出店戦略では、地域特性(人口構成、所得、ライフスタイル)と売上の関係を本論文と同じ手法で分析します。
ECサイトでも顧客セグメント分析・購買要因分析に類似手法が使われます。
🏥
医療・公衆衛生
感染症の流行予測、医療資源配分の最適化、健康格差の地域要因分析などで、本論文の統計手法は標準的に使われています。
WHO・厚労省レベルの政策評価でも同じ手法が活躍しています。
📊
メディア・ジャーナリズム
新聞・テレビの社会調査記事、選挙予測、世論調査の分析でも、本論文と同じ手法(回帰分析・クラスタリングなど)が使われています。
データジャーナリズムの記事はこの種の分析が中核です。
🎓
学術研究(隣接分野)
経済学・社会学・公衆衛生学・教育学・地理学などの実証研究では、本論文と同じ手法が日常的に使われます。
専門誌に掲載される論文の8割以上が、こうした統計手法に基づいて結論を出しています。
💰
金融・保険業界
与信判断(融資審査)、保険料の地域別設定、不動産価格予測などで、本論文と同様のモデリング手法が広く活用されています。
統計分析の能力は金融業界の必須スキルになっています。
🤔 よくある質問(読者からの想定Q&A)
この論文を読んで初心者が抱きやすい疑問に、教育的観点から答えます。
Q1. この分析、自分でもできますか?
はい、できます。SSDSE データは無料で公開されており、Python の pandas, scikit-learn, statsmodels を使えば全く同じ手順で再現可能です。本ページ下部のスクリプトを実行するだけで結果が得られます。
Q2. 使われている手法は他の分野にも応用できますか?
十分応用可能です。本論文の[手法]は、医療・教育・経済・環境など他のドメインでも標準的に使われる手法です。データの中身(変数)を入れ替えるだけで、別の問いにも適用できます。
Q3. 結論は本当に「因果関係」を示していますか?
本論文は「観察データ」を使った分析であり、厳密な意味での「因果関係」を完全に証明したわけではありません。あくまで「強い関連が見られた」という事実を提示しているにとどまります。真の因果を示すには、無作為化比較試験(RCT)か、自然実験を活用したIV・DiD 等の手法が必要です。
Q4. データの最新版を使うとどうなりますか?
SSDSE は毎年更新されているため、最新版を使えば近年のトレンド(特にコロナ禍以降の変化)も含めて分析できます。ただし、結論が変わる可能性もあります。それ自体が新しい発見につながります。
Q5. もっと深く学ぶには何を読めばいいですか?
「計量経済学」「データサイエンス入門」「統計的因果推論」などのテキストが入門に向いています。Python の場合は『Python ではじめる機械学習』(オライリー)、R の場合は『R で学ぶ統計学』が定番です。本サイトの他の論文も読み比べてみてください。