この教材は、原論文が使ったデータそのものを使えていません。そこで代わりのデータで同じ問いを追いかけ、結論の向き(増える/減る、強い/弱い)が原論文と一致するかを確かめます。「同じ数値が出る」ことは目標にしていません。
| 原論文が使ったデータ | SSDSE-D・犯罪統計・SSDSE-A・社会教育調査・公民館調査(公民館類似施設)・国勢調査報告・医療施設調査 分析単位:都道府県 中核手法:相関分析・ウェルチのt検定 |
|---|---|
| この教材が使うデータ |
|
| 原論文(PDF) | オンラインゲームと犯罪の関係 審査員奨励賞/中川 紗喜、佐原 凛、松永 梨那、田浦 亜美、小島 有加(愛知県立東海樟風高等学校) |
原論文と同じ粒度のデータは、この教材にも同梱しています。これを読み込めば、原論文と同じ細かさで分析をやり直せます(下の「🐍 ブラウザで動かす」でコードを書き換えて試せます)。ただし原論文が使った項目がすべて収録されているとは限りません。足りない項目は、上の「できないこと」に書いた出典から取ってくる必要があります。
▶ ここに書いてある分析は、ページ下部の「🐍 ブラウザで動かす」でそのまま実行できます(インストール不要)。動かしているのは code/2022_H5_11_shorei.py(296 行)そのものです。
このページの図4(人口10万人あたりの公民館数の再計算)は、以下の手順で自分で再現できます。コードの編集は不要です。(ゲーム利用率・殺人件数・公民館数・精神科病院数そのものはSSDSE-Bに無いため、図1〜図3は原論文の掲載データ/報告値を可視化します。)
data/raw/ フォルダに入れます。html/figures/ に自動保存されます。
最近ふえている凶悪犯罪に、私たちの生活スタイルの変化が影響しているのではないか——著者はその一つとしてオンラインゲームに着目した。2019年に世界保健機関(WHO)が「ゲーム障害」を正式な疾病と認定し、過剰なゲーム利用がひきこもり・睡眠障害・視力障害などを引き起こすとされている。2020年には香川県で「ネット・ゲーム依存症対策条例」が制定され(子どものゲーム利用は1日60分などの目安)、「科学的根拠」の有無が訴訟の争点にもなった。
著者はさらに、2008年の秋葉原無差別殺傷事件の犯人が「自分にはネットにしかつながりがなかった」と供述したことにも触れ、オンラインゲームと犯罪には一定の関係があるのではないかという仮説を立てた。研究の目的は、この関係を都道府県データで確かめ、犯罪を起こさないための対策として何が必要かを考えることである。
高校生の部 社会生活基本調査・犯罪統計 相関分析・無相関の検定 ウェルチのt検定 2群の平均の差
著者は複数の公的統計を都道府県単位で組み合わせている。オンラインゲーム利用率は「家庭でテレビゲーム・パソコンゲーム(携帯用を含む)をした人の割合(行動者率)」を用いた。年度が2015〜2016年に分かれている点は注意が必要である。
| 項目 | 年度 | 出典 |
|---|---|---|
| オンラインゲーム利用率(テレビ・パソコンゲームの行動者率) | 2016 | SSDSE-D(2021)総務省統計局 社会生活基本調査 |
| 殺人事件の認知件数 | 2016 | e-Stat 犯罪統計 |
| 都道府県別の公民館数(公民館類似施設) | 2015 | SSDSE-A(2020)文部科学省 社会教育調査 |
| 都道府県別の総人口 | 2015 | SSDSE-A(2020)総務省統計局 国勢調査報告 |
| 精神科病院数 | 2015 | e-Stat 医療施設調査 |
都道府県別のオンラインゲーム利用率と殺人事件認知件数の相関係数を求める。散布図の楕円で囲んだ「殺人がほぼ一定に抑えられている群」に着目したのが、次の2群比較の出発点である。
殺人事件が「年10件超」の群と「10件以下」の群に分け、ウェルチのt検定(2群の分散が等しくないと仮定した2標本検定)を行った。帰無仮説は「2群の母平均に差はない」、対立仮説は「差がある」。両側検定・有意水準5%で、公民館数と精神科病院数のそれぞれについて検定した。
都道府県別のオンラインゲーム利用率(横軸)と殺人事件認知件数(縦軸)の関係を、原論文 図3 に対応する散布図で示す。この図は原論文の掲載データをそのまま可視化したもので、点の座標も回帰直線の傾き(R²=0.4863)も原論文の報告値に基づく。
144 145 146 147 148 149 150 151 152 | print('=== [1] オンラインゲーム利用率 × 殺人事件認知件数(相関) ===') r_calc = np.corrcoef(sc['game'], sc['murder'])[0, 1] print('原論文の報告値:相関係数 r = 0.697, R^2 = 0.4863(正の相関)') print(f'掲載データ47都道府県からの検算(再計算値):r = {r_calc:.4f}, R^2 = {r_calc**2:.4f}') print(f' → 報告値 0.697 / 0.4863 を再現(掲載データは正しく転記されている)') print(f' 最多:大阪(利用率37.3%, 殺人110件)・東京(40.6%, 81件)・愛知(39.4%, 60件)') print(f' 最少:福井/富山(殺人1件, 利用率33.0/32.0%)。利用率は東京40.6%が最高、沖縄28.5%が最低。') # ============================================================ |
=== [1] オンラインゲーム利用率 × 殺人事件認知件数(相関) === 原論文の報告値:相関係数 r = 0.697, R^2 = 0.4863(正の相関) 掲載データ47都道府県からの検算(再計算値):r = 0.6974, R^2 = 0.4863 → 報告値 0.697 / 0.4863 を再現(掲載データは正しく転記されている) 最多:大阪(利用率37.3%, 殺人110件)・東京(40.6%, 81件)・愛知(39.4%, 60件) 最少:福井/富山(殺人1件, 利用率33.0/32.0%)。利用率は東京40.6%が最高、沖縄28.5%が最低。
散布図の「殺人が抑えられている群」に着目した著者は、殺人件数で都道府県を「10件超」(n=21)と「10件以下」(n=26)の2群に分け、人口10万人あたりの公民館数・精神科病院数に差があるかをウェルチのt検定で調べた。
130 131 132 133 134 135 136 137 138 139 140 141 | def welch(a, b): """報告要約(平均・分散・標本数)から Welch の t・自由度・両側p を再計算(検算)。""" se = np.sqrt(a['var'] / a['n'] + b['var'] / b['n']) t = (a['mean'] - b['mean']) / se df = (a['var'] / a['n'] + b['var'] / b['n']) ** 2 / ( (a['var'] / a['n']) ** 2 / (a['n'] - 1) + (b['var'] / b['n']) ** 2 / (b['n'] - 1)) p = 2 * stats.t.sf(abs(t), df) return t, df, p # ============================================================ |
=== [2] t検定:人口10万人あたりの公民館数(殺人10件超 vs 10件以下) === 原論文の報告値: t = -3.3093, 自由度 = 37, 両側p = 0.002092(有意水準5%で有意) 群平均:殺人10件超 = 11.50(n=21) < 10件以下 = 24.69(n=26) 報告要約(平均・分散・n)からの検算(再計算値): t = -3.3093, 自由度 ≒ 36.6, 両側p = 0.002109 → 報告のt=-3.3093・p=0.0021 を再現。殺人が多い群ほど公民館が少ない(負の向き)。 === [3] t検定:人口10万人あたりの精神科病院数(殺人10件超 vs 10件以下) === 原論文の報告値: t = -3.7592, 自由度 = 45, 両側p = 0.000489(有意水準5%で有意) 群平均:殺人10件超 = 0.814(n=21) < 10件以下 = 1.312(n=26) 報告要約(平均・分散・n)からの検算(再計算値): t = -3.7592, 自由度 ≒ 44.9, 両側p = 0.000490 → 報告のt=-3.7592・p=0.00049 を再現。殺人が多い群ほど精神科病院が少ない(負の向き)。
以下の相関・検定結果はすべて原論文の報告値である(本ページの検算でも再現済み)。
| 分析 | 報告された結果 | 解釈(著者) |
|---|---|---|
| ゲーム利用率×殺人件数の相関 | r = 0.697(R²=0.4863)正の相関 | ゲーム利用率が高い地域ほど殺人が多い傾向 |
| 公民館数の2群t検定 | t=−3.309, p=0.0021(有意) | 殺人が少ない地域は「つながりの場」=公民館が多い |
| 精神科病院数の2群t検定 | t=−3.759, p=0.00049(有意) | 殺人が少ない地域は治療体制=精神科病院が多い |
図1〜図3はSSDSE-Bに無いデータの報告値可視化だった。ではSSDSE-Bだけで何が再現できるか。答えは「人口10万人あたり」の分母=総人口である。原論文が正規化に使った総人口をSSDSE-Bから復元し、公民館数の per-100k を実データで再計算してみる。
skiprows 相当で読み込み、先頭列 SSDSE-B-2026(年度)が2015の総人口(A1101)を取り出す。原論文掲載の公民館数(実数)をこの総人口で割り、報告された per-100k を実データで再計算する。178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 | raw = pd.read_csv(DATA_B, header=0, encoding='cp932') data = raw.iloc[1:].copy() data['year'] = pd.to_numeric(data['SSDSE-B-2026'], errors='coerce') pref_col = raw.columns[2] d15 = data[data['year'] == 2015].copy() pop15 = dict(zip(d15[pref_col], pd.to_numeric(d15['A1101'], errors='coerce'))) print(f'SSDSE-B の2015年 総人口(A1101) を読み込み:{len(pop15)}都道府県') print(f" 例)大阪府 {int(pop15['大阪府']):,}人・東京都 {int(pop15['東京都']):,}人・北海道 {int(pop15['北海道']):,}人") print(' → 原論文 表3 の総人口(国勢調査2015)と完全一致。per-100k の分母を復元できる。') rows, maxdiff = [], 0.0 for pref, n in KOMINKAN.items(): pop = pop15[pref] calc = n / (pop / 100000) rep = KOMINKAN_REP_PER100K[pref] rows.append((pref, n, pop, calc, rep)) |
=== [4] SSDSE-B(総人口)で「人口10万人あたりの公民館数」を実再現 ===
SSDSE-B の2015年 総人口(A1101) を読み込み:47都道府県
例)大阪府 8,839,469人・東京都 13,515,271人・北海道 5,381,733人
→ 原論文 表3 の総人口(国勢調査2015)と完全一致。per-100k の分母を復元できる。
公民館数(原論文掲載) ÷ (SSDSE-B総人口/10万) で per-100k を再計算:
例)大阪府 260館 ÷ 88.39 = 2.94(報告値2.94)
長野県 1520館 ÷ 20.99 = 72.42(報告値72.42・最多)
47都道府県すべてで再計算値と原論文の報告per-100kの最大差 = 0.005(実質一致)総人口/10万 で割ると、大阪2.94・長野72.42(最多)など、47都道府県すべてで報告値との最大差0.005——実質完全一致で per-100k を復元できた。正規化という一見地味な前処理も、こうして実データで裏が取れる。
著者は3つの結果から、次のように解釈した(すべて報告値に基づく著者の考察)。
①相関:オンラインゲーム利用率と殺人事件認知件数には正の相関があり、利用率が高い地域ほど殺人が起きている。②公民館:殺人が多い地域は公民館が少ない。地域社会の「つながり」の場としての公民館が、犯罪の発生抑制にいくらか寄与しているのではないか。③精神科病院:殺人が多い地域は精神科病院が少ない。ゲームに起因する障害を啓発し積極的な治療を促すことが、犯罪抑制に寄与するのではないか。
原論文は SSDSE-D 系(社会生活基本調査)のゲーム行動データを使いました。同じ SSDSE-D-2023 の「スマートフォン・家庭用ゲーム機などによるゲーム」行動者率を確認します。
1 2 3 4 5 6 7 8 9 10 11 | 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') game = dv('スマートフォン・家庭用ゲーム機などによるゲーム') print('ゲーム行動者率 上位5県:') for p2, v in game.nlargest(5).items(): print(f' {p2}: {v:.1f}%') print('ゲーム行動者率 下位5県:') for p2, v in game.nsmallest(5).items(): print(f' {p2}: {v:.1f}%') print(f'全国範囲: {game.min():.1f}% 〜 {game.max():.1f}%(差は {game.max()-game.min():.1f}pt)') |
本研究は、都道府県別のオンラインゲーム利用率と殺人事件認知件数の正の相関(r=0.697)を出発点に、殺人件数で2群に分けてウェルチのt検定を行い、殺人が少ない地域ほど公民館(p=0.0021)と精神科病院(p=0.00049)が有意に多いことを示した(いずれも報告値)。相関で終わらせず「では何が犯罪を抑えているのか」に踏み込み、つながりの場と治療体制という具体的な政策提言まで導いた探究の流れが見どころである。
このページの図4(人口10万人あたりの公民館数の再計算)は、以下から再現できます。
🐍 再現コード(.py) 📊 SSDSE-B-2026.csv
※ 図1(散布図)と図2・図3(t検定の群平均)は、ゲーム利用率・殺人件数・公民館数・精神科病院数がSSDSE-B外のため、原論文の掲載データ・報告要約を可視化したものです(相関係数・t値は掲載データ/報告要約から検算して報告値を再現)。図4はSSDSE-Bの総人口による実再現です。新しい数値の捏造は一切していません。
この研究を読むとき・まねするときに陥りやすい誤解を整理する。
クリックすると各用語の詳しい解説ページに移動できます。
この研究で使われている手法を、手を動かす順に説明する。
施設数 ÷ (総人口 / 100000)。「ゲームと犯罪に相関があり、つながり・治療体制が抑制要因かもしれない」という結論は、次の研究の出発点になる。
再現コードを少し変えるだけで試せる課題を、易しい順に用意した。
data['year'] == 2015 を 2020 に変えて、人口10万人あたりの公民館数がどれだけ変わるか確かめよう(分母の年で値が動く)。np.corrcoef の代わりに scipy.stats.spearmanr でスピアマンの順位相関を計算し、外れ値(大都市)の影響が弱まるか比べよう。statsmodels の sm.OLS を使う。「地域データの相関と群比較で社会現象の関連を探る」発想は、公衆衛生や行政で広く使われている。
この研究を読んで浮かびやすい疑問に答える。
この論文を理解できたか、クリックで確認しましょう。間違えても解説が出ます。
このページの分析は、この画面の中でそのまま実行できます。
Python をインストールする必要も、CSV をダウンロードする必要もありません。
下のセルの 「▶ ブラウザで実行」 を上から順に押すか、
「▶ 最初から全部実行」 で一気に流してください。
表示されるのは、本文の図表とまったく同じ計算の結果です
(動かしているのは再現スクリプト code/2022_H5_11_shorei.py そのもの)。
コードは書き換えられます。「✏️ 書き換える」で数字や変数を変えて ▶ を押すと、 結果がどう変わるかをその場で確かめられます(元に戻すボタンつき)。 ページを開いた時点で裏で実行環境の準備が始まっているので、待ち時間はほとんどありません。 初回だけ実行環境の取得にインターネット接続が必要です。