Tuesday, April 03, 2007

Demystify EQA and Its Eccentric Baseline...

在做了兩年 BP (Baseball Prospectus) 的 subscriber 後,即使個人只把 sabermetrics (某台稱之為:賽伯計量學,looks brilliant to me!) 當成工作之餘的興趣,卻不容易說服自己去習慣 BP 給予讀者那種 "見樹不見林" 的闡述方式。

如果讓個人在 BP 所提供的 stats 裡挑一個最喜歡的,我會把票投給 Clay Davenport 的 EQA。其實也沒有太重要的原因:EQA 是少數 BP 的 statheads 以 近乎完整的方式 說明了來龍去脈的統計量,也因此我們有機會深入的去瞭解 EQA 的合理性與實用性。以下的探討包含了很多個人的猜測與推理,如果有不妥的地方,請不吝留下您的 comment。

要計算 EQA,首先得由 REqA (Raw EqA) 開始,根據 BP 提供的式子,REqA 的計算方式為:

A = (H + TB + 1.5*(BB + HBP) + SB + SH + SF)
B = (AB + BB + HBP + SH + SF + CS + SB)

REqA = A/B

如果我們把 A 項寫成下面的形式:

A = C + D
C = TB
D = (H + 1.5*(BB + HBP) + SB + SH + SF)

REqA = (C/B) + (D/B)

概略的說,上面的 (C/B) 會有點像 SLG、而 (D/B) 則比較像 OBP,所以 REqA 其實就 "很像是" 是 OPS 的修正量。而如果我們再把 TB (Total Bases) 展開,A 項可以寫成:

(2*H + 2B + 2*3B + 3*HR + 1.5*(BB+HBP) + SB + SH + SF)

這裡大致上可以解釋將為打者各項基本數據做加權 (weighted):(2B + 2*3B + 3*HR) 可以看成是打者的 power;BB 與 HBP 的價值比起 H 稍低 (這是很直觀的:壘上無人時,BB 與 H 的價值相同;但壘上有人時,H 的價值必然高過 BB),但不代表在真實世界裡 H 與 BB 的確切價值是 2:1.5。

你也許會發現我把 SB 項從 1.5 的加權修正為 1 -- 與 BP Glossary 的部份不同,但這樣的修正是 "正確" 的,SB 的先決條件是上壘,如果計為 1.5 -- 與 BB 相同的話,那就像是把 "上壘的因素" 多計算了一回,實際驗証的結果也是把 SB 修正為無加權較為正確。

接下來看 EQR 的部份,要計算 EQR 則必須連 league 的 Runs 與 PA 都帶上:

D = REqA/LgREqA
E = LgR/LgPA

EQR = (2*D - 1) * E * PA

LgREqA = League Raw EqA
LgR = League Runs
LgPA = League PAs

其中 D 項以 (2*D - 1) 的處理方式有些 marginal 的味道。而單就 Runs 的估計式而言,Davenport 的 EQR 看起來倒有點像是在 "作弊",這是因為大部份之於打者的 Runs Estimator 是不會 involve 到 league 的,但有了 league 的訊息做為後盾,EQR 用來估計打者實際的 Runs 的確有其準確性。

而最後一步,也就是最終的 EQA 的計算是:

EQA = (0.2*EQR/out)^0.4

個人不認為在這裡 raising 0.4 的 power 有什麼大學問,應該和 Davenport 說的一樣:只是為了讓 EQA 最後的結果看起來像是 AVG 而已。值得注意的是 EQA 由 REqA 導來,它保留了 OPS 的優點。相較於 AVG,.300 的 EQA 會比 .300 的 AVG 更接近真正的明星打者。總之,EQA 是可以直接比較打者與打者 "表現" 的量;EQR 加上了 PA 的因素 -- 也就是 playing time,則是用來衡量打者的 "貢獻"。另外,根據 Davenport 的說法:.260 的 EQA 大致上代表 league average,.230 則是 replacement level。

