경마분석, 말은 거리에 따라 속력이 다를까
목차
경마에는 많은 종류의 변수가 있습니다. 변수는 경주 예측을 어렵게도 하지만, 이런 변수를 잘 조합해서 우승마를 맞추었을 때는 역으로 강한 짜릿함을 느낍니다. 출전 거리, 주로 상태, 훈련량, 말의 무게 등 실제 경기에 영향을 미치는 변수는 굉장히 많은데요. 오늘은 이런 변수 중에 하나인 경주 거리에 따라 말의 속력이 다른지 알아보겠습니다.
가장 대표적인 변수는 부담중량인데요. 말의 능력에 따라 짊어지는 무게가 다릅니다. 잘 뛰는 말은 무게를 더 얹고, 못 뛰는 말은 무게를 줄입니다. 그렇게 경주마들의 실력차를 조정하여 더 박진감 넘치는 경주가 되게 만듭니다.
중량을 부여하는 방법에 따라 경기 방식이 나뉘기도 합니다. 크게 마령, 별정, 핸디로 나뉘는데요. 마령은 말의 연령에 따라, 별정은 수득 상금 등 별도로 정한 기준에 따라, 핸디는 말의 능력이나 출전 번호 등 경기 성적에 영향을 미치는 요인들을 감안하여 무게를 부여합니다. 무게를 결정하는 것은 핸디 캐퍼들이 합니다.
1. 출전거리별 속력 비교하기
출전 거리별로 속력이 같다면 감안해야 할 변수가 하나 줄어듭니다. 그런 의미에서 경주거리 별로 속도가 다른지 알아보려고 합니다. 출전 거리가 다르니, 출전거리를 경기기록(완주 시간)으로 나누었습니다. 그러면 말의 속력이 되기 때문에, 출전 거리가 달라도 비교가 가능한데요.
출전거리가 1000m, 1200m, 1300m, 1400m 등으로 100m 차이가 나는 경기들은 말의 경기 속력이 비슷하지 않을까요? 그러면 출전 거리는 앞으로 경주 분석에서 제외해도 되지 않을까 하는 생각이었습니다.
우선 그 전에 거리별 말의 속력이 정규분포를 따르는지 검증해 보았습니다. 어려운 통계 방법보다 히스토그램(histogram)이라는 그래프를 그려서 확인해 보았습니다.
y축은 경주마 경기 숫자, x축은 속력이다. 14~16m/s에 많은 말들이 분포해 있는 것을 알 수 있습니다. 히스토그램의 간격을 조정해서 다시 그려보았습니다.
간격을 조정하고 나니 이전 그래프보다는 더 정규분포를 나타내는 듯 한데요. 경주 거리별로 히스토그램을 그려보았습니다.
2. 말은 출전 거리별로 속력이 다른가?
파란색이 1000m, 빨간색이 1100m로 색깔은 경주거리를 나타냅니다. x축은 속력 m/s이고, y축은 경주마들이 뛴 기록수입니다.
우선 장거리 경주가 굉장히 적은 것을 알 수 있는데요. 필자가 본 어떤 블로그에서는 단거리 경기 위주로 운영하는 마사회에 대한 질타하는 내용이 있었습니다. 단거리 경주를 편성하면 경기를 많이 할 수 있어, 수익에는 도움이 되나 볼만한 경주가 나오지 않는다고 하네요. 1200, 1400m 등 단거리 경주가 상대적으로 더 많았습니다.
장거리가 단거리에 비해 거리가 길어서 그런지 속력이 더 낮습니다. 1100m 경기를 15m/s에 뛴 경주가 약 700건으로 가장 많은데요. 이에 비해 거리가 짧은 1200m, 1400m는 평균 속력이 15.6~7m/s정도 됩니다.
거리별로 속도가 다르긴 하지만, 크게 장거리와 중거리, 단거리로 나눌 수 있겠습니다. 1000~1400m: 단거리, 1500~1700m: 중거리, 1800~2300m: 장거리 정도 되겠습니다.
하지만 예측 모델을 만들 때는 거리를 범주화하지 않고 그대로 쓰는 것이 더 좋은 결과를 만들어 내긴 햇습니다.
말의 거리에 따른 속력에 대해서 알아보았습니다. 거리에 따라 속력이 차이가 나긴 하지만, 1~200m의 거리에서는 크게 차이가 나지 않았습니다. 이를 근거로 경기를 크게 단거리, 중거리, 장거리 3가지로 나눌 수 있겠습니다. 더 정확한 검증을 위해서는 거리별 말의 속력을 통계적으로 비교하기 위해 모집단의 평균을 비교하는 t검증, z검증을 해 보는 것도 좋겠습니다.
참고로 히스토그램을 그리는 파이썬 코드를 아래와 같습니다.
race_result["speed"].hist() -> speed를 히스토그램으로 그리기
race_result["speed"].hist(bins=100) -> 히스토그램 간격 조정, 더 촘촘한 간격으로 그린다.
race_result.groupby("distance")["speed"].hist(bins=100, alpha=0.5) -> 거리별로 그리기
### 경주 거리별 속력(범례 포함) ###
race_result["distance"]=race_result["distance"].astype(str)
groups = race_result.groupby("distance")["speed"]
fig, ax = plt.subplots()
for k,v in groups:
v.hist(label=k, alpha=0.75, ax=ax, bins=100)
ax.legend()
'Python > 파이썬 경마 분석' 카테고리의 다른 글
파이썬 웹크롤링, 경마 경기결과 데이터 수집하는 방법은?! (3) | 2020.07.05 |
---|---|
17년 11월 초고배당 경마 경주 #삼쌍승#이만배#복승식도 구백배 (0) | 2017.12.10 |
데이터의 유형과 분류 (0) | 2017.11.30 |
2017년 11월 1주차 BEST 경마 경기(11월 4일) (0) | 2017.11.07 |
#2-3 사람들은 경마 예측을 잘 할까요 (0) | 2017.10.14 |
경마로 코딩 교육 배우기(빅데이터 분석학습하기) (2) | 2017.10.12 |
#2-7 decision tree 알고리즘 사용하기 (0) | 2017.10.10 |
#2-6 KNN 군집화 알고리즘 사용하기 (질병 정보 분류하기) - 파이썬, pandas, sklearn (6) | 2017.08.29 |