論文一覧に戻る 🕸 論文ネットワーク 🗺 用語ネットワーク 統計データ分析コンペ 教育用再現集
総務大臣賞[高校生の部] ★

体力が基礎学力に与える影響について

⏱️ 推定読了時間: 約30分
2022年度(令和4年度)統計データ分析コンペティション | 太佐 美結(フェリス女学院高等学校) | 全国学力・学習状況調査/全国体力・運動能力調査(47都道府県)/再現はSSDSE-B | 因子分析・重回帰・交互作用・媒介分析
🔬 交互作用🔬 因子分析🔬 媒介分析🔬 標準化係数🔬 重回帰🏷 スポーツ・体力🏷 教育・学力
🔬 手法タグ / 🏷 応用タグ(クリックで同タグの論文をネットワーク検索)
🔬 再現カルテ — 原論文と同じデータ・同じ手法で再現

この教材は原論文と同じデータを読み込み、同じ手順で計算し直しています。画面に出る数値と図は、あなたのブラウザがその場で計算した結果です。

原論文が使ったデータ令和4年度全国学力・学習状況調査・令和3年度全国体力・運動能力、運動習慣等調査
分析単位:都道府県
中核手法:因子分析・重回帰分析
この教材が使うデータ
原論文(PDF)体力が基礎学力に与える影響について
総務大臣賞/太佐 美結(フェリス女学院高等学校)
✅ この教材でできること
  • 原論文の中核手法(因子分析)を実データで実行できる
  • 分析に使うデータは同梱済みで、ブラウザ上でそのまま読み込める
  • 数値・図を最後まで再計算できる(因子分析)
突合監査の結果、主要データと中核手法はいずれも原論文と一致しています。

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

🏅 論文審査会コメント(審査員はここを評価した)
「着眼点が秀逸であるとともに、フローチャートやロジックツリーを用いて見通しよく推論を進めていることが高く評価される。高校生の探究活動のデータ分析を超えた水準であり、SEM登場以前の1990年代までの大学院、研究者の実証を彷彿させるものであり、交互作用まで考慮したことを考えると、通常の研究者の水準も超えている。」
出典:統計センター「統計データ分析コンペティション」受賞論文PDF掲載の審査講評。プロの審査員が何を評価し、何を注文したかは論文の読み方の最良の手本になる。
📝 3行で分かる要約

目次

  1. 研究のテーマと目的
  2. 使用データと再現可能性の整理
  3. 分析方法:因子分析→重回帰→交互作用→媒介
  4. 図1:小学生 重回帰の標準化係数(報告値の可視化)
  5. 図2:中学生 重回帰の標準化係数(報告値の可視化)
  6. 図3:中学生 交互作用モデル(報告値の可視化)
  7. 図4:小学生 媒介分析(報告値の可視化)
  8. 再現コード:SSDSE-Bで家庭環境の変数を確かめる(実再現)
  9. 図5:離婚件数の外れ値・沖縄県(実再現)
  10. 図6:教員1人あたり児童・生徒数(実再現)
  11. 結果の解釈と提言
  12. まとめ
  13. データ・コードのDL
  14. ⚠️ よくある誤解
  15. 📖 用語集
  16. 📐 手法ガイド
  17. 🚀 発展の可能性
  18. 🎯 自分でやってみよう
  19. 🤔 Q&A
  20. 🐍 ブラウザで動かす

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

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

このページで実際に手を動かして再現できるのは図5・図6です(SSDSE-Bにある変数のみ)。図1〜図4は、原論文が使った学力調査・体力テストのデータが当プロジェクトのSSDSEに収録されていないため、原論文の報告値を転記して可視化したもの(再計算ではない)です。コードの編集は不要です。

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

小学5年生と中学2年生を対象とした「全国体力・運動能力、運動習慣等調査」(体力テスト)の結果は、平成30年までは緩やかな増加傾向だったが、平成30年以降は急激に減少している。一方、小学6年生と中学3年生を対象とした「全国学力・学習状況調査」(学力調査)は、同一の指導要領で授業が行われているにもかかわらず、都道府県ごとに各科目の正答率に大きな差が見られる。

学力の地域差には、学校での授業サポートや家庭の経済環境が影響すると指摘されている。これに加えて小中学生の体力と学力の関係を見つけることができれば、学力の地域差を縮める一助になるかもしれない——これが本研究の着眼である。先行研究(生駒)は「所得の影響を除いても、体力は学力に対して正の統計的予測力を持つ」と論じたが、体力の総合得点を用いており「体力のどの力が効くか」までは踏み込めていなかった。そこで著者は、個別の体力テストの点数から背後の体力因子を抽出して学力への影響を分析した。

0.851
持久力→知識的国語力 標準化係数(報告値・1%有意)
0.493
スピード力→算数 標準化係数(報告値・1%有意)
88%
小学生国語の因子 累積寄与率(報告値)
z=4.25
沖縄県の離婚率(SSDSE-B実再現・外れ値)
研究の問い 体力テストの総合得点ではなく、個別種目から抽出した「体力因子」は、都道府県別の基礎学力にどのような影響を与えているのか。家庭の経済力や学習環境などの「体力以外の因子」も含めて関連性を明らかにし、小中学生の運動意欲の低下防止や、運動・学習の動機付けを提案することを目的とする。
分析のキモ:ほぼ同一の母集団をそろえる 体力テストは令和3年度の小5・中2、学力調査は令和4年度の小6・中3を使う。こうすると、体力を測った子どもたちが1年後に学力調査を受ける形になり、ほぼ同一の母集団を対象にできる。因子分析では数値が大きいほどプラスの解釈になるよう、小さいほど良い変数は符号を反転して用いた。

