今回は天気予報のアルゴリズムを考えます。
現在、PICマイコン電子工作入門実践編シリーズの記事内容を最新の情報に合わせて、2025年9月までを目標に全面的に更新しています。
更新の理由は次のとおりです。
- 記事で使用している部品の中に、現在では調達できない部品があるため
- 記事内容に古い記述があるため
- 掲載している天気予報プログラムのアルゴリズムを改善するため
更新期間中は、新旧の記事間で一部内容に矛盾が生じる可能性があります。 ご不便をおかけいたしますが、ご理解のほどよろしくお願いいたします。
なお、更新済みの記事には冒頭に「この記事は更新済みです」の表示をしております。
引き続き、よりわかりやすく、役立つ情報を提供できるよう努めてまいります。 今後ともよろしくお願い申し上げます。
アルゴリズム
天気を気圧変化のみで予報するのはなかなか難しそうですが、それなりに予報できるアルゴリズムを考えてみたいと思います。
前回の記事でグラフ化した2018年3月のデータをもとにアルゴリズムを考えてみます。

グラフをじっくりみてみると、気圧の変化が大きいと天気が変化しているように見えます。気圧が急に高くなるとその後は晴れ、気圧が急に低くなるとその後は雨の可能性が高いように見えますので、これをアルゴリズムにしたいと思います。
「気圧が急に高くなる」「気圧が急に低くなる」というのは直接C言語に書くことはできませんので、もう少し数学的に落とし込んでみましょう。
以下の表は2018年3月1日0時から12時の1時間毎の気圧データです。

「気圧の変化が大きい」とは、気圧値の変化が大きいということですから、1時間毎の測定値がどのぐらい変化したかを調べれば変化の大きさがわかります。以下の表は1時間前の気圧値からどのぐらい変化したかを計算したものです。

気圧が急に変化して、天気が変わったあたりの値がどのようになっているのか確認してみます。わかりやすそうなところとして以下の赤丸の部分をみてみます。

この部分のデータは以下のようになっています。

グラフと合わせてみていただければと思いますが、3/5の19時に気圧の最低値を記録したあと、急激に気圧が上昇し、3/6の9時の天気観測では曇り、同日の15時の観測では晴れになっています。
この数値を見ていると、気圧の変化が1より大きくなった時に気圧の急な変化、とみるとなんとなくアルゴリズムが作れそうな気がします。具体的なアルゴリズムは以下です。
- 気圧の変化が+1以上の場合、晴れの予報をする
- 気圧の変化が-1以下の場合、雨の予報をする
- 気圧の変化が-1〜+1の場合は予報を変えない
例えば先ほどのデータの場合は以下の部分で晴れの判定を行う、というアルゴリズムです。

ただし、他の部分でも当てはまるところもあれば、当てはまらないところもあります。
例えば、以下の部分を見ると、、、

赤丸部分のデータは、以下の表の赤い四角で囲った部分になりますが、

先ほどの天気判定方法、つまり変化が1より大きければ天気が変化するとした場合、3/1の16時に晴れの判定が出ることになりますが、すでに3/1の15時には晴れています。このケースでは天気予報が遅れるケースになります。
あと、このような判定方法で一番苦手な気圧があまり変わらないところは結構判定結果がブレます。(株やFXのチャートでは保合い相場、往来相場というあたりで手法によっては損失が発生するところです)

この部分のデータについて、1より変化が大きい場合に天気予報判定をする場合、以下のようになります。

期間中、雨、晴れ、雨の予報をしていますが、実際に雨が降ったのは3/5の15時頃です。全てを救うアルゴリズムはそう簡単には作れないと思いますので、実践編ではこのアルゴリズムでプログラム実装しようと思います。
ところで、気圧の変化と天気の関係を見ていて思ったのですが、このあたりは今流行りのディープラーニングを使うとうまくってことはないですかね。学習データの量はたくさんありそうですし、隠れ層も2層か3層程度でうまくいきそうな気がしますが、いかんせん、ディープラーニングはよくわかっていないのでなんとも言えないです。学習はパワーのあるPCで行って、わかったパラメータをPICマイコンに組み込むとなんとなく人工知能の天気予報システムができそうな気がしますので、いずれトライしてみたいと思います。
実装するアルゴリズム
ということで、次回は以下のアルゴリズムをプログラム実装してみます。
- 気圧の変化が+1以上の場合、晴れの予報をする
- 気圧の変化が-1以下の場合、雨の予報をする
- 気圧の変化が-1〜+1の場合は予報を変えない
更新履歴
日付 | 内容 |
---|---|
2018.10.12 | 新規投稿 |