前回は、12種類のスリットPatternを正確に予測すること自体が、本当に必要なのかを考え直しました。
最終的にやりたいのはスリットPatternを当てることではなく、レースの着順を予想すること。
そこで、自分の予想プロセスに戻りながら、
「選手ごとのスタート特性を使って、スリットを考えてみる」
という方向に進んでみることにしました。
今回は、その最初の検証です。
まずは、とりあえずやってみる
第18話で方向を変えることにしたものの、具体的に何をすればいいのかが決まっていたわけではありません。
そこで、まずは選手の過去データを使って、
「過去のスタート特性と、今回のスタートには何か関係があるのか?」
を調べてみることにしました。
正直、この時点では、
「これでうまくいくのかな?」
という感じです。
ただ、考えているだけでは先に進まないので、
「とりあえずやってみよう」
ということで検証を始めました。
今回は「レース前に分かる情報」だけを見る
ここで、前日の検証から一つ大きく意識するようになったことがあります。
今回は、今回のレースで実際に出たスタートタイミングは使わないことにしました。
実際のSTを使って、
「1号艇が他の艇よりどれくらい速くスタートしたか」
などを調べると、1号艇の1着率との関係は見えてきました。
ところが、そのSTはレースが始まるまで分かりません。
つまり、結果を分析するには使えても、レース前の予測には使えません。
この違いは、今回の検証でかなり意識するようになりました。
ただ、最初から完璧にできていたわけではありません。
「予測に使える過去データだけを見る」ということは意識していたものの、実際に検証を進める中で、今回のレースのデータが混ざってしまうこともありました。
そこで改めて、
「今回のレースが始まる前に分かっていた情報だけを使う」
という条件で考えることにしました。
どんなスタート特性を見るか
では、過去のスタートから何を見ればいいのか。
ここではChatGPTに相談しながら、
・ST中央値
・ST標準偏差
・ST速い率
・ST遅い率
の4つを使ってみることにしました。
これまでの検証でも出てきた指標です。
今回もChatGPTから提案してもらったものですが、特に違和感はありませんでした。
すでに自分でも使ってきた指標だったので、
「じゃあ、これで見てみよう」
という感じです。
そして、それぞれの選手について、過去のスタートデータからこれらの特徴を作成しました。
そのうえで、その後のレースで実際のスタート順位との関係を調べてみました。
ST中央値が速い選手はどうなる?
まず見てみたのが、過去STの中央値です。
過去のST中央値をいくつかのグループに分けて、今回のスタート順位との関係を見てみました。
すると、ある程度分かりやすい差が出ました。
例えば、
Q1
・平均start_rank:2.65
・1位率:38.0%
・2位以内:55.6%
だったのに対して、
Q4
・平均start_rank:3.63
・1位率:16.9%
・2位以内:32.7%
となっていました。
過去のST中央値が速いグループほど、今回のスタート順位も上位になりやすい傾向が見えます。
結果を見たときの感覚としては、
「方向性は悪くないのかな?」
くらいでした。
ものすごく意外な結果だったわけではありません。
「過去に速くスタートしている選手なら、今回も速い可能性がある」
というのは、感覚的にもそれほど不自然ではないからです。
ただ、実際にデータとして差が見えたことには意味がありそうです。
「速いスタートが多い」を数字にしてみる
次に、ST速い率を見てみました。
これは、過去のスタートの中で、例えば0.10以内のような速いスタートをどれくらい出しているかを表したものです。
こちらでも、グループによって今回のスタート順位に差がありました。
例えば、
Q1
・1位率:23.1%
・2位以内:36.1%
に対して、
Q5
・1位率:35.1%
・2位以内:56.3%
となっています。
過去に速いスタートを多く出している選手ほど、今回もスタート順位が上位になりやすい。
この結果についても、特に違和感はありませんでした。
むしろ、
「経験的にも、まあそうだろうなぁ」
という感じです。
普段から競艇を見ている中でも、スタートの速い選手については、
「この選手はスタート行けるよね」
と考えることがあります。
それが、数字でもある程度見えてきたという感じでした。
遅いスタートが少ない選手は?
続いて、ST遅い率も見てみました。
こちらは、
「過去に遅いスタートをすることが少ない選手は、今回もスタートで大きく遅れにくいのでは?」
という見方です。
結果として、
Q1
・平均start_rank:2.71
・1位率:36.3%
・2位以内:52.3%
に対して、
Q5
・平均start_rank:3.52
・1位率:22.1%
・2位以内:33.6%
となりました。
こちらも、過去に遅いスタートが少ない選手ほど、今回のスタート順位が上位になりやすいという方向の結果です。
ただ、この段階では、
「速い率と遅い率を組み合わせると、選手のスタートタイプを表現できる」
といったところまで深く考えていたわけではありません。
まずは、それぞれ単独で見て、
「過去のスタート特性と今回のスタートには、何らかの関係がありそう」
ということを確認していきました。
速い率と遅い率を組み合わせてみる
最後に、少し違った見方もしてみました。
ST速い率とST遅い率を、それぞれ高い・低いに分けて組み合わせます。
すると、
fast_high × slow_low
では、
・平均start_rank:2.54
・1位率:36.9%
・2位以内:58.5%
となりました。
一方、
fast_low × slow_high
では、
・平均start_rank:3.55
・1位率:22.0%
・2位以内:35.2%
でした。
これだけを見ると、かなり差があるようにも見えます。
ただ、ここについても、当時の自分の感覚はそれほど大げさなものではありませんでした。
「単純にスタートが速い選手は遅れにくいから、まあそうなるだろうなぁ」
という感じです。
今回の結果から、新しい法則を発見したというより、
「過去のスタート特性を見れば、今回のスタートについてある程度の傾向は見られそう」
ということを確認した感覚に近いです。
でも、まだ大きな問題が残っている
ここまで検証すると、
「じゃあ、過去のST特性は、今回のスタートを考える材料になるんじゃないか?」
と思えてきます。
ただ、まだそこまでは言えません。
今回見たのは、基本的に1艇単位での関係です。
例えば、
「この選手は過去に速いスタートが多い」
ということと、
「この選手が今回のレースで6艇の中で何番目にスタートするのか」
は、同じ話ではありません。
競艇は6艇で同時にスタートします。
自分が知りたいのも、
「この選手は速いです」
だけではありません。
「6艇を並べたときに、誰がスタートで優位になりそうなのか?」
です。
ここについては、この時点では全く分かりませんでした。
次は6艇を並べてみる
今回分かったのは、あくまで1艇単位で見たときの傾向です。
実際のレースでは、6艇が同時にスタートします。
ならば次は、6艇それぞれのスタート特性を並べてみる必要があります。
「この6艇の中で、誰がスタートで優位になりそうなのか?」
ここまで考えられるようになれば、ようやくスリット予測に近づけそうです。
ただ、本当にそこまで使えるのかは、まだ分かりません。
方向性としては悪くなさそうですが、最終的には実際に6艇を比較して、結果を見てみないと判断できません。
なので、次もまずは、
「実際にやってみて、結果を見てから考える」
ことにします。
次回予告
過去のスタート特性を見ると、今回のスタート順位にもある程度の傾向がありそうでした。
でも、1艇だけ見ていても、実際のスリットは予測できません。
次は6艇それぞれのスタート特性を並べて、レースの中で相対的に比較することにしました。
果たして、選手ごとのスタート特性から、6艇のスタート順位をどこまで考えられるのでしょうか。
ここから、また一つ検証してみます。
あわせて読みたい
前回は、12種類のスリットPatternを予測すること自体が、本当に必要なのかを考え直しました。
自分の予想プロセスに戻って考えた結果、スリット予測を最終目的ではなく、着順を予想するための手段として考えることにしました。
今回は、その新しい方向性を試すため、過去のスタートデータから選手ごとのスタート特性を作り、今回のスタート順位との関係を調べています。
次の検証につながる考え方の変化も含めて、ぜひ前回の記事からご覧ください。
▶第18話|12種類のスリットを予測することが、本当に必要なのか?
