推估得分公式的方法比較

看板Baseball (棒球)作者 (Win Shares 痴漢)時間19年前 (2005/12/13 15:47), 編輯推噓14(1402)
留言16則, 12人參與, 最新討論串1/1
本文將出現於台灣棒球資訊網專欄 推估得分數的方法比較 (Part I) 棒球是比得失分的比賽,得分多的隊伍容易獲勝,失分多的隊伍容易戰績不好,這道理相信大家都知道。道理雖基本,但卻相當重要。當一支球員需要藉由補進新人或是交易球員來增強實力的時候,若想藉由補進(以及換出)選手的實力來評估球員的變動會讓球隊的贏球場數產生什麼變化,一個簡單的方法就是去評估球員變動會讓球隊的得失分數產生什麼變化。再藉由畢式理論勝率(Pythogorean Winning Percentage)或是邊際得失分(Marginal Runs、Marginal Opponent Runs),便可粗略地藉由預估個別球員的成績來推估出球隊會在下一球季拿到幾勝。換句話說,球隊首先對個別球員作這樣的估計: 個別球員實力 ─→ 個別球員年度成績 ─→ 個別球員分別為球隊多得或少失的分數 再由最後一點,算出球隊一年會得到幾分失去幾分,進而估計出: 球隊總得失分數 ─→ 球隊年度勝率 當然,在每個估計的步驟中,都或多或少會產生誤差。誤差的來源有許多種,例如錯估球員實力、球員表現出意外的好表現或壞表現、傷兵等等,所以上面提到的幾個步驟實在是一個很大的課題。在本文中,我們將專注於 個別球員年度成績 ─→ 個別球員分別為球隊多得或少失的分數 這個評估步驟的攻擊層面,考慮打者(含跑者)的成績,也就是來看看要如何評估 個別打者(含跑者)年度成績 ─→ 個別球員分別為球隊多得的分數 在作評估之前,首先要知道的是,所謂的個別打者年度成績可包含哪些項目,而哪些項目不應考慮在內。既然之前個別打者年度成績是由評估他們的實力所得出,我們希望用到的數據是與隊伍中其他打者實力較無關係的數據項目。基於此點,在一般球迷話題中常常出現的打點數就應該排除在外,因為這跟該打者前面幾位上場的其他打者表現關係甚大。前面兩三位打者上壘率高,考慮的打者登場打擊時通常就已經有很多跑者在壘包上等待支援,擊出安打時自然就比較容易送回跑者。若壘包上空空如也,即使全壘打,也不過是一分打點。除了安打之外,上場打擊時若較常三壘有 人,也比較容易因為高飛犧牲打或是平凡無奇的滾地球送回一分。雖然打點這個項目歷史悠久,也為眾多球迷所熟知,但在評估單一打者成績優劣的時候,其實很容易受到其他球員的表現影響。基於同樣的道理,各球員的得分數也是一個不太可靠的評估指標,以下我們將忽略這兩項數據。考慮的有 打數、安打、二壘打、三壘打、全壘打、雙殺打、犧牲觸擊、犧牲高飛、四壞、故意四壞、觸身球、三振、盜壘成功、盜壘失敗 以及可以直接從這幾項定義出來的數據,例如打擊率、上壘率、長打率等等。 要知道用來評估的方法好不好,就必須能將此方法得到的結果拿來跟現實中的數據結果相比較,看看準確度如何。如果評估的結果太過偏離現實,則須再找別的評估方法以代替之。可是,既然打點數與得分數都不適合用來判斷球員表現的優劣,那還有其他數據可以用來代替他們嗎?這裡的關鍵在於,雖然個別球員的打點與得分數用途不大,但是團隊的打點與得分數則不然,尤其是得分數。因為我們的終極目的就是希望找出好的方法,使得可以從個別球員的打擊數據推估出全部會得幾分。如果方法適合的話,那麼直覺上利用團隊的上面幾項攻擊數據一樣可以得到與實際得分數 相差不遠的評估結果。所以我們可以先研究團隊攻擊數據與得分數的關係,找到好的評估方法之後,再將其套用到個別球員的攻擊數據上,即可得到個別球員攻擊為球隊多打下來的分數。在接下來的文章中,我將考慮幾個不同的評估方法,進而介紹出由 Bill James 所創的 Run Created 公式。 首先來看也是一般人所熟知的打擊率。假設現在我們知道一支球隊的團隊打擊率,可以推估出這支球隊大約的得分數嗎?當然不行,因為打擊率是比率,而得分數卻是總量,與球隊一年的比賽場數密切相關。所以這邊作一點小變化,來看看能不能從打擊率精確地推估出球隊的平均每場比賽得分數。 只看一支球隊的話,評估方法的選擇性自由度實在太大,讓人無所適從。所幸,在經過十六年的台灣職業棒球(含中華職棒與台灣大聯盟,以下一律合稱台灣職棒)歷史之後,我們現在已有 109 支隊伍的成績可以作為研究之用。若將這 109 支隊伍的歷年打擊率與平均每場比賽得分數畫在一座標平面上,以打擊率作為 X 軸,平均得分數作為 Y 軸,我們可以得到以下的圖: 圖略 明顯地,這些由打擊率和平均每場得分數當成座標畫出的點,在這個圖中的分佈很接近直線。我們用最小平方法來算出最接近這些點位置分佈的直線,也畫在同一個圖上,變成: 圖略 直線的函數式大約(取一位小數)是 Y = 33.4X – 4.4。 從圖中可以明顯看出,雖然這些點並不是剛好都落在線上,但是幾乎都偏離這條直線不遠。如果給定打擊率 X,我們便可以藉由這條直線來估計出大約的平均每場得分數 Y 值是多少。這邊並不列出全部 109 支隊伍的推估平均得分數與實際平均得分數,只列出 2005 年六支隊伍的這兩項數據作為參考: 實際平均得分數 推估平均得分數 誤差 興農 4.31 4.26 -0.05 誠泰 4.60 4.37 -0.23 兄弟 4.14 4.35 0.21 統一 4.09 4.33 0.24 中信 3.95 3.82 -0.13 La New 4.26 4.62 0.36 光看到這裡,想必很多讀者已經馬上想到別的評估方法了。只看打擊率當然資訊過少,兩支隊伍若有一樣的打擊率,長打多的隊伍通常會是得分較多的隊伍。所以很自然地,也可以來算算看利用長打率推估出來的得分數會是怎樣。這邊我們也作類似的處理,先將 109 支隊伍的歷年長打率與平均每場比賽得分數畫在一座標平面上,以長打率作為 X 軸,平均得分數作為 Y 軸,得到一堆點的分佈圖。這些點的分佈依然是很接近一條直線,所以再用同樣的想法找到最接近直線後,拿這條直線以及給定的長打率,來評估平均每場得分數大約會是多少,結果是: 圖略 直線的函數式大約(取一位小數)是 Y = 18.2X – 2.4。 我們來同時看看 2005 年六支隊伍的這兩種評估方法結果以及誤差: 實際平均得分數 推估平均得分數1 誤差 推估平均得分數2 誤差 興農 4.31 4.26 -0.05 4.03 -0.28 誠泰 4.60 4.37 -0.23 4.49 -0.11 統一 4.09 4.33 0.24 4.22 0.13 兄弟 4.14 4.34 0.20 4.00 -0.14 中信 3.95 3.81 -0.14 3.95 0.00 La New 4.26 4.62 0.36 4.53 0.27 除了興農以外,用長打率估計出來的得分數都比用打擊率估計出來的得分數誤差要小,還蠻符合直覺中長打率要比打擊率更能評估攻擊火力的概念。不過只看六支隊伍樣本實在太小,若看全部 109 支隊伍又會是如何呢?光看上面那兩個圖實在看不太出來哪個方法較優,因此我們還需要一個指標來量化不同方法的準確度。這邊提供三個評估準確度的方法,複雜度依序遞增,但後面的方法也較具統計精神: 1. 比較全部 109 支隊伍中,有幾支隊伍是用打擊率來評估得分會得到較準確的結果,又有幾支隊伍是用長打率來評估得分會得到較準確的結果。 2. 上面兩個方法會出來的圖,點的分佈都很接近直線。可以計算推估得分數與實際得分數的相關係數,來評估這些點有多靠近直線。相關係數愈接近一,則代表所有的點都相當接近落在同一直線上;愈接近零,則代表兩組數字的分佈很可能沒有任何線性關係。 3. 計算兩組誤差值的 RMSE(Root of Mean Square Errors),也就是考慮用兩個方法得到誤差值的分佈,計算其標準差。粗略地說,算出來的值一定是正數或零。或為零,則所有的點都落在同一直線上;算出來的愈小,就代表所用的評估方法愈準確。 用這三個指標評估準確度的結果是 打擊率法 長打率法 何者較準確 誤差較小 52, 佔47.7% 57, 佔52.3% 長打率法 相關係數 0.630 0.705 長打率法 RMSE 0.359 0.327 長打率法 三個評估準確度的結論一致,所以我們可以蠻有把握的說,若想利用打擊率或長打率來估計出平均每場得分數,長打率應是較好的方法。 == 推估得分數的方法比較 (Part II) 在前一篇文章中,我們已看到用長打率來估計得分數似乎是比用打擊率來估計更為準確。打擊數據如此之多,只用打擊率與長打率來估計豈能滿足我們呢?另一個也很普遍的打擊數據就是上壘率。要想多得分就得朝兩個方向努力,一是上壘,二是推進。所以上壘率與長打率正是得分這個目標的兩大基石。長打率已經考慮過,那麼來看看上壘率推估得分準不準確是再自然也不過的了。 打擊率相同的隊伍,長打多的隊伍通常得分較多;同樣地,打擊率相同的隊伍,上壘率高的隊伍通常得分也會較多。所以直覺來說,上壘率跟長打率都比打擊率更能夠準確地估算出得分。但是上壘率與長打率來比呢?那可就沒那麼明顯了,所以我們還是來算算看吧。將 109 支隊伍的歷年上壘率與平均每場比賽得分數畫在座標平面上,以上壘率作為 X 軸,平均得分數作為 Y 軸,得到一堆點的分佈圖。這些點的分佈依然如預期的很接近一條直線,然後就可以拿最接近直線以及給定的上壘率,來評估平均每場得分數大約會是多少,結果是: 圖略 直線的函數式大約(取一位小數)是 Y = 32.9X – 6.4。 來比較看看打擊率和上壘率的評估準確度吧! 打擊率法 上壘率法 何者較準確 誤差較小 49, 佔45.0% 60, 佔55.0% 上壘率法 相關係數 0.630 0.680 上壘率法 RMSE 0.359 0.322 上壘率法 如之前所預料的,上壘率全面優勝,沒什麼新鮮的。再來比較看看長打率和上壘率的評估準確度: 長打率法 上壘率法 何者較準確 誤差較小 59, 佔45.9% 50, 佔54.1% 長打率法 相關係數 0.705 0.680 長打率法 RMSE 0.327 0.322 上壘率法 三個項目中,長打率在其中兩項表現較優,並無像之前跟打擊率相比時的全面性壓倒勝利,所以也很難從這個比較就下結論說到底是長打率還是上壘率較能準確地用來預估得分數。代表上壘的上壘率與代表推壘的長打率難分軒輊,那如果把兩個一起看呢?這就引入了另一個重要數據:OPS(= 長打率 + 上壘率)。在兼顧兩個得分的重要層面之下,OPS 在評估得分數的表現要比只看其中之一都要來得好。 圖略 光看圖,就已經可以感覺到這些點的分佈比在前面幾個圖裡還更要接近直線。量化之後就更確定了,OPS 與平均每場得分數的相關係數是 0.739,RSME 是0.268,都遠優於只看上壘率或長打率。若讓他們捉對廝殺來比較估計誤差,則變成 OPS 法 上壘率法 長打率法 OPS法 - 64, 佔58.7% 71, 佔 65.1% 上壘率法 - - 50, 佔 45.9% 長打率法 - - - 解釋一下這個表格。以第二行第一列為例,當 OPS 法對上上壘率法時,這代表我們同時用這兩種來估計 109 支隊伍的平均得分數。OPS 法的估計結果有 64 支隊伍誤差較小,上壘率法只有 109 – 64 = 35 支隊伍較好。由此表可看出,用 OPS 法來估計得分數,不僅是相關係數最高,RSME 最低,而且與上壘率法或長打率法一對一火拼時也輕鬆獲勝。還有沒有別的數據比看 OPS 更好用呢?還可以拿來測試的選擇不少,例如 1981 年 Thomas Boswell 定義的總攻擊率(Total Average, TA, 中職官方網頁譯為攻擊指數,大致意義是說平均每製造一個出局數可以進幾個壘包),算出來與平均得分數的相關係數是 0.734,RSME 是0.265,可說是與 OPS 不分軒輊。 不管是打擊率、長打率、上壘率、OPS,還是 TA,這些公式有一個共同的特徵:若固定打擊機會,同樣的打擊結果效用永遠是一樣的。這句話是什麼意思呢?拿打擊率來說的話,若固定打數,每多一支安打影響打擊率變化的程度是固定的,都是一除以總打數。拿長打率來說的話,若固定打數,每多一支二壘安打影響長打率變化的程度是固定的,都是二除以總打數;每多一支全壘打影響長打率變化的程度是固定的,都是四除以總打數,一壘安打跟三壘安打也是如此。拿上壘率來說的話,若固定打數 + 四壞球保送 + 觸身球 + 犧牲飛球(也就是固定分母),每多一個保送影響上壘率變化的程度是固定的,都是一除以分母,其他有出現的分子的項目也是如此。OPS 與 TA 也有同樣的性質,讀者不妨自行思考一番。我們可以說這幾個公式具有「加法性(Additivity)」,就好像在算加法的時候,如果要把兩個數字 a 跟 b相加,那麼不管 a 是多少,b 對 a 造成的變化是固定的。 除了眾多「加法性」的公式,另一個想法是考慮「乘法性(Multiplicativity)」的公式。一個簡單的例子是 Pete Palmer 定出來的 BRA(Batter’s Run Average)」,定義很簡單,OPS 是把長打率跟上壘率直接加起來,BRA 則是把這兩項直接乘起來。由於是乘法,若長打變動相同幅度,上壘率愈高的人長打率變動對於乘積的影響就愈大。類似地,若上壘率變動相同幅度,長打率愈高的人上壘率變動對於乘積的影響就愈大。在棒球攻擊的世界裡,乘法跟加法差在哪裡呢?如果你的隊友愈會上壘,那麼你的長打就愈容易把更多跑者送回來得分;如果你的隊友愈會打長打,那麼你上壘之後就愈容易被隊友送回來得分。從這個角度來看,在棒球場上的得分模式,其實或多或少帶有一些乘法性。 Bill James 的 RC(Runs Created)公式便是由此而誕生。最原始的 RC 公式跟 BRA 幾乎一樣,只不過 BRA 公式裡有兩個分母(一個是上壘率的分母,一個是長打率的分母),RC 將 BRA 略作調整,只用一個分母,使得算出來的 RC 跟得分數相當接近。原始 RC 定義是: RC = (安打 + 四壞保送) * 壘打數 / (打數 + 四壞保送)。 因為 RC 看的是總得分數,為了要跟實際平均每場得分數相比,我們把 RC 先除以場數,再跟平均得分數相比,把代表 109 支隊伍這兩項數據的點畫在圖上,得到: 圖略 最接近直線的函數式為 Y = 1.03 X + 0.20。 之前得到最好的評估得分方法是用 OPS (或是 TA)得到的,這邊來看看用原始 RC/G 是不是真的更能準確地評估得分數。 OPS 法 原始RC/G 法 何者較準確 誤差較小 54, 佔49.5% 55, 佔50.5% 不相上下 相關係數 0.739 0.730 OPS 法 RMSE 0.268 0.260 原始RC/G 法 看起來兩個方法一樣好。不過,原始 RC/G 算出來的結果與實際的平均每場得分數相當接近,就算不用圖中的直線來輔助,直接算 RC/G 就可以得到還不錯的估計得分數,這是用 OPS 所不能達成的大優點。雖然原始 RC公式中只有寥寥數項,但卻已經可以拿來當成一個相當準確的估計得分公式了。為了更加精確,Bill James 後來又發展出來許多更複雜的 RC 公式。藉由引入觸身保送、盜壘成功與失敗、犧牲打等等影響力較小的數據,讓 RC 算出來的結果比原始版更接近實際得分數。一般球迷若不想做這些複雜計算,其實用原始的 RC = (安打 + 四壞保送) * 壘打數 / (打數 + 四壞保送) 就已經相當不錯了。 -- Win Shares (暫譯勝場貢獻指數) 是由棒球統計魔人 Bill James (現任紅襪隊 Senior Advisor, Baseball Operations) 所提出用來衡量棒球選手攻守整體價值的一套系統, 我 將原公式作了些許的調整與取捨, 以用來計算中華職棒史的球員排名. 相關文章放在 ptt BBS 站 CPBL板精華區以及台灣棒球資訊網專欄區 http://twbaseball.info/column_alist.php?editer_no=21 歡迎來信指教 ^^ -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 69.162.28.246

