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

男女別の自殺に至る要因について

⏱️ 推定読了時間: 約30分
河又 杏香(慶應義塾湘南藤沢高等部) 2021年度(令和3年度)統計データ分析コンペティション
🔬 仮説検定🔬 偏相関🔬 単回帰🔬 相関分析🏷 犯罪・安全🏷 労働・雇用🏷 ジェンダー
🔬 手法タグ / 🏷 応用タグ(クリックで同タグの論文をネットワーク検索)
⚠️ センシティブな主題についての注記

本ページは、自殺という重い主題を扱った受賞論文を、統計教育の題材として原論文の分析を淡々と正確に解説するものです。数値は地域(都道府県)単位の集計データに関するもので、個人を対象とした分析ではありません。悩みを抱えている場合は、こころの健康相談統一ダイヤル 0570-064-556 や、よりそいホットライン 0120-279-338 などの相談窓口があります。

🔬 再現カルテ — 原論文のデータが手に入らないため、代替データで再現

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

原論文が使ったデータSSDSE-A・SSDSE-B・SSDSE-C・SSDSE-D・林野庁「都道府県別森林率・人工林率」・厚生労働省「平成 27 年賃金構造基本統計調査」・厚生労働省「平成 14 年度から令和元年度までの地域別最低賃金改定状況」・国土交通省国土地理院「面積調」・総務省統計局「都道府県, 世帯人員別一般世帯数と世帯の種類別世帯人員」・総務省 国勢調査「母子世帯, 父子世帯数–全国, 都道府県(平成 2 年〜27 年)」・厚生労働省「患者調査」・厚生労働省「人口動態統計特殊報告」
分析単位:都道府県
中核手法:相関分析
この教材が使うデータCSV は読み込まない(原論文が報告した数値をそのまま図表化して読み解く)
原論文(PDF)男女別の自殺に至る要因について
特別賞/河又 杏香(慶應義塾湘南藤沢高等部)
✅ この教材でできること
  • 原論文の中核手法(相関分析)を実データで実行できる
  • 数値・図を最後まで再計算できる(偏相関分析)
⚠️ この教材ではできないこと(原論文との違い)
  • 原論文と同じデータでの再現はできない:論文=SSDSE-A/B/C/D 複数 → 教材=報告値転記中心
📄 原論文との違いを、もっと詳しく
📄 原論文:SSDSE-A/B/C/D の複数データを組み合わせ、男女別の自殺に関わる社会的背景要因を分析。
📘 本教材:step 1〜4 は原論文の報告値転記が中心。step 5 で原論文と同じ SSDSE-D の生活時間データによる背景要因の分析を再現
⚠️ 注意:自殺データ(厚労省 人口動態統計)は SSDSE 未収録のため扱わない。県レベルの関連であり個人の因果ではない。
🚀 原論文と同じ粒度で挑戦したい人へ

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

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

🏅 論文審査会コメント(審査員はここを評価した)
「複数のデータを用いて相関分析で要因を探っている点は興味深い。自殺という複雑な問題に対して高校生らしい仮説を提示し、一定の関係性を示したことは高く評価できる。擬似相関の検討、制御変数の導入なども高い実証能力を示しているが、結論の妥当性については更なる検証が必要である。」
出典:統計センター「統計データ分析コンペティション」受賞論文PDF掲載の審査講評。プロの審査員が何を評価し、何を注文したかは論文の読み方の最良の手本になる。
📝 3行で分かる要約

目次

  1. 研究の背景と問い
  2. データと変数の設計
  3. 5要因×男女:相関分析と無相関の検定
  4. 男性の考察:偏相関による疑似相関の検討
  5. 女性の考察:医療アクセスと病院数
  6. 分析の妥当性と限界
  7. SSDSE-D 生活時間データでの再現
  8. まとめ
  9. 📥 再現コードの実行
  10. 💼 実社会での応用
  11. ⚠️ よくある誤解
  12. 📖 用語集
  13. 📐 手法ガイド
  14. 🚀 発展の可能性
  15. 🎯 自分でやってみよう
  16. 🤔 Q&A
  17. 🐍 ブラウザで動かす

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

このページの再現性について(重要) 本論文が使う自殺率(年齢調整死亡率・自殺)・賃金・森林率・病院数・受療率などは、厚生労働省「人口動態統計特殊報告」「賃金構造基本統計調査」「患者調査」、林野庁、国土地理院などSSDSE(教育用標準データセット)に収録されていない官庁統計に由来します。そのため、本ページの図・表は原論文の元データを再計算したものではなく、原論文が報告した相関係数・偏相関係数を転記して可視化した「報告値の可視化」です。図中・図注にもその旨を二重に明記しています。原データが公開されていない散布図や地図(図2・図14)は、報告値を文章・表で示し「グラフは原論文参照」とします。
研究の背景と問い

リーマン・ショック後の2009年をピークに減少を続けていた日本の自殺者数は、新型コロナウイルスの感染が拡大した2020年に11年ぶりに増加した(原論文 図1)。原論文の著者は、コロナ禍という特殊な状況ではなかった2015年の自殺率に着目し、そこに影響していた要因を多方面から調べることで、これからの自殺率の増減を考える手がかりを得ようとした。

まず「男女で自殺の要因は違うのではないか」という問いを立てる。その理由は、自殺率には大きな男女差があり、男性が女性の2倍以上である期間が多いからである。都道府県別の男性自殺率と女性自殺率の相関r = 0.2032165 と弱く、散布図を描いても明確な傾向は読み取れなかった(原論文 図2)。そこで男女を分けて要因を探る方針をとる。

研究の目的自殺に至る要因を「自然環境」「社会的」「食生活」「身辺の事情」「生活行動」の5つに分類し、それぞれを細分化した指標について、都道府県別の男女別自殺率との相関を算出する。相関係数の絶対値が0.2を超えたものに無相関の検定(p値)を行い、有意(p<0.05)な関連を男女別に明らかにする。
図1・図2について(グラフは原論文参照)「直近30年の総自殺者数と男女別自殺率の推移」(図1)と「男女の自殺による死亡率の散布図」(図2)は、厚生労働省「令和2年中における自殺の概況」「人口動態統計特殊報告」の元データに基づくもので、SSDSE未収録です。本ページでは報告値(男女自殺率の相関 r=0.2032165)のみを示し、作図は原論文を参照してください。

相関分析 無相関の検定(p値) 偏相関係数 散布図と回帰直線

データと変数の設計

目的変数は都道府県別の年齢調整死亡率・自殺(男・女、人口10万あたり)(厚生労働省「人口動態統計特殊報告」2015年)。説明側の指標は、SSDSE(教育用標準データセット)A/B/C/D 2021 と、林野庁・厚生労働省・国土交通省国土地理院・総務省などの官庁統計を組み合わせて作成する。分析対象は47都道府県。

表3 使用したデータと出典(抜粋)

