본문 바로가기

Minding's Reading/메이저리그 야구 통계학 2e

[메이저리그 야구 통계학 2/e] 3장 - 선수의 능력은 어떻게 측정할 것인가?(1)

728x90
반응형

과학적 측정

  • 야구는 팀의 조화가 중요한 다른 스포츠(축구, 농구)보다 선수 개인 능력이 승리에 미치는 영향이 월등히 큼.
  • 야구 뿐 아니라 다양한 분야에서 평가 및 가치를 측정하는 직업들이 존재
  • 전문성의 기준은 무엇인가?
    • 전문가 집단의 진입장벽 (ex. 시험 등)
    • 경험이 쌓이며 대상을 볼 줄 아는 안목, 통찰력, 노하우 등
  • 전문적 지식이 과학적 지식은 아님
    • 경험과 노하우가 쌓이면서 모든 사건에 균등한 관심보다는 특정 사건에 집중하는 선택적 관심을 가지기 때문
    • 전통적인 스카우터가 홈런 등 기본 툴에 집중하고 출루율, 볼넷 등을 가볍게 보는게 그 예시
  • 선택적 관심의 벽을 넘어 데이터 입수 / 분석 / 해석 능력이 있다면, 비전문가도 의사결정이 가능

 

측정의 신뢰도

  • 누가 평가했느냐보다는, 모든 요인을 고려하는 균등 관심에 기반한 신뢰성과 타당성이 확보돼야 함
  • 측정도구의 신뢰도 : 능력을 측정하는 도구가 객관성을 갖고 있음을 의미
    • 측정 결과가 평가자와 시점에 관계없이 비슷해야 신뢰도가 높음
    • 측정값 = 진정한 능력 + 측정오류
    • 신뢰도를 평가하는 기준은 일관성
    • 그러나 아무리 신뢰도가 높은 지표라도 측정 오류가 있음
      • 측정오류 = 체계적 편향 + 비체계적 분산
      • 비표본오차 : 사람을 대상으로 하는 조사방법에서 관측시기, 관측담당자 등에 따라 측정결괏값이 비일치
      • 편향성 : 진정한 값을 둘러싸고 체계적으로 잘못 측정하고 있는 것
      • 분산 : 측정방식은 정상이지만 응답자의 반응이 조금씩 다른 비체계적 측정오류

측정의 분산(Vatiance)과 편향(Bias)의 차이를 나타낸 그림

  • 측정지표의 분산 정도와 편향을 확인하기 위한 방법
    • 검증 재검증(test-retest) : 한 명의 평가자가 일정 시간을 두고 같은 선수를 반복적으로 평가
      • t-1 시점과 t 시점의 상관관계를 확인하는 방식
    • 검증 재검증 방식 실습 (Lahman 데이터 활용)
library(Lahman)
a<-subset(Batting,yearID==2014)
b<-subset(Batting,yearID==2015)
c<-merge(a,b,by='playerID')
d<-c[c$AB.x>10 & c$AB.y>10,] # x(=2014)와 y(=2015)로 연도를 구분

# 상관관계 계산
with(d, cor(HR.x, HR.y)) # 홈런의 상관계수
>>> 0.6804912

with(d, cor(H.x/AB.x, H.y/AB.y)) # 타율의 상관계수
>>> 0.4868565

2014년과 2015년 홈런과 타율의 상관관계를 살펴본 결과, 홈런이 타율보다 상관관계가 높다.

즉, 개인홈런 변수보다 개인타율 변수가 신뢰성 있다고 해석할 수 있다.

 

측정의 타당도

측정지표의 타당성 : 이론의 개념과 그 개념을 측정하는 지표의 일치 정도

  • 타자의 능력을 '타율'이라는 지표로 사용할 수 있는 근거
    • 타율(안타)은 타자의 능력을 'Run'을 연장하는 응력이라는 개념으로 정의했기 때문
    • 'Run'을 가장 쉽게 연장할 수 있는 대표적인 방법이 안타이며, 타석 대비 표준화한 타율은 목적에 맞게 측정
    • 여기서 'Run'은 베이스와 베이스 간 개념적 거리, 장타율의 개념을 생각하면 된다. (1루타는 1, 홈런은 4)
  • 과학적 방식의 연구는 개념의 측정이 가능해야 한다.
  • 구성개념을 명료하게 정의하는 작업이 연구 전 필요함