12/13 16:13, , 1F
寫的真好..不推不行
12/13 16:13, 1F

12/13 16:18, , 2F
push!!!!
12/13 16:18, 2F

12/13 16:23, , 3F
如果大學有這種棒球研究..大概D大可以去當教授了
12/13 16:23, 3F

12/13 16:45, , 4F
我始終覺得D大寫的數據分析文章至少有conference paper等級
12/13 16:45, 4F

12/13 16:45, , 5F
如果有棒球conference的話
12/13 16:45, 5F

12/13 18:19, , 6F
12/13 18:19, 6F

12/13 18:34, , 7F
推...雖人看不大懂XDD
12/13 18:34, 7F

12/13 23:24, , 8F
推薦這篇文章
12/13 23:24, 8F

12/13 23:55, , 9F
偷偷問,有地方發表嗎?
12/13 23:55, 9F

12/14 00:04, , 10F
正在與台灣棒球資訊網站長合作 編一本類似 Bill James'
12/14 00:04, 10F

12/14 00:06, , 11F
Handbook http://0rz.net/5a0Us 的東西
12/14 00:06, 11F

12/14 00:07, , 12F
不過應該還要弄兩三個月(吧?)
12/14 00:07, 12F

12/14 00:44, , 13F
會被聯盟告吧 XD
12/14 00:44, 13F

12/14 00:54, , 14F
只有數據 沒有照片 :D
12/14 00:54, 14F
※ 編輯: Debugger 來自: 69.162.28.246 (12/20 07:30)

10/22 19:47, , 15F
後面觀眾好絕望的感覺
10/22 19:47, 15F

10/12 19:24, , 16F
沒換
10/12 19:24, 16F
文章代碼(AID): #13ddocxQ (Baseball)
文章代碼(AID): #13ddocxQ (Baseball)