使用した主な変数出典
完全失業者数・就業者数(男女)SSDSE-A-2021(2015年)
降水日数・降水量・総人口・小中高の児童生徒数と教員数・一般病院数SSDSE-B-2021(2015年)
牛乳・乳製品・大豆製品・魚介類・きのこ・緑黄色野菜・酒類などの支出額SSDSE-C-2021(2018〜2020年平均)
介護・趣味娯楽・スポーツ・旅行行楽の行動者率、学業・仕事・睡眠・休養の時間SSDSE-D-2021(2016年)
森林率・人工林率林野庁「都道府県別森林率・人工林率」(2017年)
平均月間賃金・最低賃金厚生労働省「賃金構造基本統計調査」「地域別最低賃金改定状況」(2015年)
面積 / 一般世帯数 / 母子・父子世帯数国土地理院「面積調」/ 総務省統計局 / 国勢調査(2015年)
入院受療率・外来受療率厚生労働省「患者調査」(2014年)
年齢調整死亡率・自殺(目的変数)厚生労働省「人口動態統計特殊報告」(2015年)

表4 主な指標の計算方法

指標計算方法
人口密度[人/km²]総人口 ÷ 面積
教師一人あたり生徒数[人](小学校児童+中学校+高校の生徒数) ÷ (各校種の教員数の合計)
完全失業率(男・女)[%]完全失業者数 ÷ (完全失業者数+就業者数) ×100
カルシウム/ビタミンD/ビタミンAを含む食品[円]該当食品の支出額の平均(栄養素ごとに対象食品を集計)
母子・父子世帯率[%]母子・父子世帯数 ÷ (一般世帯数×10)
人口1000人あたりの病院数[軒]一般病院数 ÷ 総人口 ×1000
データ加工上の注意SSDSE-Cおよびの一部データは、各都道府県の県庁所在地のデータをその都道府県のデータとして扱う(原論文の断り書き)。栄養素は「その食材に使った金額」を摂取量の代理変数とみなしている。

DS LEARNING POINT

地域集計データ(生態学的データ)の相関

この研究の1点は47都道府県の集計値どうしの相関であり、個人(自殺した人)のデータではない。「病院が少ない県ほど女性自殺率が高い」という県レベルの相関を、そのまま「病院に行けない個人が自殺しやすい」と読み替えると生態学的誤謬(ecological fallacy)に陥る危険がある。原論文自身も限界として明記している。

1
5要因×男女:相関分析と無相関の検定

5分類の各指標と、男女別の自殺率との相関(Pearson の r)を算出する。原論文は 相関係数 の絶対値が 0.2 を超えたものについて無相関の検定(p値)を行い、有意水準5%で有意だったものに * を付けた。下表は原論文 表6〜10 の報告値を1枚にまとめたものである。

表6〜10 男女別・要因別の自殺率との相関係数(原論文の報告値)

要因分類指標男性自殺率との r女性自殺率との r
自然環境降水日数0.1892666-0.2720383
降水量-0.1264948-0.3876141 *
森林・人工林率0.2891686-0.1450716
社会的平均月収-0.3681953 *0.2598133
最低賃金-0.4985958 *0.2394296
人口密度-0.3484553 *0.1531512
教師一人あたり生徒数-0.3917334 *0.2162066
完全失業率0.08647540.032204
食生活カルシウム-0.1247650.3667838 *
ビタミンD-0.10020740.0520631
ビタミンA-0.224980.2489419
酒類-0.3887164 *0.0198852
身辺事情離婚率-0.0933102-0.0250456
父子・母子世帯率0.2260748-0.2988605 *
入院患者率0.1125827-0.332586 *
外来患者率-0.0273847-0.2530422
生活行動学業-0.2988691 *-0.0770282
仕事0.2714662-0.0867027
介護関係0.0093135-0.1951387
趣味・娯楽の総数-0.5175879 *0.2080845
スポーツ-0.560301 *0.1939965
睡眠0.6107483 *-0.0696166
休養・くつろぎ0.2736665-0.1304227
旅行・行楽-0.4192268 *0.2343289

* … 無相関の検定で有意(p<0.05)。値はすべて原論文の報告値。

24指標と男女別自殺率の相関係数
図1 5要因24指標と自殺率の相関係数(原論文 表6〜10 の報告値の可視化。再計算ではない)。濃色=有意(*)、淡色=非有意、点線は|r|=0.2。
📌 この図の読み方
このグラフは
24の指標それぞれについて、男性自殺率との r(左)と女性自殺率との r(右)を横棒で並べたもの。
読み方
右向き(正)は「その指標が大きい県ほど自殺率が高い」、左向き(負)はその逆。棒が長いほど関連が強い。
なぜそう解釈できるか
濃色(*)は偶然では説明しにくい有意な相関。男女でパネルを分けると、有意になる指標が大きく異なることが一目でわかる。
読み取り(原論文の報告値)
  • 男性で有意な10指標:平均月収(-0.368)、最低賃金(-0.499)、人口密度(-0.348)、教師一人あたり生徒数(-0.392)、酒類(-0.389)、学業(-0.299)、趣味・娯楽(-0.518)、スポーツ(-0.560)、睡眠(+0.611)、旅行・行楽(-0.419)。睡眠だけが正の相関。
  • 女性で有意な4指標:降水量(-0.388)、カルシウム(+0.367)、父子・母子世帯率(-0.299)、入院患者率(-0.333)。男性より有意な指標が少ない。
やってみよう準備:ライブラリと図の出力先
📝 コード
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
import os
import numpy as np
import pandas as pd
import matplotlib
matplotlib.use('Agg')
import matplotlib.pyplot as plt
import matplotlib.patches as mpatches

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

FIG_DIR = 'html/figures'
os.makedirs(FIG_DIR, exist_ok=True)

# すべての図に添える注記(本ページの図はすべて報告値の可視化)
NOTE = '※原論文(河又杏香 2021)の報告値の可視化であり、本スクリプトで再計算した値ではない。'
print('セットアップ完了。図の出力先:', FIG_DIR)
▼ 実行結果
セットアップ完了。図の出力先: html/figures
💡 解説
  • 🎯 目的:このページの図はすべて「原論文の報告値の可視化」なので、描画・保存に必要なライブラリだけを読み込む。外部データのダウンロードは不要。
  • 🔗 橋渡し:以降のセルが使う pltpdnp と保存先 FIG_DIR、全図共通の注記 NOTE をここで定義する。
  • 📤 実行結果の読み取り:出力は保存先パスの確認のみ。html/figures に図が書き出される。
