Xp
NBA Maniazine
/ / /
Xpert

Offensive Win Share는 어떻게 구해지는가?

 
13
  1292
Updated at 2016-08-14 17:33:52

-주의- 수식으로 도배된 글입니다. 정신건강에 좋지 않습니다.

 

윈셰어는 꽤나 많이 쓰이는 2차 스탯입니다. 이름대로, Win Share는 한 팀이 특정 구간 동안 거둔 승수 중 그 선수가 기여한 부분을 나타낸 기록입니다. 그래서 한 팀의 선수들의 Win Share를 합하면 팀의 승수와 비슷해 진다고 하네요. 팀의 전력에 많이 좌우되는 등 단점이 있지만, 고려해볼 가치가 있는 2차스탯인 것 같습니다.

 

윈 셰어는 PER에 비해서는 구하기 어려운 편이지만, 박스 스코어 기반이 아닌 RAPM 등이나, 박스 스코어 기반이지만 리그 평균 조정이 들어가는 BPM 등의 스탯보다는 훨씬 구하기 간단한 기록이라고 볼 수 있습니다. 공식 자체가 Offensive Win Share + Defensive Win Share로 이루어져 있기 때문에 각 부분으로 나누어 찾아 보도록 하겠습니다. 오늘은 Offensive Win Share만 다룰 예정입니다.

 

그리고 이 글은 1978시즌 이후의 Win Share만을 다룹니다. 77시즌 이전에는 개인의 턴오버 등이 트래킹되지 않아서 구하는 방식 자체가 굉장히 다릅니다. 그 부분은 나중에 생각하고, 1978시즌부터 현재까지 통용되는 윈셰어 공식에 맞추어 설명을 해 나가도록 하겠습니다.

 

Offensive Win Share

 

우선 Offensive Win ShareMarginal Offense / Marginal Points Per Win으로 계산됩니다. 즉 한 선수가 공격 부분에서 얻어낸 추가적인 점수를 1승당 필요한 추가적인 점수로 나눈 것입니다. 여기서 Marginal Points Per Win은 단순하게 구할 수 있습니다. 그 해 리그의 평균 득점 * (해당 팀의 Pace / 리그의 Pace) * 0.32 입니다. Pace48분당 한 팀이 가져가는 포제션의 횟수로, Marginal Points Per Win은 해당 팀의 페이스 기준으로 리그 평균 득점을 조정해 준 뒤 0.32를 곱하면 얻어지게 됩니다. 0.32가 정확히 어떤 방식으로 얻어졌는지는 정확히 모르겠지만..

 

그렇다면 Marginal Offense가 어떻게 구해지는지 알아보도록 하겠습니다. Marginal OffensePoints Produced - 0.92 * Total Possessions * League Points Per Posessions 로 구해집니다. 즉 한 선수가 공격적인 부분에서 만들어 낸 점수에서, 리그 평균의 92% 정도 생산력의 선수가 같은 상황에서 만들어 낼 것으로 기대되는 점수를 뺐다고 생각하면 될 것 같습니다. 0.92가 정확히 어떻게 구해졌는지는 모르겠지만, 저는 일반적으로 사용되는 Replacement Player의 기록과 같다고 이해했습니다. 결과적으로 얼마나 효율적으로, 많은 기여를 해 냈느냐가 Offensive Win Share의 기준이 되겠네요. League Points Per Posessions는 리그 경기당 득점을 리그 경기당 포제션으로 나누면 쉽게 구할 수 있고, 그렇다면 Points ProducedTotal Posessions를 구하면 한 선수의 OWS를 구할 수 있겠네요. Points Produced부터 알아보겠습니다.

 

Points Produced = (Points Produced_FG + Points Produced_AST +FTM)*(1-(Team_ORB/Team Scoring Posessions)*Team_ORBweight*Team_Play%)+ Points Produced_ORB

 

