logo

피타고리안 승률 📂세이버메트릭스

피타고리안 승률

공식 1

특정 종목 스포츠 리그의 팀 하나가 주어져 있다고 하자. 팀 득점scores $S$ 와 팀 실점allows $A$ 에 대해, 이 팀의 시즌 기대 승률 $p$ 는 다음과 같다. $$ p = {{ S^{2} } \over { S^{2} + A^{2} }} = {{ 1 } \over { 1 + (A/S)^{2} }} $$

설명

피타고라스 기대승률pythagorean Expectation빌 제임스bill James에 의해 제안된 비선형 모델로써, 팀 득점과 팀 실점을 독립변수로 두고 시즌 승률을 설명한다. 득점을 많이 하면 많이 이기고, 실점을 많이 하면 많이 지는 것은 당연하지만 그것을 계량적으로 바라보고 분석하는 것은 전혀 다른 차원의 문제다.

득점비율vs팀승률.png

위 그림은 어떤 야구 리그에서 82년도부터 20년도까지 각 팀, 각시즌의 득점비율과 팀승률을 비교한 점도표로써 이상적인 선형이라기에는 조금 휘어있는 것을 알 수 있다. 빌 제임스는 이러한 현상을 설명하기 위해 직관적인 공식을 찾아냈고, 이는 실제 데이터를 너무나 잘 설명했다. 훗날 스티븐 밀러steven Miller에 의해 수리통계적인 유도과정이 정당화되었다.

수리통계적 유도

피타고리안 승률이라는 이름 자체는 분모의 $S^{2} + A^{2}$ 가 피타고라스 정리를 연상시킨다고 하여 붙은 이름이다. 그러나 실제로는 다음과 같이 양수 $\gamma \ne 2$ 에 대해 일반화할 수 있으며 실제로도 1954년 이후 메이저리그에서는 $\gamma \approx 1.85$ 가 가장 적합하다고 한다. $$ p_{\gamma} = {{ S^{\gamma} } \over { S^{\gamma} + A^{\gamma} }} $$ 수리적인 일반화 외에도 적절한 가정을 만족한다면 다른 스포츠 종목에도 적용될 수 있다. NBA(농구)에서는 아주 큰 값인 $14 < \gamma < 17$, NFL(미식축구)에서는 $\gamma \approx 2.4$ 정도라고 한다.

구체적인 유도는 스티븐 밀러의 논문을 정리한 포스트를 참고하라.2

코드

다음은 설명의 그림을 재현할 수 있는 R 코드다.

library(ggplot2)

post_url = "https://freshrimpsushi.github.io/posts/2217/"

team_pitch = read.csv(paste0(post_url, "팀투구82_20.csv"), header = TRUE, encoding = 'UTF-8')[,-1]
team_hit = read.csv(paste0(post_url, "팀타격82_20.csv"), header = TRUE, encoding = 'UTF-8')[,-1]

data = data.frame(
    팀승률 = team_pitch$승 / team_pitch$선발,
    득실점비 = team_hit$득점 / team_pitch$실점
)

ggplot(data, aes(x = 득실점비, y = 팀승률)) +
 geom_point(alpha = 0.5, shape = 16) +
 theme_bw() + coord_fixed(ratio = 2)
ggsave("득점비율vs팀승률.png", width = 480, height = 480, units = "px", dpi = 120)

  1. 송민구 역, Baumer. (2015). 세이버메트릭스 레볼루션(THE SABERMETRIC REVOLUTION): p 100 ↩︎

  2. 참고 문헌에서는 “팀의 득점과 실점은 독립적이며, 둘 모두 정규분포와 비슷한 형태를 가지고 있기 때문에 이런 결과가 나올 수 있음을 밝혀냈다.“라 설명하고 있으나, 실제로는 베이불 분포를 가정하며 베이불 분포는 딱히 정규분포와 닮지 않았다. ↩︎