やってみよう原論文 表6〜10:相関係数(24指標)を転記して DataFrame 化
📝 コード
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
# ── 原論文 表6〜10:男女別・要因別の自殺率との相関係数(報告値の転記)──
# 「男性有意」「女性有意」= 原論文で * が付されたもの(|r|>0.2 かつ p<0.05)
rows = [
    # (指標, 要因分類, 男性r, 女性r, 男性有意, 女性有意)
    ('降水日数',            '自然環境',  0.1892666,  -0.2720383, False, False),
    ('降水量',              '自然環境', -0.1264948,  -0.3876141, False, True),
    ('森林・人工林率',       '自然環境',  0.2891686,  -0.1450716, False, False),
    ('平均月収',            '社会的',   -0.3681953,   0.2598133, True,  False),
    ('最低賃金',            '社会的',   -0.4985958,   0.2394296, True,  False),
    ('人口密度',            '社会的',   -0.3484553,   0.1531512, True,  False),
    ('教師一人あたり生徒数','社会的',  -0.3917334,   0.2162066, True,  False),
    ('完全失業率',          '社会的',    0.08647537,  0.03220396, False, False),
    ('カルシウム',          '食生活',   -0.124765,    0.3667838, False, True),
    ('ビタミンD',           '食生活',   -0.1002074,   0.05206311,False, False),
    ('ビタミンA',           '食生活',   -0.22498,     0.2489419, False, False),
    ('酒類',               '食生活',   -0.3887164,   0.01988522,True,  False),
    ('離婚率',              '身辺事情', -0.09331021, -0.02504564,False, False),
    ('父子・母子世帯率',    '身辺事情',  0.2260748,  -0.2988605, False, True),
    ('入院患者率',          '身辺事情',  0.1125827,  -0.332586,  False, True),
    ('外来患者率',          '身辺事情', -0.0273847,  -0.2530422, False, False),
    ('学業',               '生活行動', -0.2988691,  -0.07702816,True,  False),
    ('仕事',               '生活行動',  0.2714662,  -0.08670267,False, False),
    ('介護関係',            '生活行動',  0.009313488,-0.1951387, False, False),
    ('趣味・娯楽の総数',    '生活行動', -0.5175879,   0.2080845, True,  False),
    ('スポーツ',            '生活行動', -0.560301,    0.1939965, True,  False),
    ('睡眠',               '生活行動',  0.6107483,  -0.06961662,True,  False),
    ('休養・くつろぎ',      '生活行動',  0.2736665,  -0.1304227, False, False),
    ('旅行・行楽',          '生活行動', -0.4192268,   0.2343289, True,  False),
]
rep = pd.DataFrame(rows, columns=['指標','要因分類','男性','女性','男性有意','女性有意'])
print('報告された相関係数(24指標):')
print(rep[['要因分類','指標','男性','女性']].to_string(index=False))
print()
print('有意(p<0.05)な指標数  —  男性:', int(rep['男性有意'].sum()),
      ' 女性:', int(rep['女性有意'].sum()))
▼ 実行結果
報告された相関係数(24指標):
要因分類         指標        男性        女性
自然環境       降水日数  0.189267 -0.272038
自然環境        降水量 -0.126495 -0.387614
自然環境    森林・人工林率  0.289169 -0.145072
 社会的       平均月収 -0.368195  0.259813
 社会的       最低賃金 -0.498596  0.239430
 社会的       人口密度 -0.348455  0.153151
 社会的 教師一人あたり生徒数 -0.391733  0.216207
 社会的      完全失業率  0.086475  0.032204
 食生活      カルシウム -0.124765  0.366784
 食生活      ビタミンD -0.100207  0.052063
 食生活      ビタミンA -0.224980  0.248942
 食生活         酒類 -0.388716  0.019885
身辺事情        離婚率 -0.093310 -0.025046
身辺事情   父子・母子世帯率  0.226075 -0.298860
身辺事情      入院患者率  0.112583 -0.332586
身辺事情      外来患者率 -0.027385 -0.253042
生活行動         学業 -0.298869 -0.077028
生活行動         仕事  0.271466 -0.086703
生活行動       介護関係  0.009313 -0.195139
生活行動   趣味・娯楽の総数 -0.517588  0.208085
生活行動       スポーツ -0.560301  0.193996
生活行動         睡眠  0.610748 -0.069617
生活行動    休養・くつろぎ  0.273666 -0.130423
生活行動      旅行・行楽 -0.419227  0.234329

有意(p<0.05)な指標数  —  男性: 10  女性: 4
💡 解説
  • 🎯 目的:原論文が報告した男女別の相関係数(表6〜10)をそのまま転記し、以降の図の単一のソースにする。
  • 🔗 橋渡し:* 列は「|r|>0.2 かつ p<0.05」で原論文が有意と判定したもの。この表を fig1 で可視化する。
  • 📤 実行結果の読み取り:24指標の r が一覧され、有意な指標は男性 10・女性 4 と印字される。値はすべて原論文の報告値。
やってみよう図1:5要因24指標と自殺率の相関係数(左=男性、右=女性)
📝 コード
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
# ── 図1:24指標×男女別の相関係数(表6〜10の報告値)──
order = rep.iloc[::-1].reset_index(drop=True)   # 上から降水日数になるよう逆順
y = np.arange(len(order))
fig, axes = plt.subplots(1, 2, figsize=(13, 10), sharey=True)
for ax, sex in zip(axes, ['男性', '女性']):
    vals = order[sex].values
    sig  = order[sex + '有意'].values
    colors = []
    for v, s in zip(vals, sig):
        if s:
            colors.append('#C62828' if v >= 0 else '#1565C0')   # 濃色=有意
        else:
            colors.append('#EF9A9A' if v >= 0 else '#90CAF9')   # 淡色=非有意
    ax.barh(y, vals, color=colors, edgecolor='white')
    ax.axvline(0, color='#333', lw=1.1)
    ax.axvline(0.2, color='#bbb', ls=':', lw=0.8)
    ax.axvline(-0.2, color='#bbb', ls=':', lw=0.8)
    ax.set_xlim(-0.72, 0.72)
    ax.set_title('%s自殺率との相関' % sex, fontsize=13, fontweight='bold')
    ax.set_xlabel('相関係数 r(報告値)', fontsize=11)
    for yi, (v, s) in enumerate(zip(vals, sig)):
        if s:
            ax.text(v + (0.02 if v >= 0 else -0.02), yi, '*', va='center',
                    ha='left' if v >= 0 else 'right', fontsize=15, fontweight='bold', color='#222')
    ax.grid(True, axis='x', alpha=0.25)
axes[0].set_yticks(y)
axes[0].set_yticklabels(order['指標'].tolist(), fontsize=10)
fig.suptitle('図1 5要因24指標と自殺率の相関係数(原論文 表6〜10 の報告値の可視化)',
             fontsize=14, fontweight='bold')
fig.text(0.5, 0.005, NOTE + '  濃色=有意(p<0.05, *)、淡色=非有意。点線は|r|=0.2。',
         ha='center', fontsize=9, color='#B71C1C')
