はじめに
先日、競馬予測関数を作成したのですが、予測と実際の結果を比較し、考察した結果、改善点が多くあるのではないかと考えられました。
—Rで競馬予測関数を作って実際に使用してみた【ウキゴリラの趣味】
そこで、本記事ではその改善点を修正した新しい競馬予測関数を作成し、その実力を検証してみました。
モデルの概要
本モデルでは重回帰分析を利用し、過去の半年間のレース結果から、走破タイムを予測する関数です。
応答変数に走破タイム
説明変数にレース距離、馬場状態、斤量、対象レースに出場する各馬、各馬とレース距離の相互作用(各馬に距離の得意不得意があるかを示す)を入れています。
このモデル式を使用して、対象レースの各馬の走破タイムを予測するモデルとなっています。
また、モデルの当てはまりの良さを示す赤池情報量基準(AIC)によるモデル選択を行うと、各馬とレース距離の相互作用は必要ないと判定されることが多いです。
そこで、説明変数にレース距離、馬場状態、斤量、対象レースに出場する各馬のみをいれたモデルでも予測を行います。
検証方法
今回は3/6~3/27までに行われた「高知競馬ファイナルレース」を対象に検証しました(全10レース)。
楽天競馬様が公開しているデータを利用しました。
各馬の半年以内の高知競馬場でのレース結果を抽出し、上記のモデルで当日の走破タイムを予測しました。
モデルの予測結果から以下の項目について算出しました。
・各モデルについて、一番早いと予測された馬の勝率、3連対率、掲示板率
・各モデルについて、三番目までに早いと予測された馬の勝率、3連対率、掲示板率
本モデルの精度の比較対象として、当日の人気馬のレース結果を用いました。
当日の人気馬は皆様の予想の集約であると考えており、これと比較することによって、有用かどうか検証できると思います。
当日の3番人気までの馬を抽出し、以下の項目について算出しました。
・1番人気の勝率、3連対率、掲示板率
・1~3番人気の勝率、3連対率、掲示板率
モデルの予測結果と当日の人気馬の実際の着順を比較し、本モデルはどのくらい有用なのか検証しました。
検証結果
検証結果をまとめた表は以下の通りです。
予測の結果では走破タイムが速い予測された順に1~3番目の馬の実際のレース結果の着順を示しております。
実際の人気では当日の1~3番人気までの馬の実際のレース結果の着順を示しております。
予測結果のうち
「①相互作用あり」は各馬とレース距離の相互作用を入れたモデルの予測の結果
「①相互作用あり」は各馬とレース距離の相互作用を入れたモデルの予測の結果
を示しております。
それぞれの勝率・3連対率・掲示板率についてフィッシャーの正確検定を用いて比較した結果、有意な差はないものの、掲示板率を中心にモデルによる予測の方が確率が高い傾向がありました。
おわりに
なかなか、勝ち馬を予測することは難しいものの、3番目までに速いと予測された馬が3連対に入る確率は50%、5着以内に入る確率は70%以上と、予測の精度は利用するには十分である可能性が示唆されました。
また、人気はないけど早いと予測された馬が三着以内に入ったり、逆に、遅いと予測された人気馬が三着以内に入ったり、というケースも見られました。
したがって、このモデルで得られるデータは一つの指標として利用し、自分の予想やパドックの様子から買い目を変えるのが一番良い利用法かなと思います。
こちらのプログラムコードは以下のページで公開しております。
—Rで作成した競馬の走破タイムを予測する関数のプログラムコード【ウキゴリラの趣味】
なお、予測を信じて馬券を買い続けた場合を想定すると、例えば1~3番人気の馬複をボックスで購入した場合(合計3000円)、的中は3回で、回収は7600円でした。
(なお、ウキゴリラはこの予測を信じきれず、結果、普通に負けました(泣))
私の記事が皆様の力添えになれば幸いです。
コメント