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

市区町村別でみる
合計特殊出生率推移の特徴分析

⏱️ 推定読了時間: 約40分
村松 波・熊野 翔・川田 瑛貴(武蔵野大学 工学部 数理工学科) 手法:子ども女性比によるTFR近似(回帰分析)・残差分析・分布比較・9領域分類・地図可視化 データ:SSDSE-2019A/B・国勢調査・人口動態統計(ベイズ推定TFR)ほか
🔬 地図可視化🔬 時系列分析🔬 相関分析🔬 重回帰🔬 階層ベイズ🏷 人口・少子化
🔬 手法タグ / 🏷 応用タグ(クリックで同タグの論文をネットワーク検索)
🔬 再現カルテ — 原論文のデータが手に入らないため、代替データで再現

この教材は、原論文が使ったデータそのものを使えていません。そこで代わりのデータで同じ問いを追いかけ、結論の向き(増える/減る、強い/弱い)が原論文と一致するかを確かめます。「同じ数値が出る」ことは目標にしていません。

原論文が使ったデータ人口動態統計特殊報告・SSDSE
分析単位:市区町村
中核手法:回帰分析・相関分析・残差分析
この教材が使うデータ
原論文(PDF)市区町村別でみる合計特殊出生率推移の特徴分析
統計活用奨励賞/村松 波、熊野 翔、川田 瑛貴(武蔵野大学工学部)
✅ この教材でできること
  • 分析に使うデータは同梱済みで、ブラウザ上でそのまま読み込める
⚠️ この教材ではできないこと(原論文との違い)
  • 分析の細かさが原論文と違う:論文=市区町村別TFR(市区町村x82言及)。教材=SSDSE-B都道府県
📄 原論文との違いを、もっと詳しく
📄 原論文:市区町村別の合計特殊出生率(TFR)推移データから特徴を分類・分析(市区町村レベルの比較が中心)。
📘 本教材:SSDSE-B-2026(都道府県データ)で TFR の推移と要因を再現。
⚠️ 注意:市区町村 → 都道府県への粒度変更により、原論文が示した市区町村間のばらつき・類型は本教材では再現していない。

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

🏅 論文審査会コメント(審査員はここを評価した)
「出生率の推移について多角的分析を試み、研究の動機も極めて明確であり、好ましい論文と評価された。分析結果の解釈を深めれば、より説得力のある論文となる。」
出典:統計センター「統計データ分析コンペティション」受賞論文PDF掲載の審査講評。プロの審査員が何を評価し、何を注文したかは論文の読み方の最良の手本になる。
📝 3行で分かる要約

目次

  1. 研究の背景と目的
  2. データと変数
  3. 主要な分析結果
  4. 統計的手法の解説
  5. 発展的学習
  6. まとめと今後の課題
  7. 参考文献・データ
  8. 📥 データの準備
  9. 💼 実社会での応用
  10. ⚠️ よくある誤解
  11. 📖 用語集
  12. 📐 手法ガイド
  13. 🚀 発展の可能性
  14. 🎯 自分でやってみよう
  15. 🤔 Q&A
  16. 🐍 ブラウザで動かす

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

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

このページの図1(実データ計算)を自分で再現するには、以下の手順でデータを準備してください。コードの編集は不要です。図2〜図4は原論文の報告値をグラフ化するもので、追加データは不要です。

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

※ 原論文はこのほかに e-Stat 国勢調査(市区町村別の年齢別女性人口・0〜4歳人口、1995〜2015年)、厚生労働省「人口動態保健所・市区町村別統計」のベイズ推定TFR、内閣府・総務省の課税対象所得、国土交通省の地価公示、東京都福祉保健局の区市町村別TFRを独自に収集・結合しています。これらは SSDSE 未収録のため、原論文の中核である市区町村別の近似計算・散布図・地図は再計算できません(詳細は「データと変数」の再現範囲を参照)。

1
研究の背景と目的

日本の総人口は2011年以来減少を続けており、その根本的な要因である少子化は国の最重要課題の一つである。少子化の指標である合計特殊出生率(Total Fertility Rate、以下 TFR)は2005年に過去最低の1.26を記録し、その後少しずつ上昇したものの、人口安定に必要な人口置換水準の2.07には遠く及ばない。有効な対策を打つには、TFR に効いている要因を明らかにする必要がある。

TFR には大きな地域差がある。原論文はまず提供データ SSDSE の「合計特殊出生率」を都道府県ごとにグラフ化し(原論文 図1・図2)、沖縄が他都道府県に比べて一貫して高い値で推移することを確認するところから出発する。しかし都道府県単位では、市区町村ごとのばらつきが平均化されてしまい特徴が見つけにくい。そこで「市区町村別の、できるだけ長期間の TFR 時系列」を武器に、都道府県別の分析では見えにくい説明要因を探ろう——というのが本研究の問題意識である。

都道府県別合計特殊出生率の推移(SSDSE-B実データ・沖縄強調)
図1:都道府県別 合計特殊出生率の推移(SSDSE-B-2026 実データによる再表現)。原論文 図1・図2 は SSDSE-2019B の 2005〜2016 年で同じ趣旨の図を描いている(本図の期間は 2012〜2023 年で異なる)。
📊 図1の読み方
灰色の線
47都道府県それぞれの TFR の年次推移。1本1本が「都道府県単位の平均値」である点に注意。
オレンジの線
沖縄県。全期間を通じて最も高い水準(2015年 1.96)。原論文 図2 の「沖縄の高さ」がそのまま現行データでも確認できる。
青の線
東京都。最低水準(2015年 1.24)。だが本研究が後に示すように、東京都の内部には TFR が倍増した区が存在する——都道府県平均はそれを覆い隠してしまう。
やってみようステップ2:図1 都道府県別 TFR 推移(SSDSE-B 実データ)を描く
📝 コード
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
# ===== ステップ2: 図1 都道府県別 TFR 推移(実データ・沖縄強調) =====
pv = df.pivot_table(index='年度', columns='都道府県', values='TFR')
fig, ax = plt.subplots(figsize=(9.5, 5.8))
for pref in pv.columns:
    if pref not in ('沖縄県', '東京都'):
        ax.plot(pv.index, pv[pref], color='#B0BEC5', lw=0.8, alpha=0.7, zorder=1)
ax.plot(pv.index, pv['沖縄県'], color='#E65100', lw=3.0, zorder=3,
        marker='o', ms=4, label='沖縄県(一貫して最高水準)')
ax.plot(pv.index, pv['東京都'], color='#1565C0', lw=2.2, zorder=2,
        marker='s', ms=3.5, label='東京都(最低水準で推移)')
ax.set_xlabel('年')
ax.set_ylabel('合計特殊出生率(TFR)')
ax.set_title('都道府県別 合計特殊出生率の推移(SSDSE-B-2026 実データ、2012〜2023年)\n'
             '原論文 図1・図2(SSDSE-2019B、2005〜2016年)の再表現:沖縄の高さが際立つ',
             fontsize=11)
ax.legend(loc='upper right', fontsize=10)
ax.grid(alpha=0.3)
fig.tight_layout()
fig.savefig(f'{FIG_DIR}/2019_U4_fig1.png', bbox_inches='tight')
plt.close(fig)

tfr15 = pv.loc[2015].sort_values(ascending=False)
tfr23 = pv.loc[2023].sort_values(ascending=False)
print('図1 保存: 2019_U4_fig1.png')
print(f"2015年 TFR 上位: {'、'.join(f'{k} {v:.2f}' for k, v in tfr15.head(3).items())}")
print(f"2015年 TFR 下位: {'、'.join(f'{k} {v:.2f}' for k, v in tfr15.tail(3).items())}")
print(f"都道府県単位の TFR 標準偏差(実データ計算): "
      f"2015年 {tfr15.std(ddof=1):.4f} / 2023年 {tfr23.std(ddof=1):.4f}")
print('  ※ 原論文の報告値 0.1327242 は「2010年の都道府県単位 TFR」の標準偏差。')
print('     原論文はこれが市区町村単位の分布幅の約半分だと指摘した(図8・図9)')
▼ 実行結果
図1 保存: 2019_U4_fig1.png
2015年 TFR 上位: 沖縄県 1.96、島根県 1.78、宮崎県 1.71
2015年 TFR 下位: 京都府 1.35、北海道 1.31、東京都 1.24
都道府県単位の TFR 標準偏差(実データ計算): 2015年 0.1308 / 2023年 0.1332
  ※ 原論文の報告値 0.1327242 は「2010年の都道府県単位 TFR」の標準偏差。
     原論文はこれが市区町村単位の分布幅の約半分だと指摘した(図8・図9)
