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

増減数から見るうつ病の要因

⏱️ 推定読了時間: 約25分
2022年度(令和4年度)統計データ分析コンペティション | 塚田 梢太(愛知工業大学名電高等学校) | 患者調査(厚生労働省)・SSDSE-A/B/C/D ほか(都道府県別)/再現はSSDSE-B-2026 | 相関分析・無相関の検定(p値)・重回帰分析・VIF(多重共線性)
🔬 VIF/多重共線性🔬 相関分析🔬 重回帰🏷 メンタルヘルス🏷 医療・健康🏷 食・家計消費
🔬 手法タグ / 🏷 応用タグ(クリックで同タグの論文をネットワーク検索)
🔬 再現カルテ — 原論文のデータが手に入らないため、代替データで再現

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

原論文が使ったデータ患者調査・SSDSE-A・SSDSE-B・SSDSE-C・SSDSE-D・地域別最低賃金改定状況・統計でみる都道府県の姿 2020・面積調
分析単位:都道府県
中核手法:相関分析・重回帰分析
この教材が使うデータ
原論文(PDF)増減数から見るうつ病の要因
審査員奨励賞/塚田 梢太(愛知工業大学名電高等学校)
✅ この教材でできること
  • 原論文の中核手法(相関分析)を実データで実行できる
  • 分析に使うデータは同梱済みで、ブラウザ上でそのまま読み込める
  • 数値・図を最後まで再計算できる(VIF(多重共線性の確認)・相関分析)
⚠️ この教材ではできないこと(原論文との違い)
  • 原論文と同じデータでの再現はできない:論文=SSDSE-A/D → 教材=SSDSE-B
📄 原論文との違いを、もっと詳しく
📄 原論文:SSDSE-A/D の生活時間・行動データで、うつ病の増減と関連する生活要因を分析。
📘 本教材:step 1〜4 は SSDSE-B での代理分析。step 5 で原論文と同じ SSDSE-D の生活時間データ(睡眠)を使った分析を再現
⚠️ 注意:うつ病患者数(患者調査)は SSDSE 未収録のため保健医療費割合を代理としている。
🚀 原論文と同じ粒度で挑戦したい人へ

原論文と同じ粒度のデータは、この教材にも同梱しています。これを読み込めば、原論文と同じ細かさで分析をやり直せます(下の「🐍 ブラウザで動かす」でコードを書き換えて試せます)。ただし原論文が使った項目がすべて収録されているとは限りません。足りない項目は、上の「できないこと」に書いた出典から取ってくる必要があります。

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

📝 3行で分かる要約

目次

  1. 研究のテーマと目的
  2. 使用データと「うつ病患者増減数」の作り方
  3. 分析方法:相関分析→無相関の検定→VIF→重回帰
  4. 図1:仮説指標の相関係数(報告値の可視化)
  5. 図2:支出の重回帰の偏回帰係数(報告値の可視化)
  6. 主要な発見(原論文の報告値)
  7. 再現コード:転入者数をSSDSE-Bで構築(実再現)
  8. 図3:転入者数の都道府県ランキング(実再現)
  9. 図4:支出項目間の相関ヒートマップ(実再現)
  10. 結果の解釈と考察
  11. SSDSE-D 生活時間データでの再現
  12. まとめと今後の課題
  13. データ・コードのDL
  14. ⚠️ よくある誤解
  15. 📖 用語集
  16. 📐 手法ガイド
  17. 🚀 発展の可能性
  18. 🎯 自分でやってみよう
  19. 🤔 Q&A
  20. 🐍 ブラウザで動かす

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

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

このページの転入者数ランキング(図3)と支出項目間の相関ヒートマップ(図4)は、以下の手順で自分で再現できます。コードの編集は不要です。(うつ病患者増減数は患者調査由来でSSDSE-Bに無いため、うつ病に関わる図1・図2は原論文の報告値を可視化します。)

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

いまや若者だけでなく中高年でも、だれもがかかりうるのがうつ病であり、我が国の患者数は増加の一途をたどっている。著者は「この状況に終止符を打つべく、うつ病の要因を解明し社会に提言する」ことを目的に掲げた。うつ病の原因は「遺伝」「ストレス」「脳機能」の3つに大別されるが、遺伝・脳機能は専門知識が必要で解明が難しいため、本研究は「ストレス」に着目する。

分析期間は2014年から2017年に限定した。これは新型コロナウイルスという特殊な影響を除くためで、著者は「コロナ終息後のうつ病対策にも役立つ」と考えた。うつ病患者数を減らすことは、WHOが指摘する自殺(精神障害のある人が9割)の抑制や「社会活動の活発化」にもつながる、という問題意識が背景にある。

2014→2017
うつ病患者増減数の対象期間(コロナ前)
0.84
男女別うつ病患者増減数の相関(報告値・図3)
47
支出の重回帰の観測数(都道府県)
0.23
支出の重回帰の補正R²(報告値・低いと明記)
研究の問い 「患者数」そのものではなく、2017年と2014年の差=うつ病患者増減数を都道府県ごとに取り、うつ病が増えやすい地域にはどんな特徴があるのかを明らかにする。男女別の増減数に強い相関(r=0.84)があったため、男女に分けず都道府県単位で要因を探ることにした。
分析のキモ:6観点で仮説を立てる 著者は特性要因図を用い、うつ病の要因を「社会」「生活」「娯楽」「環境」「食生活」「家計」の6観点から洗い出した。たとえば「単独世帯=1人の寂しさで増える」「睡眠・休養=しっかり休むと減る」「転入者数=新しい環境になじめず増える」など、1つ1つの指標に増減の向きの仮説を立ててからデータを集めている。

