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

2023. 4. 25. 16:32·Minding's Reading/메이저리그 야구 통계학 2e
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

'Minding's Reading > 메이저리그 야구 통계학 2e' 카테고리의 다른 글

[메이저리그 야구 통계학 2/e] 4장 - 상관관계는 인과관계가 아니다(2)  (2) 2023.05.08
[메이저리그 야구 통계학 2/e] 4장 - 상관관계는 인과관계가 아니다(1)  (0) 2023.05.01
[메이저리그 야구 통계학 2/e] 3장 - 선수의 능력은 어떻게 측정할 것인가?(1)  (0) 2023.04.24
[메이저리그 야구 통계학 2/e] 2장 - 메이저리그 데이터 마이닝  (2) 2023.04.20
[메이저리그 야구 통계학 2/e] R 설치, R Studio(Posit) 설치  (0) 2023.02.06
'Minding's Reading/메이저리그 야구 통계학 2e' 카테고리의 다른 글
  • [메이저리그 야구 통계학 2/e] 4장 - 상관관계는 인과관계가 아니다(2)
  • [메이저리그 야구 통계학 2/e] 4장 - 상관관계는 인과관계가 아니다(1)
  • [메이저리그 야구 통계학 2/e] 3장 - 선수의 능력은 어떻게 측정할 것인가?(1)
  • [메이저리그 야구 통계학 2/e] 2장 - 메이저리그 데이터 마이닝
Minding
Minding
  • Minding
    Today's Minding
    Minding
  • 전체
    오늘
    어제
    • 울고넘는 딥러닝 (278)
      • Minding's Baseball (57)
        • MLB Statcast (29)
        • 머신러닝으로 홈런왕 예측하기 (3)
        • 야구칼럼 (12)
        • 야구 규칙, 용어 (1)
        • 2022-23 질롱 코리아 (8)
        • 류현진 등판경기 (4)
      • Minding's Programming (185)
        • 프로그래머스 코딩테스트 (21)
        • Knowledge (44)
        • Numpy & Pandas (6)
        • Excel (3)
        • Git (1)
        • Pygame (11)
        • CV (3)
        • Tensorflow tutorial (4)
        • Kaggle and Dacon (4)
        • 에러 코드 (8)
        • FastAPI (8)
        • Airflow (29)
        • Crawling (6)
        • Django (14)
        • AWS (18)
        • Spark (5)
      • Minding's Reading (30)
        • 머신러닝 딥러닝에 필요한 기초 수학 with 파이.. (2)
        • 칼만필터는 어렵지 않아 (11)
        • 밑바닥부터 시작하는 딥러닝 (6)
        • 메이저리그 야구 통계학 2e (8)
        • 논문읽기 (2)
        • 빅데이터를 지탱하는 기술 (1)
      • Minding's Life (5)
        • 주식 (4)
        • 각종 소식 (1)
  • 블로그 메뉴

    • 홈
    • Baseball
    • Programming
    • Reading
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    질롱코리아
    게임개발
    FastAPI
    코딩테스트
    데이터분석
    야구
    메이저리그
    프로그래머스
    칼만필터는어렵지않아python
    django
    pygame
    MLB
    데이터 엔지니어
    파이게임
    mlb stats api
    KBO
    칼만필터는어렵지않아
    파이썬게임개발
    django python
    칼만필터
    머신러닝
    KalmanFilter
    AWS
    Python
    에어플로우
    칼만필터는어렵지않아파이썬
    파이썬
    Airflow
    딥러닝
    넘파이
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
Minding
[메이저리그 야구 통계학 2/e] 3장 - 선수의 능력은 어떻게 측정할 것인가?(2)

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.