. 굉장히 복잡해 보이네요. 하나씩 알아보도록 합시다. 따로 떨어져 있는 Points Produced_ORB의 경우 공격 리바운드의 경우 포제션을 소모하지 않고 얻어지기 때문에 따로 떨어져 있는 것 같습니다. Points Produced_ORB의 공식은 다음과 같습니다.

 

Points Produced_ORB = Team_ORBweight *Team_Play% *Team_PTS/Team Scoring Posessions*Player_ORB

 

네. 이것도 복잡하네요. 하나씩 알아봅시다. Team_Play%Team Scoring Posessions / (Team_TOV+Team_FGA+0.4*Team_FTA) 로 구해집니다. 분모 쪽은 턴오버+야투+자유투의 형식으로 이루어진 것으로 보아 그 팀이 가져간 공격 포제션의 수라고 생각할 수 있고, Team Scoring PosessionsTeam_FG+(1-(1-Team_FTM/Team_FTA)^2)*0.4*Team_FTA) 로 표현되며 이는 성공한 공격 포제션의 수로 근사할 수 있습니다.

 

 

(1-Team_FTM/Team_FTA)^2) 와 같이 제곱이 들어간 이유는, 일반적인 상황에서 자유투가 2개 주어진다고 가정했을 때 (1-Team_FTM/Team_FTA)^2) 는 두 번 모두 자유투를 실패할 확률을 나타내고, 이를 통해 자유투에서 모두 실패한 포제션의 수를 구할 수 있기 때문입니다. Scoring Posessions는 총 득점이 아닌, 성공한 포제션의 수를 나타내기 때문에 이런 식이 등장했습니다.

결론적으로 Team_Play%는 팀이 가져간 포제션 중, 어느 정도의 성공이라도 거둔 포제션 수의 비율을 나타냅니다. Team_Play%Team_PTS/Team Scoring Posessions 를 곱하면 Team_PTS / (Team_TOV+Team_FGA+0.4*Team_FTA)가 되고, 이는 해당 팀의 한 포제션당 득점의 근사치가 됩니다.

 

즉 식을 다시 정리하면 Team_ORBweight * 한 포제션당 득점 * Player_ORB로 정리됩니다.

 

Team_ORBweight = (1-Team_ORB%)*Team_Play%/(1-Team_ORB%)*Team_Play%+Team_ORB%*(1-Team_Play%). 이 값은 공격 리바운드를 잡았을 때 만들어진 팀의 점수에서, 공격 리바운드를 잡은 선수의 Points Produced로 돌아가야 할 비율을 나타냅니다.

 

즉 초기의 식인 Points Produced_ORB = Team_ORBweight *Team_Play% *Team_PTS/Team Scoring Posessions*Player_ORB 는 결과적으로 선수의 공격 리바운드로 발생한 팀의 점수 중 그 선수의 공으로 돌아가야 할 점수를 산출한 것이 됩니다. 그리고 앞에서 말했듯이 공격 리바운드는 별도의 포제션이 소모되지 않으므로 Points Produced 식에서 분리되어 있습니다. 그러면 이제 Points Produced 식으로 돌아가 나머지 영역을 알아보도록 하겠습니다.

Points Produced = (Points Produced_FG + Points Produced_AST +FTM)*(1-(Team_ORB/Team Scoring Posessions)*Team_ORBweight*Team_Play%)+ Points Produced_ORB

 

여기서 (1-Team_ORB/Team Scoring Posessions*Team_ORBweight*Team_Play%)가 곱해지게 되는데, 이 값은 (Points Produced_FG + Points Produced_AST +FTM) 중 공격 리바운드에서 얻어진 점수를 고려해, 해당 부분을 각 선수의 Points Produced_ORB로 넘겨 주기 위해 곱해지게 됩니다. 왜냐하면 한 선수의 득점이나 어시스트 중 공격 리바운드에서 파생되는 부분이 존재하기 때문이고, 저 값을 곱해 줌으로써 공격 리바운드에서 파생된 부분을 득점자, 또는 어시스트자에서 리바운드를 잡은 선수들에게 넘겨 주게 됩니다.

 