fig.tight_layout(rect=[0, 0.035, 1, 0.965])
fig.savefig(os.path.join(FIG_DIR, '2021_H5_1_fig1.png'), bbox_inches='tight')
plt.close(fig)
male_sig = rep.loc[rep['男性有意'], '指標'].tolist()
female_sig = rep.loc[rep['女性有意'], '指標'].tolist()
print('fig1 saved')
print('男性で有意:', '、'.join(male_sig))
print('女性で有意:', '、'.join(female_sig))
▼ 実行結果
fig1 saved
男性で有意: 平均月収、最低賃金、人口密度、教師一人あたり生徒数、酒類、学業、趣味・娯楽の総数、スポーツ、睡眠、旅行・行楽
女性で有意: 降水量、カルシウム、父子・母子世帯率、入院患者率
💡 解説
  • 🎯 目的:転記した rep を横棒グラフで可視化し、男女で相関の向き・強さが違うことを一目で見せる。
  • 🔗 橋渡し:正の r を赤、負の r を青で着色し、有意(*)を濃色で強調。点線は判定基準 |r|=0.2。
  • 📤 実行結果の読み取り:男性は最低賃金・スポーツ・趣味娯楽で負、睡眠で正(r=0.61)など幅広い有意相関。女性は有意が4指標と少なく、降水量・入院患者率・母子父子世帯率が負、カルシウムが正。
2
男性の考察:偏相関による疑似相関の検討

男性で有意だった指標の中には、実は別の変数を介した見かけの相関(疑似相関)が混ざっている可能性がある。原論文は、労働の対価を表す最低賃金と、その背景にある人口密度のどちらかの影響を取り除いた偏相関係数を計算し、真の関連かどうかを判定した(表11・表12)。

男性自殺率の単純相関と偏相関の比較
図2 男性自殺率の単純相関(灰)と偏相関(緑=|r|>0.2で残存/赤=疑似相関)。原論文 表7・11・12 の報告値の可視化

表11・表12 偏相関係数(人口密度または最低賃金の影響を除去)

指標除去した変数単純相関 r偏相関 r判定(|偏相関|>0.2)
森林・人工林率人口密度0.28920.0907疑似相関
教師一人あたり生徒数人口密度-0.3917-0.2357真の相関
最低賃金人口密度-0.4986-0.3938真の相関
平均月収最低賃金-0.36820.0907疑似相関
人口密度最低賃金-0.3485-0.1101疑似相関
酒類最低賃金-0.3887-0.1682疑似相関
学業最低賃金-0.2989-0.2637真の相関
趣味・娯楽の総数最低賃金-0.5176-0.2218真の相関
スポーツ最低賃金-0.5603-0.3359真の相関
睡眠最低賃金0.61070.4311真の相関
旅行・行楽最低賃金-0.4192-0.1382疑似相関
判定(原論文)偏相関でも|r|>0.2が残ったのは最低賃金・教師一人あたり生徒数・学業・趣味娯楽・スポーツ・睡眠(うち睡眠だけ正)。森林・人工林率・平均月収・人口密度・酒類・旅行行楽は|r|≦0.2に下がり疑似相関と判定された。最低賃金と人口密度は互いに強い正の相関(r=0.8108688)をもつ。
やってみよう図2:男性自殺率の単純相関 vs 偏相関(疑似相関の検討)
📝 コード
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
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
# ── 図2:男性自殺率の単純相関 vs 偏相関(原論文 表7・11・12)──
# 最低賃金または人口密度の影響を除去した偏相関で疑似相関を判定する
mp = pd.DataFrame([
    ('森林・人工林率',       '人口密度',  0.2891686,  0.09068578),
    ('教師一人あたり生徒数','人口密度', -0.3917334, -0.2357294),
    ('最低賃金',            '人口密度', -0.4985958, -0.3938469),
    ('平均月収',            '最低賃金', -0.3681953,  0.09068578),
    ('人口密度',            '最低賃金', -0.3484553, -0.1100749),
    ('酒類',               '最低賃金', -0.3887164, -0.1681852),
    ('学業',               '最低賃金', -0.2988691, -0.2637391),
    ('趣味・娯楽の総数',    '最低賃金', -0.5175879, -0.2218496),
    ('スポーツ',            '最低賃金', -0.560301,  -0.3359372),
    ('睡眠',               '最低賃金',  0.6107483,  0.4310617),
    ('旅行・行楽',          '最低賃金', -0.4192268, -0.1382047),
], columns=['指標','除去変数','単純相関','偏相関'])
mp['真の相関'] = mp['偏相関'].abs() > 0.2   # |偏相関|>0.2 は疑似相関でない

fig, ax = plt.subplots(figsize=(11, 8.5))
yy = np.arange(len(mp))[::-1]
h = 0.38
ax.barh(yy + h/2, mp['単純相関'], height=h, color='#B0BEC5', label='単純相関 r')
pcol = ['#2E7D32' if t else '#C62828' for t in mp['真の相関']]
ax.barh(yy - h/2, mp['偏相関'], height=h, color=pcol)
ax.axvline(0, color='#333', lw=1.1)
ax.axvline(0.2, color='#bbb', ls=':', lw=0.8); ax.axvline(-0.2, color='#bbb', ls=':', lw=0.8)
ax.set_yticks(yy)
ax.set_yticklabels(['%s\n(除去: %s)' % (i, r) for i, r in zip(mp['指標'], mp['除去変数'])], fontsize=9)
ax.set_xlabel('相関係数 / 偏相関係数(報告値)', fontsize=11)
ax.set_xlim(-0.72, 0.72)
handles = [mpatches.Patch(color='#B0BEC5', label='単純相関 r'),
           mpatches.Patch(color='#2E7D32', label='偏相関(|r|>0.2:疑似相関でない)'),
           mpatches.Patch(color='#C62828', label='偏相関(|r|≦0.2:疑似相関)')]
ax.legend(handles=handles, loc='lower left', fontsize=9, framealpha=0.9)
ax.set_title('図2 男性自殺率:単純相関と偏相関の比較(原論文 表7・11・12 の報告値)',
             fontsize=12.5, fontweight='bold')
ax.grid(True, axis='x', alpha=0.25)
fig.text(0.5, 0.005, NOTE, ha='center', fontsize=9, color='#B71C1C')
fig.tight_layout(rect=[0, 0.03, 1, 1])
fig.savefig(os.path.join(FIG_DIR, '2021_H5_1_fig2.png'), bbox_inches='tight')
plt.close(fig)
survive = mp.loc[mp['真の相関'], '指標'].tolist()
pseudo  = mp.loc[~mp['真の相関'], '指標'].tolist()
print('fig2 saved')
print('偏相関でも |r|>0.2(疑似相関でない):', '、'.join(survive))
print('偏相関で |r|≦0.2(疑似相関と判定):', '、'.join(pseudo))
print('人口密度と最低賃金の相関 r = 0.8108688(強い正の相関・報告値)')
▼ 実行結果
fig2 saved
偏相関でも |r|>0.2(疑似相関でない): 教師一人あたり生徒数、最低賃金、学業、趣味・娯楽の総数、スポーツ、睡眠
偏相関で |r|≦0.2(疑似相関と判定): 森林・人工林率、平均月収、人口密度、酒類、旅行・行楽
人口密度と最低賃金の相関 r = 0.8108688(強い正の相関・報告値)
💡 解説
  • 🎯 目的:有意な相関の中には、最低賃金・人口密度を介した疑似相関が混ざる。これらの影響を除いた偏相関(表7・11・12)で真偽を見分ける。
  • 🔗 橋渡し:各指標について、単純相関(灰)と偏相関(緑=|r|>0.2で残存、赤=疑似相関)を並べ、除去した変数を軸ラベルに併記。
  • 📤 実行結果の読み取り:最低賃金・教師一人あたり生徒数・学業・趣味娯楽・スポーツ・睡眠は偏相関でも |r|>0.2。森林人工林率・平均月収・人口密度・酒・旅行行楽は疑似相関と判定された。