高校生の部 患者調査・SSDSE-A/B/C/D 相関分析・無相関の検定 多重共線性・VIF 重回帰分析

使用データと「うつ病患者増減数」の作り方

目的変数はうつ病患者増減数で、厚生労働省「患者調査」の「精神及び行動の障害(気分[感情]障害(躁うつ病を含む)(再掲))」を用い、2017年の値 − 2014年の値で都道府県ごとに算出した。説明変数は6観点の仮説指標で、SSDSE-A/B/C/D、地域別最低賃金改定状況(厚生労働省)、統計でみる都道府県の姿2020、面積調(国土地理院)など複数の出典を組み合わせている。年度の異なるデータを組み合わせている点は注意が必要である。

表1 主なデータと出典(原論文 3.2 より抜粋)

観点変数(例)出典
うつ病精神及び行動の障害(気分[感情]障害)(人)患者調査(厚生労働省, 2014・2017)
社会就業者数・完全失業者数・最低賃金SSDSE-A / 地域別最低賃金改定状況
生活単独世帯・睡眠・仕事・学業・休養(生活時間)SSDSE-A / SSDSE-D
娯楽映画鑑賞率・音楽鑑賞率・読書・ゲームSSDSE-D
環境転入者数・降水日数・森林面積割合・日照時間・人口密度SSDSE-B / 面積調 ほか
食生活米・小麦・果実・外食SSDSE-C / SSDSE-D
家計消費支出・食料費・交通通信費・教育費・教養娯楽費 ほかSSDSE-B
うつ病患者増減数の定義(著者の指標) うつ病患者増減数 = 2017年[精神及び行動の障害(気分[感情]障害)] − 2014年[同]
→ 患者数の「水準」ではなく「変化量」を目的変数にすることで、地域ごとの増えやすさを見る。
再現可能性の整理(このページの図の作り方)
  • 報告値の可視化(再計算ではない):うつ病患者増減数は患者調査由来でSSDSEに無いため、うつ病との相関回帰は再計算できない。よって図1(仮説指標の相関係数=表3)と図2(支出の重回帰の偏回帰係数=表11)は原論文の報告値を転記して可視化する。
  • 実再現できる部分:説明変数のうち転入者数・家計の支出項目(消費支出・食料費・家具家事用品費・被服及び履物費・交通通信費・教育費・教養娯楽費)はSSDSE-Bにも収録がある。原論文と同じ考え方でこれらを構築し(図3)、支出項目どうしの多重共線性を実データで確かめる(図4=原論文 表9・表10 に対応)。原論文も都道府県粒度(観測数47)で粒度は一致するが、年次が異なる(原論文は2017年前後、本再現はSSDSE-B 2023年)。
  • 新しい数値の捏造はしない:睡眠・映画鑑賞率・音楽鑑賞率・外食・読書は社会生活基本調査(SSDSE-D系)、森林面積割合・最低賃金・完全失業率はSSDSE-B-2026に無いため実再現には使わない。報告値と再計算値はラベルで分離する。

分析方法:相関分析 → 無相関の検定 → VIF → 重回帰

分析の流れ
6観点の
仮説指標
相関分析
+無相関の検定
(p<0.05で選抜)
VIF
多重共線性の
強い変数を除去
重回帰
(要因の特定)
支出
再度重回帰

① 相関分析と無相関の検定

仮説を立てた各指標とうつ病患者増減数の相関係数を求め、さらに無相関の検定でp値を算出した。著者は「r が −1≦r<−0.2 または 0.2<r≦1 の範囲内、かつ有意水準5%で有意」なものを「うつ病の要因と考えられる指標」と定義した。

② VIFで多重共線性を除去

選ばれた指標で重回帰する前に、VIFを計算。VIF>10 を多重共線性ありと判断し、映画鑑賞率・音楽鑑賞率・趣味としての読書のうちVIFの高い音楽鑑賞率・読書を除外した。外れ値(東京・神奈川・青森・秋田・埼玉・大阪・千葉・愛知)も箱ひげ図で特定して除いた。

③ 「支出」という共通性を見つけて再分析

仮説と反して正の相関を示した「映画鑑賞」「音楽鑑賞」「読書」「外食」に、著者は「出費」という共通性を見出した。そこで家計の支出項目(消費支出ほか)を新たに使い、支出とうつ病患者増減数の重回帰分析を追加で行った。

報告された当てはまり 支出の重回帰は 重相関R=0.590537、補正R²=0.23184、有意F=0.013204、観測数47(原論文 表11)。著者は「予測ではなく原因解明が目的なので、補正R²が低いことを除けば有意Fと有意な係数は解釈できる」とし、同時に補正R²の低さを研究の限界として明記している。
1
図1:仮説指標の相関係数(報告値の可視化)

6観点の仮説指標それぞれと、うつ病患者増減数との相関係数が原論文 表3 にまとめられている。この図はその報告値をそのまま可視化したものである(うつ病患者増減数=患者調査はSSDSE-Bに無いため再計算できない)。無相関の検定で有意(p<0.05)だった指標を赤で示す。

