Thursday, December 06, 2007

A Dirty Way to Derive OPS_Win

這篇文章是 Morikawa Blue 開設以來的第 150 篇,算是個值得被紀念的標竿。說起來,還真不敢相信自己撐了這麼久。無論如何,現階段還有一些動力支持個人寫下去,這裡說 "動力" 指的是一方面驅使自己吸收新的棒球知識與觀念,此外就是所有在這裡與個人做過互動的朋友 -- 透過這樣的交流方式,相信彼此都或多或少有一些收穫。

OK,進入正題。這一回個人想透過一些數字的 "魔術" 來 derive 在這個 Blog 經常提到、也經常用到的 metric -- OPS_Win。之所以說 "魔術",是因為 derive 的過程裡發現 OPS_Win 與 RE (Run Expectancy) 的巧妙關係,讓個人意想不到,相信也會讓讀這篇文章的朋友意想不到。

現在,我們從 OPS 開始。

原始的 OPS 是 OBP 與 SLG 的總和,個人把 OBP 重寫如下:

OBP = ( 1B + 2B + 3B + HR + BB ) / ( AB + BB + SF )

SLG 則是:

SLG = ( 1B + 2 * 2B + 3 * 3B + 4 * HR ) / AB

如果說 OBP 與 SLG 是 OPS 的成份,那麼 1B、2B、3B、HR 與 BB -- 這幾個 batting events 就是 OBP 與 SLG 的成份,當然,別忘了 "outs"。

現在回頭來看看 RE,我們曉得在每一局裡頭會有 3 種出局數、8 種 runners on base 的情況,合計就是 24 種組合,以下是 RPG (Runs Per Game) 4.8 的 partial RE Matrix:

StateRunnersOutsRE
1---00.533
21--00.926
312-01.542

考慮 BB 這項 batting event,從 state 1 轉移到 state 2 的 BB 價值 0.393 runs (0.926 - 0.533);從 state 2 轉移到 state 3 的 BB 則價值 0.616 runs (1.542 - 0.926)。Simply put,一個 BB 的價值將會隨著 situation 的不同而改變,要說明的一點是:這裡我們不考慮 context,請暫時把 WE (Win Expectancy) 丟到一邊去。此外,如果不經過 state 2,也就一定不會有 state 3,也就是說 state 2 出現的機會 "勢必" 要比 state 3 來得高。

所以我們曉得在不同 states 的 transition 裡,BB 所價值的 runs 都不盡相同,那麼將這樣的 states 組合 (這裡是指 "有可能因 單一 BB 而 transit 的 states" -- 比方說 "無人出局 1 壘有人" 到 "無人出局滿壘" 就是一組不可能經由單一 BB transition 而達成的 states) 給抓出來,接下來依各種組合發生的 "機會" 與其 "所價值的 runs" 做 加權平均 (weighted mean),得到的就是一個 BB 的 weighted runs。我們管這樣的 weighted runs 為 BB 的 Linear Weights、or LWTS。在 RPG 為 4.6 ~ 4.8 的環境下,BB 的 LWTS 大約是 0.323,這可以解釋為一個 BB 的 average RE 是 0.323 runs。

以下是所有與 OBP 和 SLG 有關的 batting events 的 LWTS:

Batting EventsLWTS
1B0.475
2B0.776
3B1.070
HR1.397
BB0.323
Out-0.300

別忘了,我們的目的是 deriving OPS_Win,為求簡單,我們把 SF 給捨棄,畢竟它對 SLG 沒有影響,對 OBP 的影響更是相當有限。

有了這些 LWTS 後,我們來考慮聯盟平均,以下是 07 年 NL 的部份 batting events 的 total:

AB1B2B3BHR
894881568848985052705
BBHBPSFOBPSLG
8576934752.334.423