高校生の部 学力調査・体力テスト・SSDSE・e-Stat 因子分析(主成分法・プロマックス回転) 重回帰・交互作用 媒介分析(ブートストラップ)

論文審査会コメント(原文) 着眼点が秀逸であるとともに、フローチャートやロジックツリーを用いて見通しよく推論を進めていることが高く評価される。高校生の探究活動のデータ分析を超えた水準であり、SEM登場以前の1990年代までの大学院・研究者の実証を彷彿させるものであり、交互作用まで考慮したことを考えると、通常の研究者の水準も超えている。

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

研究に影響を与えそうな要因を「体力」および「体力以外」の観点からロジックツリーで整理し(原論文 図4)、以下のデータを用いた。因子分析では、数値が小さいほど良い変数(待機児童数など)は符号を反転している。

表1 使用データの構成(原論文 表1・表2)

区分内容出典(原論文)
学力データ令和4年度 全国学力・学習状況調査(都道府県別・公立学校の平均正答率)。国語・算数/数学を問題内容別・形式別・評価の観点別に細分SSDSE-C・e-Stat(2022)
体力データ令和3年度 全国体力・運動能力、運動習慣等調査。握力・上体起こし・長座体前屈・反復横跳び・20mシャトルラン・50m走・立ち幅跳び・ソフトボール投げ等の種目別点数(男女別)スポーツ庁・SSDSE-D・e-Stat(2021)
体力以外1人あたり公立小/中学校費、教員1人あたり児童・生徒数、離婚件数、母子または父子世帯割合、図書館数、社会体育施設数、体育館数、年間収入、生活保護被保護実世帯数、持ち家比率などSSDSE-B/D・e-Stat
対象47都道府県(体力=小5・中2/学力=小6・中3で母集団をほぼ一致)
再現可能性の整理(このページの図の作り方)
  • 報告値の可視化(再計算ではない):因子分析・重回帰・交互作用・媒介分析の結果(因子負荷量・標準化係数・p値・間接効果)は、原論文が使った学力調査正答率・体力テスト種目別点数を必要とする。これらは当プロジェクトのSSDSEに収録されていないため、原論文の報告値をそのまま転記して図示する(図1〜図4)。符号・桁も原論文どおり。
  • 実再現(実データで再計算):原論文が「体力以外の因子(家庭環境・行政支援・学習環境)」の入力に用いた変数のうち、離婚件数・教員数・児童生徒数はSSDSE-Bに収録されている。よってこれらは実データから再計算できる(図5・図6)。ただし原論文の因子得点そのものの再現ではなく、入力変数の分布・外れ値の確認である。
  • 捏造はしない:新しい統計量は一切作らない。報告値と再計算値はラベルで完全に分けている。

分析方法:因子分析 → 重回帰 → 交互作用 → 媒介分析

分析はEXCEL上の統計分析ソフト HAD で行われた。手順は3ステップである。

分析の流れ
種目別・設問別
の点数
因子分析
主成分法・
プロマックス回転
重回帰
強制投入法
交互作用/媒介
で妥当性を検討

① 背後の因子を取り出す(因子分析)

因子分析は、多数の観測変数の背後にある少数の潜在的な因子を取り出す手法。因子数は固有値1以上、抽出法は主成分法、回転法は因子間の相関を許すプロマックス回転(斜交回転)を用いた(原論文 表3)。結果、次の因子が得られた。

種類抽出された因子(累積寄与率)
学力因子小学生国語=思考的国語力/知識的国語力の2因子(累積寄与率 88%)。小学生算数・中学生の国語/数学は1因子
体力因子持久力/柔軟性と筋力/スピード力/瞬発力の4因子(累積寄与率 小学生87%・中学生81%)
体力以外行政支援/家庭環境/学習環境の3因子

② 影響の大きさを推定する(重回帰)

学力因子を目的変数、体力因子+体力以外の因子を説明変数として、重回帰分析強制投入法で行う。影響の大きさは標準化係数(β)で比較する(図1・図2)。

③ 妥当でない箇所を掘り下げる(交互作用・媒介)

重回帰が妥当でない箇所では、説明変数どうしの交互作用(掛け算の項)や媒介変数を検討する。中学生では瞬発力×家庭環境の交互作用を(図3)、小学生では家庭環境→体力因子→学力の媒介を(図4)調べた。

1
図1:小学生 重回帰の標準化係数(報告値の可視化)

因子分析で得た小学生の学力因子(思考的国語力・知識的国語力・算数)を目的変数に、体力因子と体力以外の因子を説明変数にした重回帰の標準化係数を示す。これは再計算ではなく、原論文 表7 の報告値をそのまま可視化したものである。

報告値原論文 表7(小学生)の標準化係数を転記する
  • ① この図の目的:原論文 表7 の小学生の標準化係数・R²・p値を辞書に転記し、有意水準(**=1%, +=10%)で色分けして横棒にする。数値は原論文からの転記で、当ページで計算した値ではない。
  • ② 前後のつながり:ここで注目した「持久力」と「スピード力」が、後半の媒介分析(図4)で家庭環境の媒介変数として再登場する。
