September 6,2005
Expected Wins
棒球統計界最常用到的 Expected Wins 是 Bill James 所提出的 Pythagorean Formula。他認為,一個隊的勝率約等於 RS^2/(RS^2+RA^2),其中 RS 是得分(runs scored),RA 是失分(runs allowed)。之所以被廣泛使用,主要原因大概是,它預測得還蠻準的。我從來不喜歡這個公式。RS^2+RA^2 似表什麼?那個比例又為什麼會接近一個隊的勝率?背後有任何的道理?就只是它預測的準而已? Bill James 後來還把那個 power 2 改成一些小於 2 的不同值,得到更好的預測,也是我無法認同的。我認知的統計不是這樣的。統計的作用是在測試一個假設模型,而這模型應該是根據某些背景知識,而不是隨便寫個模型和一些未知係數,經過一些迴歸方法,找到最符合數據的係數。做生物統計的人會知道,即使你的模型再符合數據,如果你的參數不能代表一個生物上的意義,你的模型是不會被接受的。統計是套強大有用的工具,但它是個輔助工具,用途是檢視驗證模型,而不是無中生有創造模型。有時候,藉由統計的方法,可以看出一些平常沒發現的規則,但發現之後,必須補充一套背後的理論,而不是單單讓一個公式成為準則。就我的觀點,Bill James' Pythagorean Formula 就只是個無中生有的公式,我沒有看到它的背後解釋。
接下來,我要談我怎麼看一個隊的勝率。一場球要贏球,就是得的分比失的分多,這是大家都知道的廢話,卻也是個簡單的事實。於是,要看一個球隊的勝率,可以看它得分比失分多的機率。於是,可能的模型是:得分是某個機率分佈,失分是某個機率分佈,得分與失分兩者不相關(甚至獨立),於是,就可以算那個機率。又或者,模型直接建構在得分減失分,而直接算這個機率分佈大於零的機率。老實說,我很少在整理數據,也不擅長於此。感謝萬能老婆的幫助,將去年(2004)的每一場分數整理好,讓我可以做些檢驗。
首先看看去年 2428 場比賽的 4856 筆得分之分佈:

每場的得分,是個取值於整數點的變數,第一個猜測是它是不是個 Poisson 分佈?Poisson 分佈的一個特性是期望值等於變異數。算一算這份數據,平均值是 4.8136,變異數是 10.3564,跟 Poisson 分佈有一段差距。再來,看它的形狀,勉強看起來像是左邊被截掉的常態分佈。常態分佈的取值是連續的,要用常態分佈,只能當作是經過類似四捨五入,將連續的值變成離散的整數。常態分佈的好處是,很多計算,變得方便許多,尤其若得失分是獨立的。獨立與否,不容易檢驗,通常只看兩者是否相關。從去年的資料顯示,得失分的相關係數只有 0.0407,可以說是蠻不相關的。若得分的分佈是 N(mu1, sigma1^2),失分的分佈是 N(mu2, sigma2^2),則得分減失分的分佈是 N(mu1-mu2, sigma1^2+sigma2^2)。這中間還有一個麻煩是,得分減失分不會是零,他們會延長比賽,打到分出勝負。由實際數據顯示的得分減失分的分佈如下。也還蠻像常態分佈,只是在零處沒有值。

之前的數據都是三十隊一起看。一個問題是,若分開看的話,得分或失分較多的,變異數會不會較大?在 Bill James' Pythagorean Formula 的計算下,得 x 分,失 y 分的勝率會和得 ax 分,失 ay 分的勝率相同。這種現象,等於是假設得 ax 分的隊,得分變異數是得 x 分的 a^2 倍。於是,我就去看看,各隊得失分與標準差(變異數的開根號)的關係:

