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

人口規模によって異なる
保育所数・保育所在所児数・定員充足率の関係

⏱️ 推定読了時間: 約20分
小野島 昂洋(早稲田大学大学院教育学研究科) 大学生・一般の部・優秀賞 SSDSE(保育所等数・在所児数)+社会福祉施設等調査(定員数)
🔬 残差分析🔬 相関🔬 重回帰🏷 子育て・保育
🔬 手法タグ / 🏷 応用タグ(クリックで同タグの論文をネットワーク検索)
🔬 再現カルテ — 原論文のデータが手に入らないため、代替データで再現

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

原論文が使ったデータSSDSE・社会福祉施設等調査・国勢調査
分析単位:市区町村
中核手法:記述統計量・線形モデル・残差分析・相関分析
この教材が使うデータ
原論文(PDF)人口規模によって異なる保育所数・保育所在所児数・定員充足率の関係
優秀賞/小野島 昂洋(早稲田大学大学院教育学研究科)
✅ この教材でできること
  • 分析に使うデータは同梱済みで、ブラウザ上でそのまま読み込める
⚠️ この教材ではできないこと(原論文との違い)
  • 分析の細かさが原論文と違う:論文=市区町村レベル保育所分析。教材=SSDSE-B都道府県
📄 原論文との違いを、もっと詳しく
📄 原論文:市区町村レベルの保育所数・保育所在所児数・定員充足率を人口規模区分別に比較・分析。
📘 本教材:SSDSE-B-2026(都道府県データ)で保育・子育て関連指標の関係を再現。
⚠️ 注意:原論文の核心は「人口規模によって市区町村ごとに関係が異なる」こと。都道府県集計ではこの粒度の違いが失われる。

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

📝 3行で分かる要約

目次

  1. 研究のテーマと目的
  2. 使用データと再現可能性の整理
  3. 分析の流れ:層別記述 → 定数項なし回帰 → 残差×充足率
  4. 図1:人口規模別の1あたり在所児数(報告値の可視化)
  5. 図2:保育所等数×在所児数の定数項なし回帰(実SSDSE-B・実再現)
  6. 図3:残差が大きい市区町村ランキング(報告値の可視化)
  7. 図4:人口規模別の定員充足率×残差の相関(報告値の可視化)
  8. 結果の解釈と考察
  9. まとめと今後の課題
  10. データ・コードのDL
  11. ⚠️ よくある誤解
  12. 📖 用語集
  13. 📐 手法ガイド
  14. 🚀 発展の可能性
  15. 🎯 自分でやってみよう
  16. 🤔 Q&A
  17. 🐍 ブラウザで動かす

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

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

このページで実SSDSEから実再現できるのは図2(保育所等数×在所児数の回帰)だけです。コードの編集は不要です。図1・図3・図4は、原論文が市区町村(1668自治体)と定員数(社会福祉施設等調査)を使っており、市区町村の粒度・定員数が現行SSDSEに無いため、原論文の報告値を転記して可視化します。

1
データをダウンロードする 独立行政法人統計センターの SSDSE(教育用標準データセット)配布ページから、以下をダウンロードします。
SSDSE-B-2026.csv ← SSDSE-B(都道府県・時系列データ)📥 直接DL
⬇ SSDSEダウンロードページを開く
2
ファイルを所定のフォルダに配置する ダウンロードしたCSVを、プロジェクトの data/raw/ フォルダに入れます。
2026 統計・データ解析コンペ/ ├── code/ │ └── 2018_U2_yushu.py ← 実行するスクリプト └── data/ └── raw/ SSDSE-B-2026.csv ← ここに置く(図2で使用)
3
スクリプトをそのまま実行する ターミナルでプロジェクトルートに移動し、以下を実行します。
python3 code/2018_U2_yushu.py
図は html/figures/ に自動保存されます。図2は SSDSE-B の保育所等数(J2503)・在所児数(J2506・2015年)から実再現、図1・図3・図4は原論文の報告値から可視化します。
研究のテーマと目的

「保活」という言葉に象徴されるように、待機児童問題は都市部で深刻な一方、地方の周辺農村部では多くの保育所等が定員割れを起こしている。政府は待機児童数を市区町村ベースで把握しているが、保育所等の定員は国全体のレベルでしか報告されていない。著者はここに着目した。

そこで本研究は、保育の受け皿の実態が市区町村レベルでどう違うかを明らかにするため、保育所等数・保育所等在所児数・定員充足率の3つの関係を検討する。とくに市区町村の人口規模によってこれらの関係性に差があるかを、記述統計・定数項なし回帰・残差分析・相関で丁寧にたどる。国全体の指標では見えない地域差を、政策立案の基礎資料として示すことが狙いである。

1668市区町村
分析単位(原論文・2015年)
R²=0.9701
在所児数=β×保育所等数(報告値)
SD 37.13
0〜5万人の1あたり在所児数(報告値)
r=0.45→0.11
定員充足率×残差の相関(報告値)
研究の問い(原論文が掲げる3点)
  • (1)保育所等数と保育所等在所児数の関係はどうなっているか。
  • (2)保育所等1つあたりの在所児数は人口規模でどう変わるか。
  • (3)保育所等の定員充足率は人口規模とどう関係するか。
分析のキモ:比例からの「ズレ(残差)」に地域差を読む 保育所等が多い自治体ほど在所児数も多い——これは自然な比例関係だ。著者は「在所児数=β×保育所等数」という定数項なしモデルを当て、比例では説明しきれない残差にこそ地域ごとの事情が表れると考える。残差を人口規模と定員充足率で読み解くのが本研究の中心である。

大学生・一般の部・優秀賞 SSDSE(保育所等数・在所児数) 定数項なし回帰・残差分析 人口規模による層別・相関

審査委員長講評(原文より) 「保育所数、利用者数、定員充足率は市町村の規模によって、その関係性に差異があることを確認した上で、政策立案においてはこの差異を考慮する必要があることをていねいに実証した好感の持てる論文」。残差分析まで行い地域差を考察したことを高く評価する一方、人口規模以外の要因の追加も期待する、と述べられている。

使用データと再現可能性の整理

原論文は1668市区町村(保育所等数・在所児数がともに0の自治体を除外)を単位に、2015年の2つの統計を結合している。分析はすべて R ver 3.3.2 で行われた。