▼ 実行結果(原論文からの転記=報告値の可視化・再計算ではない)
=== [1] 小学生 重回帰 標準化係数(表7・原論文の報告値, 再計算ではない)===
     説明変数  思考的国語力  知識的国語力     算数
      持久力   0.321   0.851  0.314
   柔軟性と筋力   0.074  -0.195  0.015
    スピード力   0.263   0.136  0.493
      瞬発力  -0.169  -0.034 -0.055
     行政支援  -0.263   0.239  0.121
     家庭環境   0.154  -0.213 -0.054
学習環境(逆符号)   0.293   0.247  0.358
  ** = 1%有意 / + = 10%有意(原論文の表記)
  思考的国語力: R2=0.470  AdjR2=0.375  p=0.000
  知識的国語力: R2=0.594  AdjR2=0.522  p=0.000
  算数: R2=0.422  AdjR2=0.318  p=0.002
  ★注目: 知識的国語力←持久力 0.851**、算数←スピード力 0.493** が有意
  • ④ 読み取り:3つの学力すべてで決定係数 R²≧0.42、p値は0.01未満。とくに知識的国語力←持久力 β=0.851**算数←スピード力 β=0.493**が1%有意で突出する。柔軟性と筋力は知識的国語力に−0.195**(負)。学習環境(逆符号)は3学力とも10%有意(+)。いずれも原論文の報告値。
小学生 重回帰の標準化係数(報告値の可視化)
図1:小学生 重回帰の標準化係数。報告値の可視化(再計算ではない)(原論文 表7)。赤=1%有意/橙=5%有意/青=10%有意/灰=非有意。
📊 この図の読み方
知識的国語力(中央)
持久力の棒(0.85**)が飛び抜けて長い。暗記を要する知識には、苦しい状況で粘り強く続ける持久力が効く、と著者は解釈。
算数(右)
スピード力(0.49**)が最大。素早い計算処理・論理組み立てとスピード力の関係を示唆。
位置づけ
報告値の可視化。棒の長さ・符号・星印はすべて原論文 表7 の転記で、当ページで新たに計算したものではない。
2
図2:中学生 重回帰の標準化係数(報告値の可視化)

同じ重回帰を中学生(国語・数学)で行った結果。小学生と対照的に、体力因子はどれも有意でなく、「家庭環境」だけが強く効く原論文 表7(中学生)の報告値の可視化である。

報告値原論文 表7(中学生)の標準化係数を転記する
  • ① この図の目的:中学生の国語・数学について、原論文 表7 の標準化係数を転記して横棒にする。単独投入では家庭環境のみが有意という結果を確認する。
  • ② 前後のつながり:この「家庭環境だけが効く」という結果を掘り下げるため、次の図3で交互作用を検討する。
▼ 実行結果(原論文からの転記=報告値の可視化・再計算ではない)
=== [2] 中学生 重回帰 標準化係数(表7・原論文の報告値, 再計算ではない)===
  説明変数     国語     数学
   瞬発力 -0.001  0.030
柔軟性と筋力  0.096 -0.050
   持久力  0.035 -0.005
 スピード力  0.043 -0.035
  行政支援  0.009 -0.033
  家庭環境  0.581  0.648
  学習環境  0.050  0.115
  国語: R2=0.367  AdjR2=0.253  p=0.008
  数学: R2=0.451  AdjR2=0.352  p=0.001
  ★中学生では「家庭環境」のみが 1%有意(国語0.581**, 数学0.648**)。体力因子は非有意
  • ④ 読み取り:中学生では家庭環境が国語0.581**・数学0.648**と1%有意で、体力因子(瞬発力・持久力・スピード力など)はいずれも非有意。R²は国語0.367・数学0.451。先行研究の「体力は学力に影響する」とは一見相違する結果で、著者はここから交互作用の検討へ進む。
中学生 重回帰の標準化係数(報告値の可視化)
図2:中学生 重回帰の標準化係数。報告値の可視化(再計算ではない)(原論文 表7)。青=国語・橙=数学。**は1%有意。
3
図3:中学生 交互作用モデル(報告値の可視化)

中学生で「家庭環境だけが効く」のを受け、著者は瞬発力×家庭環境の交互作用項を追加した。原論文 表8 の報告値の可視化である。

報告値原論文 表8(交互作用モデル)を転記する
  • ① この図の目的:瞬発力×家庭環境の交互作用項を入れた中学生モデル(原論文 表8)の標準化係数を転記し、交互作用項が有意になるかを見る。
  • ② 前後のつながり:交互作用が有意なら、体力(瞬発力)は「家庭環境が整った上で」学力に効く、という解釈につながる。
▼ 実行結果(原論文からの転記=報告値の可視化・再計算ではない)
=== [3] 中学生 交互作用モデル(表8・原論文の報告値, 再計算ではない)===
    説明変数     国語     数学
     瞬発力  0.181  0.187
  柔軟性と筋力 -0.007 -0.139
     持久力  0.009 -0.028
   スピード力 -0.042 -0.043
    行政支援 -0.159 -0.361
    家庭環境  0.379  0.472
    学習環境 -0.032  0.044
瞬発力×家庭環境  0.431  0.374
  国語: R2=0.468  AdjR2=0.356  p=0.001
  数学: R2=0.527  AdjR2=0.427  p=0.000
  ★瞬発力×家庭環境が5%有意(国語0.431*, 数学0.374*)。表7より自由度調整済R²が向上
  • ④ 読み取り:交互作用を入れると自由度調整済R²が表7より上昇し(国語0.356・数学0.427)、瞬発力×家庭環境が国語0.431*・数学0.374*と5%有意。家庭環境も有意なまま(国語0.379*・数学0.472**)。「家庭環境が整った上で瞬発力などの体力要因が学力に良い効果をもたらす」可能性を示す。数学では行政支援−0.361*も有意。
