はじめに
「大阪は怖い」「ひったくりが多い」「犯罪大国」——
日本人なら一度は聞いたことがあるイメージです。
でもそれはデータで見ても正しいのか?
e-Stat(政府統計の総合窓口)の警察庁犯罪統計を使って検証してみました。
分析を進めるうちに、最初の問いは変わっていきました。
最初:「大阪は本当に治安が悪いのか?」
最終:「日本の犯罪率を決める構造的な要因は何か?」
その過程でわかったことをすべて書きます。
使用データ・環境
-
データ: e-Stat 警察庁犯罪統計(statsDataId:
0003195002,0003195003,0000010111) -
社会経済データ: 社会・人口統計体系 都道府県データ(statsDataId:
0000010101〜0000010111) - 期間: 犯罪統計 1975〜2023年、相関分析は 2020年(国勢調査年)
- 環境: Python 3.x + pandas / scipy / matplotlib
- 取得方法: e-Stat REST API v3(無料、APIキー要登録)
Step 1:まず「人口10万人当たり」で見直す
犯罪の絶対件数で比べるのは不公平です。東京と鳥取では人口が20倍違います。
刑法犯認知件数 ÷ 人口 × 100,000 = 犯罪率で47都道府県を並べると:
| 順位 | 都道府県 | 犯罪率(/10万人) | 備考 |
|---|---|---|---|
| 1 | 大阪府 | 1,382 | — |
| 2 | 東京都 | 987 | |
| 3 | 兵庫県 | 962 | |
| 4 | 埼玉県 | 953 | |
| 5 | 愛知県 | 936 | |
| … | … | … | |
| 47 | 秋田県 | 291 |
(2016年・夜間人口ベース)
大阪は2位の東京の1.4倍。確かに突出しています。
昼間人口で補正すると?
大阪は昼間に人口が集まるビジネス・観光都市です。「夜に住んでいる人口」で割ると不公平かもしれません。
昼夜人口比(昼間人口/夜間人口)で補正すると:
| 都道府県 | 夜間人口補正(L1) | 昼間人口補正(L3) | ランク変化 |
|---|---|---|---|
| 大阪府 | 1位 (1,382) | 1位 (1,321) | 変わらず |
| 東京都 | 2位 (987) | 8位 (853) | ▼6 |
| 埼玉県 | 4位 (953) | 2位 (1,102) | ▲2 |
| 千葉県 | 6位 (918) | 3位 (1,051) | ▲3 |
東京は昼間人口補正で2位→8位に急落。 東京の犯罪は「昼に働きに来た人がいる間に起きている」、つまり人流が主因です。
一方で大阪は補正しても1位のまま。昼夜の人口バランスだけでは説明しきれない何かがあります。
Step 2:何の犯罪が多いのか(種別分解)
「大阪で何が多いのか」を2016年の重要犯罪統計(人口10万人当たり)で見ると:
| 犯罪種別 | 大阪/10万人 | 全国順位 |
|---|---|---|
| ひったくり | 9.12 | 1位 |
| 強盗 | 4.54 | 1位 |
| 強制わいせつ | 10.59 | 1位 |
| 放火 | 2.08 | 1位 |
| 殺人 | 1.24 | 2位(1位は沖縄) |
軽犯罪(ひったくり)も重犯罪(強盗・放火)も両方1位です。
しかし、一つのパターンが見えます。これらは全て「人が集まる場所で起きる犯罪」です。
- ひったくり → 繁華街・人通りが多い場所
- 強盗 → 深夜・人流が多い場所
- 強制わいせつ → 繁華街・酔客が多い場所
大阪の特徴は殺人のような「計画的犯罪」ではなく、機会犯罪が突出している点です。
Step 3:50年の経年変化
2001〜2023年の推移を見てみます。
| 年 | 大阪の犯罪率 | 全国順位 | 一言 |
|---|---|---|---|
| 2001 | 3,710 | 1位 | 歴史的ピーク |
| 2010 | 2,056 | 1位 | 着実に減少 |
| 2016 | 1,382 | 1位 | — |
| 2020 | 773 | 1位 | コロナ禍の最低値 |
| 2023 | 915 | 1位 | コロナ明けで反発 |
2001年→2023年で75%減少。しかし全国1位は一度も変わっていない。
「大阪が改善した」のは事実です。でも「全国1位を脱した」ことは一度もない。

