상세 컨텐츠

본문 제목

4. 평균으로의 회귀 적용

야구-칼럼/KBO 포스트시즌 진출 확률

by 야구고물상 2022. 2. 13. 00:52

본문

반응형

왜 평균으로의 회귀(Regression to the mean)를 적용하여 계산하는 걸까요? A라는 팀은 딱히 강하지도, 약하지도 않은 약 0.500 정도가 기대되는 팀이라고 가정해 봅시다. 만약 시즌을 치르게 된다면 0.500 정도의 승률을 기록할 겁니다. (실제로는 ~68% 확률로 0.458~0.542 사이에 있을 겁니다.) 하지만 시즌 첫날에는 하필 0.300 정도를 기록할 수 있는 약팀 B를 만났거나, 혹은 정말 모든 선수들의 컨디션이 좋은 우연 등에 의해 아주 큰 점수차로 이길 수도 있습니다. 또 짧은 기간 동안 이런 팀 분위기가 유지될 때도 왕왕 있습니다. 하지만 시즌은 (나름) 길고 결국 그 팀 분위기가 계속 가진 않습니다.(아마.. 도요.) 그렇기에 시즌 중반에 기록되는 피타고리안 기대 승률을 통해 남은 시즌 동안의 승률을 예측하는 건 위험한 생각일 수 있습니다.

그렇다면 0.500을 잔여 경기 기대 승률로 대신 사용하는 방법이 있을 수도 있습니다. 실제로 이렇게 예측하기도 합니다. 팬그래프에 가 보시면 Coin Flip Prediction이 있습니다. 딱 이 방법입니다. 어떻게 보면 가장 안전한 방법입니다. 그렇지만 아무리 짧은 기간 동안에 운이 개입할 여지가 많아도 더 좋은 팀들이 더 높은 승률을 기록할 확률이 높습니다. 그러니 코인 플립 방법도 꼭 좋은 방법은 아닙니다. 그렇기 때문에 저는 평균으로의 회귀를 적용하기로 하였습니다.

피타고리안 기대 승률의 피어슨 상관 계수

평균으로의 회귀를 적용하기로 했으니, 피어슨 상관 계수 r을 구하여야 합니다. 만약 현시점에서의 피어슨 상관 계수가 r이라면, 남은 경기에서의 기대 승률은 $W_{pred} = W_{now}\times r + 0.5\times(1-r)$로 계산될 겁니다. 그렇다면 r은 어떻게 구할까요? 먼저 1982 시즌부터 2020 시즌까지 모든 팀들의 경기별 피타고리안 기대 승률을 구합니다. 예컨대, 1994 시즌 삼성 라이온즈의 첫 경기~마지막 125번째 경기까지의 모든 경기 후 피타고리안 기대 승률을 구하는 겁니다. 그다음 남은 경기에서의 피타고리안 기대 승률을 구합니다. 첫 경기 후에는 남은 125경기에 대해, 125번째 경기 후에는 마지막 경기에 대해 구하는 것입니다. 그리고 이 모든 데이터들의 피어슨 상관 계수 r들을 구합니다. 하지만 이렇게 하면 39647개의 피어슨 상관 계수들을 구할 수 있었습니다. 하지만 사실 이 상관계수들은 꽤나 중구난방입니다. 시즌 동안 계속 잘하는 팀들도 있고, 초반에 너무 오버 페이스 하는 경우도 있으며 시즌 후반 뒷심을 발휘하는 경우도 많으니까요. 그렇기 때문에 또 이 r들에 대한 회귀 모델을 적용하여 실제 시뮬레이션에 적용해야 할 필요성이 있습니다.

피타고리안 기대 승률의 r은 시즌 경기 수의 중반을 기점으로 꽤나 대칭적인 모양을 가지고 있습니다. 그렇기에 대칭적인 식을 사용할 필요가 있습니다. 어떤 식이든 제곱과 연관되어 있는 식을 말이죠. 그리고 경기를 아직 한 경기도 하지 않은 때, 시즌이 모두 다 끝난 후의 r=0 이어야 할 것이기에 로짓(logit)을 식에 적용하기로 하였습니다. 위 두 가지 사항을 고려해 보면 제가 적용한 모델은

$r_{pred} = a\exp(-b(\ln(\frac {x}{1-x}))^{2})$

이 될 것입니다. 이를 적용한 결과는 Fig. 1과 같고, 저는 이 모델을 이용해 남은 경기의 기대 승률을 계산하기로 했습니다.

Figure 1. 1982시즌~2020시즌 KBO 리그 시즌 총 경기 수 대비 현재 경기 수($\frac{G_{now}}{G_{tot}}$)와 남은 경기에 대한 피타고리안 기대 승률의 피어슨 상관 계수 r의 그래프. 각각의 점들이 KBO 팀들의 실제 데이터이고, 검은 선이 그 상관계수들에 대한 회귀 모델 적용한 결과입니다. 시즌 진행의 50% 가량을 기점으로 상관 계수 r은 대칭적인 모습을 보입니다.

시즌 초반 피타고리안 기대 승률의 안정성 문제