主なデータと出典(原論文 2章・3章)

役割変数出典(SSDSE 列名)本ページでの扱い
説明保育所等数社会福祉施設等調査 → SSDSE(J2503実再現(都道府県粒度)
被説明保育所等在所児数社会福祉施設等調査 → SSDSE(J2506実再現(都道府県粒度)
層別キー人口総数(5万・20万・50万で4区分)国勢調査 → SSDSE(A1101報告値(市区町村区分は再現不可)
加工定員充足率=在所児数÷定員数×100社会福祉施設等調査(定員数はSSDSE未収録報告値の可視化
再現可能性の整理(このページの図の作り方)
  • 実再現できる部分(図2):保育所等数(J2503)と在所児数(J2506)は現行 SSDSE-B に実在する。原論文と同じ2015年のデータで「在所児数=β×保育所等数(定数項なし)」を実再現する。ただし原論文は市区町村1668、SSDSE-Bは都道府県47粒度が異なるため、回帰係数は報告値と一致しない旨を図注に明記する。
  • 報告値の可視化(再計算ではない):図1(人口規模別の1あたり在所児数)は市区町村を人口5万・20万・50万で層別した集計で、47都道府県では層が作れない。図4(定員充足率×残差の相関)は定員数(社会福祉施設等調査)がSSDSE未収録で計算できない。いずれも原論文 表2・4.3 の報告値を転記して可視化する。
  • 地図等の再表現:図3(残差が大きい市区町村)は原論文の表をランキング棒グラフで再表現した報告値の可視化である。
  • 新しい数値の捏造はしない:実再現値と報告値をラベルで分離する。GDP・県内総生産・高齢化率など SSDSE に無い列は使わない。

分析の流れ:人口規模で層別 → 定数項なし回帰 → 残差×充足率

分析の流れ
層別記述
人口規模別の
1あたり在所児数
定数項なし回帰
在所児数=
β×保育所等数
残差分析
比例で説明
できないズレ
相関
残差×定員充足率
を人口規模別に
地域差の考察
政策への含意

① 人口規模で層別して記述統計を見る(原論文 4.1)

市区町村を人口総数で5万人未満(1125)・5〜20万人(414)・20〜50万人(94)・50万人以上(35)の4区分に分け、「保育所等1つあたり在所児数=在所児数÷保育所等数」の平均・中央値・標準偏差を比べる。実数のまま比べると規模に引っ張られるため、1あたりに直して層を横並びにしている。

② 定数項なし回帰と平方根変換(原論文 4.2)

「在所児数=β×保育所等数」という定数項なしの線形モデルを当てる。保育所が0なら在所児も0という原点を通す発想だ。値の大きい自治体に引っ張られないよう平方根変換したモデルも併用し、両者の分散説明率(R²)残差を比べる。

③ 残差と定員充足率の相関を人口規模別に見る(原論文 4.3)

回帰の残差(保育所等数で説明できなかった在所児数のズレ)と定員充足率相関係数を、人口規模の層ごとに計算する。同じ関係が全層で成り立つのか、規模で変わるのかを確かめるのが狙いである。

相関・残差は因果ではない 残差や相関は「一緒に動く/ズレる」パターンを示すだけで、定員充足率が在所児数を増やす原因だとは言い切れない。産業構造や共働き率など背後の共通要因が絡む可能性も残る。相関は地域差の手がかりとして読むのが正しい。
1
図1:人口規模別の1あたり在所児数(報告値の可視化)

まず原論文の出発点である「保育所等1つあたり在所児数は人口規模で違うのか」を見る。市区町村を人口規模で層別した集計は47都道府県では作れないため、原論文 表2 の報告値を転記して可視化する(再計算ではない)。

やってみよう原論文の報告値(表2・回帰・残差・相関)をまとめて読み込む【報告値】
  • ① このコードの目的:原論文 表2(人口規模別 1あたり在所児数)・4.2 の回帰報告値・残差上位市区町村・4.3 の相関係数を、そのまま DataFrame に転記する。このブロックは数値を作り出さず、原論文の報告値を読み込むだけ。以降の図1・図3・図4はすべてこの報告値を出発点にする。
  • ② 前後のつながり:分析の土台づくり。人口規模の層別・定員充足率・残差はいずれも市区町村版データや定員数(現行SSDSE未収録)に依存するため、実データではなく原論文の報告値表を入力とすることを、ここで明示する。
📝 コード
56
57
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
88
89
90
91
92
# 原論文(小野島 2018)の本文・表から転記した報告値。いずれも市区町村(1668自治体)
# を単位とする 2015 年データの集計値であり、このブロックで数値を作り出してはいない。
# (A)人口規模別の「保育所等1つあたり在所児数」要約統計量(原論文 表2)
POP_STATS = pd.DataFrame([
    # 区分,          市区町村数, 最小値, 中央値, 平均値, 最大値, 標準偏差
    ['0〜5万人',    1125,  5.0,  74.67,  79.22, 309.00, 37.13],
    ['5〜20万人',    414, 46.0,  96.78,  99.83, 196.00, 23.16],
    ['20〜50万人',    94, 74.49, 100.62, 101.46, 154.09, 15.10],
    ['50万人以上',    35, 82.72, 101.91, 104.62, 156.54, 15.75],
], columns=['人口規模', '市区町村数', '最小値', '中央値', '平均値', '最大値', '標準偏差'])

# (B)保育所等数×在所児数の定数項なし回帰の報告値(原論文 4.2・4.3、市区町村1668)
REPORT_REG = {
    '実数':    {'beta': 98.344, 'resid_sd': 577.0, 'r2': 0.9701},
    '平方根':  {'beta': 9.6536, 'resid_sd': 4.71,  'r2': 0.9839},
}

# (C)平方根変換モデルで残差が正で大きい市区町村(原論文 4.2 の表)
RESID_TOP = pd.DataFrame([
    ['福岡県', '福岡市', 40.01, '指定都市'],
    ['広島県', '広島市', 25.68, '指定都市'],
    ['愛知県', '豊橋市', 20.28, '中核市'],
    ['大阪府', '大阪市', 17.81, '指定都市'],
    ['大阪府', '堺市',   17.31, '指定都市'],
    ['岡山県', '岡山市', 16.21, '指定都市'],
    ['京都府', '宇治市', 14.35, '市'],
    ['愛知県', '岡崎市', 14.09, '中核市'],
    ['富山県', '富山市', 13.80, '中核市'],
], columns=['都道府県', '市区町村', '残差', '都市区分'])

# (D)人口規模別「定員充足率×回帰残差」の相関係数(原論文 4.3)
CORR_BY_POP = pd.DataFrame([
    ['0〜5万人',   0.45],
    ['5〜20万人',  0.23],
    ['20〜50万人', 0.00],
    ['50万人以上', 0.11],
], columns=['人口規模', '相関係数'])
▼ 実行結果
=== [1] 原論文の報告値(市区町村1668・2015年)の読み込み ===
表2:人口規模別 保育所等1つあたり在所児数(報告値)
   人口規模  市区町村数   最小値    中央値    平均値    最大値  標準偏差
  0〜5万人   1125  5.00  74.67  79.22 309.00 37.13
 5〜20万人    414 46.00  96.78  99.83 196.00 23.16
20〜50万人     94 74.49 100.62 101.46 154.09 15.10
 50万人以上     35 82.72 101.91 104.62 156.54 15.75

定数項なし回帰の報告値(在所児数 = β × 保育所等数):
  実数モデル: β=98.344, 残差標準偏差=577.0, 分散説明率R²=0.9701
  平方根モデル: β=9.6536, 残差標準偏差=4.71, 分散説明率R²=0.9839

残差が正で大きい市区町村(平方根変換モデル・報告値):
都道府県 市区町村    残差 都市区分
 福岡県  福岡市 40.01 指定都市
 広島県  広島市 25.68 指定都市
 愛知県  豊橋市 20.28  中核市
 大阪府  大阪市 17.81 指定都市
 大阪府   堺市 17.31 指定都市
 岡山県  岡山市 16.21 指定都市
 京都府  宇治市 14.35    市
 愛知県  岡崎市 14.09  中核市
 富山県  富山市 13.80  中核市

定員充足率×残差の相関係数(人口規模別・報告値):
   人口規模  相関係数
  0〜5万人  0.45
 5〜20万人  0.23
20〜50万人  0.00
 50万人以上  0.11
  • ④ 実行結果の読み取り:① 人口規模の4区分(1125・414・94・35市区町村)と、それぞれの1あたり在所児数の平均・標準偏差がそろっている。② 回帰の報告値(実数 β=98.344・R²=0.9701/平方根 β=9.6536・R²=0.9839)、残差上位9市、相関係数(0.45/0.23/0.00/0.11)も読み込まれた。③ この表が図1・図3・図4の入力になる(報告値)。
やってみよう人口規模別の1あたり在所児数を平均±標準偏差で可視化する【報告値の可視化・図1】
  • ① このコードの目的:原論文 表2 の平均値を棒の高さ、標準偏差をエラーバーにして、人口規模4区分を並べる。元データが市区町村版SSDSEで現行SSDSEに層が無いため、これは再計算ではなく報告値の可視化である。
  • ② 前後のつながり:図1で「小さい町村ほど1あたり在所児数が少なく、ばらつきが大きい」という原論文の第1の発見を先に押さえる。次の図2・図3で比例関係と残差を見るときの前提になる。
📝 コード
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
# 原論文 表2 の報告値(平均値と標準偏差)を人口規模区分ごとに棒グラフ化する。
# 元データは市区町村版 SSDSE(現行 SSDSE-B には市区町村の粒度が無い)ため、これは
# 再計算ではなく報告値の可視化。エラーバー=標準偏差で「ばらつきの大きさ」も示す。
labels = POP_STATS['人口規模'].tolist()
means = POP_STATS['平均値'].values
sds = POP_STATS['標準偏差'].values
xpos = np.arange(len(labels))

fig1, ax1 = plt.subplots(figsize=(9, 6))
bars = ax1.bar(xpos, means, yerr=sds, capsize=8, width=0.6,
               color=['#E65100', '#1565C0', '#2E7D32', '#6A1B9A'],
               alpha=0.85, edgecolor='white', error_kw={'elinewidth': 1.8, 'ecolor': '#444'})
for xi, m, s in zip(xpos, means, sds):
    ax1.text(xi, m + s + 3, f'平均 {m:.1f}\n(SD {s:.1f})', ha='center', fontsize=10)
ax1.set_xticks(xpos)
ax1.set_xticklabels(labels, fontsize=11)
ax1.set_ylabel('保育所等1つあたりの在所児数(人)', fontsize=11)
ax1.set_ylim(0, 160)
ax1.set_title('図1 人口規模別 保育所等1つあたりの在所児数(平均±標準偏差)\n'
              '【原論文 表2 の報告値の可視化(再計算ではない・市区町村1668)】',
              fontsize=12, fontweight='bold', pad=12)
ax1.grid(axis='y', alpha=0.3)
plt.tight_layout()
fig1.savefig(os.path.join(FIG_DIR, '2018_U2_fig1.png'), bbox_inches='tight')
plt.close(fig1)
▼ 実行結果
=== [2] 図1: 人口規模別の保育所等1つあたり在所児数(報告値の可視化) ===
人口規模が小さいほど平均が小さく、標準偏差(ばらつき)は大きい:
  0〜5万人  : 平均 79.22 / SD 37.13(最も低く・最もばらつく)
  50万人以上: 平均 104.62 / SD 15.75(最も高く・最も安定)
  平均の差(50万以上 − 0〜5万)= 25.40 人
  SDの比(0〜5万 ÷ 50万以上)  = 2.36 倍
saved: html/figures/2018_U2_fig1.png
  • ④ 実行結果の読み取り:① 平均は 0〜5万人=79.22 → 50万人以上=104.62 と人口規模が大きいほど高い(差25.4人)。② 標準偏差は 0〜5万人=37.13 が最大で、50万人以上=15.75 の約2.36倍小さい町村ほどばらつく。③ 保育所が1〜2か所しかない町村では、1施設あたりの人数が極端に振れやすい、という原論文の指摘と整合する。
人口規模別の保育所等1つあたり在所児数(報告値の可視化)
図1:人口規模別 保育所等1つあたり在所児数(平均±標準偏差)。報告値の可視化(再計算ではない)(原論文 表2・市区町村1668)。人口規模が小さいほど平均は低く、標準偏差(ばらつき)は大きい。市区町村の人口規模区分は現行SSDSE(都道府県)では再現できない。
📊 この図の読み方
棒の高さ
保育所1つあたりの平均在所児数(人)。右へ行くほど(人口規模が大きいほど)高い。
エラーバー
標準偏差=ばらつき。0〜5万人で最も長く、50万人以上で最も短い。
位置づけ
報告値の可視化。市区町村の層別集計は現行SSDSE(都道府県)では作れない。
2
図2:保育所等数×在所児数の定数項なし回帰(実SSDSE-B・実再現)

本研究の中心が「在所児数=β×保育所等数」という定数項なしの比例モデル(原論文 4.2)だ。保育所等数(J2503)・在所児数(J2506)は現行 SSDSE-B に実在するので、ここは唯一 実データで再現できる。原論文と同じ2015年で回帰を当て、報告値と照合する。ただし原論文は市区町村1668、SSDSE-Bは都道府県47で粒度が異なる。

やってみようSSDSE-B(2015年)で定数項なし回帰を実数・平方根の両モデルで実再現する【実再現・図2】
  • ① このコードの目的:SSDSE-B-2026 を cp932 で読み(先頭列が年度・単位行は skiprows=[1])、原論文と同じ 年度==2015 の都道府県データで保育所等数(J2503)と在所児数(J2506)を取り出す。定数項なし最小二乗 β=Σxy/Σx² と分散説明率 R² を、実数モデルと平方根変換モデルで計算し、散布図と回帰直線を描く。
  • ② 前後のつながり:図1が報告値だったのに対し、この図だけが今のSSDSEから自分で計算した実データ。原論文の核心的な比例関係が、粒度を変えても(市区町村→都道府県)どこまで再現できるかを体感する部分。
📝 コード
151
152
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
# 原論文 4.2 の中心的な関係「在所児数 = β × 保育所等数(定数項なし)」を、実データで
# 再現する。原論文は市区町村1668だが、現行 SSDSE-B は都道府県47。ここでは原論文と
# 同じ 2015 年の都道府県データを使い、粒度差を明示したうえで関係の再現を試みる。
# データ仕様:cp932・先頭列 'SSDSE-B-2026' が年度・2行目(単位行)は skiprows=[1]。
df = pd.read_csv(DATA_B, encoding='cp932', skiprows=[1])
d15 = df[df['SSDSE-B-2026'] == 2015].copy()          # 原論文と同じ 2015 年
x = d15['J2503'].astype(float).values                # 保育所等数
y = d15['J2506'].astype(float).values                # 保育所等在所児数

def fit_no_intercept(xv, yv):
    """定数項なし最小二乗 β=Σxy/Σx²、分散説明率 R²=1−Σ残差²/Σy²。"""
    beta = (xv * yv).sum() / (xv * xv).sum()
    resid = yv - beta * xv
    r2 = 1.0 - (resid ** 2).sum() / (yv ** 2).sum()
    return beta, resid, r2

b_raw, res_raw, r2_raw = fit_no_intercept(x, y)                       # 実数モデル
b_sqrt, res_sqrt, r2_sqrt = fit_no_intercept(np.sqrt(x), np.sqrt(y))  # 平方根変換

fig2, (axL, axR) = plt.subplots(1, 2, figsize=(13, 6))
# 左:実数
axL.scatter(x, y, s=45, color='#1565C0', alpha=0.75, edgecolor='white', zorder=3)
xl = np.linspace(0, x.max(), 100)
axL.plot(xl, b_raw * xl, color='crimson', lw=2.2, zorder=4,
         label=f'実再現 β={b_raw:.3f}(原論文報告 98.344)')
axL.set_title('左:実数モデル', fontsize=12)
axL.set_xlabel('保育所等数 J2503(所)', fontsize=11)
axL.set_ylabel('保育所等在所児数 J2506(人)', fontsize=11)
axL.legend(loc='upper left', fontsize=10)
axL.grid(alpha=0.3)
# 右:平方根変換
axR.scatter(np.sqrt(x), np.sqrt(y), s=45, color='#2E7D32', alpha=0.75, edgecolor='white', zorder=3)
xs = np.linspace(0, np.sqrt(x).max(), 100)
axR.plot(xs, b_sqrt * xs, color='crimson', lw=2.2, zorder=4,
         label=f'実再現 β={b_sqrt:.4f}(原論文報告 9.6536)')
axR.set_title('右:平方根変換モデル', fontsize=12)
axR.set_xlabel('√保育所等数', fontsize=11)
axR.set_ylabel('√保育所等在所児数', fontsize=11)
axR.legend(loc='upper left', fontsize=10)
axR.grid(alpha=0.3)
fig2.suptitle('図2 保育所等数 × 保育所等在所児数(定数項なし回帰)\n'
              '【実SSDSE-B-2026・2015年・都道府県47の実再現:市区町村1668とは粒度が異なる】',
              fontsize=12.5, fontweight='bold')
plt.tight_layout(rect=[0, 0, 1, 0.94])
fig2.savefig(os.path.join(FIG_DIR, '2018_U2_fig2.png'), bbox_inches='tight')
plt.close(fig2)
▼ 実行結果
=== [3] 図2: 保育所等数×在所児数 定数項なし回帰(実SSDSE-B 2015・都道府県粒度・実再現) ===
対象年: 2015  分析単位: 都道府県 47(原論文は市区町村1668)
定数項なし回帰の実再現値 vs 原論文の報告値(市区町村):
  実数モデル  : β実再現=96.781 / 報告値=98.344   R²実再現=0.9860 / 報告 0.9701
  平方根モデル: β実再現=9.7124 / 報告値=9.6536  R²実再現=0.9959 / 報告 0.9839
→ 粒度が違う(47県 vs 1668市区町村)にもかかわらず、強い比例関係(R²≒0.99)は
   都道府県データでも再現され、βも報告値に近い。原論文の核心的主張は頑健である。
saved: html/figures/2018_U2_fig2.png
  • ④ 実行結果の読み取り:① 実再現の実数モデルはβ=96.781(報告98.344)・R²=0.9860(報告0.9701)、平方根モデルはβ=9.7124(報告9.6536)・R²=0.9959(報告0.9839)。② 粒度が違う(47県 vs 1668市区町村)のにβは報告値に近く、R²は0.99前後で極めて高い。③ 「保育所等が多い自治体ほど在所児数が多い」という原論文の比例関係は、都道府県データでも強く再現され、結論が頑健であることが確かめられる。
保育所等数×在所児数の定数項なし回帰(実SSDSE-B 2015・都道府県)
図2:保育所等数(J2503)×在所児数(J2506)の定数項なし回帰(左=実数・右=平方根変換)。実SSDSE-B-2026・2015年・都道府県47からの実再現。実再現 β=96.781/9.7124(原論文報告 98.344/9.6536)。原論文は市区町村1668で、粒度が異なるため係数は完全一致しないが、強い比例関係(R²≒0.99)は再現される。
📊 この図の読み方
点の並び
右上がりの直線に沿う。保育所等数が多い県ほど在所児数も多い、という比例関係。
左右2枚
左=実数、右=平方根変換。変換すると大きな県の影響が抑えられ、点が直線に一層よく沿う(R²=0.9959)。
位置づけ
実再現(実SSDSE-B・2015)。ただし都道府県粒度で、原論文の市区町村とは分析単位が違う。
3
図3:残差が大きい市区町村ランキング(報告値の可視化)

比例モデルのR²は0.97と高いが、原論文は「いくつかの市区町村は正の方向に大きな残差を持つ」(原論文 4.2)と指摘する。残差=保育所等数では説明できなかった在所児数のズレだ。市区町村ごとの残差は市区町村版データがないと再現できないため、原論文の表を報告値としてランキング可視化する。

やってみよう平方根変換モデルで残差が大きい市区町村を都市区分つきでランキングする【報告値の可視化・図3】
  • ① このコードの目的:原論文が挙げた「平方根変換モデルで残差が正に大きい市区町村」9市を、残差の大きい順に横棒で並べ、指定都市・中核市・市を色分けする。市区町村版データが現行SSDSEに無いため再計算はできず、原論文の報告値をそのまま可視化する。
  • ② 前後のつながり:図2で見た「強い比例関係」から漏れた自治体はどこかを具体的に見る部分。残差という抽象的な量を、実在する都市の顔ぶれとして捉え直す。
📝 コード
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
# 原論文 4.2 の「平方根変換モデルで残差が正に大きい市区町村」の報告値を横棒で並べる。
# 残差=保育所等数では説明できなかった在所児数のずれ。市区町村版データが現行SSDSEに
# 無いため再計算はできず、原論文の報告値をそのまま可視化する。都市区分で色分け。
resid_df = RESID_TOP.sort_values('残差')
citycolor = {'指定都市': '#C62828', '中核市': '#E65100', '市': '#1565C0'}
colors = [citycolor[c] for c in resid_df['都市区分']]
ylab = [f"{r['市区町村']}{r['都道府県']})" for _, r in resid_df.iterrows()]

fig3, ax3 = plt.subplots(figsize=(9.5, 6.5))
ax3.barh(range(len(resid_df)), resid_df['残差'], color=colors, alpha=0.88, edgecolor='white')
ax3.set_yticks(range(len(resid_df)))
ax3.set_yticklabels(ylab, fontsize=10)
for i, v in enumerate(resid_df['残差']):
    ax3.text(v + 0.4, i, f'{v:.2f}', va='center', fontsize=9)
handles = [plt.Rectangle((0, 0), 1, 1, color=c) for c in citycolor.values()]
ax3.legend(handles, citycolor.keys(), title='都市区分', loc='lower right', fontsize=10)
ax3.set_xlabel('平方根変換モデルの正の残差(原論文 報告値)', fontsize=11)
ax3.set_xlim(0, 46)
ax3.set_title('図3 保育所等数で説明されない在所児数(正の残差)が大きい市区町村\n'
              '【原論文 4.2 の報告値の可視化(再計算ではない)】',
              fontsize=12, fontweight='bold', pad=12)
ax3.grid(axis='x', alpha=0.3)
plt.tight_layout()
fig3.savefig(os.path.join(FIG_DIR, '2018_U2_fig3.png'), bbox_inches='tight')
plt.close(fig3)
▼ 実行結果
=== [4] 図3: 残差が正で大きい市区町村ランキング(報告値の可視化) ===
上位9市のうち 指定都市・中核市 が 8 を占める(残りは「市」1)。
最大残差: 福岡市 40.01(指定都市)
→ 比例関係だけでは説明できない系統的な誤差が、大都市に偏って残っている。
saved: html/figures/2018_U2_fig3.png
  • ④ 実行結果の読み取り:① 最大残差は福岡市(40.01)、次いで広島市・豊橋市・大阪市。② 上位9市のうち8市が指定都市・中核市で、残る1つも「市」(宇治市)。町村は一つも入らない。③ つまり比例だけでは説明できない系統的な誤差が大都市に偏って残っており、「保育所等数」以外の要因(都市部特有の需要)を示唆する。
回帰残差が大きい市区町村ランキング(報告値の可視化)
図3:保育所等数で説明されない在所児数(平方根変換モデルの正の残差)が大きい市区町村。報告値の可視化(再計算ではない)(原論文 4.2)。赤=指定都市・橙=中核市・青=市。市区町村単位の残差は現行SSDSE(都道府県)では再現できない。
📊 この図の読み方
棒の長さ
平方根変換モデルの正の残差。長いほど「保育所等数から予測される以上に在所児が多い」。
色=都市区分
赤(指定都市)と橙(中核市)が上位を占め、町村は入らない。
位置づけ
報告値の可視化。原論文の表をランキングで再表現したもの。
4
図4:人口規模別の定員充足率×残差の相関(報告値の可視化)

最後に原論文の結論を支える数値を見る。残差(保育所等数で説明できない在所児数)と定員充足率相関係数を人口規模別に見ると、規模で相関の強さが変わる(原論文 4.3)。定員数(社会福祉施設等調査)はSSDSE未収録で定員充足率を計算できないため、原論文の報告値を可視化する。

やってみよう人口規模別の「定員充足率×残差」相関係数を可視化する【報告値の可視化・図4】
  • ① このコードの目的:原論文 4.3 が報告する、人口規模4区分ごとの「定員充足率 × 回帰残差」の相関係数(0.45・0.23・0.00・0.11)を棒グラフで並べる。定員数がSSDSE未収録で定員充足率を再現できないため、報告値の可視化にとどめる
  • ② 前後のつながり:図3で「都市部に残差が偏る」ことを見た。ここでは逆に小さい町村では残差が定員充足率で説明できるという、規模による関係の切り替わりを数値で確かめる締めくくり。
📝 コード
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
# 原論文 4.3 の結論を支える数値。人口規模ごとに「定員充足率」と「回帰残差」の相関係数
# を報告値のまま棒グラフ化する。定員充足率は社会福祉施設等調査由来で SSDSE に列が
# 無く再現不能のため、報告値の可視化にとどめる。人口規模が小さいほど相関が強い。
cpos = np.arange(len(CORR_BY_POP))
cvals = CORR_BY_POP['相関係数'].values
fig4, ax4 = plt.subplots(figsize=(9, 6))
bars = ax4.bar(cpos, cvals, width=0.6,
               color=['#E65100', '#F9A825', '#90A4AE', '#78909C'],
               alpha=0.9, edgecolor='white')
for xi, v in zip(cpos, cvals):
    ax4.text(xi, v + 0.012, f'r = {v:.2f}', ha='center', fontsize=12, fontweight='bold')
ax4.set_xticks(cpos)
ax4.set_xticklabels(CORR_BY_POP['人口規模'], fontsize=11)
ax4.set_ylabel('定員充足率 × 回帰残差 の相関係数', fontsize=11)
ax4.set_ylim(0, 0.55)
ax4.axhline(0, color='#333', lw=0.8)
ax4.set_title('図4 人口規模別「定員充足率 × 回帰残差」の相関係数\n'
              '【原論文 4.3 の報告値の可視化(再計算ではない)】',
              fontsize=12, fontweight='bold', pad=12)
ax4.grid(axis='y', alpha=0.3)
plt.tight_layout()
fig4.savefig(os.path.join(FIG_DIR, '2018_U2_fig4.png'), bbox_inches='tight')
plt.close(fig4)
▼ 実行結果
=== [5] 図4: 人口規模別の定員充足率×残差の相関係数(報告値の可視化) ===
人口規模が小さいほど、定員充足率が残差(=保育所数で説明されない在所児数)を
よく説明する(相関が強い):
  0〜5万人   : r = 0.45
  5〜20万人  : r = 0.23
  20〜50万人 : r = 0.00
  50万人以上  : r = 0.11
→ 町村では定員が充足しているほど残差が大きい(正の相関)。都市部では相関が消え、
   残差のばらつきは定員充足率以外の要因で説明される必要がある。
saved: html/figures/2018_U2_fig4.png
  • ④ 実行結果の読み取り:① 相関は 0〜5万人=0.45 → 5〜20万人=0.23 → 20〜50万人=0.00 → 50万人以上=0.11 と、人口規模が小さいほど強い。② 町村では「定員が充足しているほど残差(在所児数の上振れ)が大きい」正の相関があるが、大都市では相関がほぼ消える。③ つまり同じ「定員充足率と在所児数」の関係が全国一律ではなく人口規模で異なる——これが原論文の中心的主張である。
人口規模別の定員充足率×残差の相関係数(報告値の可視化)
図4:人口規模別「定員充足率 × 回帰残差」の相関係数。報告値の可視化(再計算ではない)(原論文 4.3)。人口規模が小さいほど相関が強い(0.45→0.11)。定員数は社会福祉施設等調査由来でSSDSE未収録のため実再現できない。
📊 この図の読み方
棒の高さ
各人口規模での「定員充足率×残差」の相関係数。高いほど定員充足率で残差を説明できる。
右肩下がり
0.45→0.23→0.00→0.11。人口規模が大きくなるほど相関は弱まる(20〜50万人でほぼ0)。
位置づけ
報告値の可視化。定員充足率はSSDSEで再現できないため報告値のまま。

結果の解釈と考察

著者は3つの分析から、次の3点を読み解いた(原論文 5章)。

① 小さい町村ほど1あたり在所児数が少なく、ばらつく(原論文 5章)

人口5万人未満の市区町村では、保育所等1つあたりの平均在所児数が少ない(79.22)一方、市区町村間のばらつきが大きい(標準偏差37.13)。保育所が1〜2か所しかない町村では、少数の施設が地域の保育を担うため、1施設あたりの人数が極端に振れやすい。「国全体の平均」では見えない地方の多様性がここに表れている。

② 強い比例関係の裏に、都市部の系統的な残差(原論文 5章)

保育所等数と在所児数には明確な比例関係(R²=0.9701)があるが、指定都市・中核市には大きな正の残差が残る(福岡市40.01など)。比例だけでは説明できないズレが都市部に偏る、というのが残差分析の発見だ。都市部では1施設あたりの受け入れが多い、あるいは大規模施設が多いといった要因が示唆される。

③ 定員充足率の効き方が人口規模で変わる(原論文 5章)

残差と定員充足率の相関は、人口規模が小さいほど強い(0.45→0.11)。町村では「定員が充足しているほど在所児数が上振れる」正の関係があるが、大都市では定員充足率のばらつき自体が小さく、残差のばらつきは定員充足率とは別の要因で説明される必要がある。

より正確な分析のために(補足) 原論文の主張(人口規模で関係性が異なる)は報告値に忠実だが、いくつか注意がある。①相関・残差は因果ではない。②定員充足率の相関(0.45等)は市区町村の層別で算出されたもので、本ページでは定員数がSSDSE未収録のため実再現できていない(報告値の可視化)。③本ページで実再現できた図2の回帰は都道府県粒度であり、原論文の市区町村1668とは分析単位が違う(集計単位が変わると関係が変わりうる(生態学的誤謬)点に注意)。それでも比例関係が都道府県でも再現された事実は、原論文の頑健性を裏づける。

まとめと今後の課題

本研究は、保育所等数・在所児数・定員充足率の関係が市区町村の人口規模で異なるかという問いに、層別記述統計・定数項なし回帰・残差分析・相関で迫った。結果、小さい町村ほど1あたり在所児数は少なくばらつき、比例関係の残差は指定都市・中核市に偏り、定員充足率と残差の相関は人口規模が小さいほど強い(0.45→0.11)という3点を報告した。著者は「待機児童解消などの政策は、国全体の指標ではなく人口規模による地域差を勘案すべき」と結論した。本ページでは、保育所等数・在所児数を実SSDSEで実再現し(図2)、人口規模の層別・定員充足率は報告値として可視化して切り分けた。

この研究の限界(原論文 5章より) ①産業構造・共働き率・可住地面積などの地誌的要因を分析に含めていない。②人口規模の大きい都市部で残差に影響を与える具体的な要因は特定できていない。③相関・残差は因果ではない。④再現面では、市区町村粒度・定員数が現行SSDSEに無く、実SSDSEで再現できるのは保育所等数×在所児数の回帰(都道府県粒度)のみ。
この研究から学べること 「比例モデルを当て、説明しきれない残差にこそ地域差を読む」という発想。同じ関係でも人口規模の層で相関の強さが変わることを示し、全国一律の指標の危うさを突いた点。そして、実再現・報告値の可視化・粒度差の明記を切り分ける誠実さ。丁寧なプロセスと残差分析による地域差の考察が評価され、大学生・一般の部・優秀賞に選ばれた。

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

このページの図は、以下から再現できます。

🐍 再現コード(.py) 📊 SSDSE-B-2026.csv

※ 図2(保育所等数×在所児数の定数項なし回帰)はSSDSE-B-2026の2015年・都道府県データから算出した実再現です(原論文は市区町村1668で粒度が異なるため係数は完全一致しません)。図1(人口規模別の1あたり在所児数)・図3(残差が大きい市区町村)・図4(定員充足率×残差の相関)は、原論文が市区町村版SSDSEや定員数(社会福祉施設等調査)を用いており現行SSDSEに収録が無いため、原論文の報告値を転記して可視化したものです(新たな数値の捏造はしていません)。

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

この研究を読むとき・まねするときに陥りやすい誤解を整理する。

誤解1:「R²が0.97と高いから、モデルは完璧で残差は無視してよい」
高いR²は「全体として強い比例関係がある」ことを示すだけ。原論文の核心は、その高いR²でも消えない残差が指定都市・中核市に偏る、という点にある。残差にこそ地域差の情報が残る。R²の高さと残差の系統性は別の話だ。
誤解2:「このページの図はすべて実SSDSEを計算し直したもの」
実SSDSEから再現したのは図2(保育所等数×在所児数の回帰)だけ。しかも都道府県粒度で、原論文の市区町村1668とは分析単位が違う。図1・図3・図4は市区町村の層別・定員数が現行SSDSEに無いため、原論文の報告値の可視化。図注に区別を明記している。
誤解3:「定員充足率と残差の相関が0.45だから、町村では定員が在所児を決めている」
相関は因果ではない。0.45は中程度の正の相関で、しかも本ページでは定員数がSSDSE未収録のため実再現できていない報告値だ。「町村では定員充足率が残差をある程度説明する傾向がある」という限定的な読みにとどめる。
誤解4:「都道府県で回帰が再現できたのだから、市区町村でも同じ係数になる」
ならない。集計する単位が変わると関係も変わりうる(生態学的誤謬)。本ページ図2は都道府県47で β=96.781、原論文は市区町村1668で β=98.344。近いが一致はしない。粒度が違うデータの結果を、同じものとして扱ってはいけない。

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

クリックすると各用語の詳しい解説ページに移動できます。

定数項なし線形回帰
「在所児数=β×保育所等数」のように原点を通す直線を当てる回帰。保育所が0なら在所児も0という前提に合う。βは最小二乗で Σxy/Σx² と求める。
回帰係数(β)
説明変数が1増えると被説明変数がどれだけ増えるかを表す傾き。本研究では保育所等1所あたりの平均在所児数に相当し、報告値98.344(本ページ実再現96.781)。
分散説明率(R²)
モデルが被説明変数のばらつきをどれだけ説明できたか(0〜1)。本研究の回帰は0.9701と非常に高い。
残差
実測値とモデル予測値の差。保育所等数で説明できなかった在所児数のズレで、本研究は残差の系統性に地域差を読んだ。
相関(相関係数)
2つの量が一緒に動く強さを−1〜+1で表す。本研究は定員充足率と残差の相関を人口規模別に見た(0.45→0.11)。
標準偏差
データのばらつきの大きさ。本研究では小さい町村ほど1あたり在所児数の標準偏差が大きい(37.13)ことが要点。
散布図
2変数を点で表した図。本ページ図2で保育所等数×在所児数の比例関係を確認した。
SSDSE
統計センターが提供する教育用標準データセット。本ページ図2はSSDSE-B(都道府県・時系列)の保育所等数(J2503)・在所児数(J2506)を用いた。原論文当時の市区町村版SSDSEの層別は現行版で再現できない。
因果
一方が他方の原因であること。相関・残差があっても因果があるとは限らない。

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

この研究の中心である定数項なし回帰・残差分析・層別相関を、注意点まで順に説明する。

全体像
人口規模で層別して記述統計 → 定数項なし回帰で比例関係を当てる → 残差分析で説明しきれないズレを取り出す → 相関で残差と定員充足率の関係を層ごとに比べる。予測ではなく「関係性が人口規模でどう変わるか」を探る探索的分析である。
📈 定数項なし線形回帰分散説明率
何をする
「y=β×x」と原点を通す直線を当て、傾きβを最小二乗(β=Σxy/Σx²)で求める。当てはまりの良さは分散説明率 R²=1−Σ残差²/Σy² で測る。
本研究での使い方
在所児数=β×保育所等数。保育所0なら在所児0という前提から定数項を置かない。実数と平方根変換の2モデルで比べ、いずれもR²≒0.97〜0.98と高い。
注意
定数項なしのR²は定数項ありと定義が異なり、値が高めに出やすい。原点を通す前提が妥当かを必ず確認する。外れ値(大規模自治体)に弱いので平方根変換で緩和している。
🔍 残差分析
何をする
実測値とモデル予測値の差(残差)を調べる。残差にパターン(特定地域で偏る等)があれば、モデルに入れていない要因が隠れているサイン。
本研究での使い方
比例モデルの正の残差が指定都市・中核市に偏ること(福岡市40.01など)を見つけ、都市部特有の需要という仮説につなげた。
注意
残差は「説明できなかった量」であって原因そのものではない。どんな要因が残差を生むかは別途検証が要る。残差の大小だけで結論しない。
📊 層別と相関
何をする
データを人口規模などの区分に分け、区分ごとに統計量や相関を比べる。全体で1つの値を出すより、関係が層でどう変わるかが見える。
本研究での使い方
定員充足率×残差の相関を人口規模4区分で計算し、0.45→0.23→0.00→0.11と規模で相関が変わることを示した。
注意
層を細かくすると各層のサンプルが減り、相関が不安定になる(50万人以上は35市区町村)。層の人数と相関の信頼性を併せて見る。
🧭 集計単位の粒度(生態学的誤謬)
何をする
市区町村・都道府県など「どの単位で集計するか」を意識する。単位が粗くなると個々のばらつきが平均化され、関係の強さや係数が変わりうる。
本研究での使い方
原論文は市区町村1668。本ページの実再現は都道府県47。βは近い(98.344 vs 96.781)が一致はせず、図注で粒度差を明記した。
注意
集計データで見た関係を個人・小地域に当てはめる生態学的誤謬に注意。粒度の違うデータの結果を同一視しない。

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

この研究の「都市部に残差が偏る/規模で相関が変わる」という発見は、次の研究の出発点になる。

発展1:都市部の残差を説明する要因を探る
結果X
比例モデルの正の残差が指定都市・中核市に偏る(福岡市40.01など)が、その要因は特定できていない。
新仮説Y
共働き率・女性就業率・可住地面積・大規模施設の割合などが、都市部の残差(受け入れの上振れ)を説明するのではないか。
課題Z
重回帰で残差を被説明変数にし、都市特性を同時投入して寄与を推定する(原論文は残差の要因を未特定)。
発展2:市区町村粒度で年をまたいで頑健性を確かめる
結果X
2015年の市区町村データで、人口規模により関係性が異なることが示された。
新仮説Y
待機児童対策が進んだ近年でも、人口規模による差(残差の偏り・相関の変化)は同じように残るのか。
課題Z
市区町村版SSDSE(SSDSE-C系)を複数年そろえ、層別の回帰・相関を時系列で比較して安定性を検討する。

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

再現コードを少し変えるだけで試せる課題を、易しい順に用意した。

★☆☆☆☆ 難易度1
別の年で回帰を出す
図2は 年度==2015。ここを 2023 に変えて、都道府県での回帰係数βと分散説明率R²がどう変わるか見てみよう(2023年でもR²は0.99前後で強い比例関係が保たれる)。
★★☆☆☆ 難易度2
保育所等1つあたり在所児数を都道府県で出す
SSDSE-Bの J2506 / J2503 で都道府県ごとの「1あたり在所児数」を計算し、原論文の全体平均86.12(市区町村・報告値)と比べてみよう。粒度が違うと平均も変わることを体感できる。
★★★☆☆ 難易度3
残差の大きい都道府県を出す
図2の残差 res_raw を都道府県名と並べて降順に表示し、原論文で残差上位だった大都市(福岡・大阪など)を含む府県が、都道府県粒度でも上位に来るか確かめよう。
★★★★☆ 難易度4
定数項ありモデルと比べる
numpy.polyfit(x, y, 1) で定数項ありの回帰を当て、傾き・R²が定数項なしモデルとどう違うかを比較しよう。なぜ本研究が定数項なしを選んだのかを考える。
★★★★★ 難易度5
なぜ定員充足率・層別が実SSDSEで再現できないか説明する
原論文の定員充足率と人口規模の層別(5万人未満など)が、なぜ現行SSDSE-Bで実再現できないのかを、定員数が社会福祉施設等調査由来でSSDSEに列が無いことと、SSDSE-Bが市区町村ではなく都道府県粒度であることを対比して自分の言葉で説明してみよう。

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

「比例モデルを当て、残差の偏りに地域差を読む」発想は、行政・インフラ・ビジネスの現場で広く使われている。

🏫
保育・教育の需給計画
施設数から予測される利用者数と実績のズレ(残差)を見て、需要が上振れる地域に定員を重点配分する。本研究と同じ発想。
🏥
医療・福祉の適正配置
病床数や施設数と利用実績の関係を地域規模で層別し、全国一律でなく人口規模に応じた配置基準を検討する。
🏪
出店・売上の要因分析
店舗数から予測される売上と実績の残差を見て、想定以上に売れる/売れない立地の特性を探り、次の出店戦略に使う。

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

この研究を読んで浮かびやすい疑問に答える。

Q. なぜ「定数項なし」の回帰にしたの?
A. 保育所等が0か所なら在所児数も0になるのが自然で、原点(0,0)を通すのが理にかなうからです。切片を置かず「在所児数=β×保育所等数」とすることで、βが保育所1所あたりの平均在所児数という分かりやすい意味を持ちます。
Q. R²が0.97もあるのに、なぜ残差を問題にするの?
A. R²の高さは「全体として強い比例関係」を示すだけです。原論文の核心は、その高いR²でも消えない残差指定都市・中核市に偏る点にあります。平均的な当てはまりの良さと、残差の系統的な偏りは別の情報なのです。
Q. このページの図は原論文と同じ数値ですか?
A. 図2(回帰)だけが実SSDSEからの実再現で、しかも都道府県粒度です(β=96.781、原論文の市区町村は98.344)。図1・図3・図4は、市区町村の層別や定員数が現行SSDSEに無いため原論文の報告値の可視化です。新しい数値の捏造はしていません。
Q. 定員充足率はなぜ実再現できないの?
A. 定員充足率=在所児数÷定員数×100 の分母「定員数」が、SSDSEではなく「社会福祉施設等調査」由来で、現行のSSDSE-A/B/C/Eに収録列が無いためです。そのため図4(定員充足率×残差の相関)は原論文の報告値を可視化しています。

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

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

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

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

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