Base on .260 的 league average EQA,現在我們來計算一下已離隊的 J.D. Drew 在 06 年為 Dodgers 拿下了多少的 WAA (Wins Above Average),Drew 在 06 年一共有 364 outs committed,with EQA .300,在 10-run 為 1 win 的情況下:

EQR_Drew = (.300^2.5) * 364 * 5 = 89.72
EQR_League_Average = (.260^2.5) * 364 * 5 = 62.73

Drew's WAA = (89.72 - 62.73)/10 ~ 2.7 wins

所以 Drew 為 Dodgers 拿下了 2.7 WAA,如果說 league average team 有 81-win,那麼 06 年的 Dodgers 相當於全隊拿下 7 WAA (88-81),其中 Drew 的棒子就佔了 38.6%。Dodger Fans 可以想像一下 07 年的 Dodgers 要怎麼擠出 Drew 留下的 gap。

但別忘了一件事:上面的計算是基於我們已經知道 Drew 的 EQA 才得以導出他的 WAA,問題在於 EQA 必須收集整個 league 的資料才能算出來,所以 EQA 好歸好,最大的缺點就是:計算太複雜了。

事實上,我們能用更簡單的方式計算出 Drew 的 WAA,也就是用 OPS_Wins,我們曉得 06 年的 Drew 有 594 PA、.393 的 OBP 與 .498 的 SLG,那麼 Drew 的 OPS_Wins 就是:

0.025 * (1.7 * .393 + .498 - 1 ) * 594 ~ 2.47 wins

OPS_Wins 本身就有 WAA 的觀念,重點是調整 OPS 內 OBP 與 SLG 的權重來得到更正確的結果 (畢竟兩位 OPS 同為 .800 的球員,一位的 OBP/SLG 是 .300/.500,另一位是 .350/.450,他們對球隊的貢獻絕對不會相同);而與 EQR 計算出來的 2.7 WAA 相比,OPS_Wins 不僅簡單,結果也不會差很多。

如果想比較球員與球員的表現,有沒有辦法達到 EQA 的準確性,又能簡單的從 OBP 與 SLG 就 figure 出來?在這裡提供一個 "Dirty way to figure out EQA":

EQA ~ (1.7*OBP + SLG) * 0.258

有興趣的朋友不妨試試看,這個簡單的式子所 figure 出來的結果不會太讓人失望。

最後來看看 Davenport 將 EQA .230 定義為 replacement level 的部份:首先來計算這樣的 replacement level 究竟是多少 OW% (Offensive WPCT) 的球員,基於 EQA 為 EQR raise power 0.4 得來,在 EQA .260 為 league average 的前提下,EQA .230 的球員其 OW% 為:

X = (.230/.260)^2.5

OW%_EQA(.230) = X^2/(1 + X^2) ~ 0.351

所以 Devanport 在 "EQA 這個環節" 所定義的 replacement level 是 OW% .351 的球員,Runs created 相當於 league average 的 73.37%;反過來說,OW% .351 的投手其 RA 將是 league average 的 136.28%,那麼 Davenport 的 replacement level team 在 Pythagorean Formula (with power = 2) 的 WPCT 為:

(0.7337)^2 / (0.7337^2 + 1.3628^2 ) ~ 22.48%

也就是說,這支球隊一季能拿下的勝場數是 162 * .2248 = 36.4 (wins)。

EQA replacement level 的結果與 Keith Woolner 架構 VORP 所定義的 27.31% WPCT、44.23 Wins 的 replacemenet level team 稍低,但別忘了個人在 Baseline Discrepancy 裡以 Davenport 的 WARP1 反推得他的 replacement team 的 WPCT 不超過 16%!

換句話說,Davenport 架構了 EQA,也架構了 WARP1,但他在自己的 DT 圈子裡卻用了兩種不同的 baseline,至於 Davenport 為什麼要這麼做?天曉得....

所以當我們引用 BP 的 stats 時要特別小心:Clay Davenport 的 DT 是獨立的系統;Keith Woolner 的 VORP 又是另一個系統;Nate Silver...我不曉得....他的 WARP 接近 Davenport 的結果 (但 Nate 的 WARP 有考慮 leverage!?),VORP 則引用 Woolner 的 baseline,那麼 PECOTA 也許是 Davenport 與 Woolner 的集大成吧?