上圖是得分,下圖是失分,X軸是平均值,Y軸是標準差。的確是有得失分越高,標準差越大的趨勢,但平均分變 a 倍,標準差並沒有變到 a 倍。用線性迴歸得到的迴歸直線是:得分標準差=1.6707+0.3131*得分平均值,失分標準差=0.9242+0.4689*失分平均值。1.6707 跟 0.9242 都是大到無法被忽視的數字(從 p-value 觀點),表示得失分變多,標準差成等比例變大,是不正確的。同樣地, 0.3131 跟 0.4689 則告訴我們,若把標準差當成固定,也是不正確的。
以下,我看三個統計值,S1,S2 和 S3。分別是各隊的得失分差除上標準差。不同的是,在 S1,假設所有隊的標準都相同;在 S2,假設標準差是隨平均值線性增加;在 S3 則採用上面求得的迴歸直線來預測標準差。F(x) 是常態分佈的累積機函數(CDF)。F(S1) ,F(S2) 和 F(S3) 是由三個不同假設估計的勝率。其中,實際資料的得失分差的標準差是 4.4576,但考慮實際資料在 0 沒有數據,若補上這些資料,標準差會變小。藉由一些計算,我採用 3.6 當做固定標準差。而在 S2 和 S3 的計算,也都同時乘上 4.4576/3.6 的比例。
實際勝率 | 估計勝率* | S1 | F(S1) | S2 | F(S2) | S3 | F(S3) | |
| Arizona | 0.3148 | 0.3188 | -0.4870 | 0.3131 | -0.4930 | 0.3110 | -0.4781 | 0.3163 |
| Atlanta | 0.5926 | 0.5910 | 0.2315 | 0.5915 | 0.2444 | 0.5965 | 0.2396 | 0.5947 |
| Baltimore | 0.4815 | 0.5078 | 0.0223 | 0.5089 | 0.0208 | 0.5083 | 0.0212 | 0.5085 |
| Boston | 0.6049 | 0.6036 | 0.3086 | 0.6212 | 0.2787 | 0.6098 | 0.2920 | 0.6149 |
| Chicago Cubs | 0.5494 | 0.5847 | 0.2126 | 0.5841 | 0.2272 | 0.5899 | 0.2214 | 0.5876 |
| Chicago Sox | 0.5123 | 0.5200 | 0.0583 | 0.5233 | 0.0536 | 0.5214 | 0.0551 | 0.5220 |
| Cincinnati | 0.4691 | 0.4061 | -0.2692 | 0.3939 | -0.2523 | 0.4004 | -0.2539 | 0.3998 |
| Cleveland | 0.4938 | 0.5006 | 0.0017 | 0.5007 | 0.0016 | 0.5006 | 0.0016 | 0.5006 |
| Colorado | 0.4198 | 0.4489 | -0.1543 | 0.4386 | -0.1369 | 0.4456 | -0.1413 | 0.4438 |
| Detroit | 0.4444 | 0.4898 | -0.0291 | 0.4884 | -0.0272 | 0.4892 | -0.0277 | 0.4890 |
| Florida | 0.5123 | 0.5127 | 0.0309 | 0.5123 | 0.0339 | 0.5135 | 0.0324 | 0.5129 |
| Houston | 0.5679 | 0.5696 | 0.1800 | 0.5714 | 0.1866 | 0.5740 | 0.1838 | 0.5729 |
| Kansas City | 0.3580 | 0.3876 | -0.3172 | 0.3755 | -0.3025 | 0.3811 | -0.3019 | 0.3814 |
| LA Angels | 0.5679 | 0.5647 | 0.1749 | 0.5695 | 0.1734 | 0.5688 | 0.1739 | 0.5690 |
| LA Dodgers | 0.5741 | 0.5531 | 0.1320 | 0.5525 | 0.1423 | 0.5566 | 0.1376 | 0.5547 |
| Milwaukee | 0.4161 | 0.4123 | -0.2122 | 0.4160 | -0.2356 | 0.4069 | -0.2216 | 0.4123 |
| Minnesota | 0.5679 | 0.5434 | 0.1115 | 0.5443 | 0.1162 | 0.5463 | 0.1138 | 0.5453 |
| Montreal | 0.4136 | 0.4039 | -0.2332 | 0.4078 | -0.2582 | 0.3981 | -0.2430 | 0.4040 |
| NY Mets | 0.4383 | 0.4668 | -0.0806 | 0.4679 | -0.0888 | 0.4646 | -0.0842 | 0.4664 |
| NY Yankees | 0.6235 | 0.5521 | 0.1526 | 0.5606 | 0.1394 | 0.5554 | 0.1443 | 0.5574 |
| Oakland | 0.5617 | 0.5332 | 0.0874 | 0.5349 | 0.0888 | 0.5354 | 0.0878 | 0.5350 |
| Philadelphia | 0.5309 | 0.5363 | 0.1012 | 0.5403 | 0.0973 | 0.5388 | 0.0984 | 0.5392 |
| Pittsburgh | 0.4472 | 0.4551 | -0.1104 | 0.4560 | -0.1201 | 0.4522 | -0.1144 | 0.4545 |
| San Diego | 0.5370 | 0.5441 | 0.1115 | 0.5443 | 0.1181 | 0.5470 | 0.1149 | 0.5457 |
| San Francisco | 0.5617 | 0.5493 | 0.1372 | 0.5546 | 0.1319 | 0.5525 | 0.1337 | 0.5532 |
| Seattle | 0.3889 | 0.4184 | -0.2143 | 0.4151 | -0.2190 | 0.4133 | -0.2134 | 0.4155 |
| St. Louis | 0.6481 | 0.6273 | 0.3361 | 0.6316 | 0.3433 | 0.6343 | 0.3431 | 0.6342 |
| Tampa Bay | 0.4348 | 0.4183 | -0.2208 | 0.4126 | -0.2192 | 0.4132 | -0.2161 | 0.4145 |
| Texas | 0.5494 | 0.5398 | 0.1132 | 0.5450 | 0.1066 | 0.5424 | 0.1088 | 0.5433 |
| Toronto | 0.4161 | 0.4329 | -0.1794 | 0.4288 | -0.1800 | 0.4286 | -0.1769 | 0.4298 |
| 相關係數 | 0.9505 | 0.9508 | 0.9512 | 0.9503 | 0.9507 | 0.9513 | 0.9516 | |
| 平均絕對誤差 | 0.0190 | 0.0182 | 0.0187 | 0.0184 |
上表中的 "估計勝率" 是經由 Pythagorean Formula 算出來的勝率。原本,我只希望這結果能不要差太多就好。這是有個背後模型在支撐,只要有接近的結果,我就滿意。想不到,結果比我預期得要好很多。不管是哪個假設下,相關係數或平均絕對誤差,都比經 Pythagorean Formula 算出來的要好。其中,最令我最驚訝的是,連 S1 跟實際勝率的標準差都已經較高。等於是說,單單只看得分減失分這個數據,它跟實際勝率的相關度都比較高。我去算了一下,0.5+0.11*(平均得分-平均失分),其中 0.11 是為了調整成標準差相同。發現它跟實際勝率的平均絕對誤差是 0.184,也比 Pythagoream Expected Wins 的誤差要小。我真的不知道,連得失分差去變形一下都可以表現得較好,Pythagorean Expected Wins 居然可以存在而被廣泛使用。
最後,回過頭看看,為什麼 Pythagorean Expected Wins 可以有還不錯的估計?公式是 RS^2/(RS^2+RA^2)。將它稍微改寫一下可以變成 1/2 + (RS - RA)*(RS + RA)/(RS^2 + RA^2)/2。如果把 (RS + RA)/(RS^2 + RA^2)/2 看作一個變數,它就跟 0.5+0.11*(平均得分-平均失分) 長得頗像。而因為那個變數的起伏,造成它的表現變差。
引用URL
1. 從模型觀點出發,發現一些謬誤或盲點。我對某些 sabermetricians 抓了各種不同的數據就當作各種不同角度的「客觀比較」來寫文章感到無法接受,不過我是沒有你這種底子,可以抓些東西自己去跑其它的模型。
2. 每天都有東西可以寫。先不說 Globe 或 Herald,至少你的墨水足以淹死世界日報波士頓版或 Metro (如果你的文章有英譯) 那些完全寫不出什麼狗屁的 columnists。
了不起!
http://www.baseballprospectus.com/article.php?articleid=342
It is unfortunate that all figures in this article are not available now.
那篇文章有價值的地方在於它對於 run score 的 modelling。對於那部份,他提出模型,然後用資料去檢驗,我完全給予肯定。他的三個 poisson 相加的模型,意義上,我還不完全認同,但至少這是個還算合情合理的模型,這樣的討論,我當然認同。
但接下來,他是用這模型去檢視 expected wins。這作法也沒用問題。但這都無法解釋 expected wins 幾個公式的背後模型,而只是比較好壞。我寫這篇,第一段也先表達了我對棒球統計最大的質疑:公式後面沒有一套具有代表意義的模型在支撐。而我試圖要做的,也就是建構背後的理論。
Bill James' 有些東西的確有意思,但若說像這種 Pythagorean "Theorem" 有任何的 inspiring,那是我無法認同的。