見出し画像

[競馬予想AI] 走破タイムから馬の強さは測れるか?【基準タイム作成編】

走破タイムから各馬の強さを測ることはできるかというシリーズです。
初回は、馬の強さを測る前段階として基準タイムを作成していきます。具体的には、ベイズ統計モデリングにより基準タイムを推定します。

走破タイムに影響する要素(仮)

走破タイムを見たとき、どのようにすれば馬の強さが分かるでしょうか。もちろん速ければ速いほど良いですが、競馬では様々な要素が走破タイムに影響するため、同じ距離でも単純に比較することはできません。

走破タイムに影響する要素として、次のようなものが考えられます。

  1. 距離

  2. 芝・ダート

  3. 馬場状態

  4. 競馬場

  5. 斤量

  6. 騎手

  7. 馬のコンディション

  8. 馬の性別

とりあえず上記の要素を挙げましたが他にも様々な要素が考えられます。
距離は間違いなく走破タイムに影響すると考えられますが、データ分析をするときにはこれらの要素について実際に差異があるかグラフで可視化したり統計を取るべきです。ただし、数値化できないものやお互いに作用しあう要素がありこれもまた単純比較できないこともあります。

芝・ダートと走破タイムとの関係

一例として、芝・ダートと走破タイムの関係を見てみます。

走破タイムと芝・ダートとの関係

このバイオリンプロットを見た時、どのような考察ができるでしょうか。縦軸が走破タイム、横軸の0/1はそれぞれダートと芝です。
ダートより芝のグラフの方が縦に伸びていて走破タイムがかかるように見えなくもないですが、ダートのグラフは大きな山が上の方に分布していてダートの方が走破タイムがかかるように見えなくもないです。
なぜこのようなグラフの形をしているのか原因の1つに距離が考えられます。一般的にダートは芝のように長距離がないため、芝のグラフより圧縮されたような形になります。このように隠れた要因があるため単体の要素だけでは単純比較することが難しいです。同距離で比較する必要があります。
もう一つ隠れた要因でいうと、距離の分布です。距離は連続的な値なはずですが実際のレースでは2105.3mのようなレースは無く、順序尺度のように振る舞います。なのでグラフに複数の山が現れている可能性があります(別の要因の可能性もあります)。

ということで、同距離で芝とダートの走破タイムを比較してみます。下のグラフを見てみると、芝よりダートの方が走破タイムが遅い傾向が見て取れます。

走破タイムと芝・ダートとの関係(1600m)


ベイズ統計モデルで基準タイムを推定

今回は、3着馬の走破タイムをベイズ統計モデルの一般化線形モデルで推定してみようと思います。ベイズで推定する利点として、各要素について分布の形状を指定でき、事後分布を得ることができる点があります。また、信用区間を利用できる利点があります(後述)。

簡単なモデル

まずは簡単なモデルで走破タイムを予想してみます。今回のモデルで考慮する要素は以下の通りです。

  • 距離

  • 馬場状態(良・稍重・重・不良)

  • 芝・ダート

  • 斤量

  • 競馬場(10の競馬場)

これらの要素を使用して次のようなモデルを想定します。

$${\mu}$$ = $${β_0}$$ + $${β_1}$$距離 + $${β_2}$$馬場状態 + $${β_3}$$芝・ダート + $${β_4}$$斤量 + 競馬場
3着馬走破タイム = $${Normal(\mu, \sigma^2)}$$

走破タイムは正規分布に従うものとしています。

推定結果

推定結果の一部を次に示します。

推定結果

Estimateが見積値、95%信用区間の下側がl-95% CI、上側がu-95% CIです。
距離を見てみると見積値は0.06718となっており、95%信用区間は0.0671~0.0673となっています。距離が長くなるほど走破タイムがかかるのは確実のようです。

95%信用区間は、95%の確率でその区間内に真値が含まれことを示しています。信頼区間と似ていますが異なる概念です。

続いて「重・良・稍重」を見てみましょう。不良がありませんがこれは不良を基準としているためです。重の行を見ると、見積値は-0.06で95%信用区間は-0.25~0.13となっています。信用区間が0を挟んでいるため一概には-0.06秒早くなるとは言えなさそうですが、不良基準ですのでまあ妥当ではないでしょうか。以降、良と稍重も同様です。しかし、不良より良・稍重の方が遅いのは違和感を感じます。
良馬場の係数の事後分布を示します。

良馬場の事後分布

良馬場の見積値は0.1で信用区間は-0.07~0.26です。どちらかといえば良馬場の場合タイムが遅くなるということが見れますが信用区間に0を含んでいるので一概に遅くなるともいえなさそうです。

続いて斤量です。斤量の見積値は-0.19となっており95%信用区間を見てもマイナスです。つまり、重ければ重いほど走破タイムが早くなるということです。これも違和感がありますね。

続いてレース会場です。この表には中京が含まれていませんので中京基準で遅い速いという比較になります。最もタイムがかかるのは中山で0.77秒です。確かに中山の特殊形状のコースは走りにくいのかもしれません。逆に速いのは東京で-0.87秒でした。

最後にSigmaです。これは想定したモデル、

走破タイム = Normal($${\mu, \sigma^2}$$)

の$${\sigma}$$のパラメータです。個々のパラメータの信頼区間に加えてさらにこの分散を考慮した区間内に走破タイムの真の値が含まれます。
Interceptは切片、つまり$${β_0}$$です。