人口密度と最低賃金の散布図(原論文 図14・表13)

原論文はさらに、人口密度を横軸・最低賃金を縦軸にとった散布図に回帰直線を引き、各都道府県が回帰直線の上側(人口密度の割に賃金が高い=労働の対価が相対的に大きい)か下側(賃金が低い=対価が小さい)かを調べた。男性自殺率の低い上位10県は回帰直線より上側、高い上位10県は下側に多く位置した。

表13 都道府県別 男性自殺率ランキング(原論文の報告値)

順位自殺率が低い順自殺率が高い順
1位神奈川県秋田県
2位愛知県山形県
3位大分県沖縄県
4位山梨県島根県
5位福井県岩手県
6位兵庫県宮崎県
7位奈良県福島県
8位東京都熊本県
9位京都府群馬県
10位高知県新潟県
図14はグラフを原論文参照人口密度と最低賃金の散布図(図14)は、SSDSE未収録の最低賃金・面積データを用いるため本ページでは再現しません。原論文の要点は「人口密度の割に最低賃金が低い(労働に対する稼ぎが相対的に悪い)都道府県ほど男性自殺率が高い」というものです。
男性についての結論(原論文)男性の自殺要因の中では収入に関する問題が最も大きく、特に人口密度に対して最低賃金が相対的に低い(労働の対価が割に合わない)場合ほど自殺率が高い。加えて、学業・趣味娯楽・スポーツ・旅行など、ストレスを発散する活動に充てる時間の少なさも関連していた。
3
女性の考察:医療アクセスと病院数

女性で有意だった4指標(降水量・カルシウム・父子母子世帯率・入院患者率)は、いずれも当初の仮説と符号が一致しなかった。原論文は「入院患者率が低い県ほど自殺率が高い」ことに注目し、そもそも病院が足りず受診できないのではという仮説を立て、新たに人口1000人あたりの病院数という指標を追加した。

追加指標の結果(原論文の報告値)人口1000人あたりの病院数と女性自殺率の相関r = -0.3854(p = 0.00746 < 0.05)で、有意な負の関連が確認された。病院が少ない県ほど女性自殺率が高い傾向である。
女性自殺率の単純相関と偏相関(病院数を除去)
図3 女性自殺率の単純相関と、病院数の影響を除いた偏相関(原論文 表9・15 の報告値の可視化)。紫は追加指標「人口千人あたり病院数」自身の相関。

表15 偏相関係数(人口1000人あたり病院数の影響を除去)

指標単純相関 r偏相関 r(病院数を除去)判定
降水量-0.3876-0.2364真の相関
カルシウム0.36680.1793疑似相関
母子・父子世帯率-0.2989-0.1150疑似相関
入院患者率-0.33260.0609疑似相関
判定(原論文)病院数の影響を除くと、|r|>0.2が残ったのは降水量のみで、カルシウム・母子父子世帯率・入院患者率は疑似相関と判定された。ただし降水量の負の相関は仮説と逆符号であり、「降水量が多いほど雨天日が長いとは限らない」ため、降水と自殺の関係は単純には解釈できないと原論文は述べている。
やってみよう図3:女性自殺率の偏相関(病院数の影響を除去)と追加指標
📝 コード
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
199
200
201
# ── 図3:女性自殺率の単純相関 vs 偏相関(病院数の影響を除去・原論文 表9・15)──
byoin_r, byoin_p = -0.3854302, 0.00746   # 人口千人あたり病院数×女性自殺率(追加指標)
fp = pd.DataFrame([
    ('降水量',           -0.3876141, -0.2364077),
    ('カルシウム',        0.3667838,  0.1793106),
    ('母子・父子世帯率', -0.2988605, -0.1149966),
    ('入院患者率',       -0.332586,   0.06085137),
], columns=['指標','単純相関','偏相関'])
fp['真の相関'] = fp['偏相関'].abs() > 0.2

fig, ax = plt.subplots(figsize=(11, 6))
yy = np.arange(len(fp))[::-1]
h = 0.38
ax.barh(yy + h/2, fp['単純相関'], height=h, color='#B0BEC5', label='単純相関 r')
pcol = ['#2E7D32' if t else '#C62828' for t in fp['真の相関']]
ax.barh(yy - h/2, fp['偏相関'], height=h, color=pcol)
# 追加指標:人口千人あたり病院数(除去に使用した変数自身)
ax.barh([len(fp) + 0.2], [byoin_r], height=0.5, color='#6A1B9A')
ax.text(byoin_r - 0.02, len(fp) + 0.2, 'r=%.3f\np=%.5f' % (byoin_r, byoin_p),
        va='center', ha='right', fontsize=9, color='#4A148C')
ax.axvline(0, color='#333', lw=1.1)
ax.axvline(0.2, color='#bbb', ls=':', lw=0.8); ax.axvline(-0.2, color='#bbb', ls=':', lw=0.8)
labels = fp['指標'].tolist()
ax.set_yticks(list(yy) + [len(fp) + 0.2])
ax.set_yticklabels(labels + ['人口千人あたり病院数(追加・除去に使用)'], fontsize=9)
ax.set_xlabel('相関係数 / 偏相関係数(報告値)', fontsize=11)
ax.set_xlim(-0.62, 0.62)
handles = [mpatches.Patch(color='#B0BEC5', label='単純相関 r'),
           mpatches.Patch(color='#2E7D32', label='偏相関(|r|>0.2)'),
           mpatches.Patch(color='#C62828', label='偏相関(|r|≦0.2:疑似相関)'),
           mpatches.Patch(color='#6A1B9A', label='追加指標:病院数×女性自殺率')]
ax.legend(handles=handles, loc='lower left', fontsize=9, framealpha=0.9)
ax.set_title('図3 女性自殺率:単純相関と偏相関(病院数の影響を除去)(原論文 表9・15 の報告値)',
             fontsize=11.5, fontweight='bold')
