코딩재개발 RSS 태그 관리 글쓰기 방명록
2021-03-11 09:02:30

타자가 타석에 들어섰을 때 어떤 결과가 나올 수 있을까요? 

 

타석에서의 결과

타석의 결과는 크게 보면 인플레이 타구(BIP)이거나 인플레이 되지 않은 타구(BNIP)이거나 둘 중 하나입니다.

 

참고: [1]

 

인플레이 타구(BIP)는 지난 시간에 BABIP 지표에 대해 말씀드리면서 언급했었는데, 홈런을 제외하고 페어 영역에 떨어지는 타구를 의미합니다. 인플레이 타구는 안타가 될 수도 있고, 상대 실책을 유발할 수도 있고, 아웃이 될 수도 있습니다. 인플레이 타구 중 안타(HBIP)가 된 비율로 BABIP을 계산할 수 있습니다. 

 

BABIP = HBIP / BIP

 

BABIP을 고안한 맥크라켄의 주장은 인플레이 타구가 안타가 될 지, 아웃이 될 지, 실책이 될 지는 타자나 투수의 능력보다는 수비력이나 운에 의해 결정된다는 것이었습니다. 물론 이 주장은 나중에 타자와 투수의 실력이 어느 정도 영향을 미친다는 쪽으로 어느 정도 절충되긴 했습니다만 여전히 유효합니다. 

 

인플레이 되지 않은 타구(BNIP)는 홈런, 삼진, 사사구로 분류 가능합니다. 사사구는 사구(볼넷)과 몸에 맞는 공 모두를 포함하는 개념입니다. 

 

실력 or 운

타석의 결과 중 투수나 타자의 실력과 비교적 큰 영향을 받는 결과는 BNIP 쪽입니다. 어떤 투수가 삼진을 잘 잡아내고, 볼넷을 적게 주고, 홈런을 적게 맞는 것은 투수가 어느 정도 통제 가능한 영역입니다. 즉, 타석당 삼진비율, 볼넷비율, 홈런비율 등은 투수의 실력을 잘 보여주는 지표들이라고 말할 수 있습니다. 그래서 이 지표들의 경우 시즌을 거듭할 때 그렇게 크게 바뀌진 않습니다. 삼진을 잘 잡아내는 투수는 계속해서 삼진을 잘 잡아내는 경향이 있는 것입니다. 타자의 경우도 마찬가지입니다. 홈런을 잘 치는 타자는 다음 시즌에도 홈런을 잘 칠 가능성이 높습니다. 또한 삼진을 많이 당하는 타자는 다음 시즌에도 삼진을 많이 당할 가능성이 높습니다. 

 

하지만, BIP 쪽의 결과는 예측이 쉽지 않습니다. 인플레이 타구가 되었을 때 어떤 결과가 나올지 예상하기가 쉽지 않기 때문입니다. 빗맞은 안타가 나오기도 하고, 잘 맞았는데 야수 정면으로 날아가서 아웃이 되기도 합니다. 따라서, 타자의 타율, 투수의 방어율 같은 지표는 운의 영향을 비교적 크게 받습니다. 특정 시즌에는 15승 이상을 거두었지만 그 이후에는 맥을 못추는 투수도 많습니다. 물론 운도 실력이라고 말하는 사람들도 있겠지만, 한 시즌 반짝 운이 좋았던 것을 실력이라고 말하기는 어렵겠죠. 꾸준한 결과를 내는 선수가 진짜 실력, 즉 신뢰할 만한 실력을 갖추고 있는 것입니다. 

 

 

투수의 연속된 두 시즌 BABIP 간의 상관계수와 타석당 삼진비율의 상관계수 비교

이제 BABIP가 타석당 삼진비율보다 통계적으로 신뢰하기 어려운 지표인지, 즉 운의 영향을 많이 받는 지표인지 확인해보도록 하겠습니다. MLB 투수들의 연속 두 시즌 BABIP 간의 상관계수와 타석당 삼진비율의 상관계수를 비교했을 때 후자의 상관계수가 더 크게 나온다면 우리가 지금까지 이야기 해온 것이 좀 더 설득력을 갖게 될 것입니다. 1990년 이후 250타석 이상을 상대한 투수들의 기록만 분석에 사용했습니다. 또한 연속 시즌 기록이 있는 경우만 분석에 사용했습니다.  

 

 

위 분석을 위해 사용한 python 코드는 다음과 같습니다.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
import sqlite3
import numpy as np
from scipy import stats
import matplotlib.pyplot as plt
from matplotlib import font_manager, rc
 
# 한글 폰트 사용을 위해서 세팅
font_path = "C:/Windows/Fonts/ngulim.ttf"
font = font_manager.FontProperties(fname=font_path).get_name()
rc('font', family=font)
 
