# [R분석] KBO 2016 시즌 타자 :: 시각적 데이터 탐색 분석
# 전용준 :: 리비젼컨설팅. 2017. xyxonxyxon@empas.com [빅데이터 분석]
#--------------------
# 규정타석이상 타자의 타격 통계 데이터 import
hit0 <- read.csv("https://t1.daumcdn.net/cfile/blog/275F7E4B586C831B0A?download")
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에서의 가능성은....???
'R 데이터 분석' 카테고리의 다른 글
분석용 데이터 : Bank Marketing (0) | 2017.01.30 |
---|---|
분석 데이터 준비 : Game Log 데이터 (0) | 2017.01.30 |
[R분석] barplot 집단별 색상 구분표시 with 레전드 legend (0) | 2016.10.12 |
LGUP_BDAS _ 20161006 (0) | 2016.10.06 |
heatmap using scatterplot (0) | 2016.08.22 |