とりあえずブログ

SEとして働く会社員の雑多なブログ

有馬記念を重回帰分析で予想したら外れたよのお話

以前、重回帰分析をしたことがあって、これ競馬でも利用できるんじゃね?と思い、今回の有馬記念で試しにやってみたかったので、重回帰分析を利用して、勝つ馬を予想してみました。

 

■前回の記事 

saito.hatenadiary.com

 

今回は過去7年の有馬記念のデータを利用して、複勝金額を目的変数として重回帰分析を行って、算出された複勝金額が多い馬に賭けるという手法を採用しました。

(そもそも目的変数が複勝金額というのが、微妙だったのかもしれません。)

 

説明変数として選んだのは、

  • 牝馬、牡馬、騸馬(ダミー変数)
  • 年齢(ダミー変数)
  • 人気(ダミー変数)←よくよく考えると、この変数は目的変数である複勝金額にかなり影響を与えていると思われるので、チョイスとしては相当微妙だったと反省しています。。。
  • 斤量
  • 馬番(ダミー変数)

です。

 

今回はRというフリーソフトを使用して分析しました。

R: The R Project for Statistical Computing

 

分析結果は下記のとおりです。

 

■分析結果

f:id:tkm03:20171224162709p:plain

 

これを見ると、それぞれの変数のP値がかなり高いので、効果がないという仮説がとても高いのですが、今回は時間がなかったので、この計算結果を元に、今回の出馬表に算出された係数を当てはめて、馬券を購入しました。。。

 

f:id:tkm03:20171224163210p:plain

 

購入した馬券に入れた馬は、

 

結果、実際に3着まで入った馬は、

  1. キタサンブラック
  2. クイーンズリング
  3. シュバルグラン

でした。

 

全く当たりませんでした。。。笑

なぜ、当たらなかったのかは、今回作成したモデルが全くレースの予想を反映したものではないことが要因かなと思ってます。

 

具体的には、下記の点が良くなかったと感じています。

  • 説明変数の選び方が悪い

目的変数である複勝金額にかなり影響している人気という変数を説明変数として、選んでしまったので、もう少し説明変数を考慮すればよかったかなと反省しています。。。

 

今後は人気という説明変数をやめて、変数増加法や変数減少法を用いて、様々な変数でより最適なモデルを作成してみたいと思います。(下記サイト参考)

 

重回帰分析

 

  • 計算結果のP値が高い

今回は1回計算しただけで、その後なにもチューニング等は行っていないのですが、それでも各パラメータのP値が高すぎるのが気になりました。

 

今後はP値の値が低くなるようなモデルの作成を目指したいです。

 

  • 分析のサンプルデータが少ない

今回算出に用いたデータは過去7年の有馬記念のデータを下記サイトから引っ張ってきて、計算しましたが、それでもサンプルとしては少ないと思っています。

db.netkeiba.com

もっと多くのデータを集められるようになれば、精度としては上がるのかなと思っています。

この辺は今回手入力でGoogleスプレッドシートにデータを入力して行ったのですが、今後は自動でCSVデータを作成してくれるようなスクリプトを作成したいです。

 

あとは、そもそも目的変数を複勝金額にするというモデルの考え方が正しいのか自分では判断できていないので、この辺は今後勉強していきたいと思いました。

 

ただ、今回競馬に重回帰分析を用いてみることで、統計的な知識が多少身についたのと、過去実績から分析したことで新しく発見できたこと(例えば、9歳馬は勝ったことがない、馬番が16番の馬は勝ったことがないなど)があったので、よかったと思っています。

 

まだまだ統計的な知識が乏しいので、今後もっと勉強したいなと思いました。

(統計に詳しい方がいらっしゃいましたら、教えて欲しいです!)