💡 解説
  • df.pivot_table(index='年度', columns='都道府県', values='TFR') — 縦持ちのデータを「年×都道府県」の表に組み替えると、47本の線が一気に描けます。
  • 沖縄県(2015年 1.96)と東京都(1.24)を強調しました。原論文 図2 の「沖縄の高さ」は現行データでも変わりません。
  • 都道府県単位の TFR の標準偏差は 0.13 前後(実データ計算)。原論文の報告値 0.1327242(2010年)とほぼ同水準で、市区町村単位(この約2倍の幅)との対比の土台になります。
💡 Python TIPS 多数の線を描くときは「その他は灰色・細く、注目対象だけ色付き・太く」の強調デザインにすると一気に読みやすくなります(zorder で前後関係も制御)。
問題提起:市区町村別の TFR 時系列は、実は簡単には手に入らない 市区町村のような小地域では出生数が少なく、単純に計算した TFR は偶然変動で大きくぶれる。このため厚生労働省はベイズ推定を用いた市区町村別 TFR(人口動態保健所・市区町村別統計)を公表しているが、原論文の執筆時点で利用できたのは 2000年・2005年・2010年のみで、2015年のベイズ推定値は未公開だった。先行研究(加藤 2017)も 2005・2010 年の2時点にとどまり、愛媛県の事業報告書は県内に限られる。「全市区町村×長期間」の TFR データそのものを作るところが本研究の最初のハードルである。

そこで原論文は、TFR の代理指標として人口学で使われてきた子ども女性比(5歳未満の子どもの数を「若年女性」数で割ったもの)に着目する。子ども女性比の材料(0〜4歳人口・年齢別女性人口)は国勢調査にあるため、1995〜2015年まで5年ごとに全市区町村で計算できる。これを TFR(ベイズ推定)に回帰させて較正すれば、ベイズ推定が存在しない年まで市区町村別 TFR を拡張できる——という戦略である。

分析の流れ
子ども女性比×
TFR(ベイズ推定)
の回帰・較正
年齢幅の最適化
(決定係数最大)
年次変化の
精度評価
分布の
特徴分析
9領域分類・
要因・地図で
特徴づけ

子ども女性比 回帰による較正 9領域分類 変動係数 地図可視化

2
データと変数

使用データ①:SSDSE-2019 からの抽出(原論文 表1)

原論文は SSDSE(独立行政法人統計センターの教育用標準データセット)の2019年版から次の項目を抽出した。市区町村データ(SSDSE-2019A)は後述の「TFR 関連要因」の計算に、都道府県データ(SSDSE-2019B)は合計特殊出生率の推移の確認(図1)に使われる。

データセット抽出した項目
SSDSE-2019A(市区町村)総人口、日本人人口(男女別含む)、15歳未満人口、転入者数、転出者数、世帯数、一般世帯数、死亡数、核家族世帯数、単独世帯数、婚姻件数、完全失業者数、就業者数、就業者数(女)、医師数、保育所等数、出生数
SSDSE-2019B(都道府県)合計特殊出生率

使用データ②:追加収集した変数(原論文 表2)

変数名期間出典
総人口・年齢別女性人口・0〜4歳男女人口1995〜2015(5年毎)e-Stat 国勢調査(第1次基本集計・人口等基本集計)
合計特殊出生率(ベイズ推定値)H15-H19、H20-H24厚生労働省「人口動態保健所・市区町村別統計」
課税対象所得(納税義務者数一人当たり)1975〜2018内閣府「市区町村別 人口・経済関係データ」、総務省「市町村税課税状況等の調」
市区町村の地価1975〜2019国土交通省 地価公示(変動率及び平均価格の時系列推移表)
東京都の区市町村別 合計特殊出生率H5〜H29(毎年)東京都福祉保健局「人口動態統計 年次推移(区市町村別)」
地味だが重要な前処理:異なる年のデータを「共通ID」で結合する 2005年と1995年の TFR(ベイズ推定)データには地域コードがなく、しかも同名の市区町村(例:府中市は東京都と広島県にある)が存在する。原論文は「都道府県名+半角スペース+市区町村名」を結合した変数を新たに作って共通IDとし、異なる年のデータをマージした。実データ分析では、この種の名寄せ・ID設計が分析全体の信頼性を左右する。

本ページの再現範囲(再現可能性トリアージ)

  • SSDSE 実データによる再現(図1):都道府県別 TFR の推移は現行 SSDSE-B-2026 に収録されており、実データで再現した。ただし収録期間が原論文(2005〜2016年)と本ページ(2012〜2023年)で異なる。
  • 原論文の報告値の可視化(図2・図3・図4):市区町村別の TFR(ベイズ推定)・年齢別女性人口・0〜4歳人口は SSDSE 未収録のため、原論文の中核である子ども女性比による近似計算は再計算できない。図2(表3の年齢範囲別決定係数)・図3(表7の平均・変動係数)・図4(表8の9領域分割)は原論文の報告値をそのままグラフ化したものである(再計算ではない)。
  • 原論文参照(図は再現せず):市区町村別の散布図(原論文 図4〜6・図11)、ヒストグラム(図8・図9)、時系列グラフ(図12)、日本地図・東京地図の塗分け(図13)、東京都の年次推移・所得との散布図(図14〜16)、特徴リスト(表10〜12)は、市区町村別データが必要なため本ページでは表と文章で内容を提示する。グラフは原論文を参照。
やってみようステップ1:SSDSE-B(都道府県・時系列)の読み込み
📝 コード
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
import os
import numpy as np
import pandas as pd
import matplotlib
matplotlib.use('Agg')
import matplotlib.pyplot as plt

plt.rcParams['font.family'] = 'Hiragino Sans'
plt.rcParams['axes.unicode_minus'] = False
plt.rcParams['figure.dpi'] = 150

FIG_DIR = 'html/figures'
DATA_B = 'data/raw/SSDSE-B-2026.csv'
os.makedirs(FIG_DIR, exist_ok=True)

# ===== ステップ1: SSDSE-B(都道府県・時系列)の読み込み =====
df = pd.read_csv(DATA_B, encoding='cp932', header=1)
df = df[df['地域コード'].astype(str).str.match(r'^R\d{5}', na=False)].copy()
df['年度'] = df['年度'].astype(int)
df['TFR'] = df['合計特殊出生率'].astype(float)
years = sorted(df['年度'].unique())
print(f"【SSDSE-B-2026】{df['都道府県'].nunique()}都道府県 × "
      f"{len(years)}年({years[0]}{years[-1]}年)")
print('  ※ 原論文が使った SSDSE-2019B は 2005〜2016 年収録。現行版とは期間が異なる')
print('  ※ 市区町村別 TFR(ベイズ推定)・年齢別女性人口は SSDSE 未収録')
print('     → 原論文の子ども女性比による近似計算は再計算不可(報告値で提示)')
▼ 実行結果
【SSDSE-B-2026】47都道府県 × 12年(2012〜2023年)
  ※ 原論文が使った SSDSE-2019B は 2005〜2016 年収録。現行版とは期間が異なる
  ※ 市区町村別 TFR(ベイズ推定)・年齢別女性人口は SSDSE 未収録
     → 原論文の子ども女性比による近似計算は再計算不可(報告値で提示)
💡 解説
  • pd.read_csv(..., encoding='cp932', header=1) — SSDSE-B は1行目が変数コード、2行目が日本語の変数名なので、header=1 で2行目を列名にします。
  • str.match(r'^R\d{5}') — 地域コードが「R+数字5桁」の行(47都道府県)だけを残すフィルタです。
  • 実行結果の「※」は本ページの再現範囲の宣言です。実データで計算できるもの(図1)と、原論文の報告値をグラフ化するだけのもの(図2〜4)を最初に区別しておきます。
💡 Python TIPS f"...{式}..."f-string{tfr15.std(ddof=1):.4f} のように「計算式+書式指定」をそのまま文字列に埋め込めます。
3
主要な分析結果

※ 本節の統計量(決定係数・回帰係数・残差の標準偏差・的中割合・平均・変動係数・領域別自治体数など)はすべて原論文の報告値である。図2〜図4は報告値の可視化であり、再計算ではない。

3.1 子ども女性比による TFR 近似の較正と最適化(原論文 4.1)

2010年の1734市区町村について、子ども女性比(0〜4歳人口 ÷ 若年女性人口)と TFR(ベイズ推定)の回帰分析を行う。このとき分母の「若年女性」の年齢範囲を6通りに変化させ、決定係数が最大になる範囲を探した。