그러면 Points Produced_FG + Points Produced_AST + FTM 를 분석하면 Points Produced에 대한 분석을 마무리할 수 있습니다. 자유투의 경우 어시스트가 존재하지 않기 때문에 단순히 FTM을 사용하였고, 필드골과 어시스트의 경우 복잡한 상수가 포함됩니다.

 

Points Produced_FG = 2 * (Player_FGM + 0.5 * Player_3PM) * (1 - 0.5 * ((Player_PTS Player_FTM) / (2 * Player_FGA)) * qAST) 입니다. 2 * (Player_FGM + 0.5 * Player_3PM)의 경우, 단순히 야투 성공에서 해당 선수가 만들어 낸 점수를 나타내는 부분입니다. 이제 뒷부분의 (1 - 0.5 * ((Player_PTS Player_FTM) / (2 * Player_FGA)) * qAST)가 문제가 되는데, ((Player_PTS Player_FTM) / (2 * Player_FGA)) 부분은 eFG%라고 볼 수 있습니다. 즉 원 식을 다시 표현하면 다음과 같습니다.

 

Points Produced_FG = Points by FG * (1-eFG%*qAST*0.5) 로 식이 간단해졌습니다. qAST = ((MP / (Team_MP / 5)) * (1.14 * ((Team_AST - AST) / Team_FGM))) + ((((Team_AST / Team_MP) * MP * 5 - AST) / ((Team_FGM / Team_MP) * MP * 5 - FGM)) * (1 - (MP / (Team_MP / 5)))) 로 매우 복잡하게 표현되는데, 간단히 말하면 어시받아서 성공한 필드골 비율 의 추정 값이라고 보시면 됩니다. 이런 값들을 곱해주면서 FG에서 생산된 점수를 득점자와 어시스트자에게 분배하는 것이죠. 그럼 Points Produced_AST를 보도록 하겠습니다.

 

Points Produced_AST = 2 * ((Team_FGM - FGM + 0.5 * (Team_3PM - 3PM)) / (Team_FGM - FGM)) * 0.5 * (((Team_PTS - Team_FTM) - (PTS - FTM)) / (2 * (Team_FGA - FGA))) * AST

 