中学生 交互作用モデル(報告値の可視化)
図3:中学生 交互作用モデル。報告値の可視化(再計算ではない)(原論文 表8)。青=国語・橙=数学。**=1%, *=5%有意。
4
図4:小学生 媒介分析(報告値の可視化)

小学生では体力が学力に直接効く一方、家庭環境は直接には効きにくかった。そこで著者は「家庭環境は体力を通じて学力に効くのでは」と考え、体力因子を媒介変数とした媒介分析(ブートストラップ)を行った。原論文 図9 の報告値の可視化である。

報告値原論文 図9(媒介分析)のパス係数と間接効果を転記する
  • ① この図の目的:知識的国語力(媒介=持久力)と算数(媒介=スピード力)について、原論文 図9 のパス係数(a・b・直接効果)とブートストラップ間接効果(係数・SE・Z・p)を転記してパス図にする。
  • ② 前後のつながり:これが本研究の結論部。小学生の家庭環境が「体力を経由して」学力に効くという媒介の姿を、報告値で可視化する。
▼ 実行結果(原論文からの転記=報告値の可視化・再計算ではない)
=== [4] 小学生 媒介分析(図9・原論文の報告値, 再計算ではない)===
[知識的国語力] 家庭環境→持久力=0.35*, 持久力→知識的国語力=0.76**, 直接効果 0.15→-0.12
   間接効果(Bootstrap): 係数=0.266, 標準化=0.266, SE=0.107, Z=2.481, p=0.013
[算数] 家庭環境→スピード力=0.41**, スピード力→算数=0.49**, 直接効果 0.29→0.09
   間接効果(Bootstrap): 係数=0.393, 標準化=0.2, SE=0.187, Z=2.098, p=0.036
  ★家庭環境から持久力/スピード力を媒介した間接効果が5%有意(p=0.013 / p=0.036)
  • ④ 読み取り:知識的国語力では 家庭環境→持久力=0.35*、持久力→知識的国語力=0.76**、家庭環境の直接効果は0.15→−0.12へ縮小。間接効果はBootstrapでp=0.013(Z=2.481)と5%有意。算数でも家庭環境→スピード力=0.41**、スピード力→算数=0.49**、間接効果p=0.036家庭環境から持久力/スピード力を媒介した間接効果が有意で、家庭環境は体力を介して学力に効く可能性が示された。
小学生 媒介分析パス図(報告値の可視化)
図4:小学生 家庭環境を体力因子で媒介した媒介分析。報告値の可視化(再計算ではない)(原論文 図9)。数値は標準化係数。**=1%, *=5%有意。
5
再現コード:SSDSE-Bで家庭環境の変数を確かめる(実再現)

図1〜図4は原論文の報告値でした。ここからは実際に手を動かせる部分です。原論文の学力・体力データはSSDSEにありませんが、「体力以外の因子」に使われた離婚件数・教員数・児童生徒数はSSDSE-Bに収録されています。まず読み込みます。

やってみようSSDSE-B を読み込み、令和3年度(2021)の47都道府県を用意する【実再現】
  • ① このコードの目的:SSDSE-B を cp932・header=1(1行目は変数コード、2行目が日本語名)で読み込み、体力調査と同じ令和3年度(2021)の47都道府県を残す。地域ブロックの色分けも用意する。
  • ② 前後のつながり:ここで用意した実データから、原論文が「家庭環境/行政支援」因子に使った変数(離婚件数・教員数・児童生徒数)を計算する。
📝 コード
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
df = pd.read_csv(DATA_B, encoding='cp932', header=1)
df['年度'] = df['年度'].astype(int)
d = df[df['年度'] == 2021].copy()   # 令和3年度(体力調査と同年)

region = {
    '北海道': '北海道・東北', '青森県': '北海道・東北', '岩手県': '北海道・東北',
    '宮城県': '北海道・東北', '秋田県': '北海道・東北', '山形県': '北海道・東北',
    '福島県': '北海道・東北',
    '茨城県': '関東', '栃木県': '関東', '群馬県': '関東', '埼玉県': '関東',
    '千葉県': '関東', '東京都': '関東', '神奈川県': '関東',
    '新潟県': '中部', '富山県': '中部', '石川県': '中部', '福井県': '中部',
    '山梨県': '中部', '長野県': '中部', '岐阜県': '中部', '静岡県': '中部', '愛知県': '中部',
    '三重県': '近畿', '滋賀県': '近畿', '京都府': '近畿', '大阪府': '近畿',
    '兵庫県': '近畿', '奈良県': '近畿', '和歌山県': '近畿',
    '鳥取県': '中国・四国', '島根県': '中国・四国', '岡山県': '中国・四国',
    '広島県': '中国・四国', '山口県': '中国・四国', '徳島県': '中国・四国',
    '香川県': '中国・四国', '愛媛県': '中国・四国', '高知県': '中国・四国',
    '福岡県': '九州・沖縄', '佐賀県': '九州・沖縄', '長崎県': '九州・沖縄',
    '熊本県': '九州・沖縄', '大分県': '九州・沖縄', '宮崎県': '九州・沖縄',
    '鹿児島県': '九州・沖縄', '沖縄県': '九州・沖縄',
}
rc = {'北海道・東北': '#4e9af1', '関東': '#e05c5c', '中部': '#f0a500',
      '近畿': '#5cb85c', '中国・四国': '#9b59b6', '九州・沖縄': '#f39c12'}
