さようならPythagが勝つ、こんにちはグラデーションが勝つ

ビル・ジェームスやパトリオットによるPythagの勝利数を使おうが、ピート・パーマーによるもっと基本的なもの(1失点あたり0.1勝)を使おうが、失点の扱いは全て同じである。 いずれも試合ごとに行う事はない。

パーマー方式を試合levelに当てはめると、次のようになる: 試合に1点差で勝てば、平均より+0.10勝、つまり0.60勝の価値がある。 同様に、相手を2点上回って勝った場合、その試合は0.70勝の価値がある。 3勝すれば0.80勝。 5勝すれば1.00勝。 10勝すれば1.50勝。
敗戦も同じだ。 1点差で負ければ0.40勝、2点差で負ければ0.30勝。 5勝で負けると0勝。 10勝で負けるとマイナス0.5勝。

これらを全て合計し、162試合で勝ち星に相当するものを得る。 もちろん、これを1試合ごとに行う事に意味はない。season levelでrunDiff0.10 + Games0.500として行っても、同じ答えが得られるからだ。

もちろん、個々の試合の背景が欠落している。 パーマー式では、1点差で9試合勝ち、9点差で1試合負けても、総得失点差は0なので、5勝5敗と同じ答えになる。

しかし、1点差での勝利がパーマーが言うように0.60勝ではなく、0.83勝に値するとしたらどうだろう。 そして、2点差での勝利は、パーマーが示唆するような0.10勝(0.70勝相当)ではなく、0.09勝を加え、0.92勝となる。 そして、3点差で勝つと0.08勝が加算され、1.00勝となる。 つまり、3点差で勝てば完勝、パーマーは5点差で勝てば完勝ということになる。

以下は、各チームが1試合ごとに獲得した勝ち点である:

スコア 勝敗
1 0.83 0.17
2 0.92 0.08
3 1.00 0.00
4 1.07 -0.07
5 1.13 -0.13
6 1.18 -0.18
7 1.22 -0.22
8 1.25 -0.25
9 1.27 -0.27
10+ 1.28 -0.28

そうすると、2023年はどうだろうか? オリオールズの得失点差は+129点で、平均より+13勝、つまり94勝になる。 Gradient Winds Approachでは100勝。 実際には101勝している。 我々がやっているのは、接戦をもっと評価する事であり、打撃戦の勝敗における全得点を評価する事ではない。

マーリンズは失点が57点多く、75勝に相当する。 Gradient Winsアプローチでは80勝。 実際には84勝。

パーマーが5勝5敗と言ったのに対して、1勝1敗で9試合は実際の9勝1敗である。 Gradient approachでは7.2勝となる。

これはパーマーやパイサグが示唆する方法より必ずしも良いのだろうか? いや、少なくともまだわからない。 しかし、これは打撃戦や接戦をよりうまく処理するための扉を開くものだ。 1点差で勝つには0.6勝以上でなければならない。 1本1本を同じに扱う事はできない。 また、1点差で勝つ事と10点差で勝つことが同じであるはずがない事も分かっている。 1点差勝利に0.83勝、10点差勝利に1.28勝を与える方が理に適っているのか? パーマーが言うように0.60勝や1.50勝を与えるよりも、私はその方が好きだ。 そして、私は1勝と1勝を実際の勝利として与えるよりも、それが好きなことも知っている。

次のステップは、Aspiling Saberistが引き継ぐ事だ。

#1位 タンゴタイガー
半分ずつ相関をとってみました。seasonの半分の実際の勝利、勾配勝利、pythag勝利を入れ、残りの半分の実際の勝利に対して相関を実行した。

それぞれの重み付けはこんな感じ:
0.01 実際の勝利数
0.23 Gradient Wins
0.29Pythag Wins
相関はr=0.52

1つだけの相関を求めると、実際の勝利数は0.50、Gradientは0.52、Pythagは0.52。

言い換えれば、この3つのうちどれを使ってもいいという事だ。 しかし、付加的な情報を含まないものという観点からは、Actual Winsにはほとんど新しい情報が含まれていないことがわかる。
この3つのうち2つが欲しかった場合、簡単に落とせるのはActual Winsである。