寫這些東西,不代表個人存心去 screw up BP,我不可能因此去否定 BP 的作家們個個都是 sabermetric expert 的事實,他們所寫的文章、所著作的書都是好東西,只是在不瞭解數學式子背後的真實意義的情況下,瞭解他們的想法,相信永遠比運用那些數字重要。

19 comments:

Anchor said...

有看沒有懂....EQA究竟代表什麼意思?

madboy said...

我覺得這篇讓我收穫良多。之前我不怎麼清楚原來BP還有底下自己不同的算法,也不甚清楚EqA是怎麼來的...

回去算算Dodgers健康的打下去和去年差多少好了...

jsoccer said...

這篇也讓我學到很多,通常我是看VORP為主,EqA我祇是當成「一個很像打擊率的值,但可以更精確比較打者間差異」的統計數字。

看了這篇之後更可以瞭解到這個數字的意義,以及它的推導過程(剛剛差點打成「推倒」...)

ps.
.....看來我還是得先去K書就是了,那本Baseball between the numbers才看了兩章(順便練英文閱讀...)

calsdark said...
This comment has been removed by the author.
calsdark said...

先感謝森川兄的頃囊相授,
這是繼Debugger兄指導WinShare、自己從網路上學VORP後,
再一次學會如何計算Sabermetrics的重要數據。

看到這公式之後,
我立刻把它套進我的資料庫中計算2006年洋聯的EqA,
不過算出來之後發現一些問題:
1. 如果說.260是聯盟平均,
.230是replacement level的話,
那麼高於聯盟平均的人實在太少了。
事實上我如果用LgREqA去代入REqA中,
也就是用聯盟平均去算EqA,
結果EqR會等於(2*1-1)*(LgR/LgPA)*LgPA=LgR,
而EqA=(0.2*LqR/LgOut)^0.4 = .245
算出來不是.245嗎?
可是聯盟平均不是.260?
2. 我知道WS和EqA的概念有差,
但是去年WS達到18的軟體銀行鷹隊外野手大村,
EqA算出來居然只有.246,
我不知道這會不會跟他大量的SH(12)及CS(14)有關。

也許我根本沒算錯,
而是對EqA的認知有錯?

Morikawa said...

很抱歉,放假 4 天....

To Anchor,

Simply put,我們以前用 AVG 的高低評斷球員的好壞,(也許) 現在我們該改用 EQA。

To jscoccer,

VORP 是 count statistic、EQA 則是 rate statistic,就像我們不會把 AVG 和 RBI 放在同一條線上比較是相同的意思。

Morikawa said...

To calsdark,

Clay Davenport "claims" EQA .260 為 league average 是來自於 all-time data 的 derivation。

.260 並不是什麼很大學問的數字,假使 06 年 NL 的 REqA 平均是 .730,這等於是說:在 Davenport 把 .260 定義為 league average 的前提下,他必須把 .730 的 REqA 給 "translate" 為 .260 的 EQA -- 畢竟 EQA 是由 REqA 而來。

那麼假使我們 "釘在" (stick to) .260 為 league average,在計算 NPB 的資料時,也許應該先把 PL 平均的 REqA 算出來,然後 "translate" 成 .260 的 EQA (此時可能必須調整的是 EQR 轉換為 EQA 時那個 "0.4" 的 power)。又,由於每一年的 average 都不盡相同,所以在每一年所被用來做 EQR 轉換為 EQA 的 power 都不盡然會相同。

這麼做會有點像是 "對時間做校正",好比說當我們想要比較 1978 年的 真弓明信 和 2006 年的 大村直之 在 "聯盟的地位",我們不至於直接拿他們的 OPS 或 REqA 來相比就斷定優劣,也許會有下面的 approach:(我沒有去實際計算,僅僅是打個比方...)

1. 1978 年,.700 的 REqA 是 average,那麼這個 .700 被轉換為 .260 的 EQA,真弓 在該年被 translate 後的 EQA 則是 .270。