d['地域'] = d['都道府県'].map(region)
  • ④ 実行結果の読み取り:SSDSE-Bには年度列があり、2021年で47都道府県ぶんの行が得られる。これで原論文が使った社会経済指標の一部を、実データで確かめる準備が整った。原論文の学力・体力データはSSDSEに無いので、ここで再現できるのは「体力以外の因子」の入力変数に限られる。
6
図5:離婚件数の外れ値・沖縄県(実再現)
やってみよう離婚件数(人口千あたり)の分布を作り、外れ値を確かめる【実再現】
  • ① このコードの目的:離婚件数を人口千人あたりに規格化し、都道府県のヒストグラムと標準化得点(z)を計算する。原論文が3.3節・図6で指摘した「離婚件数で沖縄県が外れ値」を実データで検証する。
  • ② 前後のつながり:離婚件数は原論文の家庭環境因子に高く負荷した変数(原論文 表6)。その分布と外れ値を実データで押さえることで、家庭環境因子の中身を体感できる。
📝 コード
289
290
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
318
319
320
# =====================================================================
# 原論文 3.3 と 図6 は「離婚件数」で沖縄県が外れ値だと指摘している。
# 離婚件数は SSDSE-B に収録されているので、実データで外れ値を確認する。
d['離婚率_千人'] = d['離婚件数'] / d['総人口'] * 1000
s = d[['都道府県', '離婚率_千人', '地域']].dropna().sort_values('離婚率_千人',
                                                              ascending=False)
z = (s['離婚率_千人'] - s['離婚率_千人'].mean()) / s['離婚率_千人'].std()
s = s.assign(z=z.values)
print('=== [5] 実再現:離婚件数(人口千あたり)の分布と外れ値(SSDSE-B 2021)===')
print(f'  平均={s["離婚率_千人"].mean():.3f}  標準偏差={s["離婚率_千人"].std():.3f}  N={len(s)}')
print('  上位5県:')
print(s.head(5)[['都道府県', '離婚率_千人', 'z']].to_string(index=False))
okinawa = s[s['都道府県'] == '沖縄県'].iloc[0]
print(f'  → 沖縄県: 離婚率={okinawa["離婚率_千人"]:.3f}(全国1位, z={okinawa["z"]:.2f})'
      '。原論文が図6で指摘した外れ値を実データで確認')

fig, ax = plt.subplots(figsize=(9, 5))
ax.hist(s['離婚率_千人'], bins=16, color=BLUE, alpha=0.75, edgecolor='white')
ax.axvline(okinawa['離婚率_千人'], color=RED, lw=2, ls='--')
ax.text(okinawa['離婚率_千人'], ax.get_ylim()[1] * 0.9,
        f'  沖縄県 {okinawa["離婚率_千人"]:.2f}\n  (外れ値・z={okinawa["z"]:.1f})',
        color=RED, fontsize=10, fontweight='bold', va='top')
ax.set_xlabel('離婚件数(人口千人あたり)', fontsize=11)
ax.set_ylabel('都道府県の数', fontsize=11)
ax.set_title('図5:離婚件数(人口千あたり)の都道府県分布【SSDSE-B 2021・実再現】\n'
             '原論文 図6 の「沖縄県が外れ値」を実データで確認(家庭環境因子の入力変数)',
             fontsize=12, fontweight='bold')
ax.grid(axis='y', alpha=0.3)
plt.tight_layout()
plt.savefig(os.path.join(FIG_DIR, '2022_H1_fig5_repro_rikon.png'), dpi=150,
            bbox_inches='tight')
plt.close()
▼ 実行結果
=== [5] 実再現:離婚件数(人口千あたり)の分布と外れ値(SSDSE-B 2021)===
  平均=1.445  標準偏差=0.171  N=47
  上位5県:
都道府県   離婚率_千人        z
 沖縄県 2.170981 4.246894
 宮崎県 1.677663 1.359722
 福岡県 1.671351 1.322780
 北海道 1.671233 1.322091
 大阪府 1.657279 1.240426
  → 沖縄県: 離婚率=2.171(全国1位, z=4.25)。原論文が図6で指摘した外れ値を実データで確認
  • ④ 実行結果の読み取り:再計算の結果、沖縄県の離婚率は2.17(人口千あたり)で全国1位、z=4.25と明確な外れ値。原論文が図6で「沖縄県が外れ値」とした指摘を、SSDSE-Bの実データで再確認できた。原論文は外れ値を含む/除く両方で因子分析し、解釈が変わらないことを確認して沖縄県を残している。
離婚件数(人口千あたり)の都道府県分布と外れ値(実再現)
図5:離婚件数(人口千あたり)の都道府県分布(SSDSE-B 2021年, N=47)。実再現:沖縄県がz=4.25の外れ値。原論文 図6・3.3節の外れ値検討に対応(家庭環境因子の入力変数)。
📊 この図の読み方
右のはずれた棒
沖縄県。離婚率が全国平均(1.45)から大きく外れ、他県と分布が不連続。原論文の指摘どおり。
なぜ外れ値を残すのか
外れ値を機械的に消すのではなく、含めた場合と除いた場合の両方で分析し、結論が変わらないかを確かめる姿勢が重要(原論文も同様)。
位置づけ
実再現。SSDSE-Bの実データで計算した値で、原論文の因子得点そのものではなく入力変数の確認。
7
図6:教員1人あたり児童・生徒数(実再現)
やってみよう教員1人あたり児童・生徒数を計算し、都道府県のばらつきをみる【実再現】
  • ① このコードの目的:小学校児童数÷小学校教員数、中学校生徒数÷中学校教員数から、教員1人あたりの児童・生徒数を都道府県ごとに計算する。原論文が行政支援/学習環境因子の入力に用いた変数を実データで可視化する。
  • ② 前後のつながり:教員配置の手厚さ(少人数教育)は、原論文の行政支援・学習環境因子に関わる。図5の家庭環境系変数と合わせ、「体力以外の因子」の中身を実データでたどる。