やってみよう原論文 表3 の相関係数(報告値)を転記する
  • ① このコードの目的:原論文 表3 の24指標の相関係数と、無相関の検定での有意/非有意をそのまま辞書に転記し、有意な指標を書き出す。再計算ではなく報告値の転記。
  • ② 前後のつながり:ここで有意な7指標(=「うつ病の要因と考えられる指標」)を掴んでから、後半の重回帰(図2)と考察につなげる。
▼ 実行結果(原論文の報告値)
=== [1] 仮説指標とうつ病患者増減数の相関係数(原論文 表3 の報告値)===
目的変数「うつ病患者増減数」は患者調査由来で SSDSE に無く、再計算不可(報告値の転記)
無相関の検定で有意(p<0.05)だった指標は 7 個:
  睡眠           r=-0.309(負の相関・有意)
  映画鑑賞率        r=+0.397(正の相関・有意)
  音楽鑑賞率        r=+0.330(正の相関・有意)
  趣味としての読書     r=+0.382(正の相関・有意)
  転入者数         r=+0.437(正の相関・有意)
  森林面積割合       r=-0.359(負の相関・有意)
  外食           r=+0.306(正の相関・有意)
最大の正の相関: 転入者数 r=+0.437 / 最大の負の相関: 森林面積割合 r=-0.359
※ 男女別うつ病患者増減数どうしの相関は r=0.84(原論文 図3 の報告値)
  • ④ 実行結果の読み取り:有意(p<0.05)だったのは正の相関で映画鑑賞率・音楽鑑賞率・趣味としての読書・転入者数・外食、負の相関で睡眠・森林面積割合の計7指標。最大の正の相関は転入者数(r=+0.437)、最大の負は森林面積割合(r=−0.359)。楽しいはずの娯楽が「正の相関=うつ病増加側」に来た点に、著者は「出費」という共通性を見出す。すべて原論文の報告値である。
仮説指標とうつ病患者増減数の相関係数(報告値の可視化)
図1:仮説指標とうつ病患者増減数の相関係数。報告値の可視化(再計算ではない)(原論文 表3)。赤=無相関の検定で有意(p<0.05)。点線は著者が要因判定に用いた |r|=0.2 の基準線。
📊 この図の読み方
右(正・大)
転入者数・映画鑑賞率・趣味としての読書・音楽鑑賞率・外食。値が大きい地域ほどうつ病が増える傾向(報告値)。
左(負・大)
森林面積割合・睡眠。値が大きい地域ほどうつ病が増えにくい傾向(報告値)。
位置づけ
報告値の可視化。うつ病患者増減数はSSDSE-Bに無いため、原論文の相関係数を転記した(本ページで計算し直したものではない)。
2
図2:支出の重回帰の偏回帰係数(報告値の可視化)

「出費」という共通性に着目した著者は、家計の支出7項目を説明変数に、うつ病患者増減数を目的変数にした重回帰分析を行った。その偏回帰係数とP値が原論文 表11 にまとめられている。この図はその報告値をそのまま可視化したものである(目的変数がSSDSE-Bに無いため再計算不可)。

やってみよう原論文 表11 の偏回帰係数(報告値)を転記する
  • ① このコードの目的:原論文 表11 の支出7項目の係数・P値を転記し、有意(P<0.05)かつ正負で色分けした横棒にする。再計算ではなく報告値の転記。
  • ② 前後のつながり:この係数の向き(正=増加要因/負=減少要因)が、最終結論(増加=交通通信費・教養娯楽費、減少=消費支出)の根拠になる。
▼ 実行結果(原論文の報告値)
=== [2] 支出の重回帰の偏回帰係数(原論文 表11 の報告値)===
切片=-12.197 / 重相関R=0.590537 / 補正R²=0.23184 / 有意F=0.013204 / 観測数=47
説明変数                      係数        P値  判定
消費支出               -0.000580  0.015377  有意・減少要因
食料費                 0.000753  0.259842  n.s.
家具・家事用品費            0.000270  0.907371  n.s.
被服及び履物費            -0.001450  0.571215  n.s.
交通・通信費              0.001219  0.020736  有意・増加要因
教育費                -0.000058  0.934852  n.s.
教養娯楽費               0.003347  0.006597  有意・増加要因
→ 有意(P<0.05): 消費支出=減少要因 / 交通・通信費・教養娯楽費=増加要因(原論文の判断)
※ もう一つの重回帰では転入者数が有意(係数0.000266・P=0.004488、原論文 表参照)
※ 著者は「補正R²が低い」ことを認めつつ、原因解明が目的として有意Fと係数を解釈
  • ④ 実行結果の読み取り:有意(P<0.05)だったのは消費支出(−0.00058, P=0.015)=減少要因交通・通信費(+0.001219, P=0.021)教養娯楽費(+0.003347, P=0.007)=増加要因の3つ。切片−12.197、補正R²=0.232。別の重回帰では転入者数(係数0.000266・P=0.004488)も有意だった。すべて原論文の報告値で、著者は補正R²の低さを限界として認めている。