女性年齢範囲別の決定係数(原論文表3の報告値の可視化)
図2:子ども女性比と TFR(ベイズ推定)の当てはまり(女性年齢範囲別)。原論文 表3・図3 の報告値の可視化(再計算ではない)。2010年・全1734市区町村。
📊 図2の読み方
横軸
子ども女性比の分母に使う女性の年齢範囲。先行研究では 15〜49歳・15〜44歳が使われてきた。
縦軸
決定係数 R²。バー上の数値は R² と相関係数 R(いずれも原論文 表3 の報告値)。
オレンジのバー
最適だった 20〜44歳(R²=0.657)。10代の大部分と45歳以上を外した方が当てはまりがよい。
外れ値の処理:人口1万人以上に限定すると R²=0.8424 に跳ね上がる 全1734市区町村で最適化すると外れ値が多かった。人口の少ない自治体では子どもが数人生まれるかどうかで比が大きくぶれるためである。回帰分析人口1万人以上の1248自治体に制限すると外れ値が消え、決定係数は 0.8424 になった(原論文 図4)。

得られた最適条件(原論文 表5 の転記)は次のとおり。

条件子ども女性比 × TFR(ベイズ推定)〔原論文 図4〕TFR(子ども女性比推定)× TFR(ベイズ推定)〔原論文 図5〕
年齢範囲対象決定係数傾きy切片決定係数傾きy切片
20〜44歳2010年・人口1万人以上の1248市区町村0.84244.89490.17040.84121.0094-0.0145
TFR(子ども女性比推定) = 4.8949 × 子ども女性比(女性20〜44歳) + 0.1704

※ 原論文の本文には回帰式が「0.8424×x+0.1704」と記されているが、0.8424 は表5では決定係数として報告されている値であり、表5の傾きは 4.8949 である。本ページは表5の値(傾き4.8949・切片0.1704)を回帰直線のパラメータとして表記した(原論文内の表記の不一致に関する注記)。

この式で計算した値を TFR(子ども女性比推定)と呼ぶ。TFR(ベイズ推定)との相関をとり直すと傾きはほぼ1(1.0094)、決定係数 0.8412 となり(原論文 図5)、さらに残差分析から残差の標準偏差は 0.0798。すなわちこの近似の誤差は 0.08 程度と見積もられた。

やってみようステップ3:原論文 表3 の報告値(年齢範囲別 R²・R)を可視化する
📝 コード
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
# ===== ステップ3: 図2 原論文 表3 の報告値(年齢範囲別 R²・R)を可視化 =====
# 出典: 原論文 表3(2010年・全1734市区町村、TFR(ベイズ推定)×子ども女性比)
t3 = pd.DataFrame({
    '年齢範囲': ['15〜44歳', '15〜49歳', '20〜39歳', '20〜44歳', '20〜49歳', '25〜39歳'],
    '決定係数R2': [0.605, 0.576, 0.645, 0.657, 0.625, 0.623],
    '相関係数R':  [0.777, 0.759, 0.803, 0.810, 0.791, 0.789],
})
best = t3.loc[t3['決定係数R2'].idxmax()]
fig, ax = plt.subplots(figsize=(8.6, 5.2))
colors = ['#90A4AE' if a != best['年齢範囲'] else '#E65100' for a in t3['年齢範囲']]
bars = ax.bar(t3['年齢範囲'], t3['決定係数R2'], color=colors, width=0.6)
for b, r2, r in zip(bars, t3['決定係数R2'], t3['相関係数R']):
    ax.text(b.get_x() + b.get_width() / 2, b.get_height() + 0.008,
            f'R²={r2:.3f}\nR={r:.3f}', ha='center', fontsize=9)
ax.set_ylim(0.5, 0.72)
ax.set_ylabel('決定係数 R²')
ax.set_xlabel('子ども女性比の分母に用いる「若年女性」の年齢範囲')
ax.set_title('子ども女性比と TFR(ベイズ推定)の当てはまり(女性年齢範囲別)\n'
             '原論文 表3・図3 の報告値の可視化(2010年・全1734市区町村。再計算ではない)',
             fontsize=11)
ax.grid(axis='y', alpha=0.3)
fig.tight_layout()
fig.savefig(f'{FIG_DIR}/2019_U4_fig2.png', bbox_inches='tight')
plt.close(fig)
print('図2 保存: 2019_U4_fig2.png')
print(t3.to_string(index=False))
print(f"→ 最適な年齢範囲は {best['年齢範囲']}(R²={best['決定係数R2']})")
print('→ さらに人口1万人以上の1248市区町村に限定すると R²=0.8424(原論文 図4・表5)')
print('   回帰式: TFR = 4.8949 × 子ども女性比 + 0.1704(原論文 表5 の報告値)')
▼ 実行結果
図2 保存: 2019_U4_fig2.png
  年齢範囲  決定係数R2  相関係数R
15〜44歳   0.605  0.777
15〜49歳   0.576  0.759
20〜39歳   0.645  0.803
20〜44歳   0.657  0.810
20〜49歳   0.625  0.791
25〜39歳   0.623  0.789
→ 最適な年齢範囲は 20〜44歳(R²=0.657)
→ さらに人口1万人以上の1248市区町村に限定すると R²=0.8424(原論文 図4・表5)
   回帰式: TFR = 4.8949 × 子ども女性比 + 0.1704(原論文 表5 の報告値)
💡 解説
  • t3 = pd.DataFrame({...}) — 原論文 表3 の数値を転記しています。計算し直しているわけではありません(材料の市区町村別データが SSDSE にないため)。
  • t3['決定係数R2'].idxmax() — 決定係数が最大の行(=最適な年齢範囲)を取り出して、バーの色を変えています。
  • 出力の最後の2行が本研究の較正の核心です。年齢範囲の最適化(20〜44歳)と対象の限定(人口1万人以上)という2つの工夫で R² が 0.657 → 0.8424 まで改善しています。
💡 Python TIPS リスト内包表記 ['A' if cond else 'B' for x in xs] で「条件によって色を変える」リストが1行で作れます。

3.2 TFR(子ども女性比推定)の年次変化はどこまで信用できるか(原論文 4.2)

近似値の水準だけでなく年次変化(増えた・減った)が信用できるかを調べるため、原論文は TFR(子ども女性比推定)と TFR(ベイズ推定)それぞれの「2010年−2005年の差」を計算し、散布図を描いた(原論文 図6。グラフは原論文参照)。両者の差は同符号の市区町村が多いことが確認できる。

的中率の評価:変化が 0.1 以上なら約87%で実際の TFR も増加 TFR(子ども女性比推定)の差の閾値を 0 以上・0.1 以上・0.2 以上と変えながら、そのうち TFR(ベイズ推定)の変化も 0 以上だった市区町村の割合を数える(原論文 図7。グラフは原論文参照)。閾値を 0.1 にとるとこの割合は約87%になる。つまり「子ども女性比推定の TFR が 0.1 以上増えた」自治体では、実際の TFR も約9割の頻度で増えていると考えられる——年次変化の信頼性の指標である。

3.3 分布の特徴:市区町村のばらつきは都道府県の約2倍(原論文 4.3)

TFR(子ども女性比推定)と TFR(ベイズ推定)のヒストグラムを比較すると、子ども女性比推定の方が分布の幅がやや小さいものの、よく似た分布であることが確認された(原論文 図8。グラフは原論文参照)。さらに都道府県単位の TFR の分布と比べると、都道府県単位の分布の幅は市区町村単位の約半分(標準偏差 0.1327242、2010年)だった(原論文 図9)。

