본문 바로가기
Project/피파온라인4 데이터 분석 프로젝트

피파온라인4 API 활용 데이터 분석 프로젝트(5)

by 호찌민 2021. 3. 2.

매치 상세기록 API 중 ShootDTO, PassDTO, DefenceDTO에 포함된 변수들의 분산분석을 통해 경기 결과에 따른

슈팅 횟수, 패스 횟수 등의 차이를 검정해보려고 한다.

분산분석을 하는 이유는 승리에 영향을 미치는 요인들을 보다 더 잘 파악하기 위해서이다.

 

현재 데이터는 총 200개의 관측값들로 이루어져있다. 나는 이 데이터를 전체 데이터/나의 데이터/ 상대방 데이터

나누어 분산분석을 각 DTO에 3번씩 진행했다.

 

이렇게 한 이유는 다음과 같다.

하나, 전체 데이터를 통해 경기결과에 따라 유의미한 차이가 있는 변수들을 확인할 수 있다.

둘, 나의 데이터를 통해 나의 공식 경기 결과에 따라 유의미한 차이가 있는 변수들을 확인할 수 있다.

셋, 상대방 데이터를 통해 상대방들의 공식 경기 결과에 따라 차이가 있는 변수들을 확인할 수 있다.

 

또한, 3개의 데이터로 나누어 각 변수에 대해 박스플롯을 그렸을 때, 그림들이 다르게 나타났기 때문이다.


ShootDTO의 박스플롯 그림을 예로 들어보겠다.

<각 데이터의 Shoot DTO 박스플롯>

박스 플롯을 확인해본다면 각 데이터에서 shootTotal 변수나 shootInPenalty 변수의 평균 값과 이상치 꼬리 위치가 다른 것을 확인할 수 있다. 이를 통해, '데이터를 나눔에 따라 새로운 인사이트를 도출할 수 있지 않을까'라는 생각으로 데이터를 나누고 분산분석을 실행해보았다.


분산분석의 과정은 다음과 같이 한다.

출처 : velog.io/@pyose95/Data-Analysis

<분산분석 과정>


위 과정을 거쳐 3개로 나눈 데이터들의 각 DTO들에 대해서 얻은 결과는 다음과 같다.

*정규성을 만족하는 경우는 모수 검정법이고, 정규성을 불만족하는 경우는 비모수 검정법이다.

[Shoot DTO]

전체 데이터로 분산분석 한 경우 & 정규성 만족하는 경우

  • effectiveShootTotal : &
  • goalTotal : &, &, &
  • goalTotalDisplay : &, &, &
  • shootInPenalty : &
  • goalInPenalty : &, &, &(이분산)

전체 데이터로 분산분석 한 경우 & 정규성 만족하는 경우

  • goalHeading : &
  • goalOutPenalty : &

나의 데이터로 분산분석 한 경우 & 정규성 만족하는 경우 

  • shootTotal : &
  • effectiveShootTotal : &, &
  • goalTotal : &, &, &
  • goalTotalDisplay : &, &, &
  • shootInPenalty : &
  • goalInPenalty : &, &

나의 데이터로 분산분석 한 경우 & 정규성 불만족하는 경우

  • shootOutScore : &
  • goalHeading : &

상대방 데이터로 분산분석 한 경우 & 정규성 만족하는 경우

  • 존재하지 않음

상대방 데이터로 분산분석 한 경우 & 정규성 불만족하는 경우

  • goalTotal : &, &, &
  • goalTotalDisplay : &, &, &
  • goalInPenalty : &, &, &
  • goalOutPenalty : &

대표적으로 나의 데이터의 슛 DTO 중 집단간 유의미한 차이를 보인 변수를 박스플롯을 확인해보자.

<나의 데이터 중 유의미한 Shoot 변수들>

그래프에 대표적인 변수로 ShootTotal을 본다면, 승리 했을 때에는 평균 6번의 슈팅을 했지만,

패배했을 때에는 평균 4번의 슈팅을 한 것을 보아 두 집단 간의 슈팅 총 횟수의 차이는 그래프로도 확인할 수 있다.