支出の重回帰の偏回帰係数(報告値の可視化)
図2:支出に関する重回帰の偏回帰係数(目的変数=うつ病患者増減数)。報告値の可視化(再計算ではない)(原論文 表11)。緑=有意な増加要因、赤=有意な減少要因、灰=有意でない(n.s.)。
📊 この図の読み方
緑の棒(有意な正)
交通・通信費、教養娯楽費。支出が多い地域ほどうつ病が増える傾向(増加要因)。
赤い棒(有意な負)
消費支出。全体の支出が多い地域ほどうつ病が増えにくい傾向(減少要因)。
灰の棒(n.s.)
食料費・家具家事用品費・被服及び履物費・教育費は有意でない。係数の符号だけで解釈しない。
注意
報告値の可視化。係数の大小は変数のスケール(金額)にも依存する。本ページで計算し直したものではない。
3
主要な発見(原論文の報告値)

以下の相関・係数の向きと数値はすべて原論文の報告値である。相関分析(表3・表4)と2つの重回帰(転入者数の回帰・支出の回帰)から、著者は次のように整理した。

相関分析でわかったこと(表3・表4)

指標グループうつ病増減数との関係解釈(著者)
娯楽・環境(転入者数・映画・音楽・読書・外食)有意な正の相関「出費」という共通性がある=お金を使うことが増加側に効く
生活・環境(睡眠・森林面積割合)有意な負の相関しっかり休む・自然が多い地域はうつ病が増えにくい
米・小麦・降水日数・日照時間 などほぼ無相関今回の増減数とは関連が弱い

重回帰でわかったこと(報告値)

最初の重回帰(要因指標+外れ値除外, 観測数39)では転入者数が有意(係数0.000266, P=0.004488)で、うつ病の要因と判断された。支出の重回帰(観測数47)では、消費支出が減少要因(−0.00058, P=0.015)、交通・通信費(+0.001219, P=0.021)と教養娯楽費(+0.003347, P=0.007)が増加要因として有意だった。

「支出」という新しい着眼(原論文 4.2・5.3) 映画・音楽・読書・外食が「楽しいはずなのに正の相関」を示したことから、著者は「お金を使ってしまうこと」=支出そのものがうつ病増加に効いているのではという新仮説を立てた。この着眼が支出の重回帰につながり、交通・通信費や教養娯楽費という「自由に使えるお金を圧迫する出費」が増加要因、という結論を導いた。すべて原論文の報告値。
4
再現コード:転入者数をSSDSE-Bで構築(実再現)

原論文の目的変数(うつ病患者増減数)はSSDSE-Bに無い。しかし説明変数の一部(転入者数・家計の支出項目)はSSDSE-Bにも収録されている。まずは最初の重回帰で有意だった「転入者数」を、SSDSE-Bから構築してみる。

やってみようSSDSE-B を読み込み、原論文の説明変数「転入者数」を構築する【実再現】
  • ① このコードの目的:SSDSE-B-2026 を cp932・ラベル行 skiprows=[1] で読み込み、先頭列 SSDSE-B-2026(年度)が2023の47都道府県を残す。原論文の最初の重回帰で有意だった転入者数(A5101)を取り出し、大都市圏の外れ値を確認する。
  • ② 前後のつながり:ここで作る転入者数が、後の図3(転入者数ランキング)の材料になる。うつ病患者増減数はSSDSE-Bに無いので、ここで再現するのは「説明変数の作り方」と「原論文がなぜ大都市圏を外れ値として除いたか」である。
📝 コード
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
df = pd.read_csv(DATA_B, encoding='cp932', header=0, skiprows=[1])
df['SSDSE-B-2026'] = pd.to_numeric(df['SSDSE-B-2026'], errors='coerce')
d = df[df['SSDSE-B-2026'] == 2023].copy().reset_index(drop=True)

for c in ['A1101', 'A5101', 'L3221', 'L322101', 'L322104',
          'L322105', 'L322107', 'L322108', 'L322109']:
    d[c] = pd.to_numeric(d[c], errors='coerce')

d['転入者数'] = d['A5101']                     # A5101 転入者数(日本人移動者・人)
d['転入率']   = d['A5101'] / d['A1101'] * 1000  # 参考: 人口千対

print('=== [3] SSDSE-B から転入者数を構築(実再現・2023年・都道府県)===')
print(f'対象: {len(d)}都道府県 / 原論文の最初の重回帰で有意だった「転入者数」を SSDSE-B で構築')
dr = d.sort_values('転入者数', ascending=False)
# 原論文 表1 が転入者数の外れ値として除外した6都府県
outliers = ['東京都', '神奈川県', '埼玉県', '大阪府', '千葉県', '愛知県']
print('転入者数が多い上位6都府県(原論文が外れ値として除外した地域とほぼ一致):')
for _, r in dr.head(6).iterrows():
    flag = ' ← 原論文で外れ値除外' if r['Prefecture'] in outliers else ''
    print(f"  {r['Prefecture']:<5} {int(r['転入者数']):>8,}{flag}")
print('転入者数が少ない下位5県:')
for _, r in dr.tail(5).iterrows():
    print(f"  {r['Prefecture']:<5} {int(r['転入者数']):>8,} 人")
