경마분석, 말은 거리에 따라 속력이 다를까

2017. 10. 15. 08:10

경마에는 많은 종류의 변수가 있다. 변수는 경주 예측을 어렵게도 하지만, 이런 변수를 잘 조합해서 우승마를 맞추었을 때는 역으로 강한 짜릿함(?)을 느낀다.

가장 대표적인 변수는 부담중량이다. 말의 능력에 따라 짊어지는 무게가 다르다. 잘 뛰는 말은 무게를 더 얹고, 못 뛰는 말은 무게를 줄인다. 그렇게 경주마들의 실력차를 조정하여 더 박진감 넘치는 경주가 되게 만든다.

중량을 부여하는 방법에 따라 경기 방식이 나뉘기도 한다. 크게 마령, 별정, 핸디로 나뉜다. 마령은 말의 연령에 따라, 별정은 수득 상금 등 별도로 정한 기준에 따라, 핸디는 말의 능력이나 출전 번호 등 경기 성적에 영향을 미치는 요인들을 감안하여 무게를 부여한다. 무게를 결정하는 것은 핸디 캐퍼들이 한다.

그 외에도 출전 거리, 주로 상태, 훈련량, 말의 무게 등 실제 경기에 영향을 미치는 변수들이 많다.

오늘은 이런 변수 중에 하나인 경주 거리에 따라 말의 속력이 다른지 알아보고자 한다.


경마분석


추천포스트


출전 거리별로 속력이 같다면 감안해야 할 변수가 하나 줄어든다. 그런 의미에서 경주거리 별로 속도가 다른지 알아보려고 한다. 

출전 거리가 다르니, 출전거리를 경기기록(완주 시간)으로 나누었다. 그러면 말의 속력이 되기 때문에, 출전 거리가 달라도 비교가 가능하다.

출전거리가 1000m, 1200m, 1300m, 1400m 등으로  100m 차이가 나는 경기들은 말의 경기 속력이 비슷하지 않을까?

그러면 출전 거리는 앞으로 경주 분석에서 제외해도 되지 않을까 하는 생각이었다.


그러면 거리별 말의 속력을 비교해 보자. 거리별 말의 속력을 통계적으로 비교하기 위해서는 모집단의 평균을 비교하는 t검증, z검증을 해야 할 듯하다.


우선 그 전에 거리별 말의 속력이 정규분포를 따르는지 검증해 보자. 어려운 통계 방법보다 히스토그램(histogram)이라는 그래프를 그려서 확인해 보자.


히스토그램

(경주마의 속력)


y축은 경주마 경기 숫자, x축은 속력이다. 14~16m/s에 많은 말들이 분포해 있는 것을 알 수 있다. 히스토그램의 간격을 조정해서 다시 그려보았다.


촘촘한

(촘촘한 간격의 히스토그램)


간격을 조정하고 나니 이전 그래프보다는 더 정규분포를 나타내는 듯 하다. 경주 거리별로 히스토그램을 그려보도록 하자.

(경주 거리별 속력)


파란색이 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가지로 나눌 수 있을 듯 하다.


참고로 히스토그램을 그리는 파이썬 코드를 아래와 같다.

> 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()


이 글 공유하기


댓글()
  1. 꽁냥이 2017.10.23 18:34 댓글주소  수정/삭제  댓글쓰기

    잘 보고 갑니다.

  2. 1.5 2017.12.28 23:21 신고 댓글주소  수정/삭제  댓글쓰기

    잘보고갑니다.
    추운날씨 감기 조심하시고
    행복한 시간되세요

  3. 호호호 2019.12.05 12:36 댓글주소  수정/삭제  댓글쓰기

    ,#에이스스크린경마가입max7777.net/가입코드A1004 가입문의 텔레그램@aceking11