본문 바로가기

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

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

728x90
반응형

데이터에서 룰을 찾다 : 연관성 분석

  • 분석할 데이터에서 패턴과 연관성을 잘 파악하면 마케팅 등 전략에 활용할 여지가 많음

연관성 분석

  • 연관성 분석은 변수 내 개별 관측자료가 여타 관측자료와 어떻게 어울리는지 파악하는데 주력
  • ex) 이적시장에서 특정 팀 출신의 선수를 전략적으로 선호하는가?
# 전처리
library(Lahman)
a <- subset(Batting, yearID>2010&yearID<2016, select=c(playerID, teamID))
a$teamID <- factor(a$teamID)
a$teamID <- as.character(a$teamID)

데이터 구조

# dcast()를 통해 동일 playerID를 갖는 소속팀 정보를 동일한 하나의 행으로 변경
library(data.table) # dcast()를 사용하기 위해서 패키지 필요
move <- dcast(setDT(a)[,idx := 1:.N, by = playerID],
	playerID~idx, value.var=c('teamID'))
move[is.na(move)]<-''
move[,1]<-NULL
write.csv(move,file='move.csv') # 파일을 csv로 저장
# read.transactions() : 저장된 파일을 R로 불러들일 때 사용
library(arules)
move <- read.transactions('move.csv', sep=',')
summary(move)

>>>
transactions as itemMatrix in sparse format with
 2326 rows (elements/itemsets/transactions) and
 2356 columns (items) and a density of 0.001176995 

most frequent items:
    NYA     CHN     TOR     BOS     TEX (Other) 
    165     158     158     157     153    5659 

element (itemset/transaction) length distribution:
sizes
   2    3    4    5    6    7    8    9 
1260  596  289  121   46    9    3    2 

   Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
  2.000   2.000   2.000   2.773   3.000   9.000 

includes extended item information - examples:
  labels
1      1
2     10
3    100

2011년부터 시작되는 관츤기간 동안 뉴욕 양키스에서 활동한 선수의 빈도가 가장 높다는 사실 확인

관측 기간동안 무려 9개 팀에서 활약한 선수도 있다는 것을 알 수 있다.

 

# 막대그래프 시각화
itemFrequencyPlot(move, support=0.01,cex.names=0.6)

테이블에 등장한 팀들의 빈도 수를 막대그래프로 표현. FLO는 MIA로 이름을 바꿨기 때문에 적다.

# apriori로 선수들 팀 간 이동패턴 찾기
pattern <- apriori(move, list(support=0.0015, confidence=0.50, minlen=2))
summary(inspect(pattern))

>>>
    lhs           rhs   support    confidence
[1] {FLO}      => {MIA} 0.01074807 0.5681818 
[2] {FLO, LAN} => {MIA} 0.00171969 1.0000000 
[3] {NYA, PHI} => {PIT} 0.00171969 0.5000000 
    coverage    lift      count
[1] 0.018916595 10.744642 25   
[2] 0.001719690 18.910569  4   
[3] 0.003439381  8.551471  4   
     lhs                              
 Length:3           Length:3          
 Class :character   Class :character  
 Mode  :character   Mode  :character  
                                      
                                      
                                      
     rhs               support           confidence    
 Length:3           Min.   :0.001720   Min.   :0.5000  
 Class :character   1st Qu.:0.001720   1st Qu.:0.5341  
 Mode  :character   Median :0.001720   Median :0.5682  
                    Mean   :0.004729   Mean   :0.6894  
                    3rd Qu.:0.006234   3rd Qu.:0.7841  
                    Max.   :0.010748   Max.   :1.0000  
    coverage             lift            count     
 Min.   :0.001720   Min.   : 8.551   Min.   : 4.0  
 1st Qu.:0.002580   1st Qu.: 9.648   1st Qu.: 4.0  
 Median :0.003439   Median :10.745   Median : 4.0  
 Mean   :0.008025   Mean   :12.736   Mean   :11.0  
 3rd Qu.:0.011178   3rd Qu.:14.828   3rd Qu.:14.5  
 Max.   :0.018917   Max.   :18.911   Max.   :25.0

FLO(플로리다 말린스)에서 MIA(마이애미 말린스)로 팀명이 바뀌면서 선수들이 이동한 패턴이 1, 2위를 차지했다.

그 부분을 제외하면 NYA(뉴욕 양키스)와 PHI(필라델피아 필리스)에서 활약한 선수들이 PIT(피츠버그 파이어리츠)로

이동하는 패턴이 많이 발생했다. 발생건수는 총 4건.

 

그러나 2325건의 선수 이동 패턴 중 단 4건은 0.0017에 해당해 유의미한 패턴이라고 보기는 어렵다.

쇼핑몰이나 넷플릭스 등 충분히 패턴을 가질 수 있는 환경에서는 2%에 해당될 정도로 중요하게 여겨야 할 사례가 있음

 