print('→ 転入者数は大都市圏が突出。原論文もこれらを外れ値として除外して回帰した。')
▼ 実行結果
=== [3] SSDSE-B から転入者数を構築(実再現・2023年・都道府県)===
対象: 47都道府県 / 原論文の最初の重回帰で有意だった「転入者数」を SSDSE-B で構築
転入者数が多い上位6都府県(原論文が外れ値として除外した地域とほぼ一致):
  東京都    406,749 人 ← 原論文で外れ値除外
  神奈川県   211,257 人 ← 原論文で外れ値除外
  埼玉県    160,736 人 ← 原論文で外れ値除外
  大阪府    159,522 人 ← 原論文で外れ値除外
  千葉県    140,104 人 ← 原論文で外れ値除外
  愛知県    104,565 人 ← 原論文で外れ値除外
転入者数が少ない下位5県:
  島根県      9,318 人
  徳島県      8,397 人
  高知県      8,278 人
  福井県      8,135 人
  鳥取県      7,578 人
→ 転入者数は大都市圏が突出。原論文もこれらを外れ値として除外して回帰した。
  • ④ 実行結果の読み取り:転入者数は東京都(約40.7万)・神奈川・埼玉・大阪・千葉・愛知が突出し、原論文 表1 が転入者数の外れ値として除外した6都府県と一致する。逆に鳥取・福井・高知などは1万人未満。原論文が「大都市圏を外れ値として除いてから回帰した」理由が、実データで腑に落ちる。ただし投票率ならぬうつ病患者増減数はSSDSE-Bに無いため、ここで再現できるのは説明変数の側だけである。
5
図3:転入者数の都道府県ランキング(実再現)

原論文の最初の重回帰で有意だった変数は転入者数だった。その転入者数を、SSDSE-Bの「転入者数(日本人移動者)」から都道府県別にランキングにする。これは実データからの再計算(実再現)で、原論文と同じ都道府県粒度だが、年次が2023年である点に注意(地図の代わりにランキングで地域差を表現)。

都道府県別 転入者数ランキング(実再現)
図3:都道府県別 転入者数(日本人移動者)ランキング(SSDSE-B 2023年、N=47)。実再現/都道府県粒度(原論文は2017年前後)。赤=原論文 表1 が外れ値として除外した大都市圏、その他は地域ブロック色。
📊 この図の読み方
上(多い)
東京・神奈川・埼玉・大阪・千葉・愛知。転入者数が突出する大都市圏で、原論文はこれらを外れ値として除いてから回帰した。
下(少ない)
鳥取・福井・高知・徳島・島根。人口の少ない県が並ぶ。原論文では転入者数が増加要因(係数0.000266・有意)と報告された。
位置づけ
実再現(都道府県粒度)。うつ病患者増減数はSSDSE-Bに無いため、ここで再現したのは「転入者数という説明変数の作り方と、外れ値としての大都市圏」である。
6
図4:支出項目間の相関ヒートマップ(実再現)

原論文の統計的な見どころは、支出の重回帰の前に支出項目どうしの相関(表9)とVIF(表10)で多重共線性を確認した点にある。SSDSE-Bで構築した支出7項目の相関を計算し、その多重共線性を自分の手で確かめる。

やってみよう支出7項目間の相関を計算し、多重共線性を確かめる【実再現】
  • ① このコードの目的:SSDSE-Bの家計支出7項目(消費支出・食料費・家具家事用品費・被服及び履物費・交通通信費・教育費・教養娯楽費)の相関行列を実際に計算し、絶対値が最大の相関ペアを取り出す。原論文 表9(支出に関しての相関分析)・表10(VIF)を、SSDSE-Bで再現・実演する。
  • ② 前後のつながり:ここで支出項目どうしがどれだけ相関し合うかを実感してから、原論文が「なぜ支出項目間の多重共線性(VIF)を確かめたのか」を理解する。うつ病患者増減数は無いので、再現するのは表9のうち「支出項目どうしの相関」部分である。
📝 コード
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
exp_cols = {
    'L3221':   '消費支出',
    'L322101': '食料費',
    'L322104': '家具・家事用品費',
    'L322105': '被服及び履物費',
    'L322107': '交通・通信費',
    'L322108': '教育費',
    'L322109': '教養娯楽費',
}
exp = d[list(exp_cols.keys())].rename(columns=exp_cols)
corr = exp.corr()
print('=== [4] 支出7項目間の相関ヒートマップ(実再現・原論文 表9 に対応)===')
print('うつ病患者増減数(患者調査)は SSDSE に無いため、原論文 表9 のうち')
print('「支出項目どうしの相関」だけを SSDSE-B 2023年で実計算する(多重共線性の実演)。')
print(corr.round(2).to_string())
pairs = []
labels = list(exp_cols.values())
for i in range(len(labels)):
    for j in range(i + 1, len(labels)):
        pairs.append((labels[i], labels[j], corr.iloc[i, j]))
pairs.sort(key=lambda t: abs(t[2]), reverse=True)
a, b, r = pairs[0]
print(f'最も強い相関ペア: {a} × {b} → r = {r:.3f}')
▼ 実行結果
=== [4] 支出7項目間の相関ヒートマップ(実再現・原論文 表9 に対応)===
うつ病患者増減数(患者調査)は SSDSE に無いため、原論文 表9 のうち
「支出項目どうしの相関」だけを SSDSE-B 2023年で実計算する(多重共線性の実演)。
          消費支出   食料費  家具・家事用品費  被服及び履物費  交通・通信費   教育費  教養娯楽費
