論文一覧に戻る 🕸 論文ネットワーク 🗺 用語ネットワーク 統計データ分析コンペ 教育用再現集
特別賞(統計活用)[大学生・一般の部] ★

都道府県別パネルデータを用いた学力の決定要因分析

⏱️ 推定読了時間: 約30分
2021年度(令和3年度)統計データ分析コンペティション | 桑名 聖人・豊野 拓巳・吉田 賢汰(早稲田大学政治経済学部) | 全国学力・学習状況調査ほか(47都道府県×4時点)/再現はSSDSE-B | パネルデータ回帰(固定効果法・変量効果法・Hausman検定)
🔬 Hausman検定🔬 VIF/多重共線性🔬 パネルデータ分析🔬 偏差値化🔬 固定効果法🔬 操作変数法🏷 教育・学力🏷 メンタルヘルス
🔬 手法タグ / 🏷 応用タグ(クリックで同タグの論文をネットワーク検索)
🔬 再現カルテ — 原論文と同じデータ・同じ手法で再現(一部を除く)

この教材は原論文と同じデータを読み込み、同じ手順で計算し直しています。画面に出る数値と図は、あなたのブラウザがその場で計算した結果です。
⚠ ただし一部は再現していません:被説明変数の学力偏差値のほか、 通塾率・不登校率・自治体教育費・教員給与・教員経験年数・進学率が SSDSE-B に無いため、 原論文の回帰そのものは再現していません。 収録されている対照変数のみで再計算しています。

原論文が使ったデータSSDSE-B・学校教員統計調査・全国学力・学習状況調査
分析単位:都道府県
中核手法:パネルデータ分析・固定効果法・変量効果法・Pooled OLS・Hausman 検定
この教材が使うデータ
原論文(PDF)都道府県別パネルデータを用いた学力の決定要因分析
特別賞/桑名 聖人(早稲田大学政治経済学部政治学科) 豊野 拓巳・吉田 賢汰(早稲田大学政治経済学部経済学科)
✅ この教材でできること
  • 原論文の中核手法(パネルデータ分析・Hausman 検定)を実データで実行できる
  • 分析に使うデータは同梱済みで、ブラウザ上でそのまま読み込める
  • 数値・図を最後まで再計算できる(重回帰分析(OLS)・パネルデータ分析・Hausman 検定・VIF(多重共線性の確認))
突合監査の結果、主要データと中核手法はいずれも原論文と一致しています。

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

🏅 論文審査会コメント(審査員はここを評価した)
「先行研究に基づき、厳密な仮説検証型の手順に準拠した手堅い実証研究を行っている。共線性、変量効果モデルの検討も含めた手堅い計量経済実証能力は評価できる。考察の自己批判も適切で一定の学術研究として成立しているが、原因と結果の因果の方向性について考察があるとよい。」
出典:統計センター「統計データ分析コンペティション」受賞論文PDF掲載の審査講評。プロの審査員が何を評価し、何を注文したかは論文の読み方の最良の手本になる。
📝 3行で分かる要約

目次

  1. 研究のテーマと目的
  2. データと変数(13の説明変数)
  3. 分析方法:POLS→固定効果→変量効果→Hausman
  4. 図1:固定効果法の推定係数(報告値の可視化)
  5. 図2:F検定・Hausman検定(報告値の可視化)
  6. 主要な発見(原論文の報告値)
  7. 再現コード:SSDSE-Bを読み込む(実再現)
  8. 図3:クラスサイズのランキング(実再現)
  9. 図4:パネル推定手順のデモ(実再現)
  10. 結果の解釈と考察
  11. まとめ
  12. データ・コードのDL
  13. ⚠️ よくある誤解
  14. 📖 用語集
  15. 📐 手法ガイド
  16. 🚀 発展の可能性
  17. 🎯 自分でやってみよう
  18. 🤔 Q&A
  19. 🐍 ブラウザで動かす

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

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

このページのクラスサイズのランキング(図3)とパネル推定手順のデモ(図4)は、以下の手順で自分で再現できます。コードの編集は不要です。(固定効果法の推定係数=図1、F検定・Hausman検定=図2は、被説明変数の学力偏差値・通塾率・不登校率などがSSDSE-Bに無いため、原論文の報告値を可視化します。)

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

2021年度の文教費予算は約4兆216億円、世帯年収に占める教育費は3割を超えるなど、日本の教育投資は莫大である。教育の目的の一つは学力の形成にあり、「どの要因が学力形成に大きく影響するのか」を知ることは、能率的な教育政策の立案や世帯の教育投資の促進にとって有用だ。人的資本の蓄積が経済発展を導くという理論もあり、学力形成要因を分析する社会的意義は大きい。

先行研究には、大学・大学院卒業者の割合が学力と強く正相関する(土屋, 2014)、離婚率や不登校率が児童の学力と相関する(志水, 2014)、気温が高いとテストスコアが下がる(Zivin et al., 2020)といった知見がある。しかし多くはクロスセクション(1時点)のOLS分析にとどまり、各都道府県に固有で観測できない要因(教育文化など)を制御できず、内生性の問題が残る。そこで本研究は4時点の都道府県別パネルを用い、内生性に対処しながら学力の決定要因を分析する。