선수와 감독의 인적 상관성 : 네트워크 분석

  • 사람으로 구성도니 사회에서 지식, 혁신, 뉴스 등은 사람의 네트워크인 인맥을 통해 전달됨
  • 최근은 SNS를 통해 인터넷으로 더 빠르게 확산
  • 야구 또한 선수, 감독, 직원, 스카우터 등을 통해 다른 팀의 전략이 쉽게 모방/학습되는 스포츠 중 하나
  • 네트워크 분석을 통해 연결망을 분석할 수 있음

네트워크 분석을 통해 팀의 에이스급 투수들이 어떤 관계망을 흔들었는지 분석

  • '15 ~ '16시즌 동안 감독의 교체가 있었거나 에이스급 투수들의 이동이 있었다면 관계망이 생김
  • 그렇지 않다면 독립된 그룹을 가짐
  • 중요한 인적자원의 이동이 해당 팀에 영향을 미칠 가능성이 높기때문에, 관계망을 맺는 그룹 간 전략 유사성이 있을 것
# 전처리
# 35경기 이상 출장한 투수
a <- subset(Pitching, yearID>2014&yearID<2017&G>35, select=c('playerID','yearID','teamID'))
a$yearID <- str_remove(a$yearID, '20')
a$teamyear <- paste(a$teamID, a$yearID, sep='') # paste()를 통해 두 글자를 합침
b <- subset(Managers, yearID>2014&yearID<2017, select=c('playerID', 'yearID', 'teamID'))
b$yearID <- str_remove(b$yearID, '20')
b$teamyear <- paste(b$teamID, b$yearID, sep='')
c <- merge(a,b,by='teamyear')
d <- subset(c, select=c('playerID.x', 'playerID.y')) # 같은 시기에 활동했던 투수와 감독을 짝지음
colnames(d) <- c('pitcher_ID', 'manager_ID')
# 네트워크 시각화
library(igraph)
mlb_network <- graph.data.frame(d, directed = FALSE)
V(mlb_network)$label <- ifelse(V(mlb_network)$naem %in% c(b$playerID)>0,
	as.character(b$teamyear), NA)
    
mlb_network

>>>
IGRAPH b4af481 UN-- 312 468 -- 
+ attr: name (v/c), label (v/c)
+ edges from b4af481 (vertex names):
 [1] zieglbr01--halech01  collmjo01--halech01 
 [3] chafian01--halech01  perezol01--halech01 
 [5] hudsoda01--halech01  hernada01--halech01 
 [7] delgara01--halech01  reedad01 --halech01 
 [9] zieglbr01--halech01  burgoen02--halech01 
[11] clippty01--halech01  barreja01--halech01 
[13] delgara01--halech01  hudsoda01--halech01 
[15] corbipa01--halech01  cunnibr02--gonzafr99
+ ... omitted several edges

이름과 라벨이 준비됐다.

manager <- V(mlb_network)$name %in% c(b$playerID)+1
plot(mlb_network, vertex.shapes='none', vertex.label.cex=1.5, vertex.label.color='black',
	vertex.label.font=2, vertex.label.dist=1,
    vertex.size=c(3,0)[manager], vertex.color=c('gray', 'white')[manager])

기술통계와 추정통계의 매개: 히스토그램은 막대그래프가 아니다

  • 히스토그램 : 변수의 분산 정도와 변수에 있는 사건들이 발생하는 정도를 보여주는 시각화 자료
  • 단순히 팀 별 홈런 수를 보여주는 막대그래프와는 다른 모습을 가지고 있다.
library(Lahman)
a <- subset(Teams, yearID==2015)
b <- barplot(a$HR)
text(b,par('usr')[3], labels=a$teamID, srt=60, adj=c(1,0.5),xpd=TRUE)
# par('usr')[3] : 팀 이름의 위치를 차트 아랫부분에 두겠다는 옵션 / [4]는 맨 위에 위치
# srt=60은 팀 이름을 60도로 기울인다는 뜻

팀 별 홈런 갯수를 나타낸 막대그래프

히스토그램

  • 특정 사건이 발생한 확률을 시각적으로 보여주는 기술통계
  • 모집단의 특성을 추정하는 데 필요한 확률분포를 제시해주는 추정통계의 이론적 기반
# 데릭 지터의 홈런 분포를 히스토그램으로 그려보기
a <- subset(Batting, playerID=='jeterde01')

# hist(분석 대상 변수 위치, x축 이름, 차트의 제목, 차트의 눈금 숫자에 대한 방향조절)
hist(a$HR, xlab='Homerun', main='Histrogram of Jeter's HR', las=1)

데릭 지터의 홈런 분포 히스토그램

데릭 지터는 대체적으로 5개에서 15개 사이의 시즌 홈런을 기록했다는 것을 알 수 있다.

평균을 중심으로 빈도가 줄어드는 정규분포 형태를 닮아있다. (사건 수가 더 많았다면, 정규분포 형태를 띄었을 것)

728x90