実データによる傍証(本ページの計算) SSDSE-B-2026 の実データから都道府県単位の TFR の標準偏差を計算すると 2015年 0.1308、2023年 0.1332 で、原論文の報告値 0.1327242(2010年)とほぼ同水準である。都道府県単位の TFR のばらつきは年を通じて 0.13 前後で安定しており、「市区町村単位で見るとその約2倍の幅がある=都道府県平均は地域差の半分を隠している」という原論文の指摘の土台が確認できる(市区町村側の分布は SSDSE 未収録のため再計算不可)。
TFR(子ども女性比推定)の平均と変動係数の年次推移(原論文表7の報告値の可視化)
図3:TFR(子ども女性比推定)の平均と変動係数の年次推移。原論文 表7・図10 の報告値の可視化(再計算ではない)
📊 図3の読み方
青の実線(左軸)
市区町村別 TFR(子ども女性比推定)の平均。2005年に最小(1.451)となり、2010年には約0.2上昇。全国 TFR が2005年に過去最低(1.26)を付けた動きと整合的。
緑の破線(右軸)
変動係数(標準偏差÷平均)。0.14〜0.17 の狭い範囲にとどまり、平均が上下しても市区町村間の相対的なばらつきはあまり変わらない
注意
これは近似値(子ども女性比推定)の分布。誤差 0.08 程度(3.1節)を織り込んで読む。
やってみようステップ4:原論文 表7 の報告値(平均・変動係数の年次推移)を可視化する
📝 コード
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
# ===== ステップ4: 図3 原論文 表7 の報告値(平均・変動係数の年次推移)を可視化 =====
# 出典: 原論文 表7・図10(TFR(子ども女性比推定)、市区町村単位)
t7_year = [1995, 2000, 2005, 2010, 2015]
t7_mean = [1.690327, 1.663421, 1.451268, 1.50186, 1.632668]
t7_cv   = [0.155119, 0.143068, 0.156253, 0.151681, 0.166862]
fig, ax1 = plt.subplots(figsize=(8.6, 5.2))
ax1.plot(t7_year, t7_mean, color='#1565C0', marker='o', lw=2.5, label='平均')
ax1.set_xlabel('年')
ax1.set_ylabel('TFR(子ども女性比推定)の平均', color='#1565C0')
ax1.tick_params(axis='y', labelcolor='#1565C0')
ax1.set_xticks(t7_year)
ax1.set_ylim(1.40, 1.75)
ax2 = ax1.twinx()
ax2.plot(t7_year, t7_cv, color='#2E7D32', marker='s', lw=2.5, ls='--', label='変動係数')
ax2.set_ylabel('変動係数(標準偏差÷平均)', color='#2E7D32')
ax2.tick_params(axis='y', labelcolor='#2E7D32')
ax2.set_ylim(0.10, 0.20)
for y, m in zip(t7_year, t7_mean):
    ax1.annotate(f'{m:.3f}', (y, m), textcoords='offset points',
                 xytext=(0, 9), ha='center', fontsize=9, color='#1565C0')
ax1.set_title('TFR(子ども女性比推定)の平均と変動係数の年次推移\n'
              '原論文 表7・図10 の報告値の可視化(再計算ではない)', fontsize=11)
ax1.grid(alpha=0.3)
h1, l1 = ax1.get_legend_handles_labels()
h2, l2 = ax2.get_legend_handles_labels()
ax1.legend(h1 + h2, l1 + l2, loc='lower right', fontsize=10)
fig.tight_layout()
fig.savefig(f'{FIG_DIR}/2019_U4_fig3.png', bbox_inches='tight')
plt.close(fig)
print('図3 保存: 2019_U4_fig3.png')
print(pd.DataFrame({'年': t7_year, '平均': t7_mean, '変動係数': t7_cv}).to_string(index=False))
print('→ 平均は 2005 年に最小(1.451)となり 2010 年には約 0.2 上昇。')
print('   変動係数は平均が増減してもあまり変化しない(原論文の指摘)')
▼ 実行結果
図3 保存: 2019_U4_fig3.png
   年       平均     変動係数
1995 1.690327 0.155119
2000 1.663421 0.143068
2005 1.451268 0.156253
2010 1.501860 0.151681
2015 1.632668 0.166862
→ 平均は 2005 年に最小(1.451)となり 2010 年には約 0.2 上昇。
   変動係数は平均が増減してもあまり変化しない(原論文の指摘)
💡 解説
  • ax2 = ax1.twinx() — 左右で単位の違う2系列(平均と変動係数)を1枚に重ねる定番テクニックです。
  • 変動係数=標準偏差÷平均。平均の水準が変わっても比較できる「相対的なばらつき」の指標で、原論文が分布の年次比較に使っています。
  • 数値は原論文 表7 の転記です。1995〜2015年の5時点×全市区町村の TFR 推定値は、3.1節の較正式があって初めて作れる系列であることに注意してください。
💡 Python TIPS ax.annotate(text, (x, y), textcoords='offset points', xytext=(0, 9)) で「点の少し上」にラベルを置けます。

3.4 TFR の値×年次変化で市区町村を9領域に分類する(原論文 4.4)

x軸に A=2015年の TFR(子ども女性比推定)、y軸に B=その差(2015年−2005年)をとった散布図(原論文 図11。グラフは原論文参照)を、4本の直線(A=1.3、A=1.8、B=0.1、B=0.5)で9つの領域に分割し、人口2000人以上の市区町村を分類した。

9領域の分割条件と市区町村数(原論文表8の報告値の再表現)
図4:散布図平面の9領域分割と各領域の市区町村数。原論文 表8 の報告値の再表現(再計算ではない)。色が濃いほど自治体数が多い。なお表8の各領域の値の単純和は1415で、表8の「合計」欄1424とは一致しない(原論文内の不整合。本図は各セルの値をそのまま転記)。
📊 図4の読み方
右上(領域1-1)
2015年時点でかなり高く(A≧1.8)、2005年からの伸びも大きい(B>0.5)。35自治体。
中央(領域2-2)
中位水準・中程度の伸び。725自治体と過半数がここ。ほとんどの自治体は「そこそこの水準で少し回復」した。
左下(領域3-3)
低水準(A<1.3)で伸びもない(B<0.1)。56自治体。少子化が最も深刻な領域。
左上(領域3-1)
低水準から大幅増——該当は0自治体。TFR が低い自治体が一気に回復した例はない。

(1) 各領域の時系列推移(原論文 図12。グラフは原論文参照)

領域散布図上の定義1995〜2015年の時系列推移の特徴
領域1-1(35自治体)A≧1.8 かつ B>0.51995年からV字型に推移し、全体的に値が高い。
領域2-1(9自治体)1.3≦A<1.8 かつ B>0.5領域1-1と同様に上昇するが、伸びは1-1より大きい
領域3-3(56自治体)A<1.3 かつ B<0.1全体的に右肩下がり。2005年に下がってから回復していない

(2) TFR 関連要因によるハイライト分析(原論文 表9〜12)

各領域の市区町村の性格を調べるため、原論文は SSDSE-2019A の変数から次の8つの「TFR 関連要因」を算出した(原論文 表9。すべて×100 の百分率)。

TFR 関連要因(%)算出方法
自然増減率(出生数 − 死亡数)÷ 日本人人口
社会増減率(転入者 − 転出者)÷ 日本人人口
3世代世帯割合推定値{一般世帯数 −(核家族世帯数 + 単独世帯数)}÷ 一般世帯数
婚姻件数割合婚姻件数 ÷ 日本人人口
完全失業率完全失業者数 ÷(完全失業者数 + 就業者数)
就業率(女)就業者数(女)÷ 日本人人口(女)
医師数割合医師数 ÷ 日本人人口
保育所等割合保育所等数 ÷ 15歳未満人口

そのうえで領域1-1・2-1・3-3 の各市区町村について、これらの要因の2015年値を TFR(子ども女性比推定)と並べたリストを作り、標準得点が 0.8 以上の市区町村をハイライト表示して、そのパターンから特徴を読み取った(原論文 表10〜12。リストは原論文参照)。

領域ハイライトのパターンから読み取れた特徴(原論文の記述)
領域1-1北海道と九州が多い。ハイライトは全市区町村に満遍なく散らばるが、ハイライトされる要因は市区町村ごとに異なる。例:同じ九州でも鹿児島では3世代世帯割合推定値が低く、熊本では高い
領域2-1東京3区(千代田・中央・港)のハイライトが多く、TFR は2005年から倍増。自治体は「保育所等割合だけがハイライトされる型」と「保育所等割合以外のほとんどがハイライトされる型」の2つに分かれる
領域3-3全体にハイライトが少ない。例外の千葉県浦安市はハイライトが多いのに TFR は2015年に減少しており、浦安市だけ3世代世帯割合推定値が非常に低いこととの関連が推定される。
読み取りのポイント 各領域は大まかには「ハイライトされる要因の」で特徴づけられる(1-1 は多い、3-3 は少ない)。しかし各領域の内部を見ると、ハイライトされる要因の組み合わせが複数パターンある——同じ「高TFR」でも成り立たせる要因の組み合わせは一つではない、というのが原論文の重要な示唆である。

(3) 地理的な特徴づけ(原論文 図13。地図は原論文参照)

9領域への帰属を日本地図に塗り分けると、地方によって領域の傾向が異なることがわかった。

(4) 東京都の深掘り:TFR の増分は所得の増分と高相関(原論文 図14〜16。グラフは原論文参照)

図13の東京の地図では異なる領域が地理的に分かれて分布し、その中で千代田区・中央区・港区の TFR 増加率が非常に大きい。そこで原論文は東京都が公開する平成5年〜平成29年の毎年の区市町村別 TFR を使い、全区市町村の年次推移を描いた(図14)——東京都内でも市区町村によって推移は大きく異なる。さらに東京都では納税義務者一人当たり所得が急増している地域があるため(図15)、2005年から2015年までの所得の増分と TFR の増分の関係を調べたところ(図16)、非常に高い相関があることがわかった。