消費支出      1.00  0.68      0.55     0.68    0.57  0.58   0.80
食料費       0.68  1.00      0.48     0.61   -0.03  0.73   0.76
家具・家事用品費  0.55  0.48      1.00     0.67    0.22  0.41   0.58
被服及び履物費   0.68  0.61      0.67     1.00    0.09  0.63   0.76
交通・通信費    0.57 -0.03      0.22     0.09    1.00 -0.15   0.15
教育費       0.58  0.73      0.41     0.63   -0.15  1.00   0.75
教養娯楽費     0.80  0.76      0.58     0.76    0.15  0.75   1.00
最も強い相関ペア: 消費支出 × 教養娯楽費 → r = 0.801
→ 支出項目どうしは正に相関し合う(原論文 表9 と整合)。ただし原論文は表10 の
  VIF がすべて10未満だったため、全項目を残して重回帰を行った。
  • ④ 実行結果の読み取り:消費支出 × 教養娯楽費 の相関が r=0.80と最も強く、支出項目どうしは概ね正に相関し合う(原論文 表9 と整合)。これほど相関する変数を同時に重回帰へ入れると多重共線性で係数が不安定になりうる。原論文は表10 のVIFがすべて10未満だったため全項目を残したが、VIFで多重共線性を必ず確認するという姿勢が、実データで追体験できる。
支出項目間の相関ヒートマップ(実再現)
図4:家計支出7項目間の相関ヒートマップ(SSDSE-B 2023年、N=47)。実再現/都道府県粒度。赤=正・青=負の相関。原論文 表9・表10(支出項目間の相関とVIF=多重共線性の確認)に対応。
📊 この図の読み方
濃い赤(強い正)
消費支出×教養娯楽費(0.80)、教養娯楽費×食料費・被服(0.76)など。支出項目は一緒に大きくなりやすい。
薄い/負
交通・通信費は食料費(−0.03)や教育費(−0.15)とほぼ無相関〜弱い負。支出でも項目により連動しない。
位置づけ
実再現。強い相関ペアを同時に重回帰へ入れると多重共線性が生じうる。原論文がVIFで確認した理由が、この図で体感できる。

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

著者は2つの重回帰の結果から、転入者数・交通・通信費・教養娯楽費がうつ病の増加要因、消費支出が減少要因と結論づけ、それぞれに解釈を与えた(すべて報告値に基づく著者の考察)。

増加要因の解釈

転入者数:新たな土地への移住の不安や、新しい環境になじみにくいこと。交通・通信費:移動という「絶対的に必要な出費」が多いほど自由に使えるお金が減り、生活が苦しくなる。教養娯楽費:趣味にお金をつぎ込みすぎて自由なお金が減り、さらに「楽しさからのむなしさという落差」が精神的ダメージを増幅させる、と著者は考えた。映画・音楽鑑賞が正の相関を示したのもこの支出が原因だと解釈している。

減少要因の解釈

消費支出:物を買うことで購買意欲を満たせる。ただし「支出の中にも増加要因がある」ため、何にお金を使うのかが大切だと著者は強調する。

著者が挙げた研究の限界(原論文 6.2) ①2つの重回帰とも補正R²が低い。②外れ値として除外した地域が関東地方に集中しており、「地域格差」が顕著に現れている。著者はこれらを認めた上で、年齢別・地域別の分析を今後の展望として挙げている。
5
SSDSE-D(社会生活基本調査)の生活時間データで再現する

原論文は SSDSE-A/D の生活時間・行動データを使ってうつ病の要因を探索しました。同じ SSDSE-D-2023 の睡眠時間を使い、健康関連指標との関係を確認します。

やってみよう睡眠時間と保健医療費割合の関係
📝 コード
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
d_raw = pd.read_csv('data/raw/SSDSE-D-2023.csv', encoding='cp932', header=1)
d_raw = d_raw[(d_raw['男女の別'] == '0_総数') & (d_raw['地域コード'] != 'R00000')]
d = d_raw.set_index('都道府県')
dv = lambda c: pd.to_numeric(d[c], errors='coerce')
b_raw = pd.read_csv('data/raw/SSDSE-B-2026.csv', encoding='cp932', header=1)
b = b_raw[(b_raw['年度'] == 2021) & b_raw['地域コード'].str.match(r'^R\d{5}$', na=False)].set_index('都道府県')
bv = lambda c: pd.to_numeric(b[c], errors='coerce')

sleep = dv('睡眠')
health = bv('保健医療費(二人以上の世帯)') / bv('消費支出(二人以上の世帯)') * 100
r, p = stats.pearsonr(sleep, health)
print(f'睡眠時間(分/日)平均 {sleep.mean():.0f} 分  最長: {sleep.idxmax()} {sleep.max():.0f}分 / 最短: {sleep.idxmin()} {sleep.min():.0f}分')
print(f'睡眠時間 × 保健医療費割合: r = {r:+.3f} (p={p:.4f})')
▼ 実行結果
睡眠時間(分/日)平均 477 分 最長: 青森県 488分 / 最短: 東京都 468分 睡眠時間 × 保健医療費割合: r = -0.450 (p=0.0015)
💡 解説
  • 睡眠時間は青森が最長(488分)、東京が最短(468分)。20 分の差は通勤時間の差とほぼ対応します。
  • 睡眠時間と保健医療費割合は r=−0.45 の負の相関——ただし都市度の交絡(都市部は睡眠が短く医療支出が多い)を疑うべき典型例で、原論文が複数の生活時間変数を同時に見た理由です。