ここに重要なヒントがあります。
大阪だけが減ったのではなく、日本全体の犯罪が激減した。大阪は日本の縮図として減った。
だとすれば、問うべきは「なぜ大阪だけ高いのか」ではなく「なぜ日本全体の犯罪が減ったのか」かもしれません。
Step 4:相関分析 — 犯罪率を説明する変数を探す
47都道府県のデータを使って、何が犯罪率と相関するかを調べました。
分析変数(2020年):
説明変数候補:
人口密度(人/km²)
外国人比率(在留外国人数/総人口)
高齢化率(65歳以上人口割合)
昼夜人口比
失業率(完全失業者数/労働力人口)
生活保護率(被保護者数/人口千人)
1人当たり県民所得(万円)
結果(Pearson相関係数)
| 変数 | 相関係数 r | 有意性 |
|---|---|---|
| 外国人比率 | +0.705 | *** |
| 高齢化率 | -0.619 | *** |
| 人口密度 | +0.546 | *** |
| 1人当たり所得 | +0.397 | ** |
| 生活保護率 | +0.155 | ns |
| 失業率 | +0.131 | ns |
| 昼夜人口比 | -0.010 | ns |
*p<0.05 **p<0.01 ***p<0.001
驚きの発見が2つあります。
発見①:「失業→犯罪」は都道府県レベルでは見えない
「貧しいから犯罪が増える」は世間的なイメージですが、都道府県レベルの相関は r=0.131(有意でない)。
これは「関係がない」のではなく「都道府県集計では粗すぎる」可能性が高いです。大阪府内でも西成と北摂では失業率が全く違います。平均値になると効果が消えます。
発見②:所得は都市化の代理変数だった
「所得が高い都道府県ほど犯罪率が高い」という一見不思議な結果(r=+0.397)。でも偏相関分析(人口密度を制御)で確認すると:
所得 vs 犯罪率:単純r=+0.397 → 偏相関r=+0.057(有意でない)
所得の効果は消えました。「豊かな県で犯罪が多い」のではなく「都市にお金も人も犯罪も集まる」だけ。所得は都市化の代理変数でした。
Step 5:外国人比率の慎重な解釈
外国人比率が r=0.705 で最強の相関を示しました。ここは解釈に注意が必要です。
「外国人が犯罪を起こす」と直結させるのは危険です。
外国人比率が高い都道府県は:東京・愛知・大阪・群馬・静岡 = いずれも都市・工業集積地。
そこで人口密度を制御した偏相関分析を実施:
外国人比率:単純r=+0.705 → 偏相関r=+0.572(*** 依然有意)
係数は下がりましたが消えません。
ただし、ここから「外国人が犯罪を増やす」という因果関係を導くことはできません。
今回の分析で言えるのは「外国人比率が高い都道府県ほど犯罪率も高い傾向がある」という相関だけです。47サンプルの都道府県間比較では、交絡変数の完全な除去は困難です。
より適切な仮説は、外国人比率そのものではなく、それが代理している**「転入転出の多さ」「賃貸居住率」「人口の流動性」**が効いている可能性です。地域への帰属意識と犯罪抑制の関係(非公式社会統制論)と整合する解釈ですが、これを確かめるには人口流動率や持ち家率などの追加変数が必要です。外国人比率の解釈については、今後の研究課題として留保します。
Step 6:最大の発見 — 高齢化が「全犯罪を止める」
今回の分析で最もインパクトのある結果です。
犯罪種別ごとに高齢化率との相関を見ると:
| 犯罪種別 | 高齢化率との相関 | 人口密度を制御後 |
|---|---|---|
| 凶悪犯(殺人・強盗等) | -0.63 *** | -0.41 ** |
| 窃盗犯 | -0.60 *** | -0.40 ** |
| 知能犯(詐欺等) | -0.50 *** | -0.30 * |
| 粗暴犯(傷害・暴行等) | -0.41 ** | -0.28 * |
| 風俗犯(わいせつ等) | -0.37 ** | -0.24 * |
全犯罪種別でマイナス、かつ有意。
通常の相関分析では「この変数は窃盗に効くが暴力犯罪には効かない」という種別依存が出ます。しかし高齢化率はあらゆる犯罪種別を一様に抑制しています。
これは犯罪学の「年齢-犯罪曲線」(Age-Crime Curve)と完全に整合します。犯罪の主役は15〜30歳前後。高齢化が進むとこの年齢層が薄くなるため、犯罪の「担い手」が物理的に減ります。
仮説:日本の犯罪激減は景気回復より少子高齢化で説明できる
日本の刑法犯認知件数は2002年の285万件から2023年の約70万件へ、20年で75%減少しました。この期間、何が変わったか:
- 経済成長:バブル崩壊後、停滞期が長く続いた
- 高齢化率:2002年の18.5% → 2023年の29.1%(急上昇)
犯罪の減少トレンドと高齢化率の上昇トレンドが連動している可能性は高く、今後の追加検証が必要なテーマです。
なお、「高齢化が犯罪を抑制する」という結果は、高齢化を肯定するものではありません。労働力不足・社会保障費の増大・地域コミュニティの弱体化など、高齢化が引き起こす別の深刻な課題は多く存在します。ただし少なくとも犯罪統計という一つの指標に限っては、高齢化が強力な抑制要因として機能している可能性が示唆されました。
Step 7:残差分析 — 説明できない県は何が違う?
人口密度で犯罪率を回帰し、予測値と実際値の差(残差)を見ます。
残差 = 実際の犯罪率 − 人口密度から予測した犯罪率
プラス = 都市構造以上に犯罪が多い
マイナス = 都市構造より犯罪が少ない
| 都道府県 | 実際の犯罪率 | 予測値 | 残差 |
|---|---|---|---|
| 兵庫県 | 627 | 414 | +213 |
| 大阪府 | 773 | 620 | +154 |
| 群馬県 | 514 | 396 | +118 |
| 東京都 | 589 | 711 | ▲122 |
| 沖縄県 | 409 | 414 | ▲5 |
3つの興味深いパターンが見えます。
東京:残差マイナス(-122)
人口密度から予測されるより犯罪率が低い。防犯カメラ密度・交番密度・警察官数が多いことが抑制要因の候補。また「東京は通勤流入が多いが犯罪は居住区で起きる」という可能性も。
沖縄:残差ほぼゼロ(-5)
沖縄の犯罪率は人口密度だけでほぼ完全に説明できる。今回用いた変数の範囲では、沖縄固有の構造的要因は観測されなかった。(ただし今回使用していない変数——観光客数・飲酒文化・米軍基地の影響など——が効いている可能性は残ります。)
兵庫:残差最大(+213)
大阪より大きい。これはMAUP(空間集計単位問題) の可能性があります。兵庫には神戸市・阪神間(高密度)と但馬・丹波(低密度農村)が同居しています。全県平均の「人口密度」が実態を反映できず、残差が大きく出た可能性があります。