측정을 시작하기 전에 스스로에게 해야하는 질문 3가지

1. 구성개념이 다르게 해석될 여지는 없는가?

2. 의도된 구성개념을 측정할 수는 있는가?

3. 측정도구는 구성개념을 정확히 반영하는가?

  • (구성개념은 과학적 연구방법이나 논리적인 이론에 근거하여 이를 설명하기 위하여 조작적으로 만들어 낸 개념)

 

능력과 운의 결과물 : 시즌 성적

좋은 능력을 가진 선수를 정확하게 측정해내는 구단은 저비용으로 승리를 구입할 수 있지만, 좋은 능력이 반드시 좋은 성적으로 연결되는 것은 아님.

  • 성적(Performance) = 설명되는 능력(Ability) + 설명되지 않는 운(Luck)
  • 여기서 '운'은 선수의 능력과 별개로 성적에 영향을 미치는 요소.
  • 즉, 분석자 입장에서는 패턴 파악에 도움이 되지 않는 노이즈다.

정확도가 100%가 아니기 때문에, 해당 예측 모델은 실패한 것일까? 그렇다고 볼 수는 없다.

하지만 노이즈를 최대한 줄이고 신호(signal) 부분을 높이는 노력이 필요하다.

 

노이즈를 줄이면서 신호를 높일 수 있는 두 가지 방법

1. 신뢰성과 타당성이 높은 지표를 사용해야 한다.

  • 신뢰성이 좋아 내년에도 반복될 확률이 높은 지표 중 성적과 구성타당도가 높아 성적에 직접적으로 영향을 주는 지표
  • 일반적으로 타율, 타점, 득점 등으로 선수의 능력을 평가. 그러나 하위개념(타율)과 겹치는 부분이 많아 한계가 있음
  • 결국 타점과 득점을 올리려면 안타를 쳐야하고, 진루에 도움이 된 안타는 기록될 수 없다는 한계도 있음
  • 이 한계점을 극복하기 위해 출루율이나 OPS를 사용하기 시작

2. 세상의 모든 현상은 다 측정할 수 있다는 헛된 생각에서 벗어나기

  • 타율, 출루율 등과 달리 심리적 상태, 성향, 자아효능감, 팀과의 관계 등은 측정할 수 없음
  • 측정할 수는 없지만 분명히 성적에 영향을 미치는 요소
  • 측정가능한 모든 변수를 모델에 집어넣는 것도 좋은 것만은 아님 -> 오버피팅 문제 발생 가능

공격지표를 이용한 상관관계

변수 간 관계를 보여주는 대표적인 분석 방법

1. 상관관계 분석

  • 다른 변수 간의 연관성을 보여준다.
  • 기호는 r, 상관계수라고 부름
  • 상관계수는 두 변수가 같이 만들어내는 공통된 분산을 분자로,변수의 표준편차의 전체범위를 분모로 둠
  • 상관계수가 1에 가까울수록 정비례 / -1에 가까울수록 반비례관계

2. 인과관계 분석

 

새로운 구단으로 옮기기 전과 옮긴 후의 타점 간의 상관관계 비교

 

전처리