📝 コード
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
# =====================================================================
# 原論文は「教員1人あたり児童数/生徒数」を行政支援・学習環境因子の入力変数に用いた。
# SSDSE-B の学校統計から実際に計算し、都道府県のばらつきを確認する。
d['小学校_教員あたり児童数'] = d['小学校児童数'] / d['小学校教員数']
d['中学校_教員あたり生徒数'] = d['中学校生徒数'] / d['中学校教員数']
t = d[['都道府県', '小学校_教員あたり児童数', '中学校_教員あたり生徒数', '地域']].dropna()
print('=== [6] 実再現:教員1人あたり児童・生徒数(SSDSE-B 2021)===')
for col, lab in [('小学校_教員あたり児童数', '小学校'), ('中学校_教員あたり生徒数', '中学校')]:
    top = t.sort_values(col, ascending=False).iloc[0]
    bot = t.sort_values(col).iloc[0]
    print(f'  {lab}: 平均={t[col].mean():.2f}人  最多={top["都道府県"]}({top[col]:.2f}) '
          f' 最少={bot["都道府県"]}({bot[col]:.2f})')
print('  → 教員配置(少人数教育の手厚さ)に都道府県差。原論文はこれらを'
      '「行政支援/学習環境」因子として集約した')

fig, ax = plt.subplots(figsize=(9, 5.5))
for reg, g in t.groupby('地域'):
    ax.scatter(g['小学校_教員あたり児童数'], g['中学校_教員あたり生徒数'],
               color=rc.get(reg, GRAY), s=70, alpha=0.85, label=reg)
for _, r in t.iterrows():
    ax.annotate(r['都道府県'][:2],
                (r['小学校_教員あたり児童数'], r['中学校_教員あたり生徒数']),
                fontsize=7, alpha=0.7, xytext=(3, 3), textcoords='offset points')
ax.set_xlabel('小学校 教員1人あたり児童数(人)', fontsize=11)
ax.set_ylabel('中学校 教員1人あたり生徒数(人)', fontsize=11)
ax.set_title('図6:教員1人あたり児童・生徒数【SSDSE-B 2021・実再現】\n'
             '原論文が行政支援/学習環境因子の入力に用いた変数を実データで可視化',
             fontsize=12, fontweight='bold')
ax.legend(fontsize=8, ncol=2)
ax.grid(alpha=0.3)
plt.tight_layout()
plt.savefig(os.path.join(FIG_DIR, '2022_H1_fig6_repro_teacher.png'), dpi=150,
            bbox_inches='tight')
plt.close()
▼ 実行結果
=== [6] 実再現:教員1人あたり児童・生徒数(SSDSE-B 2021)===
  小学校: 平均=13.68人  最多=埼玉県(17.39)  最少=高知県(10.65)
  中学校: 平均=12.12人  最多=東京都(15.41)  最少=高知県(8.38)
  → 教員配置(少人数教育の手厚さ)に都道府県差。原論文はこれらを「行政支援/学習環境」因子として集約した
  • ④ 実行結果の読み取り:実計算では小学校の教員1人あたり児童数は平均13.68人で、最多の埼玉県(17.39)と最少の高知県(10.65)で大きく開く。中学校も東京都(15.41)〜高知県(8.38)と差が大きい。原論文はこうした教員配置の指標を「行政支援/学習環境」因子として集約し、学力への影響を検討した。
教員1人あたり児童・生徒数の都道府県分布(実再現)
図6:小学校・中学校の教員1人あたり児童・生徒数(SSDSE-B 2021年, N=47)。実再現:原論文が行政支援/学習環境因子の入力に用いた変数を実データで可視化。

結果の解釈と提言(原論文「5. 結果の解釈」)

小学生:体力が学力に直接効く

持久力が知識的国語力に1%有意。著者は「持久力は身体が苦しい状況下で運動を継続する力であり、暗記を要する知識にも粘り強く考える思考力が求められる」と考え、筑波大学・征矢の「持久力の高さは記憶力向上(海馬)に関係する」研究と重ねて解釈した。スピード力は算数に1%有意で、幼少期〜小学生時代の運動神経を形成するゴールデンエイジで鬼ごっこや公園を駆けまわりスピードがついた児童ほど、素早い計算処理・論理組み立て能力が形成されるのでは、と考察している。

学習環境(逆符号)の一見矛盾 学習環境因子は学業時間にマイナスの因子負荷が抽出され、標準化係数はプラス。つまり「学習時間が少ないほど正答率が高い」という一見矛盾した結果。著者は、体を動かすことや外遊びに力を入れている児童が、学業の時間を運動にあてているとも考えられる、と読み解いた。以上から小学生では家庭環境や学習環境よりも体を動かす活動が学力を伸ばすとし、放課後のグラウンド開放や地域の運動交流会を提案する。

中学生:家庭環境が主役、体力は交互作用で効く

