>RE::VISION CRM

R 데이터 분석

# [R분석] KBO 2016 타자 :: 시각적 데이터 탐색 분석

YONG_X 2017. 1. 4. 14:17



# [R분석] KBO 2016 시즌 타자 :: 시각적 데이터 탐색 분석


# 전용준 :: 리비젼컨설팅. 2017. xyxonxyxon@empas.com [빅데이터 분석]

#--------------------



# 규정타석이상 타자의 타격 통계 데이터 import

hit0 <- read.csv("https://t1.daumcdn.net/cfile/blog/275F7E4B586C831B0A?download")


kbohit_2016.csv



names(hit0)


# 기본 Scatter Plot을 먼저 그려보면

plot(hit0$타율, hit0$홈런)


med타석 <- median(hit0$타석)


# 스캐터플롯에 중위수를 기준으로 색상 변경

# 규정타석 이상의 타자들 중에서 타석수가 많은 편인 타자에 대해 녹색으로 점 표시

plot(hit0$타율, hit0$홈런, pch=20, col=ifelse(hit0$타석 > med타석, "darkgreen", "grey"))

text(hit0$타율, hit0$홈런, labels=hit0$선수, col=ifelse(hit0$팀명=="두산", "darkblue", "darkgrey"), pos=3)


# add locally weighted polynomial regression line

lines(lowess(hit0$타율, hit0$홈런), lty=2, col="darkgreen")





# 순수장타율과 출루율을 비교. OPS를 구성하는 두 요소를 비교하여 타자들의 특성 분석

순수장타율 <- hit0$장타율-hit0$타율


# 타점과 득점이라는 타자의 기여도를 나타내는 핵심 지표들을 합산하여 단일 지표로 변환

plot(hit0$출루율, 순수장타율, pch=20, col=ifelse((hit0$타점+hit0$득점) > tail(sort(hit0$타점+hit0$득점),20)[1], "darkgreen", "grey"), ylim=c(0,0.4))

text(hit0$출루율, 순수장타율, labels=hit0$선수, col=ifelse(hit0$팀명=="두산", "darkblue", "darkgrey"), 

  cex=0.7, pos=3)


# 단순선형회귀와 국지적 비선형 회귀선을 비교

lines(lowess(hit0$출루율, 순수장타율), lty=2, col="darkgreen")

abline(lm(순수장타율 ~ hit0$출루율), col="blue", lty=2)


cor((hit0$순수장타율), hit0$출루율)

# 순수장타율은 장타율과는 달리 출루율과의 상관관계가 상대적으로 낮음

# 2차원 영역에서 타자의 특성 (득점 기회 제공, 득점 완성)에 따른 역할 차이 파악




# [ 해설 ] :: 오재일과 에반스, 양의지가 잠시 부상과 부진이 있었음에도 전체 포지션에서

# 주전 선수가 포지션별로 시즌의 대부분을 안정적으로 소화했고

# 장거리 단거리 균형잡힌 타선을 구성하여 시즌 전체가 큰 변화없이 강한 공격력을 보임

# 두산의 2016년 타선은 역대 최고라고해도 무방할 이상적 시즌이었다고 보인다

# 한두 선수의 뛰어남이 아니라 팀으로서 완전체였다고 봐야할 것




hit0$타점득점합 <- hit0$타점+hit0$득점


#0~1 까지의 구간에 걸친 값을 10개 구간으로 구분해서 등급처럼 변환

# 포인트 색상간의 시각적 구별을 원활하게 하도록


타점득점합등급 <- as.integer(10-((hit0$타점득점합-min(hit0$타점득점합))/(max(hit0$타점득점합)-min(hit0$타점득점합)))*10)/10

plot(hit0$출루율, 순수장타율, pch=21, bg=grey(타점득점합등급), cex=1.2, ylim=c(0,0.4))

text(hit0$출루율, 순수장타율, labels=hit0$선수, col=ifelse(hit0$팀명=="두산", "darkblue", "darkgrey"), 

  cex=0.7, pos=3)




# index로 자동 표시되는 X축 라벨을 default 정렬 순서인 타율의 순위라는 명칭으로 변경

plot(hit0$타점득점합, pch=21, bg=grey(타점득점합등급), cex=1.2,

  main="KBO 2016 시즌 타자: 타점 plus 득점 = 기여도", xlab="타율순위")

text(hit0$타점득점합, labels=hit0$선수, col=ifelse(hit0$팀명=="두산", "darkblue", "darkgrey"),

  cex=0.7, pos=3)


# 가로 세로 비교를 돕기위해 보조선 추가

grid()




#----- 플롯에서의 한글 폰트 import 그리고 사용 ---------- 

# library(extrafont)

# font_import(pattern="malgun" ) 

# fonts()  # import 확인 및 family 명칭 확인

# loadfonts(device="win") # import 후 처음에만 필요

# par(family="Malgun Gothic")


#---- 폰트 import를 마친 이후의 폰트 사용변경 설정 ----

library(extrafont)

par1 <- par() # 기본 옵션 임시 저장

par(family="Malgun Gothic") # 폰트 사용

# par(par1) # 기본 옵션으로 복원시

#-------------------------------------



# [ 해설 ] :: 테임즈와 나성범이 뛰어났음에도 이호준이 아쉬웠고 타율이 높지 않아 

# NC의 나테이박이 두산의 박건우-김재환-민병헌-오재일-에반스 라인업에는 대적이 될 수 없었음

# FA로 나온 황재균, 거래불가인 최형우, 김태균, 김재환을 제외하면 최고수준의 기여도

# 상대적 투자매력도가 최고일 수 밖에 없는 상황. 단, MLB에서의 가능성은....??? 


kbohit_2016.csv
0.01MB