記録される熱帯低気圧は本当に増えているのか? — IBTrACSで170年の嵐を読み解く

記録される熱帯低気圧は本当に増えているのか? — IBTrACSで170年の嵐を読み解く

公開日: 2026-07-09 カテゴリ: MakeoverMonday


今週のお題

今週の MakeoverMonday は、IBTrACS(International Best Track Archive for Climate Stewardship) による歴史的な熱帯低気圧のデータです。IBTrACS は NOAA(米国海洋大気庁)が世界中の気象機関のベストトラック記録を統合したデータセットで、1台風あたり6時間ごとの観測点(緯度・経度・最大風速・中心気圧・カテゴリなど)が1行ずつ記録されています。

期間は 1840年〜2012年、範囲は全球。北大西洋・東太平洋・西太平洋・北インド洋・南インド洋・南太平洋といった主要な海盆(Basin)ごとに、無数の嵐の軌跡が収められています。

今回のダッシュボードで立てた問いはシンプルです——「記録される熱帯低気圧は、本当に増えているのか?」

グラフを素直に見れば、答えは「増えている」。でも、その増加は「嵐そのものが増えた」のか、「観測・記録の網が細かくなった」のか。1枚のダッシュボードで、その両面を並べて考えられる構成をめざしました。

作成したダッシュボード

https://is.gd/zRgyEg

タイトルは 「Are Recorded Tropical Cyclones Really Increasing?」。4つのビューを1画面に配置しています。

  • 世界分布マップ:全嵐の観測点を、カテゴリ(強度)で色分けしてマッピング。西太平洋・北大西洋・インド洋の熱帯ベルトに集中している様子が一目でわかります。
  • 最大風速 × 最低中心気圧の散布図:1台風=1点。右下がりの強い負の相関——風速が上がるほど中心気圧は下がる、という物理法則がきれいに現れます。
  • 10年ごとの記録数(折れ線):Tropical Storm と Categories 1〜5 を分けて集計。どちらも1940年代を境に急上昇します。
  • 長期トレンドと構成比:上段はカテゴリ別の嵐数の推移、下段は同じ期間のカテゴリ構成比(100%積み上げエリア)。数は激増しても、構成比は大きくは変わっていないことが見えてきます。

この「数は増えたが、強度の内訳は大きく変わっていない」という対比が、今回いちばん伝えたかったメッセージです。観測衛星やブイの普及で「拾える嵐」が増えた影響を、データストーリーとして提示しました。

工夫した点・こだわり

  • 問いをタイトルに置く:「〜は本当に増えているのか?」と疑問文で掲げ、冒頭のサブタイトルに結論(=観測・記録の変化が増加の一因)を先出ししました。読者が「どう読めばいいか」を最初の3秒で掴めるようにしています。
  • 同じ色体系で全ビューを統一:カテゴリ(Tropical Storm 〜 Category 5)を、緑→オレンジ→濃赤のシーケンシャルな配色で統一。マップ・散布図・折れ線・構成比のどこを見ても「色=強度」が同じ意味になるよう揃えました。
  • 絶対数と構成比を分けて見せる:折れ線(絶対数)だけだと「激増」の印象で終わってしまう。そこに100%積み上げエリア(構成比)を並べることで、「増えたのは事実。でも内訳は?」という一歩踏み込んだ問いに答えています。
  • 散布図で物理を1枚に:風速と気圧の負の相関は熱帯低気圧の基本。ここを1点=1台風で描くことで、「強い嵐=低気圧」という直感をデータで裏づけました。

使ったTableauの技術・Tips

IBTrACS のような観測点が縦持ち(1行=1観測)のデータでは、そのまま COUNT すると「嵐の数」ではなく「観測点の数」を数えてしまいます。ここを正しく扱うのが今回の技術的な肝でした。

1. FIXED LOD で「1台風=1行」に集約する

各台風(sid)ごとに、生涯の最大風速・最低気圧・最大カテゴリを求めるため、LOD計算式(FIXED)を使いました。

c.Max_wind = { FIXED [sid] : MAX([wmo_wind_kts]) }
c.Min_pres = { FIXED [sid] : MIN([wmo_pres_mb]) }
c.Max_sshs = { FIXED [sid] : MAX([usa_sshs]) }

FIXED は、ビューの粒度に関係なく指定した次元(ここでは sid)で集計を固定します。これにより、6時間ごとにバラけた観測点を「その台風のピーク強度」という1つの値に丸め込めます。散布図の「1点=1台風」は、この集約があって初めて成立します。

2. COUNTD で「ユニークな嵐の数」を数える

c.num of Sid = COUNTD([sid])

観測点ではなく台風の数を数えるには COUNTD(個別カウント)が必須です。折れ線グラフの「10年あたりの記録数」も、この個別カウントがベースになっています。

3. CASE でコードを人間が読めるラベルに

海盆コードやカテゴリ番号は、生データでは NA WP0〜5 の記号です。これを CASE 式でラベル化しました。

c.Basin = CASE [basin]
  WHEN "NA" THEN "North Atlantic"
  WHEN "EP" THEN "Eastern North Pacific"
  WHEN "WP" THEN "Western North Pacific"
  ...
END

c.Category = CASE [Max_sshs]
  WHEN 5 THEN "Category 5"
  ...
  WHEN 0 THEN "Tropical Storm"
  ELSE "Other"
END

凡例やフィルタに略号が並ぶと読み手の負担になります。ラベル化はビジュアル分析ベストプラクティスでも繰り返し説かれる「認知の負荷を下げる」基本動作です(参照:Tableau『Visual Analysis Best Practices』)。

4. 10年単位のビン化(decade)

c.decade = DATE(DATEPARSE("yyyy", STR(FLOOR([season_year]/10)*10)))

FLOOR(year/10)*10 で年を10年刻みに切り下げ、DATEPARSE で日付型に戻しています。年次のノイズを均し、長期トレンドを滑らかに見せるための前処理です。

5. 100%積み上げエリアで構成比を可視化

カテゴリ構成比は、簡易表計算「合計に対する割合」を使い100%積み上げエリアで表現しました。絶対数のグラフと縦に並べることで、「量の変化」と「質(内訳)の変化」を分離して読ませています。1つのメッセージを複数の角度から補強する——データストーリーテリングの定石です(参照:Tableau『Data Storytelling』ホワイトペーパー)。

学び・振り返り

今回いちばんの学びは、「集計の粒度を最初に決める」ことの重要性でした。IBTrACS は観測点データなので、sid 単位に FIXED で丸めるかどうかで、出てくる数字の意味がまったく変わります。「何を1件と数えるのか」を定義するところが、実は分析の8割だと改めて実感しました。

もう一つは、データが語る"増加"を鵜呑みにしない姿勢です。折れ線だけなら「熱帯低気圧は激増している」で終わっていたところを、構成比を並べたことで「観測網の充実が寄与している可能性」というより誠実な結論にたどり着けました。数字の裏にある「測り方の変化」を疑うこと——BIの現場でも同じ落とし穴が待っています。

次回は、マップに時系列の動き(アニメーション)を加えて、観測範囲が年代とともにどう広がったかを直接見せる表現にも挑戦してみたいと思います。


Tableau Public プロフィール: https://public.tableau.com/app/profile/tamaball38175/vizzes


⚠️ 注記: この記事はAIを活用して生成されています。内容に誤りが含まれる可能性があります。技術的な詳細については公式ドキュメントも合わせてご確認ください。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です