ax.grid(True, axis='x', alpha=0.25)
fig.text(0.5, 0.005, NOTE, ha='center', fontsize=9, color='#B71C1C')
fig.tight_layout(rect=[0, 0.04, 1, 1])
fig.savefig(os.path.join(FIG_DIR, '2021_H5_1_fig3.png'), bbox_inches='tight')
plt.close(fig)
print('fig3 saved')
print('人口千人あたり病院数×女性自殺率: r=%.4f, p=%.5f(有意)' % (byoin_r, byoin_p))
print('病院数除去後に |r|>0.2 が残ったのは:', '、'.join(fp.loc[fp['真の相関'], '指標'].tolist()))
▼ 実行結果
fig3 saved
人口千人あたり病院数×女性自殺率: r=-0.3854, p=0.00746(有意)
病院数除去後に |r|>0.2 が残ったのは: 降水量
💡 解説
  • 🎯 目的:女性の有意4指標は仮説と違う向きだった。新たに「人口千人あたり病院数」を導入し、その影響を除いた偏相関(表15)を見る。
  • 🔗 橋渡し:4指標の単純相関と病院数除去後の偏相関を並べ、追加指標自身の r(紫)も併示する。
  • 📤 実行結果の読み取り:人口千人あたり病院数は女性自殺率と r=-0.385(p=0.00746, 有意)。病院数を除くと |r|>0.2 が残るのは降水量のみで、カルシウム・母子父子世帯率・入院患者率は疑似相関と判定される。
女性についての結論(原論文)女性の自殺率に最も強く関連していたのは単位人口あたりの病院数だった。健康状態に問題を抱えながらも病院に行けずに抱え込んでしまうことが背景にあり、人口あたりの病院数が少ない県ほど女性自殺率が高い、と原論文は解釈している。

分析の妥当性と限界

原論文は結論を述べる前に、次の限界を自ら挙げている。統計教育の観点でも重要な指摘である。

① 標本が47と少ない

都道府県は47しかなく、相関係数の推定は不安定になりやすい。地域の数値をそのまま結果と結びつけることには慎重さが必要。

② 弱い相関ばかり

|r|>0.2 で「関連あり」と判定しているため、得られた相関の多くは弱い。強い相関は得られていない。

③ 指標どうしが影響し合う

個人ではなく地域指標を用いており、指標が相互に影響し合うため、相関係数という数字だけで安易に判断しにくい。偏相関でも取り除けない別の変数の関与が残りうる。

④ 相関は因果関係ではない

本分析はあくまで関連の強さを示すもので、因果関係を証明したものではない。

5
SSDSE-D(社会生活基本調査)の生活時間データで背景要因を再現する

原論文は SSDSE-A/B/C/D の複数データを組み合わせて男女別の自殺の背景要因を探索しました。自殺データ(厚労省)は SSDSE に無いため、原論文が使った SSDSE-D の生活時間・行動データの分析を再現します。

やってみよう睡眠・趣味娯楽(D)× 家族関連指標(B)
📝 コード
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
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('睡眠')
hobby = dv('趣味・娯楽の総数')
divorce = bv('離婚件数') / bv('総人口') * 1000
r1, p1 = stats.pearsonr(sleep, divorce.reindex(sleep.index))
r2, p2 = stats.pearsonr(hobby, divorce.reindex(hobby.index))
print(f'睡眠時間 × 人口千対離婚件数 : r = {r1:+.3f} (p={p1:.4f})')
print(f'趣味・娯楽行動者率 × 離婚件数: r = {r2:+.3f} (p={p2:.4f})')
print('趣味・娯楽行動者率 下位5県:', '、'.join(hobby.nsmallest(5).index))
▼ 実行結果
睡眠時間 × 人口千対離婚件数 : r = -0.062 (p=0.6771) 趣味・娯楽行動者率 × 離婚件数: r = -0.138 (p=0.3537) 趣味・娯楽行動者率 下位5県: 青森県、長崎県、沖縄県、徳島県、鹿児島県
💡 解説
  • 趣味・娯楽の行動者率が低い県、睡眠時間と離婚件数率の相関など、原論文が「生活の質」の代理として見た変数の地域差を確認できます。
  • この種の分析はあくまで県レベルの生態学的相関であり、個人の自殺リスクの因果とは別物——原論文も慎重に「関連」として報告しており、その姿勢ごと学ぶことが重要です。
💡 Python TIPS センシティブな主題ほど、相関どまりであることの明示と生態学的誤謬への注意書きが必須です。

まとめ

男女別に相関分析・無相関の検定・偏相関による疑似相関の検討を重ねた結果、原論文は次のように結論づけた。

結論(原論文)
  • 男性の自殺要因は労働条件などの経済問題の程度が大きく、特に相対的な稼ぎの少なさが関連する。学業・趣味娯楽・スポーツなどストレス発散に充てる時間も影響していた。
  • 女性の自殺要因は病院・健康に関する問題の程度が大きく、医療機関へのアクセス(人口あたり病院数)の低さが関連していた。
  • したがって、男性には経済的な支援・ケアを、女性には健康問題やストレスを抱え込ませない支援・ケアを重点的にすることが有効と推測される。
男女で異なる自殺の関連要因のまとめ
図4 男女で異なる自殺の関連要因(有意な相関のまとめ・報告値の可視化)。男性は経済・労働/生活行動系、女性は健康・医療系が中心。
やってみよう図4:男女で異なる自殺の関連要因(結論の対比)
📝 コード
204
205
206
207
208
209
210
211
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
237
238
239
240
241
242
# ── 図4:男女で異なる自殺の関連要因(有意な相関のまとめ・報告値)──
theme = {
    '平均月収':'経済・労働', '最低賃金':'経済・労働', '人口密度':'経済・労働', '教師一人あたり生徒数':'経済・労働',
    '学業':'生活行動', '趣味・娯楽の総数':'生活行動', 'スポーツ':'生活行動', '睡眠':'生活行動', '旅行・行楽':'生活行動',
    '酒類':'食生活', 'カルシウム':'食生活',
    '降水量':'自然環境',
    '入院患者率':'健康・医療', '父子・母子世帯率':'健康・医療', '人口千人あたり病院数':'健康・医療',
}
tcol = {'経済・労働':'#1565C0', '生活行動':'#2E7D32', '食生活':'#E65100', '自然環境':'#607D8B', '健康・医療':'#C62828'}

m = rep[rep['男性有意']][['指標','男性']].rename(columns={'男性':'r'}).copy()
w = rep[rep['女性有意']][['指標','女性']].rename(columns={'女性':'r'}).copy()
w = pd.concat([w, pd.DataFrame([{'指標':'人口千人あたり病院数','r':-0.3854302}])], ignore_index=True)
for d in (m, w):
    d.sort_values('r', inplace=True)
    d.reset_index(drop=True, inplace=True)