처음엔 이 정도면 괜찮을 것 같았습니다. 그런데 이 모델을 적용하여 실제로 시뮬레이션해 보니 한 가지 문제점이 있었습니다. 시즌 초반 경기에 대해서는 정말 불안정한 결과를 얻어내는 것이었습니다. 이는 시즌 초반의 피타고리안 기대 승률이 믿을 수 없는 값이기 때문입니다. 정말 믿을 수 없는 건 아니지만, 그렇다고 믿으라면 아무도 믿지 않을 그런 값이지요. 시즌 초반의 피타고리안 기대 승률은 안정성이 매우 떨어지는 스탯입니다. 그렇기 때문에 세 번째 경기 후에 포스트시즌 진출 확률이 65%를 넘다가 다음 경기 후 35%, 30%로 떨어지는 경우가 왕왕 생기게 되었습니다. 이는 분명 문제였죠. 이를 어떻게 해결할지 고민했습니다. 그래서 난생처음 보는 크론바흐 알파(Cronbach’s alpha)를 찾아보거나 했지만, 훨씬 간단한 논리를 하나 생각해 냈습니다.

가장 마지막으로 시뮬레이션을 할 날은 시즌 마지막 경기 바로 전 경기를 한 후입니다. 또한 시즌 초반에는 시즌 후반에 비해 한 경기, 한 경기가 그 시점의 승률에 끼치는 영향력이 굉장히 큽니다. 전 이를 경기 수에 비례한다고 생각하기로 했습니다. 시즌 첫 경기 그때까지 성적에 끼치는 영향이 시즌 마지막 경기가 끼치는 영향의 144배라고 말이죠. 그리고 이것이 그렇게 틀리지 않다고 생각합니다. 예를 들어 보겠습니다. 143경기까지 0.500인 팀이(그 시점에서 71.5승) 마지막 경기를 이기면 승률은 0.503으로 승률은 약 0.0035 정도가 올라갑니다. 하지만 29경기 째 경기까지 0.500인 팀이(14.5승) 다음 경기를 승리한다면 승률은 0.517, 약 0.0167 정도가 올라가게 됩니다. 이는 마지막 경기에서 올라간 승률의 4.8배이며, 실제로 경기 수의 차이도 144/30 = 4.8로 똑같습니다. 각해 보면 승률 W가 기대되고 한 시즌 N 경기를 치르는 팀이 다음 경기를 이기는 사고 실험을 할 때 N 번째 경기를 이긴 후 전 경기와의 승률 차이는 $\frac {W(N-1)+1}{N} - W = \frac {1-W}{N}$ 일 것입니다. 또한 시즌 중반인 x 번째 경기를 이긴 후 전 경기와의 승률 차이는 $\frac {W(x-1)+1}{x} - W = \frac {1-W}{x}$ 가 될 것이니, 위의 결과가 이해가 갈 겁니다. 패배할 경우에도 두 식의 부호가 반대가 되기 때문에 그 비율은 같게 유지됩니다. 그래서 시즌 첫 번째 경기가 현재 성적에 영향을 끼칠 확률은 마지막 경기가 끼칠 영향의 144배로 생각해도 괜찮을 것이라 생각, 이를 보정 팩터로 사용하기로 했습니다. 즉, 시즌 첫 경기 후 피타고리안 기대 승률이 0.8이라면 $0.8\times(1/144)+0.5\times(1-1/144)\sim 0.502$를 실제 피타고리안 기대 승률 계산에 집어넣기로 한 겁니다.

그렇다면 다시 돌고 돌아 아까 계산한 피어슨 상관 계수가 어떨지 궁금해집니다. 위에서 사용한 (현재 경기 수)/(시즌 경기 수)를 적용한 승률에 대해 남은 경기의 피타고리안 기대 승률을 계산해 보니 위에서 얻어낸 결과와 사실상 같은 결과를 얻을 수 있음을 확인했습니다. 제 생각에는 이러한 결과를 얻을 수 있었던 이유는 첫째, 결국 리그 평균 승률은 언제나 0.500이고 둘째, 시즌 초반 이후에는 나름의 승률 안정성을 얻기 때문에 중반 이후는 거의 피어슨 상관 계수의 변화가 없기 때문이 아닐까 싶습니다. 어떤 곳으로 가든 팀 승률의 예측성은 시즌 진행의 50%를 기준으로 대칭적인 모양을 보여주며, 저는 이 식을 실제 시뮬레이션에 활용하기로 했습니다.

Figure 2. 위 Fig. 1과 비슷한 그래프이지만, 시즌 경기 수 대비 팀의 피타고리안 승률을 경기 수 팩터를 집어 넣은 후 다시 결과를 얻어낸 그래프. $W_{now} = W_{pyt}\times\frac{G_{now}}{G_{tot}} + 0.5\times(1-\frac{G_{now}}{G_{tot}})$으로 한 1982~2020 시즌 KBO 팀들 결과(파란 점)를 피팅한 결과로, 위 Fig. 1과 사실상 같은 결과를 얻을 수 있었습니다.

다음 글은 5. 실제 결과와의 비교입니다.

KBO PS Odds 바로가기

반응형

관련글 더보기

댓글 영역