對一位 regular player 而言,一個球季下來 大約會拿到 600 上下的 PA,藉此,我們將上述的 total 做一個 "scale down",也就是把每一個 batting events 的總和除以一個常數 (constant) 以得到一位約 600 PA 的 league average batter 的 "假資料":

AB1B2B3BHR
5429530316
BBHBPSFOBPSLG
5265.334.420

在這裡,我使用的常數 (除數) 是 165。

接下來,我們利用這位 虛構 (made-up) 的 league average 打者,考慮幾個 batting events 對 OBP 與 SLG 所產生的 marginal differential。比方說這位 average 的打者多打了一支 HR,那麼他的 OBP 會增加 0.0011、SLG 則增加 0.00659。

又,我們在前面解釋 HR 的 LWTS 是 1.397,換句話說:如果想單單用 OBP 與 SLG 來 translate runs,對一個聯盟平均的打者而言,多打一支 HR -- 相對於增加 0.0011 的 OBP0.00659 的 SLG -- 會換來 1.397 的 expected runs (LWTS)。我們將這個部份的結果整理如下:

EventLWTSOBP_DiffSLG_Diff
1B0.4750.001100.00107
2B0.7760.001100.00291
3B1.0700.001100.00475
HR1.3970.001100.00659
BB0.3230.001100
Out-0.300-0.00055-0.00077

其中 OBP_Diff / SLG_Diff 所代表的是多加一個第 1 行的 batting event 對 OBP / SLG 所產生的 differential、respectively。

如果你沒有跟上,從這裡開始也無妨。再解釋一次上面這個表格的意義:以 1B 為例,對於那位虛構的聯盟平均打者,多打 1 支 1B 會讓 OBP 增加 0.0011、SLG 增加 0.00107,然後拿到 0.475 的 expected runs (也就是 1B 的 LWTS),依此類推。

現在我們有了 batting events 對聯盟平均打者的 OBP 與 SLG 的影響以及 related LWTS,下一個目的就是要建構一個完全由 OBP 與 SLG 所組成的式子來估計 Runs,也就是說我們的目標是:

a * OBP + b * SLG = Runs ‧‧‧ (a)

考慮多打一支 1B,上面的式子 (a) 會變成:

a * ( OBP + 0.0011 ) + b * ( SLG + 0.00107 )
= Runs + 0.475 ‧‧‧ (b)

將 (b) 減去 (a),得到:

a * 0.0011 + b * 0.00107 = 0.475

重複那些與 OBP、SLG 有關的 batting events,即得到一組線性方程式 (a set of linear equations),我們將用這組線性方程式來解出其中我們想要的係數 (coefficient) a 與 b。以最小平方誤差法 (least square error) 得到的 best solution 是:

283 * OBP + 163 * SLG = Runs ‧‧‧(c)

現在來檢驗一下 (c) 夠不夠好?我們用它來估算一支 1B 的 LWTS:

283 * (0.0011) + 163 * (0.00107) = 0.485

可以發現這個數字與真實資料的 0.475 相當接近,以下是利用 (c) 計算 eLWTS 與實際 LWTS 的比較:

EventeLWTSLWTS
1B0.4850.475
2B0.7850.776
3B1.0851.070
HR1.3861.397
BB0.3110.323
Out-0.282-0.300

Just in case you wonder:eLWTS (283 * OBP + 163 * SLG) 與 LWTS 的 correlation coefficient 大約是 0.99 -- an almost perfect case!

OK,deriving 的工作大致上已經完成了一大半,現在我們回頭看看得到的估計式,基於 1 個球季是 162 場比賽,我們把 162 做為常數從 (c) 式中提出來:

Runs = ( 1.747 * OBP + 1.001 * SLG ) * 162

假設以 600 做為一位 regular 打者一季的得到的 PA 基數,上面的式子可以寫成:

Runs = (1.747 * OBP + 1.001 * SLG ) * 0.27 * PA
Since ( 162 / 600 ) ~ 0.27 => PA * 0.27 ~ 162