ただし「東京独自の傾向」である 同じ傾向を、所得の代わりに地価当たりの所得として全国の市区町村で調べてみると、全国的にはあまり成り立っていなかった。TFR の増減に効く要因は地域によって大きく異なる——これが本研究の結論の柱である。なお相関は因果関係を意味しない点にも注意(所得の高い世帯が都心3区に流入した結果とも解釈できる)。
やってみようステップ5:原論文 表8 の報告値(9領域の分割と市区町村数)を再表現する
📝 コード
153
154
155
156
157
158
159
160
161
162
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
189
190
191
192
193
194
195
196
197
198
# ===== ステップ5: 図4 原論文 表8 の報告値(9領域の分割と市区町村数)を再表現 =====
# 出典: 原論文 表8(人口2000人以上の1424市区町村)
#   A = 2015年 TFR(子ども女性比推定)、B = その差(2015年−2005年)
#   列: A<1.3(領域3-x)/1.3≦A<1.8(領域2-x)/A≧1.8(領域1-x)
#   行: B>0.5(x-1)/0.1<B≦0.5(x-2)/B<0.1(x-3)
counts = np.array([[0, 9, 35],      # B > 0.5
                   [35, 725, 217],  # 0.1 < B ≦ 0.5
                   [56, 329, 9]])   # B < 0.1
region = [['領域3-1', '領域2-1', '領域1-1'],
          ['領域3-2', '領域2-2', '領域1-2'],
          ['領域3-3', '領域2-3', '領域1-3']]
note = [['', '東京3区(千代田・\n中央・港)を含む\nTFRが2005年から倍増', 'V字回復・高水準\n九州・沖縄に多い'],
        ['', '', ''],
        ['低水準・回復なし\n関東以北に多い', '', '']]
fig, ax = plt.subplots(figsize=(9.2, 6.4))
im = ax.imshow(np.log1p(counts), cmap='Blues', vmin=0, vmax=np.log1p(counts).max() * 1.15)
for i in range(3):
    for j in range(3):
        c = 'white' if counts[i, j] > 300 else '#0D2B45'
        ax.text(j, i - 0.24, region[i][j], ha='center', fontsize=12,
                fontweight='bold', color=c)
        ax.text(j, i, f'{counts[i, j]} 自治体', ha='center', fontsize=12, color=c)
        if note[i][j]:
            ax.text(j, i + 0.28, note[i][j], ha='center', fontsize=8.2, color=c)
ax.set_xticks([0, 1, 2])
ax.set_xticklabels(['A < 1.3', '1.3 ≦ A < 1.8', 'A ≧ 1.8'])
ax.set_yticks([0, 1, 2])
ax.set_yticklabels(['B > 0.5', '0.1 < B ≦ 0.5', 'B < 0.1'])
ax.set_xlabel('A = 2015年 TFR(子ども女性比推定)')
ax.set_ylabel('B = TFR(子ども女性比推定)の差\n(2015年 − 2005年)')
ax.set_title('散布図平面の9領域分割と各領域の市区町村数(人口2000人以上・計1424自治体)\n'
             '原論文 表8 の報告値の再表現(散布図そのもの=原論文 図11 は原論文参照)',
             fontsize=11)
fig.tight_layout()
fig.savefig(f'{FIG_DIR}/2019_U4_fig4.png', bbox_inches='tight')
plt.close(fig)
print('図4 保存: 2019_U4_fig4.png')
tot = counts.sum()
print(f'9領域の市区町村数の単純和: {tot}')
print('  ※ 原論文 表8 の「合計」欄は 1424。各領域の値の単純和 1415 とは一致しない')
print('    (原論文内の不整合。本ページは各セルの値をそのまま転記している)')
print('着目された3領域(原論文 第4章):')
print('  領域1-1(A≧1.8 かつ B>0.5, 35自治体): 高水準かつ伸びも大。九州・沖縄に多い')
print('  領域2-1(1.3≦A<1.8 かつ B>0.5, 9自治体): 伸びが特に大。東京3区は2005年から倍増')
print('  領域3-3(A<1.3 かつ B<0.1, 56自治体): 低水準で回復なし。関東以北に多い')
print('done')
▼ 実行結果
図4 保存: 2019_U4_fig4.png
9領域の市区町村数の単純和: 1415
  ※ 原論文 表8 の「合計」欄は 1424。各領域の値の単純和 1415 とは一致しない
    (原論文内の不整合。本ページは各セルの値をそのまま転記している)
着目された3領域(原論文 第4章):
  領域1-1(A≧1.8 かつ B>0.5, 35自治体): 高水準かつ伸びも大。九州・沖縄に多い
  領域2-1(1.3≦A<1.8 かつ B>0.5, 9自治体): 伸びが特に大。東京3区は2005年から倍増
  領域3-3(A<1.3 かつ B<0.1, 56自治体): 低水準で回復なし。関東以北に多い
done
💡 解説
  • counts = np.array([...]) — 原論文 表8 の9つの領域の市区町村数を転記し、imshow で3×3のヒートマップとして再表現しています。散布図そのもの(原論文 図11)は市区町村別データが必要なため描けません。
  • np.log1p(counts) — 725(領域2-2)と 0(領域3-1)が同居するので、対数スケールで色の階調をつけています。
  • 実行結果にある通り、表8には原論文内の不整合(単純和1415 vs 合計欄1424)があります。教材として隠さずそのまま注記しました。一次資料を転記するときは、こうした整合性チェックが大切です。
💡 Python TIPS ax.text(x, y, s, ha='center', color=...) をループで回せば、ヒートマップの各セルに注釈を書き込めます。
4
統計的手法の解説

この論文の統計的な面白さは、高度なモデルではなく「使える指標を自分で作り、その信頼性を自分で検証し、検証済みの範囲で使う」という一連の設計にある。使われている道具を順に見ていこう。

① 代理指標の較正:子ども女性比 → TFR

TFR の計算には年齢別出生率が必要で、小地域では公表が限られる。一方、子ども女性比(0〜4歳人口÷若年女性人口)は国勢調査だけで計算できる。両方が揃っている年(2010年)で単回帰を行い、回帰直線のパラメータ(傾き4.8949・切片0.1704)を得れば、子ども女性比しかない年(1995年・2015年など)にも TFR の近似値を計算できる。これは測定機器の「較正(キャリブレーション)」と同じ発想である。

② 較正の設計変数を最適化する

「若年女性」の年齢範囲は先行研究でも 15〜49歳・15〜44歳と揺れがある。原論文は範囲を6通り試し、決定係数が最大になる 20〜44歳を採用した(図2)。さらに外れ値の原因(小規模自治体の偶然変動)を特定し、人口1万人以上に対象を絞ることで R²=0.8424 を達成した。指標の定義そのものをデータで選ぶ、シンプルだが強力な最適化である。

③ 誤差の見積もり:残差分析と年次変化の的中率

近似値を使う以上、誤差の大きさを言えなければならない。原論文は(i)残差の標準偏差 0.0798 から「水準の誤差は 0.08 程度」、(ii)年次変化について「推定値の増分が 0.1 以上なら実際の TFR も約87%の頻度で増加」という2種類の信頼性指標を用意した。以降の分析(領域分類の境界 B=0.1 など)は、この誤差見積もりと整合するように設計されている。

④ 分布の比較:ヒストグラム・標準偏差・変動係数

市区町村単位と都道府県単位の TFR の分布をヒストグラムで比べ、都道府県単位の標準偏差(0.1327242)が市区町村単位の約半分であることを示した。年次比較には平均で割った変動係数を使い、「平均が動いても相対的なばらつきは安定」という性質を取り出した(図3)。

⑤ ルールベースの領域分類

クラスタリングのようなアルゴリズムではなく、解釈しやすい閾値(A=1.3・1.8、B=0.1・0.5)で散布図平面を9分割した(図4)。閾値 B=0.1 は③の的中率評価(0.1以上なら約87%)に対応しており、誤差評価が分類設計に反映されているのがポイント。

⑥ 標準得点ハイライトと地図可視化

8つの TFR 関連要因を標準得点に直し、0.8 以上をハイライトすることで「どの要因が全国平均より突出しているか」を一覧表示した。また領域への帰属を日本地図に塗り分け(コロプレス図)、地理的なまとまり(九州)とモザイク性(北海道)を対比した。

5
発展的学習:この研究を深く理解するために

子ども女性比(Child-Woman Ratio)という古典的指標

子ども女性比は、出生登録が整備されていない時代・地域の出生力を国勢調査(センサス)だけで測るために人口学で古くから使われてきた指標である。原論文が引用する先行研究(小野ほか、統計データ分析コンペティション2018 特別賞)でも、人口の自然増減の説明に子ども女性比が使われている。「新しいデータを取りに行けないなら、既にあるデータから代理指標を作る」という発想は、行政データ分析全般で役に立つ。