with sqlite3.connect("lahmansbaseballdb.sqlite"as con:
    cur = con.cursor()
    cur.execute('''
            SELECT playerID, yearID, 
            round( (H - HR + 0.00) / (BFP - SO - BB - SH - HR), 3) AS BABIP, 
            round( (SO + 0.00) / BFP, 3) AS K 
            FROM pitching WHERE yearID >= 1990 and BFP >= 250 ORDER BY playerID;
            ''')
    data = cur.fetchall()
 
    player = []
    year = np.zeros((len(data)))
    BABIP = np.zeros((len(data)))
    K = np.zeros((len(data)))
 
    for i in range(len(data)):
        player.append(data[i][0])
        year[i] = data[i][1]
        BABIP[i] = data[i][2]
        K[i] = data[i][3]
 
    beforeBABIP = []
    afterBABIP = []
 
    for i in range(len(data) - 1):
        if data[i + 1][0== data[i][0]:
            if data[i + 1][1== data[i][1+ 1:
                beforeBABIP.append(BABIP[i])
                afterBABIP.append(BABIP[i + 1])
 
    beforeK = []
    afterK = []
 
    for i in range(len(data) - 1):
        if data[i + 1][0== data[i][0]:
            if data[i + 1][1== data[i][1+ 1:
                beforeK.append(K[i])
                afterK.append(K[i + 1])
 
    plcc1 = round(stats.pearsonr(beforeBABIP, afterBABIP)[0], 4)
    plcc2 = round(stats.pearsonr(beforeK, afterK)[0], 4)
 
    plt.scatter(beforeBABIP, afterBABIP, c='b', s=10, alpha=0.3)
    plt.title('연속된 두 시즌 동안 기록한 BABIP 사이의 상관관계')
    plt.xlabel('특정 시즌 BABIP 비율')
    plt.ylabel('그 다음 시즌 BABIP 비율')
    plt.text(0.30.2"상관계수: " + str(plcc1), fontsize=20, color='red')
    plt.grid(True)
    plt.show()
 
    plt.scatter(beforeK, afterK, c='b', s=10, alpha=0.3)
    plt.title('연속된 두 시즌 동안 기록한 타석당 삼진 비율 사이의 상관관계')
    plt.xlabel('특정 시즌 삼진 비율')
    plt.ylabel('그 다음 시즌 삼진 비율')
    plt.text(0.30.1"상관계수: " + str(plcc2), fontsize=20, color='red')
    plt.grid(True)
    plt.show()
cs

 

보시다시피 연속된 두 시즌의 타석당 삼진비율의 상관관계가 BABIP의 그것보다 훨씬 더 강했습니다. 

 

0.1736 << 0.7754

 

데이터의 분포가 하나의 직선으로 표현되기 쉬울 수록 상관관계가 강한 것입니다. 오른쪽 산점도가 훨씬 직선에 가까운 것을 알 수 있습니다. 이 결과를 통해 알 수 있는 것은 이전 시즌에 삼진을 잘 잡았던 투수는 다음 시즌에도 삼진을 잘 잡았다는 것입니다. 반면, BABIP의 상관관계는 매우 약합니다. BABIP가 정말 투수의 실력을 잘 반영하는 지표라면, 어느 정도 연속된 두 시즌의 BABIP의 상관관계가 어느 정도 강해야 하는데 전혀 그렇지 않았습니다. 정말 뛰어난 투수들은 이 운에 영향을 많이 받는 듯한 BABIP도 일정 수준으로 유지하기도 한다고는 하는데 그 수가 많지는 않다고 합니다. 

 

결론

어떤 선수의 미래 성적을 좀 더 정확히 예측하고 싶다면, BIP쪽 지표보다는 BNIP쪽 지표들이 좀 더 신호(signal)에 가깝다는 것을 감안하고 살펴보는 것이 좋을 것입니다. BIP쪽 지표에는 신호 외에도 소음(noise)이 많이 들어가 있기 때문에 소음적 요소들을 잘 걸러내어 해석해내야 합니다. 하지만, 결코 이 일은 쉽지 않습니다. 

 

bskyvision의 추천글

[세이버메트릭스] 타자의 타율, OPS, 삼진비율, 볼넷비율 중 어떤 것을 가장 신뢰할 수 있을까?  

[세이버메트릭스] 인플레이 타구가 안타가 될 확률, BABIP

 

참고자료

[1] 벤저민 바우머, 앤드루 짐발리스트 지음, "세이버메트릭스 레볼루션"

글을 읽던 중에 궁금했던 부분은 질문해주세요.
칭찬, 지적, 의문, 격려, 감사표현 등을 남겨주세요.
최대한 답변 드리도록 노력하겠습니다.
욕설과 광고를 담은 댓글은 가차없이 삭제합니다.
비밀글