最後我們 honor 10 runs equal 1 win,把等號兩邊各除以 10,上面的式子就變成:

Wins = 0.027 * ( 1.747 * OBP + 1.001 * SLG ) * PA

Given the "made-up league average hitter", with OBP 0.333 0.334 and SLG 0.420,we have:

1.747 * 0.333 0.334 + 1.001 * 0.420 = 1.004 ~ 1

Consider "Wins Above Average"、or WAA, we have:

WAA = 0.027 * ( 1.747 * OBP + 1.001 * SLG - 1 ) * PA

Let's recall the original OPS_Win:

OPS_Win = 0.025 * ( 1.7 * OBP + 1 * SLG - 1 ) * PA

Almost identical, isn't it?

從 derive 的過程裡,我們曉得 OPS_Win 其實隱藏的是 RE 的訊息,要說 OPS_Win "利用 OBP 與 SLG 來逼近 RE" 是合理且安全的。又,對絕大多數的野手來說,它們的 clutchiness 在經過一個球季的 long run 後會被 neutralized,所以 OPS_Win 的結果對大多數的打者來說將會很接近他們的 batting WPA -- 也就是球員的真實價值!

另一方面,OPS_Win 還告訴大家一件事:OBP 在 translate runs 的時候,其 weight 是 SLG 的 1.7 倍左右。但別忘了,這是單純就 "scale" 的角度來看問題。不可否認的事實在於 OBP 的 range 是 0 ~ 1;SLG 則是 0 ~ 4,一位打者想增加 0.01 的 SLG,其難度和 0.01 的 OBP 是絕對不同的!

最後想說的是:用來評價球員的 metrics 並不是複雜就比較好,OPS_Win 的可愛之處就在於它這麼簡單、沒有用到聯盟資訊、但還是能維持相當程度的正確性與真實性,更何況 OPS_Win 的 baseline 是最直截了當的 league average。這也是個人喜歡 OPS_Win 勝過 VORP 與 EQA 的最主要原因。

※※※※※※※※

