선제점에서의 승률의 이항 로지스틱 회귀 모델

5591 단어 RRStan야구통계

소개



이번에 처음 Advent calendar에 참가했습니다 학부 3년 사이토입니다. 이번은 실제의 데이터로부터 작성한 야구의 통계 모델을 소개해 가고 싶습니다.

목표


  • 과거의 선제점에 주목한 승률로부터 경향을 찾아 향후의 경기 전개에 도움을 준다(를 위한 첫걸음).
  • 친밀한 흥미가 있는 것을 모델링해 보자(라고 하기 위한 첫걸음).

  • 모델 상세



    이번 시합 종반에 선제하는 것이 승률이 높아지면 가설을 세우고, 또한 승률이 0~1로 들어가기 때문에 로지스틱 회귀 모델을 채용했습니다.

    로지스틱 회귀란?



    응답 변수가 2 치로 나타내는 경우에 사용되는 모델이며, 관계식은 로지스틱 방정식 (시그모이드 함수)이 되어 수식으로 나타내면
    
    Pr(Y|X)=\frac{1}{1+e^{-(b_0+b_1x_1+…+b_nx_n)} }
    
    

    라고 표현할 수 있다. 수식에서 b_1, b_2 ...를 회귀 계수, b_0을 상수 항이라고합니다.
    이번에 설명 변수 x를 선제한 득점 x_1(Score)과 이닝 x_2(Inning), 응답 변수 Pr을 승패 Pr(1:승 0:패)(Result)로 했다. 또한, 각 설명 변수의 계수는 추정 사후 평균값을 산출하여 다음과 같이 되었다.


    b_0
    b_1
    b_2


    -0.02651897
    0.74092991
    0.03217324


    데이터



    육대학 준경식 야구 과거 10년분의 데이터
    참조 사이트 (이하)를 csv 파일로 작성했다.


    Score
    Inning
    Result


    3
    1
    1

    4
    1
    1

    2
    1
    1

    2
    1
    1

    1
    1
    1

    ·
    ·
    ·

    ·
    ·
    ·

    ·
    ·
    ·


    샘플 코드



    qiita.R
    library(rstan)
    
    d <- read.csv(file='NLab.csv')
    data <- list(N=nrow(d), S=d$score, I=d$inning, R=d$result)
    fit <- stan(file='NLab.stan', data=data, seed=1234)
    
    plot(fit)
    
    

    qiita.stan
    data{
      int N;
      int<lower=0> S[N];
      int<lower=0> I[N];
      int<lower=0, upper=1> R[N];
    }
    
    parameters {
      real b[3];
    }
    
    transformed parameters {
      real q[N];
      for (n in 1:N)
        q[n] = inv_logit(b[1] + b[2]*S[n] + b[3]*I[n]);
    }
    
    model{
      for (n in 1:N)
        R[n] ~ bernoulli(q[n]);
    }
    

    결과



    가로축을 이닝, 세로축을 승률로 하여 수치화, 가시화한 결과 이하와 같았다.
    가로축을 득점으로 한 것도 작성했지만 선형이 되었기 때문에 할애하겠습니다. .


    선제한 득점수가 1점일 때의 승률
    선제한 득점수가 3점일 때의 승률
    선제한 득점수가 5점 이상일 때의 승률


    [1,] 0.6702522
    [1,] 0.6667553
    [1,] 0.6548684

    [2,] 0.8104221
    [2,] 0.8075978
    [2,] 0.7992219

    [3,] 0.8999064
    [3,] 0.8980191
    [3,] 0.8930583

    [4,] 0.9497703
    [4,] 0.9486481
    [4,] 0.9460020

    [5,] 0.9754705
    [5,] 0.9748461
    [5,] 0.9735122

    [6,] 0.9881847
    [6,] 0.9878499
    [6,] 0.9871966

    [7,] 0.9943470
    [7,] 0.9941714
    [7,] 0.9938558

    [8,] 0.9973041
    [8,] 0.9972132
    [8,] 0.9970618

    [9,] 0.9987163
    [9,] 0.9986697
    [9,] 0.9985973


    선제한 득점수가 1점일 때의 승률

    선제한 득점수가 3점일 때의 승률

    선제한 득점수가 5점 이상일 때의 승률


    또한 각 이닝의 확률비를 비교하면 다음과 같이 되었다.
    표를 읽는 방법으로서 오른쪽 위의 적연의 숫자를 이용해 설명하면 9회에 선제해 이길 확률은 1회에 선제해 이길 확률의 382.7708배임을 나타내고 있다.


    고찰 & 정리



    가설대로 종반의 이닝으로 선제하는 것이 승률이 높아졌다.
    다만 많이 득점해도 승률에 그다지 변화는 없었다.
    →선제 득점이 적을 때는 투수전(적은 점에서 승패가 정해지는 시합)이며, 선제 득점이 많을 때는 난타전(득점을 많이 잡는 경기)이 되고 있다고 생각했기 때문에.

    감사의 말



    상당히 편향된 내용이 되었습니다만 끝까지 읽어 주셔서 감사합니다.

    참고문헌



    Stan과 R에서 베이즈 통계 모델링 공립 출판 마츠우라 켄타로 저서

    좋은 웹페이지 즐겨찾기