はじめに
気象庁の40年分データを分析し続けた。
すると、
- 「東京が一番暑い」
- 「温暖化は一直線に進む」
- 「暖冬なのに大雪が増えた」
という当たり前だと思っていた話が、ことごとく "半分だけ正しかった" 。
そして振り返ってみると、間違っていたのは気候の理解だけではない。私自身も、データ分析で典型的な罠に何度もハマっていた。
この記事では、3本の記事を振り返りながら、データ分析で繰り返し現れた6つの罠を紹介する。
分析を振り返ると、私は何度も同じような落とし穴にハマっていた。
- 平均だけ見て安心する
- 一本のトレンド線を信じる
- 集計単位の影響を忘れる
- 印象的な出来事を過大評価する
- 統計が言える範囲を超えて解釈する
- 面白い結果をそのまま信じる
どれも気候分析だけの話ではない。売上分析でも、アクセス解析でも、アンケート集計でも、同じ罠が繰り返し現れる。
3本シリーズのまとめ
この半年間、気象庁の公開データをPythonで分析し、3本の記事を書いた。
| 記事 | 直感 | データが示したこと |
|---|---|---|
| 第1作:東京の猛暑日は40年で13倍。それでも全国1位ではなかった。なぜ香川が1位? | 東京が猛暑日増加1位のはず | 香川が1位だった |
| 第2作:東京の猛暑日13倍の裏で起きていたこと──気温と海面水温を重ねたら「停滞期」が見つかった | 温暖化は一直線に進んでいる | 1998〜2010年に停滞期があった |
| 第3作:「暖冬なのに大雪」は半分本当だった──40年分の気象庁データで検証した | 暖冬なのに大雪が増えた気がする | 降雪量は減少、ただし変動が拡大 |
3本に共通しているのは、直感が完全に外れていたのではなく、「半分は正しかった」 という点だ。
この「半分の誤差」が、データ分析で繰り返し現れるパターンを教えてくれた。
なぜ直感は「半分だけ正しい」のか
直感は経験の蓄積から生まれる。だから完全に外れることは少ない。
問題は直感が経験の特定の部分しか反映しないことだ。
人間の直感が拾うもの:
・記憶に強く残った出来事(ニュース・体験)
・目につきやすいもの(大都市・極端な事象)
・最近のこと(遠い過去より近い数年)
人間の直感が見落とすもの:
・平均的な状態(普通の日はニュースにならない)
・長期の変化(10年単位の変化は体感しにくい)
・自分が観察していない地域・指標
気象データの分析でこれが如実に現れた。
罠1: 平均だけ見ていると見落とす ── 分散も確認する
第3作の教訓
北陸の降雪量を調べると、1981〜1990年の平均(278cm)より2015〜2024年の平均(185cm)は33%も少ない。
「雪は減った」という結論は正しい。
しかし年ごとの変動係数を計算すると:
| 時代 | 平均最深積雪 | 変動係数(CV) |
|---|---|---|
| 1990年代 | 39cm | 34%(安定・少雪) |
| 2010年代 | 42cm | 70%(不安定・ドカ雪) |
平均は似ているのに、ばらつきが2倍になっていた。
この差こそが「暖冬なのにドカ雪ニュースが増えた気がする」の正体だった。
平均が安定していた1990年代:
30, 35, 40, 42, 38, 45, 37 cm ← 毎年似たり寄ったり。大ニュースなし
変動が大きい2010年代:
20, 25, 120, 15, 18, 95, 22 cm ← 普段は少ない。でも突然ドカ雪。ニュース2回
📌 教訓:平均だけでなく分散(標準偏差・変動係数)を必ず確認する。
→ 詳しい分析過程は第3作「「暖冬なのに大雪」は半分本当だった」で紹介しています。
罠2: 一本の線で説明しない ── 構造変化がないか疑う
第2作の教訓
日本の年平均気温偏差を1981〜2024年で見ると、上昇トレンドは明らか。
しかし全期間を一本の直線で引くのは粗すぎた。
期間を分けてみると:
| 期間 | 変化速度 |
|---|---|
| 1981〜1997年 | +0.51℃/10年 * |
| 1998〜2010年 | ±0.00(停滞) |
| 2011〜2024年 | +1.12℃/10年 *** |
1998〜2010年の13年間は停滞期だった。 全期間で線形回帰を引いても、この停滞は見えない。
from scipy import stats
# ❌ 全期間一本の線で引く(構造変化を見落とす)
slope_all, *_ = stats.linregress(years, temp)
# ✅ 期間を分けて比較する
for y0, y1 in [(1981,1997), (1998,2010), (2011,2024)]:
mask = (years >= y0) & (years <= y1)
sl, _, _, pv, _ = stats.linregress(years[mask], temp[mask])
print(f"{y0}-{y1}: {sl*10:+.2f}℃/10年 p={pv:.3f}")
さらに「本当にブレークがあるのか」は Chow検定(特定の年を境に傾向が変化したかどうかをF検定で調べる手法)で確かめた。
日本近海SST → Chow(2010年) : **p = 0.0008 *(強く有意)
グラフで「見える」と、統計的に「言える」は別の話だ。
📌 教訓:長期データを分析するとき、期間全体で一本の線を引く前に、構造変化がないか疑う。Chow検定は手軽で強力。
→ 詳しい分析過程は第2作「気温と海面水温を重ねたら停滞期が見つかった」で紹介しています。
罠3: 集計単位を変えると違う顔が見える ── スケールを疑う
第1作の教訓
「猛暑日が増えた都道府県ランキング」を作ると、東京は全国20位だった。
東京に住んでいる人が「東京が一番暑いはず」と感じるのは自然だ。だが全国47県のデータを見ると、香川(+23.0日)が1位だった。
統計では「集計単位を変えると結果が変わる問題」(MAUP: Modifiable Areal Unit Problem)として知られている。
全国平均を見ると: 日本全体で猛暑日が増えた
東京だけ見ると: 東京は13倍になった(印象は強烈)
47県で見ると: 香川が1位、東京は20位
どの「スケール」で見るかで、見える景色が変わる
データを集計する前に「このスケールで集計して何が見えなくなるか」を考えること。
📌 教訓:全体平均・地域別・個別の3レベルで確認する習慣を持つ。集計すると消える情報がある。
→ 詳しい分析過程は第1作「東京の猛暑日は40年で13倍。それでも全国1位ではなかった」で紹介しています。
罠4: 人は派手な出来事を覚えている ── 印象を数えない
第3作の教訓
「最近の夏は異常に暑い気がする」という感覚は正しい。
しかし「2010年代から急に変わった気がする」という感覚については、もう少し精密に考える必要があった。
人間の記憶に強く残るのは平均的な日ではなく、例外的な出来事だ。
北陸の冬(1990年代):
30, 35, 40, 42, 38, 45 cm ← 毎年似たり寄ったり。記憶に残らない。
北陸の冬(2010年代):
20, 25, 120, 15, 18, 95 cm ← 普段は少ない。でも120cmの年がニュースに。
2018年の福井147cm、2021年の関越道立ち往生。これらは強烈に記憶に残る。「そうでもない年」はほとんど記憶されない。
これは認知科学でいう可用性ヒューリスティック(頭に浮かびやすいもの=頻繁に起きているもの、と脳が誤解する現象)によるものだ。
平均が下がったことで、極端な年のインパクトが相対的に大きくなった。
📌 教訓:「○○が増えた気がする」という直感を検証するとき、全年の平均・中央値を必ず計算する。人の記憶は極値に偏っている。
→ 詳しい分析過程は第3作「「暖冬なのに大雪」は半分本当だった」で紹介しています。
罠5: 「言えること」と「まだ言えないこと」を混ぜない
第2作の教訓
Chow検定で2010年のブレークを検定したとき、結果は:
| 指標 | Chow(2010年) |
|---|---|
| 日本年平均気温偏差 | p = 0.044 * |
| 日本近海SST(海面水温) | p = 0.0008 *** |
| 猛暑日数 | p = 0.209 n.s. |
SSTは非常に有意だが、猛暑日数はChow検定で有意でなかった。
記事ではこれを正直に書いた。
✅ 言えること
「2010年前後に、気温偏差とSSTの上昇速度が統計的に変化した」
❌ まだ言えないこと
「猛暑日の増加ペースが2010年を境に変わった」
(傾向は見えるが、Chow検定で確定できない)
p=0.044は有意水準0.05をわずかに下回るものの、「強い証拠」とは言えない。本文では「2010年前後」という表現にとどめた。
📌 教訓:p値の大小で主張の強さを変える。「有意だった」だけで強い主張をしない。「言えること/まだ言えないこと」を明示する習慣が信頼性を高める。
→ 詳しい検証過程は第2作「気温と海面水温を重ねたら停滞期が見つかった」で紹介しています。
罠6: 面白い結果をそのまま信じない ── 自分で疑う
第1作の教訓
香川が猛暑日増加1位という結果が出たとき、最初に疑った。
- 2024年が外れ値では? → 2024年を除いた2020〜2023年でも20.8日で1位
- 観測点変更では? → 急変年(1994、2010、2024)は全国的猛暑年と一致。変更の痕跡なし
- 集計ミスでは? → コードを再確認
3点を確認して初めて「香川1位は信頼できる」と判断した。
この「自分の面白い結果を自分で疑う」プロセスこそが、データ分析記事の信頼性を生む。
Qiita読者が反応するのは「香川が1位でした」という結論より「香川が1位だったので自分で疑った」という過程だ。
# 外れ値確認の例
# 2024年を除いた2020-2023年平均
d_ex2024 = df_agg[(df_agg["pref"]=="香川") &
df_agg["year"].between(2020, 2023)]
print(d_ex2024["mosho_days"].mean()) # 出力: 20.75 → 依然として1位
📌 教訓:面白い結果が出たときこそ、外れ値・データ品質・集計ミスを疑う。「自分で疑って確認した」というプロセスの透明性が読者の信頼を得る。
→ 詳しい検証過程は第1作「東京の猛暑日は40年で13倍。それでも全国1位ではなかった」で紹介しています。
まとめ:直感とデータは敵ではない
6つの気づきをまとめると:
| # | 罠 | 対応する分析技術 |
|---|---|---|
| 1 | 平均だけ見ていると見落とす | 分散・変動係数を必ず確認する |
| 2 | 一本の線で説明してしまう | 期間を分けて比較、Chow検定 |
| 3 | 集計単位の影響を忘れる | 複数スケールで確認(MAUP(可変面積単位問題)意識) |
| 4 | 印象的な出来事を過大評価する | 全年の平均・カウントで検証 |
| 5 | 言えることと言えないことを混ぜる | p値の大小で主張の強さを調整 |
| 6 | 面白い結果をそのまま信じる | 外れ値・データ品質・再現確認 |
直感は否定するものではない。長年の経験や肌感覚は「何かが変わっている」というシグナルとして機能する。
データ分析の役割はそのシグナルを精密にすることだ。
「なんとなくそう思ってた」→「データで確認すると半分正しかった」→「残り半分に意外な構造があった」
この流れが繰り返されるのが、データ分析の面白さだと思う。
気候変動は単純な「暑くなる・寒くなる」の話ではない。平均と極端現象、そして人間の記憶が重なることで、私たちはしばしば実際とは違う景色を見ている。
データはその「違い」を教えてくれる。
使用データ:気象庁 日次観測・年次統計(47都道府県 1981〜2024年)
分析言語:Python(pandas, scipy, matplotlib)