這裡有一篇 Dan Fox -- 少數極為用心的 sabermetrician -- 還在 THT 的時代所發表的一篇 "極為基本" 的文章,如果來這裡的朋友對數字有興趣,卻又說不出像 OPS 這種新一代的 metrics 好在哪裡時,建議瀏覽一下。

  • Run Estimation for the Masses

  • 在該文後面的部份,Dan 把 OPS 的其中一部份提了出來,寫成下面的型式:

    (4/PA) * [(0.5*S) + (0.75*D) + (1*T) + (1.25*HR) + (0.25*W)]

    其中 S = 1B、D = 2B、T = 3B、W = BB。

    注意上式中加了 underscore 的那些 coefficients,是不是和前面所提到的 LWTS 很相近?所以 OPS 為什麼會是一個既簡單又 superior 的 metrics,原因就在這裡!

    ※※※※※※※※

    個人在 上一篇 文章提到一件事:

    說 EQRAA 與 OPS_Win 的線性關係維持在 0.9 以上的 correlation coefficient 是安全的 (這僅僅代表 EQRAA 與 OPS_Win 的 "方向" 一致)。

    不過 CC (correlation coefficient) 0.9 究竟代表什麼?它其實只是給我們一個方向,一方面代表 EQRAA 越大、OPS_Win 也就越大;反之 EQRAA 越小,OPS_Win 也越小,就這樣而已。另一方面,如果利用 EQRAA = a * OPS_Win + b 來求 a 與 b 的最佳解,CC 越高,表示用 OPS_Win fit 出來的 EQRAA 結果會更像一條直線。

    所以即便 EQRAA 和 OPS_Win 有 0.9 以上的 CC,這也 "不盡然" 代表 EQRAA = OPS_Win,除非求出來的 a = 1 & b = 0 -- 這是 OPS_Win derive 過程中 eLWTS 與 LWTS 的 case。

    15 comments:

    大胖 said...

    這篇讓我看了真久,也感謝Morikawa兄花了那麼多時間來寫。

    另外關於「150篇」要說的是:「我可以忍受您寫的慢、寫的少,但是希望你可以一直寫下去:)」

    Morikawa said...

    大胖兄,

    感謝你的鼓勵。這篇的確是花了不少時間寫,甚至原本的 idea 還不是這個方向。利用 LWTS 完全是突發奇想。Lucky me...

    我想最重要的,是那種找到答案的刺激!如果哪一天這份刺激退化了,那就是這個 Blog 拉下帷幕的一天。

    Dorasaga said...

    morikawa,

    我來確定一下我對基本的要素的理解對不對?我今晚吃了一片蝦天(天ぷら)的大碗そば,一堆麵湯醬油不知道有沒有堵塞我的腦細胞:

    「8種 runners on base的情況」=1壘有人、1+2壘都有人...直到滿壘有人的八種不同combinations。

    「LWTS」= Linear-weighted Transitioned-states,是一個平均值,代表一個walk在所有runners-on-base states平均給RE的貢獻。

    第一個RE表格中,每個LWTS是「一個聯盟平均的打者」的一個event中,平均不同state transition造成的expected run。

    第二個RE表格的eLWTS是平均每個event的增加OBP與 SLG的differential得到的expected run。

    以上,這樣的註解沒錯吧?

    不過問題來了:

    為什麼比較LWTS與eLWTS之間,correlation coefficient 0.99 很match是significant?

    再來,您把162場比賽做為常數從(c)式中提出來,有個1.747*OBP + 1.001*SLG--這兩個coefficients 是哪裡來的?

    最後請問一下,您在計算marginal differential的時候也是用Retrosheet之類的program來跑嗎?

    Morikawa said...

    Dorasaga,

    We deal those questions one at a time:

    ◎ 「8種 runners on base的情況」=1壘有人、1+2壘都有人...直到滿壘有人的八種不同combinations。

    →這是正確的!不妨從這個 Blog 右邊的 "Chart & Tool" 的區域看看 "Run Expectancy" 的連結,那是 Tango 做出來的資料,由於 cover 了相當多的 RPG 的情況,所以很實用。

    --------

    ◎「LWTS」= Linear-weighted Transitioned-states,是一個平均值,代表一個walk在所有runners-on-base states平均給RE的貢獻。

    →LWTS 是 Linear WeighTS 的 abbreviation,你說的應該也沒錯,更嚴謹一點的講法是:一個 BB 的 LWTS 代表 "在所有可能以單一 BB 達成 transitions 的 states 間 RE 的 weighted mean"。

    For example,文中第 1 個表格裡,"假設" BB 將 state 1 移到 state 2 發生的機會是 75%,RE 是 0.393;將 state 2 移到 state 2 發生的機會是 25%,RE 是 0.616,那麼 BB 的 LWTS 是:

    0.393 * 75% + 0.616 * 25%
    = 0.44875

    當然,你曉得能因單一 BB 而 transit 的 states 絕對不止文中所提的這兩種。

    --------

    ◎第一個RE表格中,每個LWTS是「一個聯盟平均的打者」的一個event中,平均不同state transition造成的expected run。

    →請參考上面的回答。

    --------

    ◎ 第二個RE表格的eLWTS是平均每個event的增加OBP與 SLG的differential得到的expected run。

    →這裡有必要說明一下:文中的 eLWTS 是利用我們求得的 a、b 來計算特定 batting event 的 LWTS。這比較接近 regression (迴歸) 的觀念,我們知道求得的估計式其實是這樣的:

    Runs = 283*OBP + 163*SLG ‧‧(a)

    以 1B (single) 為例,假設 1 支 1B 可以得到 "eLWTS" runs,我們也知道對於一個約 600PA 的聯盟平均打者,他每多打一支 1B 可以增加 0.0011 的 OBP 與 0.00107 的 SLG,所以將這些數字代回我們的估計式:

    Runs + (1B 的 eLWTS) =
    283*(OBP + 1 支 1B 改變 OBP 的量) +
    163*(SLG + 1 支 1B 而改變 SLG 的量)

    所以:
    Runs + (1B 的 eLWTS) =
    283 * (OBP + 0.00110) +
    163 * (SLG + 0.00107) ‧‧(b)

    用 (b) 式減去 (a) 式,得到:

    1B 的 eLWTS =
    283 * 0.0011 + 163 * 0.00107
    = 0.485

    雖然 1B 的實際 LWTS 是 0.475,和我們 fit 出來的式子所導出的 0.485 差不了太多。但不要忘了,我們的目的還是在求 runs 而不是 LWTS,只不過我們用 eLWTS 與 LWTS 的比較來驗証估計式的好壞而已。

    --------

    ◎為什麼比較LWTS與eLWTS之間,correlation coefficient 0.99 很match是significant?

    →在 regression 的語言裡,我們求得的估計式是:

    (283 * OBP + 163 * SLG)

    而如果這個估計式導出的單一 batting event 的結果能夠 perfectly match 該 batting event 真實的 LWTS,那麼 correlation coefficient between eLWTS & actual LWTS 應該是 "1.00"。而現在我們得到 0.99 的結果,這只能說是 "好得不可思議"!

    --------

    ◎把162場比賽做為常數從(c)式中提出來,有個1.747*OBP + 1.001*SLG--這兩個coefficients 是哪裡來的?


    Runs = 283*OBP + 163*SLG
    = 162*(283/162)*OBP + 162*(163/162)*SLG

    283/162 = 1.743
    163/162 = 1.001

    --------

    Finally,Retrosheet 是一個資料庫,不是 program,但這篇文章的過程用不到那麼細的資料。

    我曾經想利用 Retrosheet 來做的東西,是各隊 managers 對 RP 的調度問題。

    竹板凳 said...

    看完dorasaga和森川的問答後才比較了解 state transit 和 RE 的關係。

    這樣也了家 OPS_Win 為什麼是個好用的數據了。

    Morikawa said...

    竹板凳,

    你可以利用 OPS_Win 取代 EQA 來做 CPBL 的部份,會簡單很多 -- 也就是求出 CPBL 的 a*OBP + b*SLG = Runs

    在聯盟轉換的部份,首要的問題是 CPBL 的 LWTS,可以用 Custom Linear Weights 與簡單的 linear interpolation 得到。

    接下來就是 RPW (Runs Per Win),最簡單的做法是:

    RPW = 10 * (RPG/9)^0.5

    RPG = Runs Per Game

    我沒試過這麼做的結果會如何,但至少值得一試。

    竹板凳 said...

    感謝森川提供,當初看完這篇後就打算今年年底算一次 CPBL 的 EqA 和 OPS_Win 來比較看看。謝謝提供方法。看來有必要把 2007 的數據拿出來直接算一次了。

    我最近還想比較KBO 的數據。但是因為 KBO 似乎不提供 SF HBP 等數據,要算出 EqA 有點困難。不知道 OPS_Win 有沒有提供跨聯盟比較的方法?

    Morikawa said...

    竹板凳,

    先說一下:最近個人比較忙,像你提出的問題也不是那種花一兩分鐘就能回答出來的,所以如果一時沒有回,並不代表個人對此視而不見。

    提到跨聯盟,就必須要得到基準點,比方說 ".330 的 OBP 在 CPBL 到了 KBO 會變成多少?",在沒有這個訊息的前提下,OPS_Win 沒辦法做 translation。Custom Linear Weight 只能用來求得不同聯盟 (也就是在不同的 RPG 下) 的 OPS_Win 的式子,也只能評價各球員在其所屬聯盟內的貢獻。

    另外,能與 OPS_Win 比較的不是 EQA 而是 "EQR About Average / RPW" (RPW:Runs Per Win)。EQA 某種程度上是 rate statistic,而 OPS_Win 和 EQR 是 count statistic,而如果 OPS_Win 要變成 rate statistic,你曉得 ... 別去乘最前面那個 PA 項就是了。

    也許你還記得我在 Demistify EQA 一文裡曾經寫出過一個 EQA 的近似式:

    EQA ~ (1.7*OBP + SLG) * 0.258

    它不也和 OPS_Win 不帶 "PA" 這個乘項有幾分相似?

    至於你提到 out = 0 的球員如何計算 EQA,這一點我不清楚,但從 EQR 的式子來看:

    EQR = ( EQA^2.5 ) * 5 * OUT
    = X * OUT

    X = (EQA^2.5) * 5

    這裡的 X 就有點像該打者每一個出局值多少 EQR (EQR per out),對吧?所以沒有 out committed 的球員要如何算 EQR .... 這還真的沒想過,個人會花點時間去看看這個部份,有空的話我們繼續討論。

    竹板凳 said...

    感謝,我也在想如果一個球員沒有 out 那這個*無限大的涵義是什麼。

    一個經常出賽的球員不可能沒有出局數。如果有球員經常出賽又從來不出局,EqA無限大我想也不誇張。

    那麼碰到這種罕見的例子該略過不處理嗎?在一個借用聯盟平均的數據中略過幾個人好像也怪怪的。

    我覺得是個滿有趣的問題。ERA同樣也會出現無限大的數據,不知道 ERA 又是怎麼處理的。

    竹板凳 said...

    再問一些 EqA 的問題,請森川有空再回答吧。有些問題我想了一陣子了,再等一陣子也無所謂,只是好奇而已。

    之前參考 Davenport 2004 奧運 Translation 一文,我推想他計算兩個聯盟之間 Translation 的方式為:

    (lg1_EqR/lg1_Out)/(lg2_EqR/lg2_Out)

    取得兩聯盟間 EqR/Out 的比例

    之前好像有看到接下來的算法是把這個 ratio 帶進下面的公式:
    EqA = (0.2*EqR/out)^0.4

    其中 0.4 在非大聯盟的時候要以:
    Power = Log 0.26/Log (0.2*League REqA/League Out)
    計算出來的數字為準。

    於是把聯盟2的 EqA 轉為聯盟1就是:
    lg2EqA = (0.2*lg2EqR*ratio/out)^lg1Power

    但是我覺得這種算法似乎有一點怪。聯盟2用此方法轉換出來的EqA平均起來仍是 0.260。如果聯盟2水準高於聯盟1,照理說轉換完的聯盟2平均EqA也要高於聯盟1,也就該高於 0.260 才對?

    我仔細看了 Davenport 奧運一文,卻發現 Davenport 好像直接用 EqA/ratio 就結束了。是不是我哪裡出錯了?

    dorasaga said...

    How about the Eq**R series that Dan Fox deviced? some nice metrics looking at base-running.

    I don't think EqA counts how many times a runner advances to third, to home on a single, on groundouts, and other context.

    For example, EqBRR might be a better indicator of how a runner helps his team. And speed is a big factor, if not alternative, in producing runs.

    DePodesta also talks about power vs speed on his new blog as well.

    Morikawa said...

    竹板凳,

    我用 "消去法" 來看問題:

    Claim: Ratio = (lg1_EqR/lg1_Out)/(lg2_EqR/lg2_Out)

    Ratio = Lg1_EQR_PO/Lg2_EQR_PO
    (EQR_PO: EQR per out)

    也就是說在 Lg2 水準較高的情況下,一個球員 在 Lg1 打出的成績會比 Lg2 "在帳面上" 要好,那麼針對 "同一個球員" 的 Lg1_EQR_PO 應該要大於 Lg2_EQR_PO,所以這裡的 Ratio 會 "大於 1"。

    然後在 lg2EQA 的部份:

    lg2EqA = (0.2 * lg2EqR * ratio / out) ^ lg1Power

    先看這個式子對不對:針對同一個球員,由於 Lg2 的水準較高,在固定的 playing time 下,球員在 Lg1 所交出的 EQR 應該會比較高,所以在 ratio 大於 1 的情況下,用 lg2EqR*ratio 做計球員在 Lg1 下可能交出的 EQR 應該沒有錯。

    所以如果結果有問題,那就可能是出在 power 了。

    依照 EQA 的定義是把 league average 定義為 0.26,考慮現在要做的是 "Lg2 的球員如果在 Lg1,其 EQA 應是多少" 的問題。所以求 Lg1 Power 的出發點變成是 Lg1 的 league average 將 "先被轉換為 0.26 的 EQA"。

    依照 EQR 的定義:

    D = REqA/LgREqA
    E = LgR/LgPA

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

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

    由於是 league average,所以 D = 1,而 EQR 即為:

    EQR = E * PA = LgR。

    Claim:

    0.26 = (0.2 * LgR / LgOut) ^ Power

    在 Lg1 的 LgR 與 LgOut 都已知的情況下,power 可以用上面的式子求到,但這個式子和你所 apply 的 Power 的式子似乎有一段差距。

    這是個人的想法,你如果有興趣不妨再試試。

    ----

    Dora,

    在打擊與投手的問題都還沒搞定以前,去考慮速度就是本末倒置的行為。Dan 所弄出的 EqXXX 系列或許很好,但研究性質遠大於實用性。Simply put,兩者的 weight 差太遠了。

    一個 GM 如果以為他的球隊是因為速度而贏球,那就會和 Dodgers 一樣陷入萬刧不復。

    竹板凳 said...

    森川,

    你的回應應該是認為底下的公式是正確的:

    lg2EqA = (0.2 * lg2EqR * ratio / out) ^ lg1Power

    而 lg1Power 應該是從下面的公式求出來:

    0.26 = (0.2 * Lg1R / Lg1Out) ^ lg1Power

    所以我之前所寫求 lg1Power 的方法,應該把 REqA 換成 EqR:

    lg1Power = Log 0.26/Log (0.2 * lg1EqR/lg1Out)

    不過我發現我在計算的時候的確是用

    lg1Power = Log 0.26/Log (0.2 * lg1EqR/lg1Out)

    REqA 是留言時手誤了。

    因此問題還是存在。聯盟2用此方法轉換出來的EqA平均起來仍是 0.260。

    這是正確的情況嗎?

    Morikawa said...

    竹板凳,

    我的答案是 "不合理",因為光從下面的式子來看:

    EQR = 5 * out * (EQA^power)

    由於 out 與 5 都是常數,這很容易就可以看成 EQR 與 (EQA^power) 是成正比的。

    我們假設 league 2 比較強,那麼 league 2 的球員來到 league 1 之後,其 EQR 首先會被乘上轉換的 ratio,同時這個 ratio 還應該 "大於 1"。

    那麼 league 2 球員的 EQR 變大,在 EQR 與 (EQA^power) 成正比、且 power 為常數 (由 league 1 的資料求出) 的前提下,league 2 球員的 EQA 將會變大,於是整個 league 2 轉換到 league 1 時 league average 的 EQA 不應該還是 .260。

    由於 EQA 本身經過一個小於 0 的 power 的 scale down,所以單一個 EQA 其實完全沒有 "幾何上" 的意義!事實上如果在 league 1 的 power 已經求出來後,league 2 的 league average 的 EQA 就應該是:

    .260 * (ratio)^(1/power)

    這是我的想法,你參考一下,如果我哪裡寫錯或推錯了的話,請務必通知我。

    竹板凳 said...

    感謝,我會再檢驗數據。