中学生では家庭環境が1%有意。さらに瞬発力×家庭環境の交互作用が5%有意で、家庭環境が平均以上の都道府県では瞬発力が高い方が正答率も高くなる。体力要因は、家庭環境が整った上で学力に良い効果をもたらすのではないか、と著者は考えた。中学生になると学習量が増え、家庭の環境によっては家庭内でこなしきれず差が出ている可能性を指摘している。

家庭環境に頼らず学力を上げている地域

中学生の国語・数学で同率4位の徳島県は、家庭環境の因子得点が平均以下・体力因子もすべて平均以下だが、行政支援の得点はトップ10に入る。徳島県は「学力向上フォーラム」など学校・家庭・地域が連携した取り組みを行っており、こうした取り組みが家庭環境因子を超える影響力を持つのではないか、と考察した。

まとめ

本研究は、従来の研究が用いた体力テストの総合得点ではなく、個別種目から抽出した体力因子で学力への影響を分析した点に価値がある。小学生では持久力の強化が知識的国語力に、スピード力の強化が算数につながる可能性を示し、中学生では家庭環境の影響が大きいながらも、家庭環境と瞬発力が合わさることで基礎学力の向上が見込まれることに言及した。以上から、小中学生の運動意欲の向上・運動の動機付けを提案できたと結論づけている。

この研究の限界(原論文 5.2) ①分析は都道府県単位であり、必ずしも個人レベルで同じ結果が得られるとは限らない(生態学的誤謬に注意)。②基礎的な読解力を測る「リーディングスキルテスト」との比較検討が今後の課題。③今回の結果が単年の傾向かを確かめるため、継続的な分析が必要。
このページから学べること 学力・体力の生データが手元に無くても、報告値を正しく「可視化」することと、手元のデータで「再計算」できる部分を切り分けることは両立する。因子分析→重回帰→交互作用→媒介という、仮説を検証しながら分析を深める流れそのものが学びになる。

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

このページの図5・図6(離婚件数の外れ値・教員1人あたり児童生徒数)は、以下から実際に再現できます。

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

※ 図1〜図4(因子分析・重回帰・交互作用・媒介分析)は、原論文が使った学力調査・体力テストのデータが当プロジェクトのSSDSEに収録されていないため、原論文の報告値を可視化したもの(再計算ではない)です。図5・図6は実データでの再計算ですが、原論文の因子得点そのものではなく入力変数の分布・外れ値の確認です。新しい統計量の捏造は一切行っていません。

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

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

誤解1:「持久力を鍛えれば国語の点が上がる」
重回帰・媒介分析が示すのは都道府県単位の関連であって、個人が持久力を鍛えれば学力が上がるという因果ではない。ましてや都道府県の集計値から個人の因果を読むのは生態学的誤謬。著者自身も個人レベルの検証を今後の課題としている。
誤解2:「このページの数値はすべて自分で計算した値」
図1〜図4の因子負荷量・標準化係数・p値・間接効果は原論文の報告値の転記(再計算ではない)。学力調査・体力テストのデータがSSDSEに無いため。実データで計算したのは図5・図6のみ。図注・実行結果ラベルに明記している。
誤解3:「学習環境の係数がプラス=勉強すると点が下がる」
学習環境因子は「学習時間」にマイナス負荷で構成され、符号の向きが直感と逆になっている。因子の符号と構成変数を確認せずに係数の符号だけで解釈すると誤る。因子分析の結果は必ず負荷量の中身とセットで読む。
誤解4:「外れ値(沖縄県)は消すべき」
外れ値は機械的に除外するものではない。原論文は含めた場合と除いた場合の両方で因子分析し、解釈が変わらないことを確認して沖縄県を残した。図5で外れ値を「見つける」ことと「どう扱うか」は別問題。

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

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

因子分析
多数の観測変数の背後にある少数の潜在因子を取り出す手法。本研究は主成分法・プロマックス回転で学力・体力・体力以外の因子を抽出した。
重回帰分析
複数の説明変数から目的変数を予測・説明する回帰。本研究は強制投入法で全変数を同時に投入した。
標準化係数(β)
各変数を標準化してから求めた回帰係数。単位の異なる変数どうしで影響の大きさを比較できる。
決定係数(R²) / 自由度調整済R²
モデルが目的変数の分散をどれだけ説明できたか。交互作用の追加で自由度調整済R²が上がるかが判断材料になる。
p値
「係数が0」という帰無仮説のもとで観測値以上に極端な結果が出る確率。**は1%、*は5%、+は10%有意を表す。
交互作用
2つの説明変数の掛け算の項。片方の変数の効き方がもう片方の水準で変わることを表す。本研究は瞬発力×家庭環境。
媒介分析
説明変数Xが媒介変数Mを経て結果Yに至る間接効果を調べる分析。本研究は家庭環境→体力因子→学力の間接効果をブートストラップで検定した。
外れ値
他の観測値から大きく離れた値。本研究では離婚件数・生活保護で沖縄県が外れ値(図5で実再現)。
相関係数
2つの数量が一緒に増減する強さと向きを−1〜+1で表す指標。

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

この研究で使われている手法を、手を動かす順に説明する。

