明日の天気を(平均して)必ず当てる方法


明日の降水確率が10%とかいうが、あの「10%」って何のことだろう。明日の10分の1の間、雨が降るだろうってことか。いや、そうじゃない。明日雨が降る確率が10%で、降らない確率が90%ってことだろう。


まあとりあえずそうだとしておいて、じゃあ天気予報が当たるってどういうことだろう。明日の降水確率が10%って予想して、雨が降ったらはずれなのか。それとも晴れになったら当たりなのか。一回きりじゃ、よくわからない。予想があたっているかどうかを調べるためには、その予想が平均して当たっているかを見なくちゃいけない。つまり、「明日の降水確率が10%」って宣言した次の日をずっと見ていった時に、平均して10日に1日雨が降っているようでなくちゃいけない。


そこで、良い天気予報と悪い天気予報を区別するため、次のような基準を考えてみる。簡単にするために、予報は「50%以下」、「50%以上」の2種類だけにしよう。T日のうち、次の日の降水確率が50%以下と予想した日の数をT_1、そのうち実際に雨の降った日にちの比率を\alpha_1とする。そして、次の日の降水確率が50%以上と予想した日の数をT_2、そのうち実際に雨の降った日にちの比率を\alpha_2とする。んで、\alpha_1が1/2をオーバーシュート、あるいは\alpha_2が1/2より低すぎる場合に減点するような評価の仕方を考える。具体的には次のような式を使おう。

\frac{T_1}{T} \max \{ \left( \alpha_1 - \1/2 \right), 0 \} + \frac{T_2}{T} \max \{ \left(1/2 - \alpha_2 \right), 0 \}

この式は、予想が平均して当たっている場合は最低の値の0をとる。最悪なのは、50%以下と予想した場合に必ず雨が降って、50%以上と予想した場合に必ず晴れになる場合だけど、その場合にはこの式の値は1/2になる。一般的には、予想が正しければ正しいほど、この式の値は小さく、0に近くなっていく。さて、これを使って、良い天気予報と悪い天気予報を区別できるだろうか?


実は、この方法では全くの天気の素人と本当の専門家を区別することが出来ない。過去のレコードに応じて現在の予想をうまく選んでやれば、日にちを重ねるにつれて、天気の知識を全く持たない素人ですら、上の式の値を0に限りなく近づけることが出来る(正確には確率1で0に収束させることが出来る)。しかも、天気がどのような法則に従っているとしても、だ。


この話の凄さは、50%以下と50%以上しか選べない単純なケースではうまく伝わらないかもしれない。実は、同じことがどんなに細かい予想が出来る場合にも成立するので、その場合を考えてみるといい。例えば、0%から10%、10%から20%…..と10段階の予想が出来るとする。その場合、もしも僕に天気予報を任せてもらえれば、X%からX+10%と予想した場合のレコードを振り返ってみたときに、実際に雨が降った日の割合をほぼ間違いなくX%からX+10%の間に収めてみせる。*1


一つ例をとって、どういう風にやるかを解説してみようか。120日間予想して、60日間「50%以下」と予想して、そのうち3/4が雨だったとする。このペナルティー\left( 3/4 - 1/2 \right)として、上の式に入ってくる。次に60日間「50%以上」と予想して、そのうち1/4だけが雨だったとしよう。これもターゲットを外しているので \left(1/2 - 1/4 \right)のペナルティーが掛かってくる。ここで「50%以下」と「50%以上」を半々で確率的に選ぶ戦略を考えてみる。すると、雨が降ったときは、1/2の確率でT_1\left( \alpha_1 - 1/2 \right)が1/2増えて、1/2の確率でT_2\left(1/2 - \alpha _2  \right)が1/2減るので、上の式の分子の増加の期待値は0になる。晴れのときも同じ事で、1/2の確率でT_1\left( \alpha_1 - 1/2 \right)が1/2減って、1/2の確率でT_2\left(1/2 - \alpha _2  \right)が1/2増えるので、やっぱり上の式の分子の増加の期待値は0になる。つまり、雨が降ろうが振る舞いが上の式の分子は平均的に変化しない。ところが分母は100から101に増えるので、全体としてはなんとなく平均して下がっていくわけだ。


これは特殊ケースだが、一般的には、次のようなアルゴリズムを使う。
Step1:もし、\max \{ \left( \alpha_1 - 1/2 \right), 0 \}=0、あるいは\max \{ \left(1/2 - \alpha_2 \right), 0 \}=0なら、そのように今までの成績のいい予想を使う。
Step2:もし、上のどちらも正の値をとっている場合は、「50%以上」という予想を確率

\frac{ T_1 \left( \alpha_1 - 1/2 \right) }{T_1 \left( \alpha_1 - 1/2 \right) + T_2 \left(1/2 - \alpha_2 \right)

で選んでやる。暇があったら、実際にこれを走らせてみると面白いかもしれない。


参考:"Asymptotic Caribration" by D. Foster and R. Vohra, Biometrika 1998.

*1:正確には、これは十分繰り返された予想についてだけ成立する。