fig, axes = plt.subplots(1, 2, figsize=(13, 6))
for ax, d, ttl in zip(axes, (m, w), ('男性で有意な相関', '女性で有意な相関')):
    yy = np.arange(len(d))
    cols = [tcol.get(theme.get(i, '自然環境'), '#999') for i in d['指標']]
    ax.barh(yy, d['r'], color=cols, edgecolor='white')
    ax.axvline(0, color='#333', lw=1.1)
    ax.set_yticks(yy); ax.set_yticklabels(d['指標'].tolist(), fontsize=10)
    ax.set_xlim(-0.65, 0.65)
    ax.set_xlabel('相関係数 r(報告値)', fontsize=11)
    ax.set_title(ttl, fontsize=13, fontweight='bold')
    ax.grid(True, axis='x', alpha=0.25)
handles = [mpatches.Patch(color=c, label=k) for k, c in tcol.items()]
fig.legend(handles=handles, loc='lower center', ncol=5, fontsize=9, framealpha=0.9, bbox_to_anchor=(0.5, -0.02))
fig.suptitle('図4 男女で異なる自殺の関連要因(有意な相関のまとめ・報告値)',
             fontsize=14, fontweight='bold')
fig.text(0.5, -0.06, NOTE, ha='center', fontsize=9, color='#B71C1C')
fig.tight_layout(rect=[0, 0.02, 1, 0.96])
fig.savefig(os.path.join(FIG_DIR, '2021_H5_1_fig4.png'), bbox_inches='tight')
plt.close(fig)
print('fig4 saved')
print('男性側:経済・労働系と生活行動系が中心')
print('女性側:健康・医療系(病院数・入院患者率)が中心')
▼ 実行結果
fig4 saved
男性側:経済・労働系と生活行動系が中心
女性側:健康・医療系(病院数・入院患者率)が中心
💡 解説
  • 🎯 目的:最後に、有意な相関だけをテーマ(経済・生活行動・健康医療など)別に色分けし、男女の違いを結論として見せる。
  • 🔗 橋渡し:男性の有意指標と女性の有意指標(+病院数)を左右パネルに並べ、テーマ色で分類する。
  • 📤 実行結果の読み取り:男性は経済・労働系と生活行動系、女性は健康・医療系が中心。原論文の結論(男性=経済問題、女性=健康・受診アクセス)と整合する。
読むときの留意ここで示した数値はすべて原論文の報告値であり、SSDSE(教育用標準データセット)から再計算したものではありません。また地域集計データの相関であるため、因果関係の証拠ではない点に注意してください。

📥 再現コードの実行(外部データ不要)

本ページの図は「報告値の可視化」なので、SSDSE のダウンロードは不要です。原論文の相関係数がスクリプト内に転記されており、そのまま実行すると図が再生成されます。

1
スクリプトをそのまま実行するプロジェクトルートで次を実行します(編集不要)。
python3 code/2021_H5_1_shorei.py
図は html/figures/ に保存されます。
2
元データについて自殺率・賃金・森林率・病院数などの原データは厚生労働省・林野庁・国土地理院などが提供しており、SSDSEには収録されていません。原分析の完全再現にはこれら官庁統計の取得が別途必要です。

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

相関分析・偏相関・無相関の検定は、研究だけでなく行政・医療・報道の現場で広く使われています。

🏥
公衆衛生・自殺対策
自治体や厚生労働省の自殺総合対策では、地域ごとの自殺率と社会経済指標・医療資源の関連を分析し、どの地域にどの支援を厚くするかを検討します。本論文と同種の地域相関分析が出発点になります。
🏛️
行政の政策立案
都道府県・市区町村の担当者は、指標間の相関・偏相関を見て「見かけの関係か、本当に効いている要因か」を切り分け、予算配分の根拠にします。
📊
メディア・データジャーナリズム
社会調査記事では、2変数の相関を示すだけでなく、交絡を疑い偏相関で確認する姿勢が求められます。
🎓
学術研究(疫学・社会学)
疫学や社会学の地域研究では、生態学的相関の限界を踏まえつつ、仮説探索の第一歩として相関・偏相関が日常的に使われます。

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

この論文を読むときに初心者がやりがちな勘違いをまとめます。

❌「相関がある=因果関係がある」ではない
本分析が示すのは、都道府県レベルで2つの指標が一緒に動く傾向(相関)にすぎません。「最低賃金が低いから自殺が増える」といった因果関係を証明したものではありません。第三の変数(交絡)が両方を動かしている可能性を常に疑ってください。
❌「p値が小さい=関連が強い」ではない
p値は「偶然では説明しにくいか」を表すだけで、関連の大きさ相関係数(r の絶対値)が表します。本論文の有意な相関も多くは|r|が0.3前後と弱めで、原論文自身が「弱い相関ばかり」と限界を認めています。
❌「有意な相関=真の関連」ではない(疑似相関)
男性で有意だった平均月収・人口密度・酒類・旅行行楽は、最低賃金や人口密度の影響を除いた偏相関にすると|r|≦0.2まで下がり、疑似相関と判定されました。有意な相関でも、交絡を除くと消えることがあります。
❌「地域の傾向=個人の傾向」ではない(生態学的誤謬)
「病院が少ない県ほど女性自殺率が高い」は県単位の関係です。これを「病院に行けない個人が自殺しやすい」と個人レベルに読み替えるのは生態学的誤謬です。集計データからは個人の因果を語れません。
❌「符号は仮説どおりのはず」ではない
女性の降水量は、仮説(雨が多い=うつ的で自殺増)と逆の負の相関でした。原論文は「降水量が多くても雨天が長いとは限らない」と述べ、符号が逆でも無理に解釈しない誠実さを示しています。

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

本文で見慣れない言葉が出てきたら、ここに戻って確認してください。

相関係数
2つの変数が「一緒に増減する傾向」の強さと向きを −1〜+1 で表す指標(Pearson の r)。+1に近いほど強い正、−1に近いほど強い負、0に近いほど無関係。
無相関の検定
「本当は相関が0(無相関)」という仮定のもとで、観測された r がどれくらい起こりにくいかを調べる検定。p値 < 0.05 なら「有意な相関がある」と判断する。
偏相関係数
第三の変数の影響を取り除いたうえでの、2変数間の相関係数。ある変数を介した見かけの相関(疑似相関)かどうかを見分けるのに使う。
疑似相関
第三の変数(交絡変数)が両方に影響しているために、見かけ上あるように見える相関。偏相関にすると弱まる・消える。
p値
「関連がない」と仮定したときに、観測された(かそれ以上に極端な)結果が偶然得られる確率。慣例的に0.05未満を「有意」とする。
生態学的誤謬
地域や集団の集計データで見られた関係を、そのまま個人にあてはめてしまう誤り。
年齢調整死亡率
年齢構成の違いを揃えたうえで比較できるようにした死亡率。高齢者の多い県が不当に高く出ないよう補正する。本論文の目的変数。
因果関係相関
相関」と「原因→結果の関係(因果関係)」は別物。相関があっても因果関係があるとは限らない。

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

この論文で使われている手法を「何のためか」「結果をどう読むか」「注意点」に分けて解説します。なお本論文のデータは、独立行政法人統計センターが提供する教育用標準データセット(SSDSE)と各府省の官庁統計を組み合わせています。

