見出し画像

2年間の天気予報データの分析(晴れのち曇り、等の天気)

私が2021年11月から始めた天気予報のデータ収集は、現在2年を超えました。蓄積されたデータは、AIや機械学習のモデル構築に活用する事ができるのみならず、データ自体を対象とした有意義な分析が可能になりました。この記事では前回の記事に続き、天気予報の過去データの分析結果をご紹介します。分析に用いたデータはこちらにアーカイブとして公開しています。


分析前の情報確認

分析の話に進む前に、気象庁発表の天気予報に含まれる情報を見てみます。

例:東京都の天気予報(気象庁)
例:東京都の天気予報(気象庁)

上図に含まれる情報をまとめると、対象都市・対象日別の

  • 天気(晴れ時々曇り、とか、曇のち雨、とか)

  • 波(沿岸部のみ)

  • 降水確率(とその信頼度、週間予報のみ)

  • 最低/最高気温(とその振れ幅、週間予報のみ)

だと言えます。
前回は「降水確率とその信頼度」を分析してみたので、今回は、天気を分析してみます。あらためて上の2つ図の天気を見ると、今日・明日・明後日の天気では雨 夕方 から くもりと描写が細かく、週間天気予報では雨後曇と簡素に表現されています。

AI・機械学習のコンテクストで見ると

現時点で(2024年3月)過去の天気予報の公式記録・公開情報は存在せず、これを遡って調べるのは困難です。一方、AIや機械学習のモデルを構築する際、モデル化の対象によっては天気予報に基づく予測モデルの構築が望ましい事があり、その実施には過去の天気予報データが不可欠となります。実際の天気(実績)データを用いるのでは、モデルが天気予報の不確実性を学習できず、予測モデルの精度が十分なものとならないためです。過去の天気予報データを使用することで、「どの情報をどれくらい信じるべきか」や季節・地域による違いなどをモデルが学習できます。

天気予報に含まれる「天気晴時々曇、とか、曇後雨、とか)」「降水確率とその信頼度」「最低/最高気温」のうち、どの要素(単数or複数)をモデル構築に用いるかは、モデル化の対象によって異なるでしょう。降水の有無が他の要素に比べて強く作用するのであれば降水確率を用いるのが良いでしょうし、降水の有無だけではなく「晴れか曇りか」が重要なのであれば天気を用いるべきでしょう。当然、モデル化の対象によっては「最低/最高気温」こそが重要、ということもありえます。

もし天気をモデル化に用いるのであれば、「降水確率」や「最低/最高気温」をモデル化に用いるのに加え、事前に確認しなければいけないことがあります。「降水確率」と「最低/最高気温」が定量的な尺度である一方で、「天気」は名義尺度だからです。名義尺度をニューラルネットワークの入力に用いる際には、名義尺度の持つ意味を学習するためにEmbedding(埋め込み)という方法を用います。ただ、うまくEmbeddingが機能するかどうか、埋め込む名義尺度がある程度分散していつつ(=高カーディナリティ)、かつ件数が均衡していることが望ましいです。本分析はその確認を兼ねます。(実際のモデル化では、実際に用いる訓練サンプルで再度確認して下さい)

分析対象データ

前回と同様、2022年1月1日から2023年12月31日の間に発表された過去の天気予報データを扱います。ただ今回は全国の天気予報に相当する情報ではなく、各都道府県予報(リンクは東京都のもの)のすべてを対象とします。

データの確認

分析対象となる元データにどのように天気予報情報が含まれているか見てみます。

今回の分析対象となる天気予報情報が含まれているのはweatherCodeweatherの2項目のようです。weatherCodeがどのような値かはTEAM T3Aさんの気象庁JSON ファイルにある weatherCode 一覧のページにまとめられています。天気予報データを見る前に、まずこのweatherCode一覧を確認します。

weatherCodeの確認

weatherCode一覧は以下のようになデータです。(列名=変数名は私が命名した適当なものです)

この表から以下を読み取れます

  • weatherCodeは118種類

  • weatherCodeとその日本語表現(weatherJ)、英語表現(weatherE)は一対一に対応している

  • weatherCodeをピクト図として気象庁の天気予報画面に表示させるときには、異なるweatherCodeに同一のピクト図を用いる事がある
    weatherCode=102の「晴一時雨」とweatherCode=103の「晴時々雨」で同一のピクト図102.svgが表示される、など。これは気象庁の天気予報画面に限った話です。他のメディアではピクト図を書き分けている可能性があります。)

weatherCodeとweatherの関係確認

ついで、過去の天気予報データのweatherCodeweatherの関係を確認します。weatherCodeweatherが一対一の関係にあるのであれば、どちらか片方のみを分析すれば十分だと言えます。まず、weatherCode=100(晴れ)のレコードを抽出し、文字列情報であるweatherがどのような値となっているかを見ます。

集計結果の一部を抜粋