2. 2006 年,.720 的 REqA 是 average,所以 .720 被轉換為 .260 的 EQA,大村 在該年被 translate 後的 EQA 是 .265。

3. 所以,縱使 06 年 大村 的 REqA 可能比 78 年 真弓 要好,但是在修正後,大村 在 06 年 "之於聯盟" 的表現其實不如 78 年的 真弓。

因此,league average 的 EQA 其實是我們自己可以去定義的,如果你高興,將 .245 定為 league average EQA 再去做修正也無妨,.260 並非通則。Davenport 的定義只是讓我去尋找他的 replacement level 的 baseline 何在的一個線索。

另一個問題:Win Share (supposed) 是 "Wins",EQA 則只是一個 rate statistics,它甚至不包含任何 playing time 的資訊,如果要放在同一條線上比較,較正確的步數應該是將 EQR (runs) 轉換為 Wins。當然 "在 NPB,究竟多少 runs 相當於 1 win" 又是另一個問題。

除此之外,當計算 NPB 的 CL 的 REqA 時,像投手的打擊資料其實是不應該考慮的,這會減低一些資料的 bias。

2.5 said...

Morikawa,
when do we apply the Park Factor? I would imagine you divide EqR by the park factor, because if you do it after you have EqA, it becomes way too small. But I don't know.

Morikawa said...

Hi 2.5,

You're right on the money! EQR is where the PF (Park Factor) should be applied. Not EQA.

The question remain is where your PF comes from. Those PFs noted in BP's annual are aggregate ones. I'm pretty sure those are not the PFs BP authors apply to divide the EQR.

I also view your blog. It seems you're interested in calculating KBO stats. Since I'm not sure if you can read Chinese Characters, I'd like to give you my two cents on EQA:

1. Most of the run estimators don't involve league information. Thus I take Davenport's EQR a foul play.

2. The power "0.4" used in translating EQR to EQA should be modified when you're calculating EQA for non-MLB baseball league. After all, the merit of that power is sole for scaling EQA to look like AVG.

2.5 said...

Morikawa,
why can't we use BP annual's aggregate park factors? EqR is an aggregate stat.

And if we shouldn't use the 0.4 exponent for non-MLB, what should we use? I'm trying to calculate Davenport Translations for the CPBL, so I need to derive a multiplier. What Davenport does for different leagues is first use 0.4, then after he gets EqA he applies the multiplier (which, btw, is 0.946 for the NPB, and 0.780 for the Mexican League).

So currently, What I am doing is calculating the EqA for foreign players in the CPBL, and seeing how much it decreases when the player plays in other leagues.

Morikawa said...

2.5,

Speaking of PF, for example (And it is JUST an example), Pecto Park kills hitter’s HR but allows bunch of extra base hits. On the contrary, Dodger Stadium surrenders HR to hitters but prevents them digging extra-base hit into the corner. The aggregate PFs of these two parks may eventually be the same but the compounds within are totally different.

BP’s aggregate park factor (BPAPF) looks like a linear weighted combination of peripheral stats PF to me. It only provides you a rough inclination of the park. Moreover, Davenport himself doesn’t apply BPAPF to adjust his UEQR to EQR since player’s UEQR/BPAPF is not equal to EQR.

I deem that raising power 0.4 in all leagues is just fine since you’ve already got a multiplier to overcome the adjustment of league difficulty. I’m sorry I did not quite follow your question.

I’ll be very excited to see your excellent results.

2.5 said...

If I understand you correctly, Davenport applies park factors for each component of EqA (H, 2B, 3B, HR, etc.), yielding a more precise EqA. If he does that, then one would have to apply PFs before before EqR is calculated.

That said, I still don't see any theoretical reason why using the aggregate PF would bias results, especially since, as you said, it's a linearly weighted measure of all components of run-scored predictors. It encapsulates everything, as does EqR.

I'll notify you when I post my results. I was glad that there was someone out there to confirm when to apply the PFs.

Thanks

Morikawa said...

2.5,

Thanks for your kindly feedback.