🔍 p値(有意確率)とは
何?
「もし本当に関連がなかったら、今回の結果が偶然起きる確率」。
なぜ必要?
相関が偶然か意味あるかを客観的に判断するため。本論文は|r|>0.2の相関にだけ検定を行い有意なものに*を付けた。
読み方
p<0.05で「有意」。ただし小さいp値は「関連が大きい」を意味しない。
🔗 相関分析(Pearson の相関係数)
何?
2つの連続変数の直線的な関連の強さと向きを r(−1〜+1)で数値化する。
どう使う?
散布図を描いて関係を見たうえで、r を計算する。本論文は男女別の自殺率と各指標の r を求めた。
結果の読み方
|r|>0.7で強い、0.4前後で中程度、0.2前後は弱い。本論文は|r|>0.2を関連の目安にした。
⚠️ 注意点
(1)直線関係しか捉えない。(2)相関因果関係を意味しない。(3)標本が少ないと不安定(本論文はn=47)。(4)外れ値に弱い。
🧮 無相関の検定(p値の算出)
何?
「母集団では相関が0」という帰無仮説を検定する。
どう使う?
r と標本数 n から t 統計量を作り、p値を求める。本論文は有意水準5%で判定した。
結果の読み方
p<0.05なら「無相関とは言えない=有意な相関」。
⚠️ 注意点
多数の指標を一度に検定すると、偶然の有意(多重比較)が紛れ込む。本論文も24指標×男女と検定回数が多い点に留意。
🧩 偏相関係数(疑似相関の検討)
何?
第三の変数の影響を除いたうえでの2変数の相関係数
どう使う?
本論文は最低賃金・人口密度・病院数など「効いていそうな変数」を1つ固定し、その影響を除いた偏相関を計算した。
結果の読み方
偏相関にしても|r|>0.2が残れば「真の関連」に近い。0.2以下に下がれば疑似相関と判断。
⚠️ 注意点
取り除いた変数以外の交絡は残る。偏相関で消えなくても因果とは限らない。
📈 散布図と回帰直線によるグループ分け
何?
2変数の散布図に回帰直線を引き、点が直線の上か下かで地域を分類する手法。
どう使う?
本論文は人口密度×最低賃金の散布図で、各県が回帰直線の上側(対価が高い)か下側(低い)かを見た(図14)。
結果の読み方
直線より下側=人口密度の割に賃金が低い県。ここに男性自殺率の高い県が多かった。
⚠️ 注意点
回帰直線は関連の要約であり、上下の境界は連続的。少数の点で傾きが変わりやすい。

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

この研究を発展させる3つの方向です。

① 個票・時系列への拡張
結果 X
本論文は2015年・47都道府県の断面の地域相関を分析した。
新仮説 Y
個人(個票)データや年次の時系列を使えば、地域集計では見えない個人差やコロナ前後の変化を検証できる。
課題 Z
(1)市区町村レベルへ細分化する。(2)自殺者数の年次推移と社会経済指標のラグ関係を調べる。(3)生態学的誤謬を避けるため、可能なら個票研究の先行文献と突き合わせる。
② 相関から多変量・因果推論へ
結果 X
本論文は2変数相関と偏相関で疑似相関を検討した。
新仮説 Y
複数の要因を同時に扱う重回帰分析や、因果関係を意識した設計に進めば、要因の相対的な効きをより厳密に比較できる。
課題 Z
(1)有意だった指標をまとめて重回帰に投入し、多重共線性(最低賃金と人口密度の r=0.81 など)を確認する。(2)自然実験やパネルデータで因果関係に接近する。
③ 政策・支援への接続
結果 X
男女で関連要因が異なることが示された。
新仮説 Y
「変えられる要因(賃金・医療アクセス)」と「変えにくい要因(降水量)」を分け、支援設計に落とし込める。
課題 Z
(1)有意な指標を操作可能性で分類する。(2)病院数・最低賃金など介入余地のある指標に絞り、地域別の重点支援案を作る。

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

手を動かすのが最強の学習です。付属スクリプトをベースに挑戦してください。

★☆☆☆☆ 入門
CH1. 図をそのまま再現する
付属スクリプト 2021_H5_1_shorei.py を実行し、図1〜4を再生成してください。
ポイント: どの図がどのセルから作られているか辿る。
★★☆☆☆ 初級
CH2. 有意判定のしきい値を変える
「|r|>0.2」というしきい値を0.3に変えると、有意扱いになる指標がどう減るか確かめてください。
ポイント: 弱い相関を含めるか否かで結論が変わることを体感する。
★★★☆☆ 中級
CH3. 偏相関を自分で計算する
手元の r と、除去したい変数との r があれば、偏相関の公式で表11・12の値を検算できます。
ポイント: 疑似相関がなぜ消えるのかを式で理解する。
★★★★☆ 上級
CH4. 実データで一部を再計算する
SSDSE(SSDSE-B)にある一般病院数・総人口から「人口1000人あたり病院数」を作り、原論文の r=-0.385 に近づくか試す(自殺率は別途官庁統計が必要)。
ポイント: どこまでがSSDSEで再現でき、どこからが不可能かを見極める。
★★★★★ 発展
CH5. 男女差の別テーマを立てる
同じ「男女で要因が違うか」という問いを、別の指標(例:ストレス関連の行動)で立てて分析してみてください。
ポイント: 問い・データ・手法・限界を1ページにまとめる。
💡 ヒント: 詰まったら本サイトの他の相関分析の論文のスクリプトを参考に。手法ガイド・用語集も活用してください。

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

初心者が抱きやすい疑問に、教育的観点から答えます。

Q1. この分析は自分で再現できますか?
図の「報告値の可視化」は付属スクリプトを実行するだけで再現できます(外部データ不要)。一方で原論文の相関係数そのものを一から計算するには、自殺率・賃金・森林率・病院数などの官庁統計が必要で、これらはSSDSE(教育用標準データセット)には収録されていません。
Q2. なぜ男女を分けて分析したのですか?
自殺率には大きな男女差があり、都道府県別の男女自殺率の相関も r=0.20 と弱かったためです。要因が共通なら相関はもっと強くなるはずで、男女で要因が異なる可能性が高いと考えられました。
Q3. 結論は因果関係を示していますか?
いいえ。本論文は観察データ(それも地域集計)の相関分析であり、因果関係を証明したものではありません。「関連が見られた」という事実の提示にとどまります。
Q4. 弱い相関ばかりなのに結論してよいのですか?
原論文自身が「弱い相関が多い」「標本が47と少ない」「地域指標である」ことを限界として明記しています。だからこそ偏相関で疑似相関を除く工夫をしており、断定ではなく「推測される」という慎重な書き方をしています。
Q5. もっと深く学ぶには?
「統計的因果推論」「疫学入門」などが役立ちます。相関・偏相関の先にある重回帰や自然実験の手法を学ぶと、本論文の限界をどう乗り越えるかが見えてきます。

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

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

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

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

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