즉, 승리했을 때의 슈팅 횟수가 더 많다는 것을 의미한다.

하지만, 패배했을 경우 이상치를 확인해보면 11인 경우도 있으니, 이를 한번 확인해 볼 필요도 존재한다.


[Pass DTO]

전체 데이터로 분산분석 한 경우 & 정규성 만족하는 경우

  • 존재하지 않음

전체 데이터로 분산분석 한 경우 & 정규성 불만족하는 경우

  • throughPassSuccess : &
  • lobbedThroughPassTry : &, &
  • lobbedThroughPassSuccess : &, &

나의 데이터로 분산분석 한 경우 & 정규성 만족하는 경우- longPassTry : &

  • longPassTry : 승&패
  • throughPassTry : &
  • throughPassSuccess : &

나의 데이터로 분산분석 한 경우 & 정규성 불만족하는 경우

  • lobbedThroughPassTry : &, &
  • lobbedThroughPassSuccess : &, &

 

상대방 데이터로 분산분석 한 경우 & 정규성 만족하는 경우

  • 존재하지 않음

 

전체 데이터로 분산분석 한 경우 & 정규성 불만족하는 경우

  • 존재하지 않음

대표적으로 전체 데이터의 패스 DTO 중 집단간 유의미한 차이를 보인 변수를 박스플롯을 확인해보자.

<전체 데이터 중 유의미한 Pass 변수들>

그래프에 대표적인 변수로 throughPassSuccess를 본다면, 승리 했을 때에는 평균 12번의 성공을 했지만,

패배했을 때에는 평균 10번의 성공을 한 것을 보아, 두 집단 간의 스루패스 성공 횟수의 차이는 존재한다고 볼 수 있다.

즉, 승리했을 때의 스루패스 성공 횟수가 더 많다는 것을 의미한다.


[Defence DTO]

전체 데이터로 분산분석 한 경우 & 정규성 만족하는 경우

  • tackleTry가 유의미한 결과를 나타냈지만, 사후분석에서 집단 간의 차이가 없다고 뜸.

 

전체 데이터로 분산분석 한 경우 & 정규성 불만족하는 경우

  • 존재하지 않음

나의 데이터로 분산분석 한 경우 & 정규성 만족하는 경우

  • 존재하지 않음

나의 데이터로 분산분석 한 경우 & 정규성 불만족하는 경우

  • 존재하지 않음

상대방 데이터로 분산분석 한 경우 & 정규성 만족하는 경우

  • 존재하지 않음

상대방 데이터로 분산분석 한 경우 & 정규성 불만족하는 경우

  • blockSuccess : &
  • tackleTry : 무&패

대표적으로 상대방의 데이터의 패스 DTO 중 집단간 유의미한 차이를 보인 변수를 박스플롯을 확인해보자.

<상대방 데이터 중 유의미한 Pass 변수들>

그래프에 대표적인 변수로 tackleTry를 본다면, 무승부 했을 때에는 평균 8번의 시도를 했지만,

패배했을 때에는 평균 12번의 시도를 한 것을 보아, 두 집단 간의 태클 시도 횟수의 차이는 존재한다고 볼 수 있다.

즉, 무승부 했을 때의 태클 시도 횟수가 더 작다는 것을 의미한다.


이렇게 Shoot DTO, Pass DTO, Defence DTO 변수들의 집단 간 차이의 유의미성을 살펴보았더니, 경기결과에 따라

유의미한 변수들이 무엇인지 알게 되었다. 앞으로는 유의미한 변수들의 시간대 별로 조작 횟수 차이 등을 살펴 볼

예정이다. 또한, 연속형 변수들간의 회귀분석 등 진행해보며, 변수들관의 인과관계도 살펴볼 것이다.

이후, 피파온라인4 데이터 센터를 통해 상대방 유저들의 구단가치, 경기 수, 승률 등의 정보를 크롤링을 통해 수집하고 진성 유저와 비진성 유저들의 클러스터링도 진행해 볼 예정이다.

 

꾸준히 흥미로운 인사이트를 뽑아보자 ! 🙋‍♂️