上図からわかるように、同一のweatherCodeであっても、文字列情報としてのweatherの中身は多種多様でした。weatherCodeは「晴れ」であっても、weatherを見ると晴れ 夜 くもりだったり晴れ 明け方 まで くもりだったりとするようです。上図では出現頻度が高いものを示しましたが、2年間で一度だけしか現れなかったweather文字列は5,167種類ありました。weatherの中身は今日・明日・明後日の天気に対応し、weatherCodeは週間天気予報に対応していると見て良さそうです。

まとめるとweatherCodeweatherは一対一の関係ではなく、weatherの中身は多種多様でした。以降では文字列情報であるweatherは考慮せず、weatherCodeを見ていくことにします。

weatherCode毎の頻度確認

では、weatherCode別にみて、どのような天気予報がどのぐらいの頻度で発表されているのか見てみます。

まとめて見てみると、発表される天気予報はずいぶん偏っているようです。晴時々曇曇時々晴曇一時雨などが圧倒的に多く、雨時々雪雪時々雨などと予報されることはまれなようです。
上図では図の下半分の度数分布がよくわからないので、同じデータを横軸を対数軸にして再度グラフ化します。

先ほど棒の高さがまったく読み取れなかった、雨時々雪雪時々雨は日本全国の2年間で一度(10^0=1)予報されたのみのようです。他に、雨後時々雪晴時々雨か雪雨時々晴も、予報として発表された回数は10回未満でした。

一方、weatherCodeとして定義されていても、日本全国の2年間の予報データの中で一度も用いられなかったweatherCodeも多数あります。下表がその一部です。

weatherPict毎の頻度確認

先に、異なるweatherCodeに同一のピクト図を用いる事がある、と書きました。確かに晴一時雨晴時々雨はよく似ています。ここでは、weaterCode毎の頻度を見るのに代えて、同一のピクト図を用いる予報毎に、どのような天気予報がどのような頻度で発表されているのか見てみます。

気象庁の天気予報画面で用いられているピクト図は(昼と夜の別を考慮しないと)30種類あります。以下がその30種類です。

集計結果は以下です。上図が線形軸、下図が対数軸です。

表示ピクト図ベースでみると、頻度の差こそあれ30種類全部が用いられていました。レアキャラの雨時々晴はこれです。

雨時々晴のピクト図(気象庁より)

天気予報と予測対象日の関係頻度分析

前回検討した予測対象日と降水確率の関係分析からは、予測対象日が先(3日後~7日後)だと降水確率0%や90~100%の降水予報はほとんど発表されないという傾向がありました。同様に、予測対象日が先になると出現しにくい天気予報もあるのでしょうか? もしなければ降水予報と整合しないように思えます。見てみましょう。

下図では予報発表日と予報対象日の日数差をDay Differenceとし、横軸にDay Differenceを、縦軸にピクト図ベース集約したweatherCodeを取り、出現度数に比例した大きさの丸を描いています。(11時発表予報の当日12-18時や当日18-24時の予報はDay Difference=0)

この分析から以下の傾向がわかります。

  • 晴予報は3日以上先ではめったに出ず、予報対象日が明後日まで近づいてきてから発表されやすくなる

  • 晴時々曇曇一時雨曇一時雪曇時々晴は7日先であっても発表されやすい

  • むしろ、7日先で発表されるのは晴時々曇、曇、曇一時雨、曇一時雪、曇時々晴のいずれか

  • 6日先では上記に晴、雪時々止むがわずかに加わるのみ

  • 7~2日先予報までは晴時々曇曇一時雨曇一時雪曇時々晴の5種が大きな割合を占める

    • 3日先予報で上記5種の合計は94%

    • 2日先予報で上記5種の合計は81%

  • 1~0日先予報で割合を大きく増やすのは晴後時々曇

まとめ(AI・機械学習面で)

これらの分析結果は以下のようにまとめられます

  • 文字情報のweatherは高カーディナリティかつ不均衡。使いにくい

  • 天気予報コードのweatherCode116種もかなり不均衡

    • 学習データに出てこなかったweatherCodeが推論時に出てきたときの扱いを考慮する必要あり

    • 学習データに出てきたweatherCodeでも、その出現頻度が少ない場合は過学習・未学習となるおそれあり

  • 天気予報コードのweatherCodeをピクト図ベースの30種にまとめればカーディナリティは小さくなるが、やはり不均衡

  • 何日先の予報の重要度が高くなるのかはモデルの目的や用途によるが、場合によっては頻度の低いカテゴリを「その他」のような一般的なカテゴリにグループ化し、カーディナリティを減らすことも検討した方が良い

まとめ(一般的に)

  • 晴予報は3日以上先ではめったに出ず、予報対象日が明後日まで近づいてきてから発表されやすくなる

  • 7日先で発表されるのは晴時々曇、曇、曇一時雨、曇一時雪、曇時々晴のいずれか

  • 7~3日先予報までは晴時々曇、曇、曇一時雨、曇一時雪、曇時々晴の5種が大きな割合を占める

この記事を通じて、日常における天気予報への理解と楽しみが少しでも深まれば嬉しいです。

この記事が気に入ったらサポートをしてみませんか?