13
説明変数の数(教育の生産関数に基づく)
47×4
都道府県 × 時点(2007・2010・2013・2016)
+2.69
クラスサイズ→国語偏差値(報告値・10%有意)
6.98
VIF最大値(報告値・多重共線性は重篤でない)
研究の問い 小学6年生の国語・算数の学力(偏差値)は、家庭・社会環境(世帯教育費・通塾率・不登校率など)、学校が供給する教育の質(クラスサイズ・教員給与・自治体教育費など)、その他(気温)のうち、どの要因にどれだけ影響されるのか。パネルデータで内生性を抑えつつ、国語と算数を教科別に明らかにする。
分析のキモ:教育の生産関数 著者は経済学の教育の生産関数 Y = f(x₁, x₂, x₃) + ε を出発点にした。Y は学力、x₁ は個人属性・家庭/社会環境、x₂ は学校が供給する教育の質、x₃ はクラスメイトの特性(ピア効果)。x₃ は集計統計では取り出せないため対象外とし、いずれにも属さない変数を x₄ として追加。x₁・x₂・x₄ の3領域から13の説明変数を選んだ。

大学生・一般の部 全国学力・学習状況調査・SSDSE-B パネルデータ回帰 固定効果法・変量効果法 F検定・Hausman検定・VIF

データと変数(13の説明変数)

被説明変数は、国立教育政策研究所が実施した全国学力・学習状況調査(小学6年生)の国語・算数の平均正答率から、年ごとに偏差値を計算したもの。私立比率が都道府県で大きく異なる中学3年生は上方バイアスを避けるため除外している。分析対象は、3年ごとの学校教員統計調査に合わせた2007・2010・2013・2016年の4時点。2016年の熊本県は熊本地震で調査見送りのため欠損し、全体はアンバランスパネルとなっている。

表1 13の説明変数と、学力への影響の仮説(原論文 表1・表2の要約)

領域説明変数仮説(学力への符号)SSDSE-B収録
x₁ 個人属性・
家庭/社会環境
世帯教育費○(教育費)
教養娯楽費
通塾率×(児童質問紙)
不登校率×
離婚率(1年ラグ)○(離婚件数)
大学進学率・大学院進学率×(独自定義)
標準価格(住宅地)
(通塾率は保護者の姿勢の代理でもある)
x₂ 学校が供給
する教育の質
教員給与×(学校教員統計)
教員経験年数×
クラスサイズ(教員一人あたり児童数)−(少人数学級が有効)○(児童数/教員数)
自治体教育費×(地方教育費調査)
x₄ その他年平均気温
再現可能性の整理(このページの図の作り方)
  • 報告値の可視化(再計算ではない):被説明変数の学力偏差値そのものがSSDSE-Bに無いため、学力の決定要因回帰(固定効果法の推定係数=図1、F検定・Hausman検定=図2)は原論文の報告値を転記して可視化する。通塾率・不登校率・自治体教育費・教員給与なども未収録で、回帰の再計算はできない。
  • 実再現できる部分:SSDSE-Bには小学校児童数・小学校教員数・世帯教育費・教養娯楽費・離婚件数・年平均気温・標準価格(住宅地)が収録されている。よって原論文の"意外な変数"クラスサイズ(児童数÷教員数)を実際に計算でき(図3)、さらに原論文の推定手順(POLS→固定効果→変量効果→Hausman)を実変数で追体験できる(図4。ただし被説明変数は学力ではなく世帯教育費に見立てた手法デモ)。

分析方法:POLS → 固定効果法 → 変量効果法 → Hausman検定

分析の流れ
パネルデータ
47県×4時点
POLS
まず単純推定
F検定
個別効果の有無
固定 or 変量
Hausmanで選択

① 回帰モデル

被説明変数 Yᵢₜ は第 i 都道府県・t 年度のテストスコア偏差値。式は Yᵢₜ = α + Σβⱼ Xⱼ,ᵢₜ + β₁₃ X₁₃,ᵢ₍ₜ₋₁₎ + Fᵢ + Uᵢₜ。ここで Fᵢ が各都道府県の「個別効果」(例:教育文化)で、観測できず時間を通じて不変。唯一のラグ付き変数は離婚率(学力の測定に先行する必要があるため1年前の値)。国語・算数それぞれで POLS・固定効果法・変量効果法を推定し比較した。

Yᵢₜ = α + Σⱼ βⱼ Xⱼ,ᵢₜ + β₁₃ X₁₃,ᵢ(t−1) + Fᵢ + Uᵢₜ

② なぜ固定効果法か(内生性への対処)

個別効果 Fᵢ が説明変数と相関していると、これを無視したPOLSの係数は内生性バイアスを持つ。固定効果法は各都道府県の平均を差し引く(within変換)ことで、時間を通じて不変な Fᵢ をまるごと消去する。内生性が無い場合でも、同一県の異時点の誤差に自己相関が生じうるため、変量効果法での推定も併せて検討する。

③ F検定とHausman検定でモデルを選ぶ

F検定で「個別効果が存在するか」を判定(帰無仮説:個別効果なし=POLSでよい)。存在すれば固定効果法か変量効果法のいずれか。どちらを採るかはHausman検定(帰無仮説:個別効果と説明変数は無相関)で決める。棄却されれば固定効果法、されなければより効率的な変量効果法を選ぶ。

多重共線性のチェック 13変数を同時に入れるため、著者はVIF(分散拡大因子)を確認。10を超えると多重共線性が疑われるが、最大でも6.98(報告値)だったので「重篤でない」と判断している。
1
図1:固定効果法の推定係数(報告値の可視化)

原論文が固定効果法で有意と報告した係数を、著者自身の換算(「1単位あたりの偏差値変化」)で国語・算数に並べて可視化する。この図は再計算ではなく、原論文(表4・本文)の報告値をそのまま転記したものである(被説明変数の学力偏差値・通塾率・不登校率・自治体教育費はSSDSE-Bに無いため)。

やってみよう原論文 表4・本文の固定効果法の係数を転記する
  • ① このコードの目的:原論文本文が固定効果法で報告した有意な係数と、著者が示した「偏差値変化」を辞書に転記する。回帰そのものは再現できないため、これは報告値の転記であって再計算ではない。
  • ② 前後のつながり:この報告値がそのまま図1になる。実データで確かめられるクラスサイズは、後半(図3)で実際に計算し直す。