3着馬走破タイムを計算してみる

推定した値を使って試しにいくつか3着馬走破タイムを計算してみましょう。

「中京1400m・芝・良・斤量55kg」の場合

走破タイム = 2.65 + 0.06718×1400 + 0.1 + (-4.4) + (-0.19)×55 +0 = 81.95

となり、「中京1800m・芝・良・斤量55kg」の3着馬平均走破タイムは約82.0秒となりました。つまり、実際にこのタイムより早く走った場合は平均より速く走れる馬であると推測できそうです。もっと言えば、今回は3着馬の走破タイムを推定したので、このタイムより速い馬は3着内に入る可能性が高いのではないかという予想ができます。

もうひとつ、ダートの場合も計算してみましょう。

「中京1800m・ダート・良・斤量55kg」の場合

走破タイム = 2.65 + 0.06718×1600 + 0.1 + 0 + (-0.19)×55 +0 = 86.35

となり、「中京1800m・芝・良・斤量55kg」の3着馬平均走破タイムは約86.4秒となりました。

推定した基準タイムと実際の走破タイムとの差

推定した3着馬の基準タイムと各馬の実際の走破タイムとの差を箱ひげ図で確認してみます。

推定した3着馬の基準タイムと各馬の実際の走破タイムとの差

25~75%の範囲は約1秒から約-2秒で、最小約-6秒、最大約4秒となっています。3着馬の基準タイムなのでマイナス側に偏り気味なのも納得でき、現実的な値になっているのではないかと思います。(プラスだと基準タイムより速い)


問題点

推定したモデルや、推定値を実際の予想に使用する際の問題点について挙げてみます。

交互作用が考慮されていない

それらしい結果が得られました。しかし、式を眺めていると不自然な点が見られます。それが「馬場状態」と「芝・ダート」の項です。
一般的にはダートは馬場が重い方がタイムが速くなるといわれてますが、上の計算式を見るとそのようにはなってなさそうです。

馬場状態と芝・ダートの各加算タイムは以下の通りです。

芝・ダートと馬場との関係

芝では不良が最も速く次いで重、良、稍重の順に速くなっています。ダートでは稍重が最も遅く、その他はほとんど変わりありません。
ここでもう少し視覚的にわかりやすく見るために、馬場状態と芝・ダートで走破タイムがどのように推定されるか、推定したモデルで予測してみます。

走破タイムの馬場状態と芝・ダートとの関係

グラフが4つありますが、1, 2, 3, 4がそれぞれ良、稍重、重、不良に対応しています。ground_type_turfは0, 1がそれぞれダート、芝に対応しています。線の厚みは95%信用区間を表しています。
これらのグラフを見ると走破タイムはよく推定できているように見えますがいずれの馬場状態も同じグラフ(切片も傾きも同じ)に見えます。

本当にそうなのか検証するため今度は実測データを可視化してみましょう。

芝における走破タイムと馬場との関係(1600m)
ダートにおける走破タイムと馬場との関係

芝のレースでは馬場が悪くなるほどタイムが遅くなっており、ダートのレースでは重馬場の時に最も速く、良の時に最も遅くなる傾向が見えます。
ただし、稍重と不良の走破タイムを見るとダートの方がコンマ数秒だけ速そうに見えます。芝の良と稍重がダートより速すぎるため芝の方に引っ張られて全体としては芝の方が速いという推定になっているのかもしれません。
つまり、このモデルでは芝・ダートと馬場状態の交互作用がうまく表現できていないのかもしれません。

馬の適性に注意

例えば、前走の基準タイムと走破タイムとを比較して馬の強さを予想するとします。前走と今走でレース距離が違う場合、馬の距離適性の問題で前走のデータが当てにならなくなる可能性があります。この場合、直近の同距離のデータを使用するなどの工夫が必要になりそうです。


課題に対する解決策

芝・ダートと馬場状態の交互作用が考慮されていない点についての解決策は、交互作用を考慮するようにモデルを変更します。モデルを柔軟に変更することができるのがベイズモデルの利点です。

馬の距離適性については個々の馬を考慮するようにモデルを作ことも可能ではありますが、あまり現実的ではないように思います。なのでモデル側で対策をするのではなく予想時に直近の同じ距離のデータを参照して予想するなどデータ利用時に我々自身が対策する必要があります。


最後に

今回は、走破タイムから馬の強さを測る前段階として基準タイムの推定を行いました。基準タイムの推定を行うにあたり一般化線形回帰モデルを使用し、各パラメータの事後分布を取得しました。
推定した各パラメータを眺めているといくつか課題が見つかりました。この課題を解決するためにはモデルを変更する必要があることがわかりました。

ところで、今回のベイズモデルによる基準タイムの推定ですが、今回のような線形回帰モデルを使用するのであれば普通の回帰分析でも可能です。しかし、ベイズモデルで推定することで事後分布を取得できましたし、そのおかげでいくつかの問題点も考察することができました。

続いて、実際に走破タイムから馬の強さを測ることができ実用として使用できるのか実験してみたいところですが、記事が少し長くなったの次回実験することにします。



▼競馬予想AIによる予想 まとめ

▼FANBOX


よろしければサポートをよろしくお願い致します。いただいたサポートは今後の技術向上のために書籍費用等に当てられ、このnoteで還元できればと思います。