이 역시 복잡해 보이지만, 분리해 보면 2 * ((Team_FGM - FGM + 0.5 * (Team_3PM - 3PM))는 나를 제외한 팀원들이 야투로 얻어낸 점수의 합입니다. (((Team_PTS - Team_FTM) - (PTS - FTM)) / (2 * (Team_FGA - FGA))) 부분 역시 역시 나를 제외한 TeameFG%로 표현되네요. 즉 정리하면 다음과 같습니다.

 

Points Produced_AST = (팀원들이 야투로 얻어낸 점수/팀원들의 야투성공 개수)*0.5*팀원들 eFG%* AST , 결과적으로 보면 팀원들이 효율적인 공격을 했을수록 AST 하나의 가중치가 올라가는 시스템입니다.

 

이와 같이 Points Produced에 대해 분석해 보았고, 이제 Total Posessions를 구하면 OWS를 구할 수 있습니다.

먼저 Total Posessions의 식을 보겠습니다. Total Posessions = Scoring Poss+FGxPoss+FTxPoss+TOV

즉 득점에 성공한 포제션 + 야투 실패 포제션 + 자유투 실패 포제션 + 턴오버로 구성되는 것입니다.

 

득점에 성공한 포제션인 Scoring Posessions는 앞에서 다루었고, 턴오버는 단순 수치를 더하면 되기 때문에 FGxPoss, FTxPoss만 보겠습니다. FTxPoss = ((1 - (FTM / FTA))^2) * 0.4 * FTA , 앞에서 언급했듯이 제곱을 하는 이유는 2번 연속 실패한 포제션이 FTxPoss로 들어가기 때문에 해당 확률을 구한 것입니다. FGxPoss = (FGA - FGM) * (1 - 1.07 * Team_ORB%), 이는 야투실패에서 공격 리바운드로 포제션이 이어진 경우를 제외해 준, 야투실패로 포제션을 넘겨준 경우를 뺀 값입니다. 1.07이 곱해진 이유는 개인에게 기록되지 않는 팀 공격 리바운드 등을 고려 해 준 것으로 보입니다.

 

위와 같이 Total Posessions를 간단히 살펴보았습니다. 말 그대로 득점한 포제션, 야투실패로 끝난 포제션, 자유투 실패로 끝난 포제션, 턴오버로 끝난 포제션을 모두 합해 해당 선수의 손에서 마무리된 포제션의 합을 구한 것이고, Scoring Posessions만 구한다면 Points Produced에 비해 용이하게 구할 수 있습니다.

 

이를 통해 Offensive Win Share에 필요한 모든 값을 구하는 법을 알아봤습니다. 실제 사례 하나를 가지고 구해 보도록 하겠습니다.

 

2015-16 골든 스테이트 워리어즈의 커리 기록으로 구해 보았습니다. 먼저 Marginal Points Per Win를 구해 보면, 2016년 기록과 골스 pace를 이용해 0.32*102.7*99.3/95.8 = 34.0647이 얻어집니다.

 

그렇다면 Marginal Offense를 구해 보겠습니다. Points Produced - 0.92 * Total Possessions * League Points Per Posessions 인데, League PPS1.064로 나와 있기 때문에 Total Posessions, Points Produced만 구하면 됩니다. Points Produced부터 구해 보도록 하겠습니다.

 

Points Produced = (Points Produced_FG + Points Produced_AST +FTM)*(1-(Team_ORB/Team Scoring Posessions)*Team_ORBweight*Team_Play%)+ Points Produced_ORB

 

Points Produced_ORB = Team_ORBweight *Team_Play% *Team_PTS/Team Scoring Posessions* Player_ORB

 

Points Produced_ORB = 0.7327 * 0.4566 * 9421 / 4164.82 = 51.47

 

(1-(Team_ORB/Team Scoring Posessions)*Team_ORBweight*Team_Play%) = 1 (816/4164.82_*0.7327*0.4566) = 0.9344

 

Points Produced_FG = 2 * (Player_FGM + 0.5 * Player_3PM) * (1 - 0.5 * ((Player_PTS Player_FTM) / (2 * Player_FGA)) * qAST)

 

Points Produced_FG = = 2 * (805+0.5*402)*(1-0.5*(2375-363)/(2*1598)*0.6321) = 1611.69

 

Points Produced_AST = 2 * ((Team_FGM - FGM + 0.5 * (Team_3PM - 3PM)) / (Team_FGM - FGM)) * 0.5 * (((Team_PTS - Team_FTM) - (PTS - FTM)) / (2 * (Team_FGA - FGA))) * AST

 

Points Produced_AST = 2*(3489-805+0.5*(1077*402))/(3489-805)*0.5*((9421-1366)-(2375-363))/(2*(7159-1598)) * 527 = 322.34

 

FTM = 363

 

Points Produced = (1611.69+322.34+363)*0.9344+51.47 = 2197.91

 

위와 같이 Points Produced를 구했고, Total Posessions를 구해 보도록 하겠습니다.

 

Total Posessions = Scoring Poss+FGxPoss+FTxPoss+TOV.

 

FtxPoss = (1-363/400)^2*0.4*400 = 1.369

 

FGxPoss = 1-1.07*0.2346*(1598-805) = 593.92

 

Scoring Poss = 907.33

 

TOV = 262

 

Total Posessions = 1.369 + 593.92 + 907.33 + 262 = 1764.62

 

Marginal Offense = Points Produced - 0.92 * Total Possessions * League Points Per Posessions = 2197.91 0.92*1764.62 *1.064 = 470.56 이고,

 

이를 앞에서 구한 Marginal Points Per Win34.0647으로 나누어 주면 OWS 13.8이 나와, Basketball Reference의 기록과 일치합니다.

 

이와 같은 방법으로 Offensive Win Share를 구할 수 있습니다. 필요한 기록들은 개인의 성적, 그리고 해당 구간 팀의 성적과 상대방 성적입니다. 다음에는 Defensive Win Share가 어떻게 구해지는지 알아보도록 하겠습니다. 오류나 궁금한점 있으면 댓글 부탁드립니다. 감사합니다.

 

7
Comments
2016-08-09 19:44:33
추천 드립니다. 물론 읽지는 않았습니다.

다음 편 기대하겠습니다. 확실히 말로 풀어 쓰는 쪽이 훨씬 눈에 잘 들어오네요.
WR
2016-08-09 19:48:43

제가 쓰면서도 뭘 쓰고 있는지 모르겠는 부분이 있더라구요

역시 PER는 지상 최고의 스탯입니다

2016-08-10 01:11:09

게임스코어가 최고입니다

2016-08-09 20:44:13

와 정말 좋은 정보 주셔서 감사드리고 추천드립니다.


이런 복잡한 산식을 봐도 이해도 잘 되지 않지만, 스탯을 분석하는 기법이라는 것의 발전을 간접적으로나마 체감할 수 있어 놀랍기도 합니다.

WR
2016-08-09 20:48:20

윈셰어는 그래도 박스스코어 기반이라는 점에서 계산이 어느정도 가능한데

RAPM RPM같은 Play By play 스탯이나 트래킹스탯은 더 복잡하더라구요.. 그런건 전문가들의 몫으로 남겨둬야할까봐요

2016-08-14 07:39:09
아... 감사하다고 댓글을 달기 위하여 회원가입을 했습니다.
정말 감사드립니다.. 아 정말 많은 도움 되었고, 작성자님의 지식과 설명력에 감사의 말씀 드립니다.
노트에 계속 필기를 해가면서 읽었네요.

개인적으로 스포츠 스탯에 관심이 많고, 계속해서 개인 프로젝트도 진행해오고 있습니다. 
근데 정말 이해하는게 힘들더라구요... 정말 이 글이 확실하게 정리를 해줍니다 감사합니다.

디펜시브 윈셰어도 기쁜 마음으로 기다리겠습니다 :)
그리고 혹시 실례가 안된다면, 스탯관련 공부를 왜 하는지 여쭐 수 있을까요?
단순히 취미가 이쪽이신가 궁금합니다!
WR
2016-08-14 10:13:22

저는 그냥 취미정도로 하구있어요 이 글 쓴것도 윈셰어 계산기 만들었던거 기반으로 한거고.. 스탯 잘 알진 못하지만 그냥 취미로 정리중입니다 DWS는 오늘밤에 올리거나 아니면 다다음주나 올리게될거같네요

hou
52
8502
24-03-23
bos
122
27423
24-03-18
atlgsw
85
19832
24-03-18
bosden
57
7027
24-03-16
den
122
23974
24-03-14
lal
44
8552
24-02-24
den
92
18732
24-02-20
dal
80
16235
24-02-17
dal
79
8864
24-02-06
bos
54
6241
24-02-15
dal
72
11534
24-02-14
cha
69
21204
24-02-14
orl
36
6245
24-02-09
phi
42
6871
24-02-10
indphi
60
6385
24-02-08
atlbkn
45
10623
24-02-08
sas
50
16920
24-02-05
phi
46
11123
24-02-04
cle
40
12453
24-02-04
검색 대상
띄어쓰기 시 조건









SERVER HEALTH CHECK: OK