What I said is using BP's aggregate PF is not the way Davenport applies to his EQA.

There's not only one way to "skin" PF adjustment. You cann't be wrong if you use aggregate PF to adjust things. After all, the adjusted factors you apply are consistent. And what you wanna dig out is the "relative" difficulty between different leagues. Whether your result is the same as Davenport's is not an issue, at least I think so.

By the way, as I mentioned in this article, calculating EQA is no picnic. Even though, the behavior of EQA is nice. Since I'm a sloppy dude, I'd take EQA = (1.7*OBP + SLG) * 0.258 for MLB. IMO, this is not a bad EQA ballpark to me.

竹板凳 said...

Morikawa 大大,

我在讀 Clay Davenport 的 2004 年奧運和大聯盟 EqA 轉換一文時,看到他 Davenport 似乎有一個簡易的大小聯盟轉換 ratio 。

「same analysis with Double-A players moving to the major leagues, you would get a ratio of 1.49. If you did the same thing with players in high A, the Carolina, California and Florida leagues, you would get a ratio of 1.82.」

請問這個 ratio 要怎樣用於 EqA 的轉換上面?

比如,若我假設中華職棒水準等於高階 1A 時,要如何重新調整 EqA 來得知同一球員在大聯盟可能的表現?

我試了幾種算法覺得較可能的是:

假設中職只有高階1A的程度,中職的 EqA 和大聯盟得分的轉換比率是1.82。把陳金鋒和聯盟的「得分」都除以 1.82,再帶回 EqA 的公式從新運算

請問這是否正確呢?

感謝

Morikawa said...

Hi 竹板凳,

First thing first,"大大" 這種無謂的稱呼可以免掉....

個人因為工作的緣故,有的時候回覆會比較遲一點,長話短說:

依照那篇文章所述,1.82 是應該被 apply 在 EQR 的部份,也就是說算出 CCF 在 CPBL 的 EQR 之後,他被 translated 回大聯盟的 EQA 應當是:

[0.2*(EQR/1.82)/outs]^0.4

EQR 的計算在本文裡頭應該找得到,不過我不很確定這和直接 apply 在 runs 上面會差多少。

而如果單純的想計算 CCF 在 "CPBL 的 EQA",首先應該把 CPBL 的 league average 轉換為 .260,也就是說:

EQR = LgR
.260 = (0.2*EQR/LgOuts)^Power

其中 LgR = League Runs
LgOuts = League total outs

求出 power 後再回頭求 CCF 的 EQR,然後 "CCF 在 CPBL 的 EQA" 即是:

EQA = (0.2*EQR/outs)^Power

在 MLB,Power ~ 0.4;CPBL?不曉得...

※※※※※※※※

兩個重點:

1. EQA 粗略代表打者一個出局數的價值。
2. EQA 是個 "相對" 的量,不是 "絕對" 的量,所以在不同聯盟計算 EQA 應當先將該聯盟之聯盟平均轉換為 .260。

竹板凳 said...

感謝 morikawa 的回答。

我後來也發現 1.82 是應該被 apply 在 EQR。

如果經過運算後,赫然發現和我之前直接 apply 在 runs 上面 的結果是一樣的。

如果需要再找出那個 power ,我仍有些算式要改。受益良多。

竹板凳 said...

重新驗算後, 2007 年中職的修正 power 是 0.427。

而如果中職是高階1A 的水準,今年的陳金鋒在大聯盟出賽 EqA 會是 0.290

竹板凳 said...

嗯,還有一個問題。

如果是 power 的 ratio 不同的話。

若將一名打者的成績投射到另一個聯盟時,除了 EqR 做調整外, Power 應為原聯盟的 ratio,還是新聯盟的 ratio 呢?

如果中職換算大聯盟的話,是該用中職的 0.427 還是 0.4?

Morikawa said...

因為 1.82 是唯一一個連結 CPBL 與 MLB 的 factor,而已經被 applied 在 EQR 後,表示 EQR 已從 CPBL 轉換為 MLB,因此最後在轉為 EQA 的部份就是用 MLB 的 "0.4"。