# 전처리
library(Lahman)
library(dplyr)
library(plyr)
data <- subset(Batting.yearID>2014&yearID<2017) # 2015 ~ 2016년의 데이터
data$teamID <- as.character(data$teamID)
data$playerID <- as.character(data$playerID)
a <- arrange(data,playerID,yearID) # playerID와 yearID 기준으로 정렬
# 각 데이터가 동일선상에 위치하도록 작업(sapply)
a$p_teamID <- as.character(sapply(1:nrow(a), function(x){a$teamID[x-1]}))
a$p_playerID <- as.character(sapply(1:nrow(a), function(x){a$playerID[x-1]}))
a$p_RBI <- as.numeric(sapply(1:nrow(a), function(x){a$RBI[x-1]})) # 타점
a$p_AB <- as.numeric(sapply(1:nrow(a), function(x){a$AB[x-1]})) # 타수
a$p_SF <- as.numeric(sapply(1:nrow(a), function(x){a$SF[x-1]})) # 희생플라이
a$p_SH <- as.numeric(sapply(1:nrow(a), function(x){a$SH[x-1]})) # 희생번트
a$p_H <- as.numeric(sapply(1:nrow(a), function(x){a$H[x-1]})) # 안타
a$same_person <- ifelse(a$playerID == a$p_playerID, 'same', 'different')
b <- a[a$same_person == 'same',] # same표시가 있는 동일선수만 남도록
b$moved <- ifelse(b$teamID == b$p_teamID, 'no', 'yes')
c <- b[b$moved == 'yes',] # 이적선수만 남도록
c$p_avg <- with(c,p_H/p_AB) # 2015타율
c$sac <- with(c,p_SF+p_SH) # 2015 희생타
d <- subset(c, AB>400&p_AB>400) # 400타석 이상의 선수들만 포함
d$change_rbi <- with(d, RBI/p_RBI)
# 전년도 타율과 타점 변화 간 상관관계
with(d, cor(p_avg, change_rbi))

>>>
[1] -0.4890067

전년도 타율과 타점 변화 간 상관계수는 마이너스.

전년도 타율이 높을수록 그 다음 연도 공격능력이 더 높아질 확률은 적다.

 

시각화

library(ggplot2)
ggplot(d, aes(p_avg, change_rbi, lgID))+geom_point(size=2, aes(shape=lgID))+
	annotate('text', x=0.3, y=1.6, label='r=-0.49', size=5)+
    stat_smooth(method='lm', col='black')+
    labs(x='Batting Avg of Prior Year', y='Change in RBI')

전년도 타율과 타점 변화 간 상관관계를 시각화한 결과

# 리그 별로 독립분석
ggplot(d, aes(p_avg, change_rbi))+geom_point(size=2)+
	stat_smooth(method='lm', col='black')+facet_wrap(~d$lgID)+
    labs(x='Batting Avg of Prior Year', y = 'Change in RBI')

각 리그 별 독립분석 결과

이전 시즌의 타율이 높을수록 타점은 줄어드는 현상을 볼 수 있다.

 

# 희생번트와 희생플라이를 많이 친 선수들이 이적 첫 연도에 만들어낸 타점
with(d, cor(sac, change_rbi))

>>>
[1] 0.5042151

희생번트와 희생플라이가 타점 변화에 생각보다 높은 상관계수를 나타내고 있다.

# 시각화
ggplot(d, aes(sac, change_rbi, lgID))+geom_point(size=2, aes(shape=lgID))+
	annotate('text', x=4, y=1.6, label='r=0.50', size=5)+
    stat_smooth(method='lm', col='black')+
    labs(x='Sacrifice Flies & Hits', y='Change in RBI')

전년도 희생타가 많은 선수가 새로운 팀에 이적했을 때 타점의 상승률도 높다는 것을 알 수 있다.

 

상관관계표

  • 상관관계 분석은 변수 간의 관계 강도에 대한 힌트를 줄 뿐 신뢰성의 판단 기준은 제공하지 않음
  • 추가 분석을 진행하기 위한 기초 정보로 활용하면 좋음
  • 대부분의 연구는 모든 변수 간의 상관관계를 확인할 수 있는 상관관계표가 요구됨
# 상관관계표
install.packages(tableHTML)
library(tableHTML)
e <- with(d, data.frame(change_rbi, sac, p_avg)) # d에 있는 변수 중 3개를 가져옴
colnames(e) <- c('C_RBI', 'Sac', 'AVG')
cor(e)

>>>
           C_RBI        Sac        AVG
C_RBI  1.0000000  0.5042151 -0.4890067
Sac    0.5042151  1.0000000 -0.4597213
AVG   -0.4890067 -0.4597213  1.0000000

 

728x90