結論:「大阪だから」ではなく「構造的必然」
今回の分析を一言でまとめると:
犯罪率の60〜70%は「都市化」と「人口構造(高齢化率)」で説明できる。(人口密度・高齢化率・外国人比率を用いた重回帰分析の決定係数 R² ≈ 0.65 より概算)
大阪が犯罪率1位なのは「大阪人の気性が荒いから」ではなく、高人口密度 + 低高齢化率 + 大規模繁華街という都市構造の必然です。
逆に言えば、説明できない残りの30〜40% こそが地域固有の問題です。
大阪のケースでは:
- 繁華街(ミナミ・キタ)の深夜集中的な人流
- ひったくり・強盗・わいせつという「繁華街型犯罪」の突出
が残差部分を説明すると思われます。
未解決の問い(今後の分析テーマ)
香川の謎
高齢化率が高い(31.9%)のに犯罪率が高い。知能犯(詐欺)が全国比2倍。高齢化は犯罪を抑制するはずなのに、なぜ香川では逆? 独居高齢者率・特殊詐欺被害額などの追加変数が必要です。
外国人比率の正体
人口密度を制御しても残る効果(r=0.705→0.572)は何を意味するのか。「外国人比率」が実際に測っているのは「人口流動性」「地域コミュニティの強度」かもしれない。
市区町村レベルの分析
都道府県レベルでは「西成と北摂」が平均化されてしまいます。犯罪統計が市区町村単位で公開されれば、失業率・貧困率との関係も見えてくるはずです。
おわりに
「大阪は治安が悪い」という問いから始めた分析は、最終的に「高齢化が日本の犯罪を止めているかもしれない」という仮説に辿り着きました。
これはデータ分析の醍醐味だと思います。最初の問いより、分析過程で浮かび上がった問いの方が面白かった。
「直感 vs データ」の対立より、「データが直感を更新する」過程が大事。今回の分析がその一例になれば幸いです。
次回記事
香川の謎、兵庫の謎が解明!
データ分析で一番面白いのは外れ値だった ― 香川と兵庫の犯罪率を追跡して分かったこと
付録:使用したスクリプト(GitHub)
# e-Stat API キーの設定
config/estat_config.json:
{
"app_id": "YOUR_APP_ID"
}
# 主要スクリプト
scripts/
├── fetch_crime_stats.py # 犯罪統計取得(2016年・47都道府県)
├── fetch_crime_trend.py # 経年データ取得(1975〜2023年)
├── fetch_socioeconomic.py # 社会経済変数取得(高齢化率・失業率等)
├── osaka_crime_analysis.py # L1〜L4 多段階犯罪率分析
├── osaka_crime_trend.py # 経年トレンド分析
├── crime_correlation.py # 相関分析 v1
└── crime_correlation_v2.py # 相関分析 v2(VIF・偏相関・種別別)