▼ 実行結果(原論文の報告値)
=== [2] 報告値:固定効果法の推定係数(原論文 表4・本文)===
変数          単位             国語Δ偏差値     算数Δ偏差値  有意(国/算)
世帯教育費       +1万円             4.00       3.00  ** / n.s.
通塾率         +1%              0.85       0.94  ** / **
不登校率        +1人/千人           2.51       3.59  ** / **
クラスサイズ      +1人/教員           2.69       0.00  * / n.s.
自治体教育費      +10万円            2.00       1.00  * / n.s.
※ 生の係数(国語/算数): 世帯教育費 0.0004/**, 通塾率 0.8489/0.9414, 不登校率 2.5092/3.5927, クラスサイズ 2.6857/非有意, 自治体教育費 0.00002/非有意
※ 国語・算数で共通して正に有意なのは通塾率と不登校率。
※ クラスサイズは負を予想する先行研究が多い中、国語で"正に有意"という真逆の結果。
   これらはすべて原論文の報告値であり、本スクリプトで計算し直したものではない。
  • ④ 実行結果の読み取り:国語・算数で共通して正に有意なのは通塾率と不登校率。国語ではさらに世帯教育費(+1万円で偏差値+4)・クラスサイズ(+1人で+2.7)・自治体教育費(+10万円で+2)が有意。クラスサイズが"正"なのは、少人数学級の有効性を示す先行研究と真逆で、本研究の目玉である。すべて原論文の報告値。
固定効果法による学力の決定要因(国語・算数、報告値の可視化)
図1:固定効果法の推定係数(1単位あたりの偏差値変化)。報告値の可視化(再計算ではない)(原論文 表4・本文)。青=国語(有意)、橙=算数(有意)、灰=非有意。
📊 この図の読み方
通塾率・不登校率
国語・算数の両方で正に有意(青・橙が両方伸びる)。塾通いの多さ・不登校率の高さが偏差値の高さと結びつく(解釈は後述)。
世帯教育費・自治体教育費
国語で有意(青)、算数では非有意(灰の橙)。ただし算数でもp値は0.1近くで、係数の大きさは国語とほぼ同じ。
クラスサイズ
国語でのみ正に有意(+2.69)。先行研究の"少人数学級ほど学力向上"と真逆の符号で、本研究の最大の特徴。
位置づけ
報告値の可視化。係数・有意性は原論文の報告値で、本ページで計算したものではない。
2
図2:F検定・Hausman検定(報告値の可視化)

なぜ固定効果法で解釈したのか。著者はF検定(個別効果の有無)とHausman検定(固定効果か変量効果か)の統計量を国語・算数それぞれで報告している。この図はその検定統計量(報告値)を可視化したものである。

やってみよう原論文 5.1・5.2 の検定統計量を転記する
  • ① このコードの目的:原論文が報告したF値とHausmanのカイ二乗値を教科別に転記し、いずれも1%水準で有意=固定効果法が選ばれたことを示す。報告値の転記であり再計算ではない。
  • ② 前後のつながり:ここで固定効果法が選ばれた根拠を確認してから、図1の係数解釈に戻れる。同じ検定を実データで動かす体験は図4で行う。
▼ 実行結果(原論文の報告値)
=== [3] 報告値:F検定・Hausman検定(原論文 5.1・5.2)===
個別効果の有無 → F検定。固定効果か変量効果か → Hausman検定。
教科          F検定 F値    Hausman χ²   採択モデル
国語            7.82         36.86   固定効果法(両検定とも1%で有意)
算数            7.50         45.35   固定効果法(両検定とも1%で有意)
F検定:p値は少なくとも小数第4位まで0 → 1%水準で個別効果が存在(POLSは不適)。
Hausman検定:帰無仮説「個別効果と説明変数は無相関」を1%水準で棄却 → 固定効果法を採択。
補足(符号反転の報告):POLSで負に有意だった通塾率・不登校率が、固定効果法では正に有意へ。
POLSで正に有意だった大学進学率・標準価格(住宅地)や負に有意だった離婚率は固定効果法で非有意。
→ 単純なPOLSの内生性バイアスが固定効果法である程度克服された、と著者は解釈。
  • ④ 実行結果の読み取り:F検定は国語F=7.82・算数F=7.50で個別効果が存在(POLSは不適)。Hausman検定は国語χ²=36.86・算数χ²=45.35で帰無仮説を1%水準で棄却し、両教科とも固定効果法を採択。POLSで負に有意だった通塾率・不登校率が固定効果法で正に転じる符号反転も報告されている。
F検定・Hausman検定の統計量(報告値の可視化)
図2:F検定(左)とHausman検定(右)の統計量。報告値の可視化(再計算ではない)(原論文 5.1・5.2)。赤破線は臨界値の目安。両教科とも臨界値を大きく超え固定効果法を採択。
📊 この図の読み方
左(F検定)
棒が赤破線(1%臨界値の目安)を超える=個別効果あり。POLSでは不十分で、県ごとの固定効果を入れるべきだと分かる。
右(Hausman検定)
χ²が臨界値(自由度13で約27.7)を超える=個別効果と説明変数が相関。効率だけを優先する変量効果法ではなく、一致性のある固定効果法を採る。
位置づけ
報告値の可視化。数値は原論文の報告値。
3
主要な発見(原論文の報告値)

以下の係数・有意性はすべて原論文の報告値(固定効果法)である。

国語・算数で共通:通塾率・不登校率が正に有意

変数国語(偏差値変化)算数(偏差値変化)著者の解釈
通塾率+0.85(**)+0.94(**)塾で先取り・補習が進み、学校の勉強の定着が上がる(仮説通り)
不登校率+2.51(**)+3.59(**)不登校児はテストを受けない傾向。受験者の平均が押し上げられる可能性(仮説と逆)

国語のみ有意:世帯教育費・クラスサイズ・自治体教育費

変数国語算数著者の解釈
世帯教育費+4.0(**, +1万円あたり)n.s.(p≈0.135)家庭の教育投資が国語学力を高める実証的根拠
クラスサイズ+2.69(*, +1人あたり)n.s.人数が多いほど多様な意見に触れ、国語の感性が育つ可能性(先行研究と真逆)
自治体教育費+2.0(*, +10万円あたり)n.s.(p≈0.113)自治体の教育予算が国語学力に寄与
方法論上のハイライト:POLS→固定効果法で符号が反転 POLSでは通塾率・不登校率が負に有意だったが、固定効果法では正に有意へ転じた。逆に、POLSで正に有意だった大学進学率・標準価格(住宅地)や、負に有意だった離婚率は、固定効果法では非有意になった。これは、POLSで生じていた内生性バイアスが固定効果法で克服された結果だと著者は解釈する。パネル分析でモデル選択が結論を左右する好例である。
4
再現コード:SSDSE-Bを読み込む(実再現)

原論文の被説明変数(学力偏差値)はSSDSE-Bに無い。しかしSSDSE-Bには小学校児童数・小学校教員数があるので、原論文の目玉であるクラスサイズ(教員一人あたり児童数)を実データで計算できる。まず読み込む。

やってみようSSDSE-B を読み込み、実再現に使う説明変数を用意する【実再現】
  • ① このコードの目的:SSDSE-B を cp932・skiprows=[1] で読み込み、都道府県行(地域コード R+5桁、全国 R00000 を除外)だけを残す。原論文の説明変数のうちSSDSE-Bに収録されている列(小学校児童数・教員数、世帯教育費、離婚件数、気温など)をコードから日本語名に変換し、クラスサイズ=小学校児童数÷小学校教員数を計算する。
  • ② 前後のつながり:ここで用意したクラスサイズと世帯教育費が、以降の実再現(図3・図4)の土台になる。原論文で使われた学力偏差値・通塾率・不登校率などは収録が無いので、ここでは扱えない。
📝 コード
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
df_raw = pd.read_csv(DATA_B, encoding='cp932', skiprows=[1])
# 都道府県行のみ(地域コード R+5桁、全国 R00000 を除外)
mask = (df_raw['Code'].astype(str).str.match(r'^R\d{5}$', na=False) &
        (df_raw['Code'] != 'R00000'))
df_all = df_raw[mask].copy()

# 使う列(コード → 意味):
#   Prefecture 都道府県 / E2401 小学校教員数 / E2501 小学校児童数
#   L322108 教育費(二人以上世帯,月) / L322109 教養娯楽費 / L3221 消費支出
#   A9201 離婚件数 / A1101 総人口 / B4101 年平均気温 / C5401 標準価格(住宅地)
rename = {'SSDSE-B-2026': '年度', 'Prefecture': '都道府県',
          'E2401': '小学校教員数', 'E2501': '小学校児童数',
          'L322108': '世帯教育費', 'L322109': '教養娯楽費', 'L3221': '消費支出',
          'A9201': '離婚件数', 'A1101': '総人口', 'B4101': '年平均気温',
          'C5401': '標準価格住宅地'}
df_all = df_all.rename(columns=rename)
for c in ['小学校教員数', '小学校児童数', '世帯教育費', '教養娯楽費', '消費支出',
          '離婚件数', '総人口', '年平均気温', '標準価格住宅地']:
    df_all[c] = pd.to_numeric(df_all[c], errors='coerce')
df_all['年度'] = df_all['年度'].astype(int)

# 原論文の"意外な正の変数"クラスサイズ = 小学校児童数 ÷ 小学校教員数(教員一人あたり児童数)
df_all['クラスサイズ'] = df_all['小学校児童数'] / df_all['小学校教員数']
▼ 実行結果
=== [1] SSDSE-B 読み込み(実再現に使う説明変数を用意)===
収録年度: [np.int64(2012), np.int64(2013), np.int64(2014), np.int64(2015), np.int64(2016), np.int64(2017), np.int64(2018), np.int64(2019), np.int64(2020), np.int64(2021), np.int64(2022), np.int64(2023)]
都道府県数: 47
SSDSE-B に収録されている原論文の説明変数:クラスサイズ(児童数/教員数)・世帯教育費・教養娯楽費・離婚率・年平均気温・標準価格(住宅地)
SSDSE-B に無い変数(→再現不可):被説明変数の学力偏差値・通塾率・不登校率・自治体教育費・教員給与・教員経験年数・大学進学率・大学院進学率
  • ④ 実行結果の読み取り:SSDSE-Bには2012〜2023年の12時点が収録され、47都道府県が揃っている。原論文の説明変数のうちクラスサイズ・世帯教育費・教養娯楽費・離婚率・気温・標準価格(住宅地)は実データで扱えるが、被説明変数の学力偏差値と通塾率・不登校率・自治体教育費などは収録が無いことがはっきりする。だからこそ図1・図2は報告値の可視化、図3・図4は実再現、と役割を分ける。
5
図3:クラスサイズのランキング(実再現)
やってみようクラスサイズ(教員一人あたり児童数)で都道府県をランキングする【実再現】
  • ① このコードの目的:2023年について、クラスサイズ(小学校児童数÷小学校教員数)で47都道府県を降順に並べ、多い上位・少ない下位と全国平均を書き出す。原論文が"意外な正の変数"とした指標を、公開データで実際に算出する。
  • ② 前後のつながり:ここで得たクラスサイズの分布を、図3の横棒ランキングにする。原論文が使った学力偏差値は無いので、"クラスサイズと学力の関係"そのものは図1の報告値を参照する。
📝 コード
248
249
250
251
252
253
d23 = df_all[df_all['年度'] == 2023].dropna(subset=['クラスサイズ']).copy()
d23 = d23.sort_values('クラスサイズ', ascending=False).reset_index(drop=True)
print(f'クラスサイズ(小学校児童数/小学校教員数, 2023)  平均 {d23["クラスサイズ"].mean():.2f}'
      f' / 最大 {d23["クラスサイズ"].max():.2f} / 最小 {d23["クラスサイズ"].min():.2f}')
print('▼ 教員一人あたり児童数が多い上位5')
print(d23[['都道府県', 'クラスサイズ']].head(5).to_string(index=False, float_format='%.2f'))
▼ 実行結果
=== [4] 実再現:クラスサイズ(教員一人あたり児童数)ランキング(SSDSE-B 2023)===
クラスサイズ(小学校児童数/小学校教員数, 2023)  平均 13.25 / 最大 17.10 / 最小 10.51
▼ 教員一人あたり児童数が多い上位5
都道府県  クラスサイズ
 東京都   17.10
 埼玉県   16.59
神奈川県   16.45
 千葉県   16.08
 愛知県   15.50
▼ 少ない下位5
都道府県  クラスサイズ
 高知県   10.51
和歌山県   10.62
 島根県   10.82
 徳島県   11.10
鹿児島県   11.44
原論文はこの変数を4時点で平均15.16と算出(担任外の教員も含めたため過小推定と注記)。
SSDSE-Bで実計算した2023年の平均は上記の通りで、都市部(東京・神奈川・埼玉)ほど大きい。
原論文は「クラスサイズが大きいほど国語の偏差値が高い(正に有意)」と報告したが、被説明変数の学力偏差値はSSDSEに無いため、その関係の再現は不可(図1の報告値を参照)。
  • ④ 実行結果の読み取り:クラスサイズの全国平均は約13.25(2023)。原論文は4時点で平均15.16と算出したが、これは担任外の教員も分母に含めた過小推定だと著者自身が注記している。上位は東京・埼玉・神奈川・千葉・愛知と大都市圏、下位は高知・和歌山・島根など。都市部ほど教員一人あたり児童数が多い構図が実データで確認できる。
クラスサイズ(教員一人あたり児童数)都道府県ランキング(実再現)
図3:クラスサイズ=小学校児童数÷小学校教員数(SSDSE-B 2023年、N=47)。実再現(実計算):色は地域ブロック、赤破線は全国平均。地図の代わりにランキングで表現。
📊 この図の読み方
上(大きい)
教員一人あたり児童数が多い。東京・埼玉・神奈川など大都市圏が上位。原論文はこの"大きさ"が国語偏差値の高さと正に結びつくと報告した(図1)。
下(小さい)
高知・和歌山・島根など。児童数に対して教員が相対的に多い。
原論文との違い
原論文の平均15.16に対しSSDSE実計算は約13.25。教員数の数え方(担任外を含むか)と年次の違いによる。クラスサイズ変数の実計算はできるが、学力との回帰は再現不可
6
図4:パネル推定手順のデモ(実再現)

原論文の学力回帰そのものはSSDSE-Bでは再現できない。しかし推定手順(POLS→F検定→固定効果/変量効果→Hausman検定)は、SSDSE-Bの実変数だけで一通り追体験できる。ここでは原論文の説明変数でもある世帯教育費を被説明変数に見立てた手法デモとして動かす(学力の決定要因の再現ではない)。

やってみようパネルを組み、POLS・固定効果法・F検定を実行する【実再現・手法デモ】
  • ① このコードの目的:原論文の4時点構成にならい、SSDSE-Bから2013・2016・2019・2022年の4時点パネルを作る。被説明変数が学力偏差値ではないため、原論文の説明変数でもある世帯教育費を被説明変数に見立て、教養娯楽費・消費支出で回帰する。まずPOLSを推定し、各県の平均を差し引くwithin変換で固定効果法を推定、両者の残差平方和からF検定(個別効果の有無)を計算する。
  • ② 前後のつながり:ここで「個別効果があるか(POLSでよいか)」を判定する。存在すれば固定効果法か変量効果法へ進む。原論文がF検定で個別効果を確認したのと同じ手順である。
📝 コード
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
years_panel = [2013, 2016, 2019, 2022]   # 原論文の4時点構成にならい4時点を採用
dp = df_all[df_all['年度'].isin(years_panel)].dropna(
    subset=['世帯教育費', '教養娯楽費', '消費支出']).copy()
dp['Y']  = dp['世帯教育費'] / 1000.0   # 千円/月
dp['x1'] = dp['教養娯楽費'] / 1000.0   # 千円/月
dp['x2'] = dp['消費支出']   / 1000.0   # 千円/月
dp['ent'] = dp['都道府県']
N = dp['ent'].nunique()
T = len(years_panel)
K = 2
n = len(dp)
print(f'\nパネル構成:{N}都道府県 × {T}時点 = {n}観測(被説明変数=世帯教育費・千円/月)')

# --- POLS ---
Xp = sm.add_constant(dp[['x1', 'x2']])
pols = sm.OLS(dp['Y'], Xp).fit()
# --- 固定効果法(within変換:各都道府県の平均を控除)---
g = dp.groupby('ent')
dm = dp.copy()
for c in ['Y', 'x1', 'x2']:
    dm[c] = dp[c] - g[c].transform('mean')
fe = sm.OLS(dm['Y'], dm[['x1', 'x2']]).fit()
ssr_fe = fe.ssr
sig2e = ssr_fe / (n - N - K)
# --- F検定(個別効果の有無:POLS vs 固定効果)---
F_stat = ((pols.ssr - ssr_fe) / (N - 1)) / (ssr_fe / (n - N - K))
F_p = stats.f.sf(F_stat, N - 1, n - N - K)
  • ④ 実行結果の読み取り:None
やってみよう変量効果法とHausman検定を実行し、モデルを選ぶ【実再現・手法デモ】
  • ① このコードの目的:各県平均を θ だけ差し引く準変換(quasi-demean)で変量効果法を推定する。続いて、固定効果と変量効果のどちらが適切かを判定するHausman検定を、頑健なMundlak補助回帰(各説明変数の県平均を追加して同時有意性を検定)で実装する。この方式は古典的Hausmanと違い統計量が負にならず、教育用に扱いやすい。
  • ② 前後のつながり:固定効果法と変量効果法の係数を比較し、Hausman検定で最終的なモデルを選ぶ。原論文の推定手順を、公開データで最後まで動かす。
📝 コード
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
# --- 変量効果法(Swamy–Arora風のquasi-demean)---
bt = dp.groupby('ent')[['Y', 'x1', 'x2']].mean()
btw = sm.OLS(bt['Y'], sm.add_constant(bt[['x1', 'x2']])).fit()
sig2_b = btw.ssr / (N - K - 1)
sig2u = max(sig2_b - sig2e / T, 0.0)
theta = 1 - np.sqrt(sig2e / (T * sig2u + sig2e)) if (T * sig2u + sig2e) > 0 else 0.0
qd = dp.copy()
for c in ['Y', 'x1', 'x2']:
    qd[c] = dp[c] - theta * g[c].transform('mean')
qd['const'] = 1 - theta
re = sm.OLS(qd['Y'], qd[['const', 'x1', 'x2']]).fit()
# --- Hausman検定(Mundlak補助回帰版:頑健で常に非負)---
dp['x1bar'] = g['x1'].transform('mean')
dp['x2bar'] = g['x2'].transform('mean')
Xm = sm.add_constant(dp[['x1', 'x2', 'x1bar', 'x2bar']])
mund = sm.OLS(dp['Y'], Xm).fit(cov_type='cluster', cov_kwds={'groups': dp['ent']})
R = np.zeros((2, 5)); R[0, 3] = 1; R[1, 4] = 1
wald = mund.wald_test(R, scalar=True)
H_stat = float(wald.statistic); H_p = float(wald.pvalue)
  • ④ 実行結果の読み取り:=== [5] 実再現:パネル推定の手順デモ(POLS/固定効果/変量効果, F検定, Hausman)=== 原論文の被説明変数(学力偏差値)はSSDSEに無いため、学力回帰そのものは再現できない。 そこで原論文の説明変数でもある「世帯教育費」を被説明変数に見立て、「教養娯楽費」「消費支出」で 回帰し、原論文とまったく同じ推定手順(POLS→F検定→固定効果/変量効果→Hausman検定)を追体験する。 ※ これは"手法の再現デモ"であって、学力の決定要因の再現ではない。数値はすべてSSDSEの実データ。 パネル構成:47都道府県 × 4時点 = 188観測(被説明変数=世帯教育費・千円/月) 係数比較(被説明変数=世帯教育費 千円/月): 変数 POLS 固定効果 変量効果 教養娯楽費(x1) 0.3459 -0.0857 0.1600 消費支出(x2) 0.0422 0.0777 0.0635 F検定(個別効果の有無): F=3.92, p=2.83e-10, df=(46, 139) → 1%水準で個別効果あり(POLSは不適)。 Hausman検定(Mundlak型・固定 vs 変量): χ²=10.09, p=0.00643, df=2 → 帰無仮説「個別効果と説明変数は無相関」を棄却 → 固定効果法を採択。 原論文と同じく、この実データデモでも Hausman検定は固定効果法を選ぶ。 注目:教養娯楽費(x1)の符号は POLS +0.346 → 固定効果 -0.086 と反転。    原論文で通塾率・不登校率がPOLS→固定効果で符号反転したのと同じ現象を、実データで体験できる。
POLS・固定効果法・変量効果法の推定手順デモ(実再現)
図4:POLS・固定効果法・変量効果法の係数比較(SSDSE-B 4時点パネル、被説明変数=世帯教育費)。実再現・手法デモ:注記のF検定・Hausman検定も実データの計算値。原論文の学力回帰そのものではない
📊 この図の読み方
3本の棒
同じ変数でも推定法で係数が変わる。教養娯楽費(x1)はPOLSで+、固定効果法で−と符号が反転——原論文で通塾率・不登校率が符号反転したのと同じ現象を実データで体験できる。
F検定・Hausman検定(注記)
F検定は個別効果ありを示し、Hausman検定(χ²≈10.1, p≈0.006)は帰無仮説を棄却して固定効果法を採択。原論文と同じ結論に至る。
位置づけ
実再現(手法デモ)。数値はSSDSEの実データだが、被説明変数は学力ではなく世帯教育費。あくまで"推定手順の再現"である。

結果の解釈と考察(原論文「5.3」「6.」)

通塾率・不登校率(国語・算数で共通)

通塾率が高いほど学力が高いのは、塾通いの児童ほど先取り学習や補習で定着が進むため(仮説通り)。一方、不登校率が高いほど平均学力が高いのは仮説と逆だが、不登校児はテストを受けない傾向にあり、学習に遅れた層が平均から抜けることで受験者平均が押し上げられる、という解釈が可能だと著者は述べる(原因と結果の向きに注意)。

クラスサイズ:先行研究と真逆の"正"

国語ではクラスサイズ(教員一人あたり児童数)が大きいほど偏差値が高い。多くの先行研究が示す"少人数学級の有効性"と真逆で、著者は「国語ではクラスの人数が多いほど多様な意見に触れ、豊かな感性が育つのかもしれない」と考察する。算数では非有意で、教科による違いが浮かぶ。

政策的含意(原論文) ①自治体教育費は国語学力に正の影響 → 自治体は教育予算を増やす政策が有効(算数も有意に近い)。②国語ではクラスサイズが正 → 国語の学力向上には教員一人あたり児童数を増やすことに意味がある、と示唆。ただし著者自身が因果の向きに慎重で、審査会も「原因と結果の因果の方向性の考察があるとよい」とコメントしている。

まとめ

本研究は、都道府県レベルの4時点パネルを用い、教育の生産関数の枠組みで国語・算数の学力の決定要因を分析した。固定効果法により、通塾率・不登校率が両教科で、世帯教育費・クラスサイズ・自治体教育費が国語で、学力に正の影響を持つことを示した。特にクラスサイズは先行研究と真逆の"正"という新規な結果を得て、教科別に比較した点に貢献がある。

この研究の限界(原論文) ①都道府県レベルの集計データゆえの生態学的誤謬の危険(個票データが望ましい)。②逆の因果性への配慮不足(通塾率・不登校率が学力から影響を受ける可能性)→操作変数法などが必要。③クラスサイズを担任外の教員も含めて算出した過小推定(平均15.16)。ミクロな個票での再検討が課題。
この研究から学べること 仮説検証型の手堅い手順(生産関数→仮説→VIF→F検定→Hausman検定→固定効果法)を最後まで踏むこと、そして自己批判(生態学的誤謬・逆の因果性)を明示する誠実さ。審査会も「厳密な仮説検証型の手堅い実証研究」と評価した。

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

このページのクラスサイズのランキング(図3)とパネル推定手順デモ(図4)は、以下から再現できます。

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

※ 固定効果法の推定係数(図1)とF検定・Hausman検定(図2)は、被説明変数の学力偏差値・通塾率・不登校率などがSSDSE-B外のため、原論文の報告値を可視化したものです。図4は世帯教育費を被説明変数に見立てた手法デモで、原論文の学力回帰そのものではありません。

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

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

誤解1:「不登校率が高いほど学力が高い=不登校は良いこと」
これは集計データの見かけ上の関係。不登校児はテストを受けない傾向があり、学力の低い層が平均から抜けるため受験者平均が上がる、という解釈が有力。個人レベルの因果とは別物で、生態学的誤謬に注意。
誤解2:「クラスを大きくすれば学力が上がる」
国語で正の相関が出たのは事実だが、著者も因果の向きに慎重。逆の因果性(学力の高い地域=都市部で児童が多い等)も否定できない。審査会も因果方向の考察を求めており、政策に直結させるのは早計。
誤解3:「POLSでも固定効果法でも結論は同じはず」
本研究の肝は推定法で符号が反転したこと。通塾率・不登校率はPOLSで負・有意→固定効果法で正・有意。個別効果を制御するかどうかで結論が変わる。だからF検定・Hausman検定でモデルを選ぶ手順が重要。
誤解4:「このページの図はすべて原論文と同じ数値」
図1・図2は原論文の報告値の可視化(再計算ではない)。図3は実計算だが年次・教員数の定義が原論文と異なり平均値がずれる。図4は手法デモで、被説明変数は学力ではなく世帯教育費。図注に明記している。

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

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

パネルデータ
同じ対象(都道府県)を複数時点で観測したデータ。本研究は47都道府県×4時点。時間を通じて不変な個別効果を制御できる。
固定効果法
各対象の平均を差し引く(within変換)ことで、観測できない時間不変の個別効果を消去する推定法。内生性バイアスに強い。
変量効果法
個別効果を確率変数とみなすGLS推定。個別効果が説明変数と無相関なら固定効果法より効率的。
F検定
ここでは「個別効果が存在するか(POLSでよいか)」を判定する検定。棄却されれば固定効果/変量効果へ。
Hausman検定
固定効果法と変量効果法のどちらを採るかの検定。帰無仮説「個別効果と説明変数は無相関」。棄却されれば固定効果法。
内生性
説明変数と誤差項が相関し、係数が偏る問題。観測できない個別効果や逆の因果性が原因になる。
VIF
分散拡大因子。多重共線性の指標で、一般に10を超えると要注意。本研究は最大6.98。
生態学的誤謬
集計データの関係を個人にそのまま当てはめる誤り。都道府県平均から個人の行動を推し量る危険。
偏差値
平均50・標準偏差10に標準化した得点。本研究は都道府県別平均正答率を年ごとに偏差値化して被説明変数にした。

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

この研究のパネル分析を、手を動かす順に説明する。

全体像
パネル(47県×4時点)をまずPOLSで推定 → F検定で個別効果の有無を判定 → 個別効果があれば固定効果法か変量効果法 → Hausman検定でどちらかを選ぶ。「観測できない県ごとの事情(個別効果)を制御して内生性を減らす」のが狙い。
🧮 固定効果法(Fixed Effects)
何をする
各都道府県の時間平均を各変数から差し引く(within変換)。時間を通じて不変な個別効果 Fᵢ がまるごと消える。
なぜ使う
教育文化など観測できない県固有の要因が説明変数と相関していても、それを消去できるので係数のバイアスが減る(内生性対策)。
注意
時間不変の変数(地理条件など)は消えてしまい効果を推定できない。within変換で情報量が減るため標準誤差は大きくなりがち。
🎲 変量効果法(Random Effects)
何をする
個別効果を平均ゼロの確率変数とみなし、θ だけ各県平均を差し引く準変換でGLS推定する。
なぜ使う
個別効果が説明変数と無相関なら、固定効果法より効率的(分散が小さい)。時間不変変数の効果も推定できる。
注意
無相関の仮定が崩れると係数が偏る。だからHausman検定で固定効果法と比較して選ぶ。
⚖️ F検定・Hausman検定(モデル選択)
F検定
「個別効果なし(POLSでよい)」を帰無仮説に、POLSと固定効果法の残差平方和から計算。棄却=個別効果あり。本研究は国語F=7.82・算数F=7.50で棄却。
Hausman検定
「個別効果と説明変数は無相関」を帰無仮説に、固定効果法と変量効果法の係数差から計算。棄却=固定効果法を採る。本研究は国語χ²=36.86・算数χ²=45.35で棄却。
実装の注意
古典的Hausman統計量は有限標本で負になりうる。図4では負にならないMundlak補助回帰版(県平均を足して同時有意性を検定)を使った。

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

この研究の「相関は示したが因果の向きは不明」という結論は、次の研究の出発点になる。

発展1:逆の因果性に操作変数で対処する
結果X
通塾率・不登校率が固定効果法で学力に正。ただし学力→通塾率という逆の因果も考えられる。
新仮説Y
通塾は本当に学力を「引き上げる」のか、それとも学力の高い地域ほど通塾が多いだけか。
課題Z
操作変数法(塾の立地・費用など学力に直接効かない変数を道具に使う)で、因果の向きを分離する。
発展2:個票データで生態学的誤謬を避ける
結果X
都道府県平均での分析ゆえ、クラスサイズや不登校率の解釈に集計バイアスが残る。
新仮説Y
児童・学校レベルで見ても、クラスサイズは国語学力に正なのか。
課題Z
学校・児童の個票データやマルチレベル分析で、集計では見えない個人レベルの関係を検証する。

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

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

★☆☆☆☆ 難易度1
別の年でクラスサイズを出す
図3の df_all['年度'] == 2023 を 2016 や 2019 に変えて、クラスサイズのランキングや全国平均が年で変わるか確かめよう。原論文の4時点(2007・2010・2013・2016)に近い年を選ぶと比較しやすい。
★★☆☆☆ 難易度2
中学校のクラスサイズと比べる
列を E3501(中学校生徒数)E3401(中学校教員数)に差し替え、小学校と中学校で教員一人あたり児童・生徒数がどう違うか比較しよう。
★★★☆☆ 難易度3
被説明変数を変えてパネル回帰する
図4の被説明変数(世帯教育費)を教養娯楽費や消費支出に変え、POLS・固定効果・変量効果で係数がどう変わるか見よう。符号反転が起きる変数はあるか?
★★★★☆ 難易度4
説明変数を増やしてVIFを見る
離婚率(離婚件数/人口)・気温・標準価格(住宅地)を説明変数に加え、statsmodelsvariance_inflation_factor でVIFを計算。原論文の「最大6.98」に近い水準か確かめよう。
★★★★★ 難易度5
時点固定効果も入れた two-way FE
県の固定効果に加えて年ダミーも入れた two-way 固定効果に拡張し、景気や制度変更など全国共通の時点要因を制御しよう。係数がどう動くかを図4と比べる。
ヒント:年ダミーは pd.get_dummies(dp['年度'], drop_first=True) で作れる。within変換後に結合してOLSに入れる。

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

「複数時点のパネルで個別効果を制御し、政策効果を測る」発想は、現場でも広く使われている。

🏫
教育政策のEBPM
少人数学級・教育予算・ICT導入などの効果を、都道府県や学校のパネルで固定効果法により推定し、予算配分の根拠にする。
📈
経済・労働分析
最低賃金や税制の変更が雇用・賃金に与える影響を、地域×時点のパネルで固定効果法により推定。観測できない地域差を制御する。
🏥
医療・公衆衛生
制度改正や介入の効果を、施設や地域のパネルで評価。個別効果を除くことで見せかけの相関を減らす。

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

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

Q. なぜPOLSではなく固定効果法で解釈するの?
A. F検定で「個別効果が存在する(POLSでは不十分)」と分かり、Hausman検定で「個別効果と説明変数が相関している(変量効果法は偏る)」と分かったためです。両検定とも1%水準で有意で、一致性のある固定効果法が選ばれました。
Q. このページの図は原論文と同じ数値ですか?
A. 一部だけ実再現です。図1(固定効果法の係数)と図2(F検定・Hausman検定)は、被説明変数の学力偏差値や通塾率・不登校率がSSDSE-Bに無いため原論文の報告値を可視化したもの。図3(クラスサイズ)はSSDSE-Bで実計算した実データ、図4はSSDSEの実変数でパネル推定手順を再現した手法デモ(被説明変数は世帯教育費)です。図注に明記しています。
Q. クラスサイズが大きいほど学力が高いなら、少人数学級は無意味?
A. そうは言えません。これは都道府県平均での相関で、因果の向きが不明です(学力の高い都市部で児童が多いだけかもしれない)。著者も慎重で、審査会も因果方向の考察を求めています。個票データや操作変数法での検証が必要です。
Q. 「符号が反転する」とはどういうこと?なぜ起きるの?
A. 通塾率・不登校率はPOLSで負・有意でしたが、固定効果法では正・有意になりました。POLSは観測できない県固有の要因(個別効果)を無視するため内生性バイアスが乗ります。固定効果法でそれを取り除くと、本来の関係が現れて符号が変わることがあります。図4では実データでも同じ現象を体験できます。

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

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

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

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

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