#2 タンゴタイガー
勾配勝率を向上できますか? そう、たった5分の努力で、私はこのようなウェイトになったのだ:
0.03 実際の勝利
0.37 Gradient Wins
0.13 Pythag Wins
つまり、Gradient WinsがPythagを圧倒しているのだ。 私は何をしたのか?

これだ:
1 0.715
2 0.81 0.095
3 0.9 0.09
4 0.985 0.085
5 1.065 0.08
6 1.14 0.075
7 1.21 0.07
8 1.275 0.065
9 1.335 0.06
10+ 1.39 0.055

.83の代わりに.715から始めている。 これは、元の.83とピタゴラスの.60の中間である。

そして、.09、0.08、0.07と1回ごとに落とす代わりに、.095、0.09、0.085とする。 ここでも、私が最初に提示したものと、パーマーが提示した0.10の中間の値である。

サバリスト志望者がすべきは、各得点を落とすのに最適パターンの発見だ。 ほとんど努力することなく、かなりの利益を得る事ができた。
だから、すぐに "公式な "Gladient Winsにたどり着ける。 私ではなく、他の誰かが理解する事を願うばかりだ。

#3 タンゴタイガー
なぜ1本目は0.10、2本目は0.09、3本目は0.08......といった具合に落としていったのか?
フィル・バーンバウムの天才的な説明につい寄りかかってしまった。
結局、その理論的説明と同じくらい、未来予測には回帰が必要。
つまり、ポスト2にある値は、基本的にフィルの天才的な説明を逆行させたもの。

#4 タンゴタイガー
つまり、セイバー志望者が理解すべき事は2つある:

  1. その後に続く1本1本にどれだけの価値があるのか? その落差はどれくらいですか?

  2. いつドロップが止まり、全ての得点に同じ勝利価値が与えられるのか? 10点以上か? 少ない? もっと?

それを見極めるには、多くの試行錯誤が必要だ。 そして、大きなペイオフが得られるかどうかはわからない。 しかし、それは良い見返りになるだろう。

ビル・ジェームズが言ったように、私たちは自分たちだけでは何もできない。 次の世代にステップアップしてもらう必要がある。 これは取り組むには本当に良い問題だ。

#5 タンゴタイガー 2024/03/21 (木) @ 15:33
フィルからのバカバカしいほどシンプルな説明を見たことがない人のために、私はこの古いブログ記事で話し、彼の記事へのリンクを張っている:
http://www.insidethebook.com/ee/index.php/site/comments/common_sense_approach_to_explaining_that_10_runs_is_one_win

#6 タンゴタイガー 2024/03/21 (木) @ 17:36
よし、最後にもう1つやってみよう。今度は底を20本まで行かせた。 というわけで、20点差以上の場合は1.665勝(パーマーの2.5や投稿元の1.28ではなく)。

重み付けは以下の通り:
0.006 実際の勝利数
0.468 グラディエントの勝ち
0.056勝

つまり、これが「公式」勾配勝利となる。

この関数を自分のコードに組み込みたい場合は、ここにある。 まず、runs_diffの上限を-20から+20に設定する。

次にこうする:

case when runs_diff > 0
ならば、-0.0025power(runs_diff,2) + 0.1025runs_diff + 0.50 + 0.115
else +0.0025power(runs_diff,2) + 0.1025runs_diff + 0.50 - 0.115
終了

つまり、runs_diffが+1の場合は0.715勝となる。


これをVertex形式(pos、neg runsそれぞれ)にする場合:
y = -0.0025(x - 20.5)² + 0.5 + 1.165625
y = +0.0025(x + 20.5)² + 0.5 - 1.165625

#7 jgf704
おい、タンゴ...最後の式に誤字があるぞ...マイナス走行のカッコ内は、もちろんプラス走行の場合と同じようにx-20.5であるべきだ。 ということは

y = +0.0025*(x-20.5)^2 + 0.5 - 1.165625

#8 タンゴタイガー
x = +20のとき、yは+1.665となる。
x=-20のとき、yは-0.665となる。

2つの和は1に等しい。
私の表計算ソフトの入れ方が悪かっただけです。

この記事が気に入ったらサポートをしてみませんか?