全体像
種目別・設問別の点数を因子分析で少数の因子にまとめ → 重回帰で学力への影響を推定 → 妥当でない箇所で交互作用・媒介分析を検討。仮説を立て検証しながら分析を深める流れが見どころ。
🧩 因子分析(主成分法・プロマックス回転)
何をする
多数の変数の背後の潜在因子を取り出す。本研究は体力を持久力・柔軟性と筋力・スピード力・瞬発力の4因子に分解。
読み方
各変数の因子負荷量で因子を命名し、累積寄与率で「何割を説明できたか」をみる(体力:小87%・中81%)。
注意
回転法で結果が変わる。プロマックス(斜交)回転は因子間の相関を許す。因子の符号は構成変数とセットで解釈する(学習環境の逆符号に注意)。
📈 重回帰分析標準化係数
何をする
体力因子+体力以外の因子で学力因子を説明する。強制投入法で全変数を同時に入れる。
読み方
標準化係数βの絶対値で影響の大きさを比較(持久力→知識的国語力 0.851**が最大)。R²で当てはまりをみる。
注意
N=47と小さく説明変数が多いと過学習・多重共線性のリスク。単独投入で有意でも交互作用で像が変わる(中学生)。
🔀 交互作用と媒介分析
何をする
交互作用=掛け算の項で「効き方の変化」を、媒介分析=間接効果で「経由する経路」を調べる。
読み方
交互作用が有意(瞬発力×家庭環境 5%)なら効果は条件依存。媒介の間接効果が有意(p=0.013/0.036)なら経路の存在を示唆。
注意
いずれも因果の証明ではない。ブートストラップの間接効果は正規性を仮定した近似で、都道府県単位の集計値である点にも留意。

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

この研究の「都道府県単位で関連は見えたが個人・因果は不明」という結論は、次の研究の出発点になる。

発展1:個人レベルのデータで検証する
結果X
都道府県集計で持久力→知識的国語力、スピード力→算数の関連が見えた。
新仮説Y
同じ関係は個人でも成り立つのか(生態学的誤謬を避ける)。
課題Z
個人単位の体力・学力データを用いたマルチレベル分析で、地域差と個人差を分離して検証する。
発展2:読解力テストとの比較・縦断分析
結果X
持久力が知識的国語力に効くという単年の結果。
新仮説Y
基礎的読解力(リーディングスキルテスト)でも同じ関係が出るか。単年の偶然ではないか。
課題Z
複数年の縦断データ・読解力指標を組み込み、関係の頑健性と時間的先行を確かめる(原論文が明示した課題)。

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

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

★☆☆☆☆ 難易度1
別の年で外れ値をみる
読み込みの d = df[df['年度'] == 2021] を 2019 や 2022 に変えて、離婚件数の外れ値(沖縄県)が年によらず現れるか確かめよう。
★★☆☆☆ 難易度2
婚姻件数でも分布をみる
離婚件数を「婚姻件数」に差し替え、人口千あたりに規格化して分布を描こう。婚姻と離婚で外れ値の県は同じか?
★★★☆☆ 難易度3
離婚率と教員配置を相関させる
図5の離婚率と図6の教員1人あたり児童数の相関係数scipy.stats.pearsonr で計算しよう。家庭環境と学習環境の代理変数は関連するか?
★★★★☆ 難易度4
教育費と教員配置で散布図を作る
SSDSE-Bの「教育費(二人以上の世帯)」を取り出し、教員1人あたり児童数との散布図を描いて、家庭の教育支出と学校の手厚さの関係をみよう。
★★★★★ 難易度5
複数の社会経済変数で因子分析を試す
factor_analyzer を入れ、SSDSE-Bの離婚件数・婚姻件数・教育費・教員配置など複数変数で FactorAnalyzer を回し、原論文のように「家庭環境/学習環境」に相当する因子が現れるか試そう。
ヒント:pip install factor_analyzer。学力・体力データは無いので、あくまで「体力以外の因子」の再現体験になる。

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

「多数の指標を少数の因子にまとめ、影響を回帰で推定する」発想は、現場でも広く使われている。

🏫
教育政策・EBPM
学力・体力・家庭環境の多数の指標を因子に集約し、どの支援が効きそうかの優先順位づけに使う。地域単位の分析は個人へ短絡しないよう注意。
🧠
心理・マーケティング調査
アンケートの多数の質問項目を因子分析で「満足度」「信頼」などの潜在因子にまとめ、行動との関係を回帰で分析する定番手法。
🏥
健康・スポーツ科学
体力測定の多種目を因子に集約し、健康アウトカムとの関連を検討。本研究の「持久力と認知機能」は運動と脳の研究と接続する。

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

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

Q. なぜ体力の「総合得点」ではなく因子に分けたの?
A. 体力には持久力・筋力・スピード力など質の異なる力があり、総合得点にまとめると「どの力が学力に効くか」が見えなくなるからです。因子分析で4つの体力因子に分けたことで、持久力は国語、スピード力は算数、と対応が見えました。
Q. このページの図は原論文と同じ数値ですか?
A. 図1〜図4は原論文の報告値の転記(再計算ではない)です。学力調査・体力テストのデータが当プロジェクトのSSDSEに無いためです。実データで計算したのは図5(離婚件数の外れ値)と図6(教員1人あたり児童生徒数)で、これはSSDSE-Bにある変数です。図注と実行結果ラベルに明記しています。
Q. 「持久力→知識的国語力」は、持久力を鍛えれば国語ができるということ?
A. いいえ。これは都道府県単位の関連であって、個人の因果ではありません。集計値から個人を語るのは生態学的誤謬です。著者も個人レベルの検証を今後の課題としています。
Q. 中学生で体力が効かないのに、なぜ交互作用を入れたの?
A. 単独では家庭環境だけが有意でしたが、著者は「体力は家庭環境が整った上でなら効くのでは」と仮説を立て、瞬発力×家庭環境の掛け算の項を追加しました。すると交互作用が5%有意になり、自由度調整済R²も上がりました。仮説を立てて検証を深める好例です。

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

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

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

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

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