💡 Python TIPS SSDSE-D の生活時間は「分/日」単位。行動者率(%)と混同しないよう注意。

まとめと今後の課題

本研究は、都道府県別のうつ病患者増減数(2017−2014)を目的変数に、6観点の仮説指標を相関分析+無相関の検定でスクリーニングし、VIFで多重共線性を確認してから重回帰する、という手順で、転入者数・交通・通信費・教養娯楽費(増加要因)と消費支出(減少要因)を見出した(いずれも報告値)。「楽しいはずの娯楽が正の相関」という違和感から「支出」という共通性を発見し、追加の重回帰につなげた探究の流れが見どころである。

この研究の限界(原論文) ①補正R²が低い(支出の回帰で0.232)ため、モデルの説明力は限定的。②年度の異なるデータを組み合わせている。③相関・回帰であり因果ではない。④外れ値除外が関東に集中し地域格差が残る。著者はこれらを踏まえ、年齢別・地域別の追加分析を今後の課題とした。
この研究から学べること 「患者数」ではなく増減数を目的変数にする発想、6観点で仮説を立てて相関と無相関の検定で候補を絞る手順、そして重回帰の前にVIFで多重共線性を確認する統計的な姿勢。審査会も高校生による着眼と一連の分析手順を評価し、審査員奨励賞に選んだ。

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

このページの転入者数ランキング(図3)と支出項目間の相関ヒートマップ(図4)は、以下から再現できます。

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

※ 図1(仮説指標の相関係数)と図2(支出の重回帰の偏回帰係数)は、目的変数のうつ病患者増減数(患者調査)がSSDSE-B外のため、原論文の報告値を可視化したものです。図3・図4はSSDSE-Bの転入者数・家計支出項目からの実再現ですが、原論文が2017年前後なのに対し本再現は2023年で、うつ病患者増減数が無いため「説明変数の作り方と多重共線性」の再現です。

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

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

誤解1:「転入や支出がうつ病を増やす、という因果が示された」
重回帰の偏回帰係数は関連の向きと強さを示すだけで、因果ではない。転入者数が多い地域は都市部でもあり、他の要因が絡む。著者も相関・回帰にとどめ、解釈は「考える」という言い方で慎重に述べている。
誤解2:「教養娯楽費の係数が一番大きいから、最も重要な要因だ」
偏回帰係数の大きさは変数のスケール(金額の単位)にも依存する。金額の桁が違う項目どうしを係数の大小だけで比べることはできない。有意かどうか(P値)と符号をまず見る。
誤解3:「補正R²が低くても結論は同じ強さで言える」
支出の重回帰の補正R²は0.232で、うつ病増減数のばらつきの大部分は説明できていない。著者自身が限界として明記している。結論は「要因の候補が見えた」程度に読むのが誠実。
誤解4:「このページの図はすべて原論文と同じ数値」
図1・図2は原論文の報告値の可視化(再計算ではない)。図3・図4は実再現だが、うつ病患者増減数がSSDSE-Bに無く、かつ年次が2023年のため、原論文(2017年前後)とは値が異なる。図注に二重に明記している。

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

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

相関係数
2つの数量が一緒に増減する強さと向きを−1〜+1で表す。本研究は仮説指標とうつ病増減数の相関で候補を絞った。
無相関の検定(p値)
「相関が0」という帰無仮説のもとで、観測された相関が偶然どれだけ起きやすいかを表す。p<0.05なら有意な相関と判断する。
有意水準
帰無仮説を棄却する基準。本研究は5%(p<0.05)を用いた。
重回帰分析
1つの目的変数(うつ病増減数)を複数の説明変数で説明する回帰。偏回帰係数で「他を一定にしたときの効き」を見る。
偏回帰係数
他の説明変数を一定にしたとき、その変数が1単位増えると目的変数がどれだけ変わるか。符号が影響の向き。
多重共線性
説明変数どうしが強く相関している状態。係数が不安定になる。支出項目どうしで生じやすい。
VIF(分散拡大係数)
多重共線性の指標。一般に10以上で問題。本研究はVIF>10の変数を重回帰から外した。
SSDSE
教育用標準データセット。本ページの再現はSSDSE-B(都道府県別)を用いる。うつ病患者増減数は患者調査由来でSSDSEには無い。

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

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