なぜ市区町村別 TFR は「ベイズ推定」なのか

出生数が年間数十人の町村では、通常の方法で計算した TFR は偶然変動で大きくぶれる。厚生労働省の「人口動態保健所・市区町村別統計」は、ベイズ推定によって周辺情報を借りながら小地域の TFR を安定的に推定している(5年分の出生を合算した H15-H19、H20-H24 のような期間表示になっているのもそのため)。小地域統計の「小標本問題」とその対処は、地域分析を行うなら必ず出会うテーマである。

集計単位の罠:生態学的誤謬と MAUP

本研究の出発点「都道府県単位では平均化されて特徴が見えない」は、空間分析で MAUP(可変地域単位問題)と呼ばれる現象の一例である。さらに、市区町村単位の相関(例:東京都での所得増分×TFR増分)を個人の因果(所得が増えた世帯ほど子どもを産む)と読み替えるのは生態学的誤謬にあたる。集計データからの結論は「その集計単位における関連」として慎重に述べる必要がある——原論文も「東京都に独自の傾向」と範囲を限定して報告している。

「特徴リスト+ハイライト」は解釈可能な多変量分析

領域ごとの特徴づけに、主成分分析やクラスタリングではなく「標準得点 0.8 以上をハイライトした一覧表」を使ったのは、個々の自治体名を保ったまま多変量パターンを目視できる利点がある。一方で「0.8」という閾値の選択や、パターンの読み取りに主観が入る余地もある。機械的な手法と目視の手法を相互補完的に使うのが実務的である。

6
まとめと今後の課題

本研究で分かったこと(原論文 第5章・終章)

  • 手法面:子ども女性比を用いた TFR の近似計算は、年齢範囲20〜44歳・人口1万人以上で決定係数 0.8424、誤差 0.08 程度、年次変化の的中率約87%(増分0.1以上)と、ある程度使える見通しを得た。これにより TFR(ベイズ推定)が存在しない年まで拡張し、市区町村単位で20年間(1995〜2015年)の TFR 推定値の時系列を取得できた。
  • 地理的特徴:各地方の中では領域分類の傾向が似ているが、地方が異なると傾向も異なる。顕著な領域(1-1 や 3-3)の自治体は、周りが同様の傾向を持つ場合(九州)と、モザイク的な場合(北海道)がある。
  • 要因面:各領域は大まかにはハイライトされる要因の数で特徴づけられるが、領域内には異なる要因パターンが複数存在する。同じ領域を成り立たせる要因の組み合わせは一つではない。
  • 東京の発見:千代田・中央・港の3区で TFR が2005年から倍増し、納税義務者一人当たり所得の増分と TFR の増分に非常に高い相関を確認。ただし全国では成り立たない東京独自の傾向だった。

今後の課題(原論文の記述)

第1は TFR 関連要因の種類を増やして自治体特徴の分析精度を上げること。第2は統合データベースへの展開である。文献も含めて多くの情報を統合し、特徴が似ている自治体を検索・比較できるデータベースを誰もが利用可能な形で開発できれば、少子化問題の解決に貢献できる——と原論文は結んでいる。

論文審査会コメント(コンペ公式) 出生率の推移について多角的分析を試み、研究の動機も極めて明確であり、好ましい論文と評価された。分析結果の解釈を深めれば、より説得力のある論文となる。
7
参考文献・データ

原論文

村松 波・熊野 翔・川田 瑛貴(武蔵野大学 工学部 数理工学科)「市区町村別でみる合計特殊出生率推移の特徴分析」2019年度 統計データ分析コンペティション 統計活用奨励賞(大学生・一般の部)

🏆 統計データ分析コンペティション 公式サイト

原論文の参考文献リスト

  1. 田辺和俊・鈴木孝弘「出生率の都道府県格差の分析」厚生の指標、第63巻、第5号、2016年5月
  2. 姉崎猛・佐藤豊・中村明恵「少子化の動向と出生率に関する研究サーベイ」ESRI Research Note 2011;(17):1-59
  3. 加藤久和「市区町村別にみた出生率格差とその要因に関する分析」財務省財務総合政策研究所「フィナンシャル・レビュー」平成29年第3号(通巻第131号)、2017年6月
  4. 平成29年度えひめ結婚戦略サポート事業報告書
  5. 厚生労働省「人口動態保健所・市区町村別統計」
  6. 小野恵子・宮内はじめ・白松俊・河口信夫・五十嵐康伸「日本の全市町村における人口の自然増減の分布と説明要因」統計データ分析コンペティション2018、特別賞(大学生・一般の部)
  7. 内閣官房まち・ひと・しごと創生本部事務局「出生数や出生率の向上に関する事例集」平成31年

データ出典

⚠️ よくある誤解——この論文を読むときの注意

本論文のような「代理指標+地域分類」の分析を読むとき・自分でやるときに、初心者が陥りやすい誤解をまとめました。

❌ 「TFR(子ども女性比推定)=本当の TFR」ではない
図3や領域分類で使われている値は、回帰式で計算した近似値です。原論文自身が残差分析で「誤差は0.08程度」と見積もっており、0.08未満の差の解釈には意味がありません。近似値を使う分析では、誤差の見積もりとセットで結果を読むのが鉄則です。
❌ 「決定係数0.8424だから市区町村ごとの値も正確」ではない
R²=0.8424 は人口1万人以上の自治体に限定したときの全体的な当てはまりです。人口の少ない町村では子ども女性比が偶然変動で大きくぶれるため、個々の小規模自治体の推定値はもっと不確かです。原論文も領域分類を人口2000人以上に限定しています。
❌ 「東京で所得増とTFR増が高相関→所得を増やせば出生率が上がる」ではない
これは集計データの相関であり因果ではありません。都心3区に高所得の子育て世帯が流入した(構成の変化)だけでも同じ相関が生まれます。しかも原論文自身が「全国的には成り立たない東京独自の傾向」と確認しています。地域限定の相関を全国の政策提言に外挿しないこと。
❌ 「都道府県データで十分。市区町村まで見るのは細かすぎる」ではない
都道府県単位のTFRの標準偏差は市区町村単位の約半分(原論文の報告値0.1327242)。つまり都道府県平均は地域差の半分を隠しています。東京都は都道府県では全国最低のTFRですが、その内部には2005年から倍増した区がある——集計単位の選択自体が分析の結論を左右します(MAUP)。
❌ 「9領域の閾値(1.3・1.8・0.1・0.5)は客観的に決まった値」ではない
この分割はクラスタリングのようにデータから自動的に出てきたものではなく、解釈しやすさを優先した研究者の設計です(B=0.1は年次変化の的中率評価と対応)。閾値を変えれば領域の所属も変わります。ルールベース分類を使うときは閾値の根拠を明記することが重要です。
❌ 「ハイライトが多い自治体=出生率が高い自治体」ではない
ハイライトは「その要因の標準得点が0.8以上=全国平均より約0.8標準偏差高い」ことを示すだけです。実際、領域3-3の浦安市はハイライトが多いのにTFRは減少していました。個々の指標の高さと結果(TFR)の関係は自治体ごとに異なる——それ自体が原論文の発見です。
❌ 「公表統計にない値は分析できない」ではない(ただし検証が条件)
本論文の価値は、ベイズ推定TFRがない年の値を子ども女性比から作ったことにあります。ただしそれが許されるのは、決定係数・残差・年次変化の的中率という3段階の検証を先に済ませているからです。検証なしの代理指標は「それらしい数字の捏造」と紙一重です。

📖 用語集

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

