🎯 この記事を読むと何ができるようになるか
- 研究の核心:「都道府県別医療資源の偏在と健康格差医師数・病床数の地域不均衡分析」の問題意識と分析アプローチ
- 分析手法:重回帰分析で「複数の要因がどの程度結果に影響するか」を同時に推定する方法
- 分析手法:相関係数(Pearson・Spearman)で2変数の関係の強さと向きを定量化する方法
- 分析手法:ジニ係数・ローレンツ曲線で地域間の格差を数値化する方法
- 結果の読み方:係数・p値・図表から「何が言えて何が言えないか」を判断する力
- 応用:同じデータと手法を使って、別の問いを立てて分析する発想
📥 データの準備(再現コードを動かす前に)
このページの分析を自分で再現するには、以下の手順でデータを準備してください。コードの編集は不要です。
2
ファイルを所定のフォルダに配置する
ダウンロードしたCSVを、プロジェクトの
data/raw/ フォルダに入れます。
2026 統計・データ解析コンペ/
├── code/
│ └── 2019_H1_daijin.py ← 実行するスクリプト
└── data/
└── raw/
SSDSE-B-2026.csv ← ここに置く
3
スクリプトをそのまま実行する
ターミナルでプロジェクトルートに移動し、以下を実行します。
python3 code/2019_H1_daijin.py
図は
html/figures/ に自動保存されます。
日本における医療資源(医師・病院・病床)の地域格差は、長年にわたる重大な政策課題である。
厚生労働省のデータによれば、人口万人あたりの一般病院数は、最多の高知県(1.62件)と最少の神奈川県(0.31件)の間で
約5倍以上の開きがある。このような医療資源の地域不均衡は、
住民の健康格差や死亡率の格差に繋がると考えられている。
まず「都道府県別医療資源の偏在と健康格差医師数・病床数の地域不均衡分析」を統計的にとらえることが有効だと考えられる。
その理由は感覚や経験則だけでは、複雑な社会要因の中で「何が本当に効いているか」を見極めにくいからである。
本研究では公開データと統計手法を組み合わせ、この問いに定量的な答えを出すことを目指す。
問題意識:なぜ医療資源の偏在が重要か?
医師や病院が少ない地域では、急病時の受診が遅れたり、専門的治療を受けられなかったりするリスクが高まる。
こうした「アクセス格差」は最終的に死亡率や平均寿命の地域差となって現れ、
憲法が保障する「健康権の平等」に反する状況を生む可能性がある。
分析の流れ
SSDSE-B
47都道府県
2019年度
→
病院数密度
死亡率
高齢化率
→
Gini係数
Lorenz曲線
格差計測
→
相関分析
重回帰
規定要因
SSDSE-B-2026
Gini係数
Lorenz曲線
Pearson相関
重回帰分析
総務大臣賞
5.2倍
最多県と最少県の病院数格差
(高知県 vs 神奈川県)
0.214
一般病院数のGini係数
(都道府県間格差の大きさ)
r = 0.49
病院数密度 × 死亡率
Pearson相関係数
R² = 0.925
重回帰モデルの説明力
(高齢化率が支配的)
データと変数:SSDSE-B 2019年度データ
使用データの概要
本分析は、統計数理研究所が公開する SSDSE-B-2026(社会・人口統計体系データセット)
の2019年度(令和元年度)データを使用した。N=47都道府県、全数調査であるため標本誤差はなく、
記述統計・推測統計の両面からアプローチできる。
| カテゴリ | 変数名 | 出典統計 | 説明 |
| 医療資源 |
一般病院数(/万人) |
医療施設調査 |
主要な医療資源指標。病床数の代理変数としても機能 |
| 医療資源 |
一般診療所数(/万人) |
医療施設調査 |
プライマリケアへのアクセス指標 |
| 健康アウトカム |
死亡数→死亡率(/千人) |
人口動態統計 |
健康格差の代理変数。年齢調整なし粗死亡率 |
| 人口構造 |
65歳以上人口→高齢化率(%) |
人口推計 |
死亡率の主要交絡因子 |
| 社会経済 |
保健医療費(円/月) |
家計調査 |
二人以上世帯の保健医療支出。医療需要代理 |
| 規模 |
総人口→log変換 |
国勢調査 |
都市規模効果を制御 |
注意:粗死亡率の解釈
本分析で使用する「死亡率」は年齢調整を行っていない粗死亡率(crude death rate)である。
高齢者が多い地域では自然に死亡率が高くなるため、医療資源との単純な相関には「高齢化率」という
交絡因子が存在する。重回帰分析ではこの点を考慮して高齢化率を統制した。
変数の記述統計(2019年度・47都道府県)
| 変数 | 平均 | 標準偏差 | 最小 | 最大 |
| 一般病院数(/万人) | 0.690 | 0.279 | 0.313 (神奈川) | 1.617 (高知) |
| 一般診療所数(/万人) | 8.213 | 1.195 | 5.963 (埼玉) | 11.010 (東京) |
| 死亡率(/千人) | 11.37 | 1.68 | 8.24 (沖縄) | 14.76 (高知) |
| 高齢化率(%) | 28.94 | 3.39 | 21.8 (沖縄) | 35.2 (高知) |
| 保健医療費(円) | 13,069 | 1,474 | 9,925 | 17,031 |
まず47都道府県の一般病院数(人口万人あたり)を横棒グラフで可視化し、地域差のパターンを把握する。
棒の色は地域ブロック(北海道・東北・関東・中部・近畿・中国・四国・九州)を表している。
読み取りポイント
- 四国・九州が上位:高知・鹿児島・徳島・大分・宮崎が上位を占める。人口密度が低く、点在する住民に対応するために多くの病院が維持されていることが背景にある。
- 首都圏・中部が下位:神奈川・埼玉・愛知は最下位グループ。大都市圏では病院1施設で多数の患者をカバーできるため、件数は少なくなる傾向がある。
- 全国平均(0.69件/万人)との格差:最多の高知(1.617)は平均の2.3倍、最少の神奈川(0.313)は平均の0.45倍と、大きな開きがある。
上位5都道府県
| 順位 | 都道府県 | 病院数/万人 | 地域 |
| 1 | 高知県 | 1.617 | 四国 |
| 2 | 鹿児島県 | 1.273 | 九州 |
| 3 | 徳島県 | 1.264 | 四国 |
| 4 | 大分県 | 1.146 | 九州 |
| 5 | 宮崎県 | 1.114 | 九州 |
下位5都道府県
| 順位 | 都道府県 | 病院数/万人 | 地域 |
| 43 | 神奈川県 | 0.313 | 関東 |
| 44 | 滋賀県 | 0.353 | 近畿 |
| 45 | 愛知県 | 0.378 | 中部 |
| 46 | 静岡県 | 0.394 | 中部 |
| 47 | 埼玉県 | 0.402 | 関東 |
「病院数が多い=医療が充実」ではない?
病院数が多い地方圏では「規模の小さい無床・小規模病院が多い」ケースもある。
真の医療資源充実度を測るには、病床数・医師数・高度医療機器数なども合わせた
複合指標が必要である。本研究では入手可能な「一般病院数」と「一般診療所数」を用いた。
地域間格差を単なる「最大値÷最小値」ではなく、分布全体を考慮して定量化するために
Lorenz曲線とGini係数を用いる。
これはもともと所得不平等の測定に開発された手法だが、医療資源の地域格差分析にも広く応用されている。
📌 この回帰係数プロットの読み方
- このグラフは
- 重回帰分析の各説明変数の係数(影響の強さと向き)をバーや点で表したグラフ。
- 読み方
- 右(プラス方向)に伸びるバーは「この変数が増えると目的変数も増える」正の影響。左(マイナス方向)は逆。
- なぜそう解釈できるか
- エラーバー(誤差棒)が0をまたいでいない変数が統計的に有意(p < 0.05)。バーが長いほど影響が大きい。
DS LEARNING POINT 1
Gini係数とLorenz曲線:格差の数値化
Lorenz曲線は、人口を小さい順に並べたときの「累積人口割合」と
「累積資源割合」の関係を示したグラフである。完全平等(すべての都道府県で等しい密度)なら
45度の対角線に一致し、格差が大きいほど曲線は下に膨らむ。
Gini係数は「45度線とLorenz曲線に囲まれた面積」÷「45度線以下の三角形の面積」で定義される。
0(完全平等)から1(完全不平等)の値を取る。
本分析では一般病院数のGini係数 = 0.214、一般診療所数 = 0.081。
病院数の方が診療所数より格差が大きいことが分かる。
import numpy as np
def gini(values):
"""Gini係数を計算 (0=完全平等, 1=完全不平等)"""
v = np.sort(np.array(values, dtype=float))
n = len(v)
cumv = np.cumsum(v)
return (n + 1 - 2 * np.sum(cumv) / cumv[-1]) / n
# Lorenz曲線の座標
def lorenz_curve(values):
v = np.sort(np.array(values, dtype=float))
n = len(v)
cum_pop = np.concatenate([[0], np.arange(1, n+1) / n])
cum_val = np.concatenate([[0], np.cumsum(v) / v.sum()])
return cum_pop, cum_val
g = gini(hospital_per_10k)
print(f"Gini係数 = {g:.4f}")
# → 0.2142(一般病院数/万人, 2019年度, N=47)
Gini係数の解釈基準(参考)
- 0.0〜0.1:格差は非常に小さい(ほぼ平等)
- 0.1〜0.2:軽度の格差
- 0.2〜0.3:中程度の格差 ← 一般病院数(0.214)はここ
- 0.3〜0.5:大きな格差(所得格差では警戒水準)
- 0.5以上:極めて大きな格差
| 指標 | Gini係数 | 格差の程度 | 解釈 |
| 一般病院数(/万人) |
0.214 |
中程度 |
地方と都市圏で顕著な偏在。政策対応が必要なレベル |
| 一般診療所数(/万人) |
0.081 |
軽度 |
病院より均等に分布。プライマリケアの格差は小さい |
重要な発見:病院と診療所の格差パターンの違い
診療所(クリニック)のGini係数は0.081と低く、比較的全国均等に分布している。
一方、病院のGini係数は0.214と高く、地域間格差が大きい。
これは「日常の外来診療(診療所)へのアクセスは確保されているが、
入院・救急・専門医療(病院)へのアクセスに格差がある」ことを示唆する。
医療資源の多寡が実際の健康アウトカムと関連するかを検証するため、
一般病院数(/万人)と死亡率(/千人)の散布図を描き、Pearson相関係数と回帰直線を算出した。
散布図の読み取り:正の相関という「逆説」
散布図を見ると、病院数が多い都道府県ほど死亡率も高いという正の相関(r = 0.492)が見られる。
これは一見「医療資源が多いと死亡率が上がる」という逆説的な結果に見えるが、
実際には高齢化率という交絡因子が存在する。高齢者が多い地方では
病院数も多く(需要対応)、かつ死亡率も高い(高齢者の自然な死亡)のである。
この点は次の重回帰分析で明らかにする。
DS LEARNING POINT 2
相関と因果:交絡因子の問題
相関係数は「2変数の線形関係の強さ」を示すが、「AがBを引き起こす」という因果関係を保証しない。
今回の「病院数が多い→死亡率が高い」という正の相関は、「高齢化率」という第三の変数
(交絡因子)が両者を同時に引き上げているために生じている。
これを「交絡(confounding)」という。交絡因子を無視して
「病院を増やすと死亡率が上がる」と結論づけるのは誤りである。
重回帰分析によって交絡因子を統制することで、真の関係が明らかになる。
from scipy import stats
# 単純相関(交絡を考慮しない)
r, p = stats.pearsonr(hospital_per_10k, death_rate)
print(f"病院数 vs 死亡率: r={r:.3f}, p={p:.4f}")
# → r=0.492, p=0.0004 ← 正の相関(交絡あり)
# 偏相関(高齢化率を統制後)
# → 重回帰の標準化係数で確認
# → 高齢化率統制後の病院数の効果は負方向に変化
| 相関係数(Pearson r) | p値 | 判定 | 解釈 |
| 病院数密度 vs 死亡率:r = 0.492 |
p < 0.001 |
有意(正の相関) |
交絡(高齢化率)の影響を含む |
| 高齢化率 vs 死亡率:r = 0.954 |
p < 0.001 |
強い有意(正の相関) |
最も強い関連。主要交絡因子 |
| 診療所数密度 vs 死亡率:r = 0.238 |
p = 0.108 |
非有意 |
診療所数は死亡率と独立 |
死亡率を目的変数、医療資源密度・高齢化率・都市規模・保健医療費を説明変数とした
OLS重回帰分析を実施した。変数はすべて標準化(平均0、標準偏差1)して
標準化偏回帰係数(β)を比較した。
死亡率* = β₁・病院数密度* + β₂・診療所数密度* + β₃・高齢化率* + β₄・log人口* + β₅・保健医療費*
(* は標準化変数を示す。定数項の標準化係数は理論上0)
📌 この回帰係数プロットの読み方
- このグラフは
- 重回帰分析の各説明変数の係数(影響の強さと向き)をバーや点で表したグラフ。
- 読み方
- 右(プラス方向)に伸びるバーは「この変数が増えると目的変数も増える」正の影響。左(マイナス方向)は逆。
- なぜそう解釈できるか
- エラーバー(誤差棒)が0をまたいでいない変数が統計的に有意(p < 0.05)。バーが長いほど影響が大きい。
重回帰分析の結果(R² = 0.925、adj.R² = 0.916)
- 高齢化率(β ≈ +0.90, p < 0.001):死亡率への圧倒的な説明変数。標準偏差1単位の上昇が死亡率を0.90 SD押し上げる。
- 保健医療費(β ≈ −0.09, p ≈ 0.096):負の効果(高い医療費支出→低死亡率)が示唆されるが有意水準に至らず。
- log人口(β ≈ −0.08, p ≈ 0.249):都市規模の効果は有意でない。
- 病院数密度(β ≈ −0.02, p ≈ 0.649):高齢化率統制後は負方向だが有意でない。
DS LEARNING POINT 3
標準化偏回帰係数:説明変数を「フェアに」比較する
単位が異なる変数(病院数/万人、高齢化率%、保健医療費円)を同じ土俵で比較するには、
すべての変数を平均0・標準偏差1に標準化(z-score化)してから回帰する。
得られる係数を標準化偏回帰係数(β)と呼び、
「標準偏差1単位の変化がアウトカムを何SD変化させるか」として解釈できる。
import statsmodels.api as sm
import numpy as np
def standardize(arr):
return (arr - arr.mean()) / arr.std()
# 各変数を標準化
X_std = np.column_stack([
standardize(hospital_per_10k), # 病院数/万人
standardize(clinic_per_10k), # 診療所数/万人
standardize(elderly_rate), # 高齢化率
standardize(log_population), # log人口
standardize(healthcare_cost), # 保健医療費
])
y_std = standardize(death_rate)
model = sm.OLS(y_std, sm.add_constant(X_std)).fit()
print(model.summary())
# 標準化偏回帰係数の解釈:
# 高齢化率 β≈0.90 → 高齢化が1SD上昇すると死亡率が0.90SD上昇
# R²=0.925 → モデルが死亡率分散の92.5%を説明
DS LEARNING POINT 4
偏在指数(Location Quotient):地域格差の別の測り方
Gini係数・Lorenz曲線のほかに、地域格差を測る指標として偏在指数(Location Quotient: LQ)がある。
LQ > 1 ならば全国平均より医療資源が多く(過剰供給)、LQ < 1 ならば不足を示す。
# 偏在指数(Location Quotient)の計算
# LQ_i = (その都道府県の医師数/人口) / (全国の医師数/人口)
national_avg = df['病院数per万人'].mean() # 全国平均
df['LQ'] = df['病院数per万人'] / national_avg
# LQ > 1.2: 過剰供給圏(高知: LQ=2.34)
# LQ 0.8-1.2: 適正水準
# LQ < 0.8: 不足圏(神奈川: LQ=0.45)
shortage_pref = df[df['LQ'] < 0.8]['都道府県'].tolist()
print(f"医療資源不足都道府県数(LQ<0.8): {len(shortage_pref)}")
print(shortage_pref)
| 説明変数 |
標準化係数(β) |
p値 |
有意 |
解釈 |
| 高齢化率 |
+0.899 |
p < 0.001 |
*** |
死亡率の最大規定因子。高齢者比率が高いほど死亡率上昇 |
| 保健医療費 |
−0.086 |
p = 0.096 |
— |
医療費支出が多いほど死亡率低下傾向(有意でない) |
| log人口 |
−0.076 |
p = 0.249 |
— |
都市規模効果(非有意) |
| 診療所数密度 |
−0.050 |
p = 0.281 |
— |
診療所アクセスの死亡率抑制効果(有意でない) |
| 病院数密度 |
−0.025 |
p = 0.649 |
— |
高齢化統制後の病院効果(非有意) |
| モデル適合度 |
R² = 0.925 / adj.R² = 0.916 / F(5,41) = 100.7, p < 0.001 |
医療資源の係数が有意でない理由
高齢化率が死亡率分散の大部分(約91%)を説明するため、他の変数の効果が「隠れて」見えなくなる
多重共線性(VIF)の問題が生じている。また、本分析はN=47と小さく、
複数の説明変数では各変数の有意検出力が低下する。
真の医療効果を検証するには、年齢調整死亡率や医師1人あたり患者数等の
より精緻な指標と、より長い時系列データが必要である。
まとめと政策的含意
主要な発見
-
医療資源の地域偏在は実在し、測定可能:
一般病院数(/万人)のGini係数は0.214と中程度の格差を示した。
最多(高知)と最少(神奈川)の差は約5.2倍に達する。
-
Lorenz曲線による可視化で格差構造が明確に:
診療所(Gini=0.081)より病院(Gini=0.214)の格差が大きく、
「日常診療へのアクセスは均等だが、入院・専門医療に格差」という構造が示唆された。
-
死亡率の主規定因子は高齢化率(β=0.90, R²=0.925):
医療資源密度の直接効果は、高齢化率という交絡因子を統制すると有意でなくなった。
年齢調整死亡率を使った分析が今後の課題である。
-
地方の「病院が多い」は過疎地のインフラ問題の反映:
高知・鹿児島が上位なのは「医療が豊富」ではなく、
広域・過疎地に対応するため小規模病院が点在しているためである。
量より質・アクセスの評価が重要。
政策的含意
- 医師の地方配置インセンティブ:地域枠設置や義務年限付き奨学金を拡充し、都市集中を緩和する。
- 病院の機能分化と集約:小規模病院を高機能化するか、基幹病院に集約しつつ移送体制を整備する。
- 遠隔医療(オンライン診療)の活用:過疎地の医師不足を補完する技術的解決策。診療所格差が小さい(Gini=0.081)ことはオンライン化の下地として活用可能。
- 高齢化対応の優先:死亡率の最大規定因子は高齢化率であり、医療資源配分より介護・予防医療への投資が即効性を持つ可能性がある。
DS LEARNING POINT まとめ
本研究で使用した統計手法の学習ポイント
1. Gini係数:0(完全平等)〜1(完全不平等)。所得格差だけでなく医療資源・教育資源の地域格差にも使える汎用的な格差指標。
2. Lorenz曲線:Gini係数を「見える化」するグラフ。45度線からの乖離が格差を示す。
3. Pearson相関分析:2変数の線形関係を測る。ただし因果を示さない。交絡因子に要注意。
4. 標準化偏回帰係数:単位が異なる変数を同じスケールで比較できる。「どの変数が最も重要か」を把握するのに有効。
# 本分析のコア計算まとめ
# Gini係数
g = (n + 1 - 2 * np.sum(np.cumsum(v_sorted)) / v_sorted.sum()) / n
# Lorenz曲線
cum_pop = np.arange(0, n+1) / n
cum_val = np.concatenate([[0], np.cumsum(v_sorted) / v_sorted.sum()])
# Pearson相関
r, p = stats.pearsonr(x, y)
# 標準化偏回帰係数
X_std = (X - X.mean(axis=0)) / X.std(axis=0)
y_std = (y - y.mean()) / y.std()
model = sm.OLS(y_std, sm.add_constant(X_std)).fit()
betas = model.params[1:] # 標準化偏回帰係数
データ・コードのダウンロード
| データ・資料 | 出典・説明 |
| SSDSE-B-2026(都道府県データ) |
統計数理研究所 社会・人口統計体系データセット。本分析では2019年度データを使用。 |
| 一般病院数・一般診療所数 |
厚生労働省 医療施設(動態)調査(SSDSE-Bに収録) |
| 人口・死亡数・高齢化率 |
総務省 人口推計・厚生労働省 人口動態統計(SSDSE-Bに収録) |
| 保健医療費 |
総務省 家計調査(二人以上の世帯)(SSDSE-Bに収録) |
本教育用コードはSSDSE-B-2026の実データのみを使用(合成データ・乱数生成なし)。
図は2019年度の47都道府県実績値に基づく。
教育用再現コード | 2019年度 統計データ分析コンペティション 総務大臣賞 [高校生の部]
データ出典:SSDSE-B-2026(統計数理研究所)
⚠️ よくある誤解と注意点
統計分析の解釈で初心者がやりがちな勘違いをまとめます。特に「相関と因果の混同」「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・空白)。除外するか補完(平均代入・回帰代入など)するかが分析上の重要な判断点。
- VIF
- Variance Inflation Factor(分散拡大係数)。多重共線性の強さを示す指標。VIF > 10 で「強い多重共線性あり」と判断。
- 係数(回帰係数)
- 「説明変数 x が1単位増えたとき、目的変数 y が平均でどれだけ変化するか」を示す数値。正の値は正の影響、負の値は負の影響。
- 多重共線性
- 説明変数同士の相関が強すぎる状態。係数推定が不安定になり、解釈を誤る原因になる。VIF > 10 が警告サイン。
- 標準化係数
- 変数の単位の影響を取り除いた係数。複数の変数の影響の大きさを単位に依存せず比較するために使う。
- 決定係数 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距離で確認。
🔗 相関分析
- 何?
- 2つの変数の「一緒に増減する傾向の強さと向き」を −1〜+1 の相関係数 r で数値化する手法。
- どう使う?
- 散布図を描き、Pearson(連続データ)または Spearman(順序データ・外れ値に強い)の相関係数を計算する。
- 何がわかる?
- 「気温が高い県ほど熱中症指標が高い」などの傾向を素早く確認できる。変数選択の第一歩として使われることも多い。
- 結果の読み方
- r > +0.7 は強い正の相関、r < −0.7 は強い負の相関、|r| < 0.3 はほぼ無相関。相関は因果関係を示すものではない点に注意。
- ⚠️ 注意点
- (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距離で確認。
📊 ジニ係数・ローレンツ曲線
- 何?
- 所得や医療資源などの「不平等度(格差)」を0〜1の数値で表す指標。0が完全平等、1が完全不平等。
- どう使う?
- データを昇順に並べ、累積シェアの曲線(ローレンツ曲線)と完全平等線との面積から計算する。
- 何がわかる?
- 「都道府県間の医師数の格差は大きいか」「格差は拡大・縮小しているか」を客観的に測れる。
- 結果の読み方
- ジニ係数 0.3 以上は格差が大きい水準。時系列変化で格差のトレンドを読む。
- ⚠️ 注意点
- (1) 多重共線性を必ずVIFで確認(VIF>10で警告)。(2) 線形性の仮定—関係が曲線なら対数変換や二乗項を追加。(3) 残差プロットで正規性・等分散性を確認。(4) サンプル数は最低でも「説明変数数×10」が目安。(5) 外れ値1つで係数が大きく変わるのでCook距離で確認。
📍 特化係数(LQ)分析
- 何?
- ある地域のある指標の「全国平均と比べた特化度」を数値化する手法。LQ > 1 なら全国平均より高い。
- どう使う?
- LQ = (地域シェア)÷(全国シェア)。CO₂排出量のLQなら製造業比率の地域/全国比で計算。
- 何がわかる?
- 「この地域はCO₂排出が全国平均の何倍か」「どの産業が特化しているか」を比較できる。
- 結果の読み方
- LQ = 1.0 が全国平均。LQ > 1.5 で高特化、LQ < 0.5 で著しく低い。
- ⚠️ 注意点
- (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 で学ぶ統計学』が定番です。本サイトの他の論文も読み比べてみてください。