全体像
6観点で仮説指標を集める → 相関分析+無相関の検定(p<0.05)で候補を絞る → VIFで多重共線性の強い変数を除く → 重回帰分析。候補を絞り、多重共線性を確かめる作業が統計的な見どころ。
📈 相関分析無相関の検定
何をする
各指標とうつ病増減数の相関係数を計算し、無相関の検定でp値を求めて有意な指標だけを残す。
読み方
|r|が大きく、かつp<0.05なら「関連あり」の候補。本研究は |r|>0.2 かつ p<0.05 を基準にした。
注意
相関は因果ではない。また多重比較(多くの指標を一度に検定)では偶然の有意も出やすいので、候補の絞り込みと解釈は慎重に。
🧮 多重共線性の確認(VIF
何をする
説明変数どうしの相関やVIFを計算し、VIF>10 の変数を重回帰から外す。
なぜ必要
強く相関する変数を同時に入れると係数が不安定になり、符号すら逆転しうるため。支出項目や娯楽指標で起きやすい。
注意
どの変数を残すかで結果が変わる。本研究は映画鑑賞率を残し、相関の高い音楽鑑賞率・読書を外した。判断の根拠を残すことが大切。
📊 重回帰分析
何をする
うつ病増減数を複数の変数で説明する式を作り、各偏回帰係数と当てはまり(補正R²・有意F)を評価する。
読み方
係数の符号が影響の向き、P<0.05で有意。有意Fはモデル全体が意味を持つかの目安。
注意
予測ではなく要因探索。補正R²が低ければ説明力は限定的(本研究0.232)。係数の大小はスケール依存で、因果ではない。

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

この研究の「要因の候補は見えたが補正R²が低く因果は不明」という結論は、次の研究の出発点になる。

発展1:年齢別・地域別に分けて分析する
結果X
全都道府県一括の重回帰で、転入者数・支出項目が要因候補になった(補正R²は低い)。
新仮説Y
要因、特に支出は年代や地域で大きく異なるのではないか(著者自身の展望)。
課題Z
年齢階級別・地方ブロック別にデータを分け、外れ値が関東に集中する「地域格差」を切り分けて分析する。
発展2:因果と交絡に踏み込む
結果X
転入者数・教養娯楽費がうつ病増減数と正の関連(係数の符号)。
新仮説Y
転入や支出そのものではなく、背後の都市度・所得・世帯構成が効いているのでは。
課題Z
交絡因子を統制し、複数年のパネルデータや自然実験で因果効果に近づく。補正R²を上げる変数選択も検討する。

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

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

★☆☆☆☆ 難易度1
別の年で転入者数ランキングを出す
読み込みの d = df[df['SSDSE-B-2026'] == 2023] を 2015 や 2020 に変えて、転入者数の都道府県ランキングが年で変わるか確かめよう。
★★☆☆☆ 難易度2
転入者数を「転入率」に差し替える
図3の ds['転入者数'] を、コードで作ってある ds['転入率'](人口千対)に変えて、生の人数と人口比でランキング上位県がどう変わるか比べよう。大都市圏の見え方が変わる。
★★★☆☆ 難易度3
相関ヒートマップに支出項目を足す
exp_cols'L322103': '光熱・水道費''L322106': '保健医療費' を加え、支出項目どうしの多重共線性がどう増えるか観察しよう。
★★★★☆ 難易度4
VIFを実際に計算する
statsmodelsvariance_inflation_factor を使って、支出7項目のVIFを計算し、10を超える変数があるか確かめよう。原論文 表10 の作業を追体験できる。
ヒント:from statsmodels.stats.outliers_influence import variance_inflation_factor。定数項を sm.add_constant で入れてから計算する。
★★★★★ 難易度5
患者調査データを入手して回帰を再現する
厚生労働省「患者調査」から都道府県別のうつ病患者数(2014・2017)を入手し、増減数を作って、SSDSE-Bの転入者数・支出項目と重回帰しよう。原論文の目的変数までそろえた完全な再現に一歩近づける。

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

「地域単位のデータで健康・社会現象の要因を相関と重回帰で探る」発想は、公衆衛生や行政で広く使われている。

🧠
メンタルヘルスの疫学
地域のうつ・自殺と、所得・雇用・つながりなどの社会的決定要因を回帰で探り、予防施策の対象地域を絞る。
🏛️
EBPM(証拠に基づく政策立案)
都道府県データで社会課題(人口移動・格差)の要因を探索し、どの施策が効きそうかの優先順位づけに使う。
📊
多変数データの前処理
多数の候補変数から多重共線性(VIF)で不安定要因を除いて安定したモデルを作る作業は、マーケティングや与信でも必須。

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

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

Q. なぜ「患者数」ではなく「増減数」を目的変数にしたの?
A. 患者数の水準は人口規模に強く左右されます。2017年と2014年の差=増減数を見ることで、「どんな地域でうつ病が増えやすいか」という変化の要因に焦点を当てられます。著者は男女別の増減数に強い相関(r=0.84)があったことも確認し、都道府県単位で分析しました。
Q. このページの図は原論文と同じ数値ですか?
A. 一部だけ実再現です。図1(相関係数)と図2(支出の重回帰係数)は、目的変数のうつ病患者増減数(患者調査)がSSDSE-Bに無いため原論文の報告値を可視化したもの。図3・図4はSSDSE-Bの転入者数・家計支出項目から実際に計算しましたが、原論文が2017年前後なのに対し本再現は2023年で、うつ病増減数が無いため「説明変数の作り方と多重共線性」の再現です。図注に明記しています。
Q. なぜ睡眠や森林面積割合、最低賃金は再現しないの?
A. 睡眠や映画・音楽鑑賞は社会生活基本調査(SSDSE-D系)、森林面積割合・最低賃金・完全失業率はSSDSE-B-2026に収録がないためです。無い列で数値をでっち上げることはせず、SSDSE-Bにある転入者数・家計支出項目だけで実再現しています。
Q. 教養娯楽費の係数が一番大きいから、これが最も効く要因?
A. 単純にはそう言えません。係数の大きさは変数の単位(金額のスケール)に依存し、桁の違う項目を係数だけで比べることはできません。まずP値(有意か)と符号を見るべきで、著者も補正R²の低さを限界として明記しています。相関・回帰であって因果ではありません。

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

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

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

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

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