合計特殊出生率(TFR)
1人の女性が一生の間に産むと見込まれる子どもの数。15〜49歳の女性の年齢別出生率を合計して求める。人口を維持するには約2.07(人口置換水準)が必要。日本は2005年に過去最低の1.26を記録した。
人口置換水準
人口が長期的に増えも減りもしない TFR の水準。死亡率等を考慮して日本では約2.07とされる。TFR がこれを下回り続けると人口は減少に向かう。
子ども女性比
5歳未満(0〜4歳)の子どもの数を「若年女性」の数で割った値。年齢別出生率がなくても国勢調査だけで計算できる、出生力の古典的な代理指標。分母の年齢範囲には15〜49歳・15〜44歳などの流儀があり、本論文は決定係数が最大になる20〜44歳を採用した。
ベイズ推定TFR
出生数が少ない市区町村では通常の TFR 計算が偶然変動で不安定になるため、厚生労働省がベイズ推定(周辺の情報を借りて小地域の推定を安定させる方法)で算出・公表している市区町村別 TFR。5年分をまとめた期間(例:H20-H24)で公表される。
決定係数(R²)
回帰直線がデータのばらつきをどれだけ説明できているかを0〜1で表す指標。本論文では子ども女性比と TFR(ベイズ推定)の当てはまりの良さを測り、年齢範囲の選択(最大化)に使った。
残差分析
回帰直線からの外れ(残差=実測値−予測値)を調べること。本論文は残差の標準偏差 0.0798 から「TFR(子ども女性比推定)の誤差は0.08程度」と見積もった。
変動係数(CV)
標準偏差を平均で割った値。平均の水準が異なる分布同士でも「相対的なばらつき」を比較できる。本論文では TFR 分布の年次推移の比較に使われた(0.14〜0.17でほぼ安定)。
標準得点(zスコア)
(値−平均)÷標準偏差。単位の違う変数を「平均から標準偏差何個分離れているか」に揃える。本論文は8つの TFR 関連要因の標準得点が0.8以上の市区町村をハイライトし、領域の特徴を読み取った。
コロプレス図(塗分け地図)
地域ごとの値やカテゴリを色で塗り分けた地図。本論文は9領域への帰属を日本地図・東京地図に塗り分け、地理的パターン(九州のまとまり・北海道のモザイク性)を発見した。
MAUP(可変地域単位問題)
同じデータでも集計する地域単位(都道府県か市区町村か等)によって、見える統計的関係が変わってしまう問題。本論文の「都道府県では平均化されて特徴が見えない」という出発点はこの問題意識に基づく。

📐 手法ガイド——この論文の分析手法を一般化する

この論文で使われた手法を、他のテーマにも使える形で整理します。

🧭 全体の設計思想:「作る → 検証する → 検証済みの範囲で使う」

本論文の分析は(1)欲しい指標(市区町村別TFRの長期時系列)が存在しない、(2)材料(国勢調査)から代理指標を作る、(3)正解がある年で較正・検証する、(4)誤差の見積もりと整合する粒度(領域分類の閾値)で使う、という一直線の設計になっている。高度な手法を使うことよりも、各ステップの根拠が連結されていることが、この論文から学ぶべき最大のポイント。

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

📈 単回帰による代理指標の較正
何?
正解データ(TFR(ベイズ推定))と材料データ(子ども女性比)が両方ある標本で回帰直線を推定し、そのパラメータで正解がない年・地域の値を近似する方法。
どう使う?
本論文では2010年・1734市区町村で回帰し、傾き4.8949・切片0.1704を得て、1995〜2015年の5時点に適用した。
何がわかる?
公式統計が存在しない年の市区町村別 TFR の近似値。時系列比較・地域比較が可能になる。
結果の読み方
近似値は必ず誤差を伴う。本論文の場合、水準の誤差は残差の標準偏差から0.08程度。
⚠️ 注意点
(1) 較正した範囲の外に外挿しない——2010年の関係で較正した式を1995年に適用するのは「子ども女性比とTFRの関係が時代によって変わらない」という仮定を置くこと。晩産化などで関係が変化していれば誤差は増える。(2) 分母・分子の定義に敏感——年齢範囲を変えるだけでR²が0.576〜0.657まで動いた(表3)。定義の選択は結果に直結する。(3) 正解データの質に依存する——較正先のベイズ推定TFR自体も推定値であり、誤差の連鎖を意識する。
🔍 残差分析による誤差の見積もり
何?
回帰の予測値と実測値の差(残差)の分布を調べ、予測の典型的な誤差の大きさ(残差の標準偏差)を数値化する。
どう使う?
本論文では TFR(子ども女性比推定)と TFR(ベイズ推定)の残差の標準偏差 0.0798 を計算し、「誤差は0.08程度」と宣言した。
何がわかる?
近似値をどの細かさまで信用してよいか。0.08の誤差があるなら、0.05の差を論じるのは無意味だと判断できる。
結果の読み方
後続の分析の解像度(領域分類の閾値0.1・0.5など)が誤差より粗く設計されているかをチェックする。
⚠️ 注意点
(1) 残差の標準偏差は「平均的な」誤差——小規模自治体では誤差はもっと大きい(不均一分散)。(2) 残差に構造がないか見る——特定の地域・人口規模で系統的に外れるなら、単一の回帰式では不十分なサイン。(3) 誤差は伝播する——「2015年−2005年」のような差をとると、両時点の誤差が合成されて変化量の誤差はさらに大きくなる。本論文が年次変化の的中率(約87%)を別途検証したのはこのため。
📊 分布の比較(ヒストグラム・標準偏差・変動係数)
何?
2つ以上の分布を、形(ヒストグラム)・広がり(標準偏差)・相対的な広がり(変動係数=SD÷平均)で比較する基本手法。
どう使う?
本論文では(i)推定TFRとベイズ推定TFRの分布の類似を確認、(ii)都道府県単位の分布幅が市区町村単位の約半分(SD 0.1327242)であることを示し、(iii)変動係数で1995〜2015年の分布を比較した。
何がわかる?
集計単位による情報の損失量、分布の経年変化の質(平均が動いたのか、ばらつきが変わったのか)。
結果の読み方
平均は2005年に最小、変動係数はほぼ一定→「全体が沈んで浮かんだが、自治体間の相対格差は不変」と読める。
⚠️ 注意点
(1) ビン幅でヒストグラムの印象は変わる——分布比較はSD・分位点など数値と併用する。(2) 変動係数は平均が0に近いと発散する——TFRのような正の値で平均が十分大きい変数向き。(3) 単位数の違いに注意——47都道府県と1700超の市区町村では標本数が桁違いで、分布の滑らかさも当然違う。
🗺 散布図平面のルールベース領域分割
何?
2変数(ここでは「水準A」と「変化B」)の散布図を、意味のある閾値の直線で区切ってグループを定義する分類法。クラスタリングと違い、境界を人間が設計する。
どう使う?
本論文ではA=1.3・1.8、B=0.1・0.5の4直線で9領域を定義し、人口2000人以上の1424市区町村(原論文表8の合計欄)を分類した。
何がわかる?
「高水準で伸びている」「低水準で回復なし」のような、政策的に意味が直読できるグループ。領域3-1(低水準からの大幅増)が0自治体という「空白」も発見の一つ。
結果の読み方
グループの定義が閾値の言葉でそのまま書けるので、結果の伝達が容易。各領域の自治体数の偏り(2-2に725)にも注目。
⚠️ 注意点
(1) 閾値の根拠を示す——本論文のB=0.1は年次変化の的中率検証(約87%)と対応しているのが良い設計。根拠のない閾値は恣意的分類と批判される。(2) 境界付近の所属は不安定——誤差0.08の推定値でA=1.79とA=1.81は実質区別できないが、領域は変わってしまう。(3) クラスタリングとの使い分け——構造を発見したいならクラスタリング、解釈・伝達を優先するならルールベース、と目的で選ぶ。
🔦 標準得点によるハイライト表示(特徴リスト)
何?
複数の変数を標準得点(zスコア)に変換し、閾値(本論文では0.8)以上のセルを塗って、観測単位×変数の表を「パターンの絵」として読む方法。
どう使う?
本論文では8つのTFR関連要因について領域1-1・2-1・3-3の自治体リストを作り、ハイライトの多さ・組み合わせから各領域の性格を読んだ。
何がわかる?
自治体名を保ったまま「どの要因が突出しているか」が見える。領域2-1が「保育所型」と「それ以外全部型」に割れる、といった下位パターンの発見。
結果の読み方
ハイライトの数と組み合わせをセットで読む。数が同じでも組み合わせが違えば別の物語がある。
⚠️ 注意点
(1) 閾値0.8は設計変数——0.5にすればハイライトは増え、1.5にすれば減る。感度を確認する。(2) 片側しか見ていない——0.8「以上」のハイライトは高い方の突出だけ。低い方(−0.8以下)の情報(例:浦安市の3世代世帯割合の低さ)も本来は同等に重要。(3) 目視の読み取りは再現性が低い——人によって見えるパターンが違いうる。可能なら数値的な裏付け(相関・検定)を併用する。
🗾 コロプレス図(地図の塗分け)による地理的検証
何?
分類結果や指標値を行政区域ごとに色分けした地図。統計表では見えない空間的な連続性・不連続性を可視化する。
どう使う?
本論文では9領域への帰属を日本全体・千葉県・東京都の地図に塗り分けた(原論文 図13)。
何がわかる?
九州では似た領域が地理的に隣接(空間的自己相関が正)、北海道では異質な領域が隣り合うモザイク模様、領域3-3が関東以北に偏る、など。
結果の読み方
「隣と似ているか」に注目する。似ているなら広域要因(気候・経済圏・文化)、モザイクなら自治体固有の要因(政策・産業)が疑われる。
⚠️ 注意点
(1) 面積の大きい自治体が目立ちすぎる——北海道の広い町村は視覚的に過大評価される。人口カルトグラム等の併用も検討。(2) 色数が多いと読めない——9カテゴリは塗分けの上限に近い。順序のある配色設計が必要。(3) 地図は相関の検定ではない——「近くて似ている」の程度は本来モランのI等の空間統計量で定量化できる。目視の印象を結論にする際は言葉を慎重に。

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

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

① 較正の時代依存性を検証する
結果 X
子ども女性比→TFRの回帰式は2010年データで較正され、1995〜2015年に適用された。
新仮説 Y
晩産化・保育環境の変化により、子ども女性比とTFRの関係(傾き・切片)は年代によって変化しているのではないか。
課題 Z
ベイズ推定TFRが存在する2000年・2005年・2010年(およびその後公表された期間)それぞれで回帰式を推定し、パラメータの安定性を確認する。不安定なら年代別の較正式に切り替える。
② 「東京独自の傾向」の正体を突き止める
結果 X
東京都では所得増分とTFR増分が非常に高い相関を示したが、全国では成り立たなかった。
新仮説 Y
都心3区のTFR倍増は「住民の行動変化」ではなく「高所得子育て世帯の選択的流入」(人口構成の入れ替わり)で説明できるのではないか。
課題 Z
住民基本台帳の転入・転出の年齢構成データや、国勢調査の従業地・通勤データを結合し、転入超過の年齢・世帯構成とTFR増分の関係を分析する(本論文の社会増減率をさらに分解する方向)。
③ 領域分類を「政策の効果検証」につなぐ
結果 X
同じ領域の中にも、ハイライトされる要因の組み合わせが複数パターン存在した。
新仮説 Y
類似した初期条件(同一領域・同一要因パターン)の自治体間でTFRの伸びが違うなら、その差は自治体の施策(本論文の参考文献7の事例集にあるような取組)で説明できるのではないか。
課題 Z
原論文が構想した「統合データベース」を作り、特徴が似た自治体をマッチングして施策実施の有無で比較する(マッチング法・差の差分析への発展)。

🎯 自分でやってみよう——5段階チャレンジ

この論文を「読む」から「使う」へ。難易度順の5つの課題です。

難易度 ★☆☆☆☆
CH1. 本ページの図1〜図4を再現する
SSDSE-B-2026.csv を配置して python3 code/2019_U4_katsuyo.py を実行し、4つの図を再現してみましょう。実行結果の「実データによる計算」と「原論文の報告値の転記」がコードのどこで区別されているかを確認してください。
難易度 ★★☆☆☆
CH2. 図1の強調対象を変えて「自分の県」を観察する
図1のコードの '沖縄県' を自分の都道府県に変えて描き直し、全国の中での位置と2012〜2023年の動きを説明してみましょう。2015年→2023年で順位が大きく動いた県はどこでしょうか。
難易度 ★★★☆☆
CH3. SSDSE-A で「TFR 関連要因」を自分で計算する
原論文 表9 の8つの要因(自然増減率・社会増減率・3世代世帯割合推定値など)は、現行の SSDSE-A(市区町村データ)でも同じ定義で計算できます。全市区町村について計算し、標準得点0.8以上をハイライトした「特徴リスト」を自分の県について作ってみましょう。
難易度 ★★★★☆
CH4. e-Stat から国勢調査を取得して子ども女性比を計算する
e-Stat の国勢調査(人口等基本集計)から市区町村別の0〜4歳人口と20〜44歳女性人口を取得し、子ども女性比を計算してみましょう。最新の国勢調査(2020年)とベイズ推定TFR(公表されている期間)で、原論文と同様の回帰・決定係数の計算に挑戦できます。異なる年のデータの結合には、原論文と同じ「都道府県名+市区町村名」の共通ID方式が使えます(市町村合併に注意)。
難易度 ★★★★★
CH5. 原論文の9領域分類を最新データで更新する
CH4で作った子ども女性比推定TFRを使って、A=最新年のTFR推定値、B=10年前との差で9領域分類をやり直し、原論文(2015年時点)からの領域移動を調べてみましょう。「領域3-3から抜け出した自治体」があれば、その要因を特徴リストと施策事例から考察する——原論文の「今後の課題」を一歩進める研究になります。
💡 ヒント:市区町村を扱うときは「市町村合併」「政令市の区の扱い」「東京23区」がデータ結合の三大トラップです。原論文も2005年・1995年データに地域コードがないという問題を「都道府県名+市区町村名」の共通IDで乗り切っています。

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

本論文で学んだ手法は、研究の世界だけでなく、行政・企業・NPO の現場でも様々に活用されています。具体的なシーンを紹介します。

🏛️
行政の政策立案
市区町村の子育て支援・移住促進の担当部署では、本論文の領域分類のように「自分の自治体はどの位置にいるか」「似た初期条件から改善した自治体はどこか」を特定して施策のベンチマークに使います。内閣官房の事例集(原論文の参考文献7)もこの発想です。
🏢
企業のマーケティング・出店戦略
小売・保育・教育産業の出店計画では、市区町村別の子ども人口・世帯構成の長期推移が需要予測の基礎データです。公式統計が細かい粒度で存在しない指標を、国勢調査などから代理指標で補う手法は実務でも定番です。
🏥
医療・公衆衛生
小地域の疾病率・健康指標もTFRと同じく「小標本問題」を抱えており、ベイズ推定による安定化(本論文が使った市区町村別TFRと同じ技術)が標準的に使われます。保健所単位の資源配分の検討にも地域分類の考え方が活きます。
📊
メディア・ジャーナリズム
「出生率最低の東京の中に、倍増した区がある」のような、集計単位を掘り下げて意外な事実を掘り起こす手法はデータジャーナリズムの王道です。塗分け地図による地域差の可視化も報道で頻繁に使われます。
🎓
学術研究(隣接分野)
人口学・地域経済学・社会学では、市区町村レベルの出生力分析は活発な研究領域です。本論文が引用する加藤(2017)のような研究に、子ども女性比による時系列拡張という工夫を付け加えたのが本論文の貢献です。
💰
金融・保険業界
地域金融機関や保険会社は、営業エリアの将来人口・世帯形成の見通しを商品設計や店舗網の計画に使います。市区町村別の出生動向の長期時系列は、住宅ローン・学資保険などの需要予測の基礎になります。

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

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

Q1. この分析、自分でもできますか?
一部はすぐできます。本ページのスクリプトは SSDSE-B(無料公開)だけで動きます。原論文の中核(子ども女性比の計算)も、e-Stat の国勢調査から市区町村別の年齢別人口を取得すれば Python の pandas で再現可能です。データ結合の手間(共通ID・市町村合併)が最大の壁で、そこを乗り切る練習として最適な題材です。
Q2. 使われている手法は他の分野にも応用できますか?
十分応用可能です。「正解データがある範囲で代理指標を較正し、誤差を見積もってから使う」という設計は、小地域の健康指標・所得推定・需要予測など、細かい粒度の公式統計が存在しないあらゆる場面で使えます。散布図の領域分割やハイライト表示も、顧客セグメントや店舗分類にそのまま転用できます。
Q3. 結論は本当に「因果関係」を示していますか?
いいえ、本論文は因果関係を主張していません。東京都での所得増分とTFR増分の高い相関も「相関」であり、高所得子育て世帯の流入という構成変化でも説明できます。原論文自身が「全国では成り立たない東京独自の傾向」と限定しており、要因の特定には別の研究デザイン(自然実験・マッチング等)が必要です。
Q4. データの最新版を使うとどうなりますか?
厚生労働省のベイズ推定TFRはその後の期間(H25-H29など)が公表され、国勢調査も2020年分が利用可能です。較正式を最新データで推定し直し、9領域分類を更新すれば「2015年以降に領域を移動した自治体」という新しい問いが立てられます(チャレンジCH5参照)。なお SSDSE も毎年更新されており、本ページの図1は現行版(2012〜2023年)で描いています。
Q5. もっと深く学ぶには何を読めばいいですか?
まず原論文の参考文献にある加藤久和「市区町村別にみた出生率格差とその要因に関する分析」(フィナンシャル・レビュー 2017)と、姉崎ほか「少子化の動向と出生率に関する研究サーベイ」(ESRI Research Note 2011)が定番です。小地域推定・ベイズ推定に興味が出たら「小地域統計」「ベイズ統計モデリング」のテキストへ。人口学の入門書で TFR・子ども女性比などの指標の体系を押さえると、本論文の工夫の位置づけがよくわかります。

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

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

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

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

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