⚽
매치 상세기록 API 중 ShootDTO, PassDTO, DefenceDTO에 포함된 변수들의 분산분석을 통해 경기 결과에 따른
슈팅 횟수, 패스 횟수 등의 차이를 검정해보려고 한다.
분산분석을 하는 이유는 승리에 영향을 미치는 요인들을 보다 더 잘 파악하기 위해서이다.
현재 데이터는 총 200개의 관측값들로 이루어져있다. 나는 이 데이터를 전체 데이터/나의 데이터/ 상대방 데이터로
나누어 분산분석을 각 DTO에 3번씩 진행했다.
이렇게 한 이유는 다음과 같다.
하나, 전체 데이터를 통해 경기결과에 따라 유의미한 차이가 있는 변수들을 확인할 수 있다.
둘, 나의 데이터를 통해 나의 공식 경기 결과에 따라 유의미한 차이가 있는 변수들을 확인할 수 있다.
셋, 상대방 데이터를 통해 상대방들의 공식 경기 결과에 따라 차이가 있는 변수들을 확인할 수 있다.
또한, 3개의 데이터로 나누어 각 변수에 대해 박스플롯을 그렸을 때, 그림들이 다르게 나타났기 때문이다.
ShootDTO의 박스플롯 그림을 예로 들어보겠다.
박스 플롯을 확인해본다면 각 데이터에서 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 중 집단간 유의미한 차이를 보인 변수를 박스플롯을 확인해보자.
그래프에 대표적인 변수로 ShootTotal을 본다면, 승리 했을 때에는 평균 6번의 슈팅을 했지만,
패배했을 때에는 평균 4번의 슈팅을 한 것을 보아 두 집단 간의 슈팅 총 횟수의 차이는 그래프로도 확인할 수 있다.
즉, 승리했을 때의 슈팅 횟수가 더 많다는 것을 의미한다.
하지만, 패배했을 경우 이상치를 확인해보면 11인 경우도 있으니, 이를 한번 확인해 볼 필요도 존재한다.
[Pass DTO]
전체 데이터로 분산분석 한 경우 & 정규성 만족하는 경우
- 존재하지 않음
전체 데이터로 분산분석 한 경우 & 정규성 불만족하는 경우
- throughPassSuccess : 승&패
- lobbedThroughPassTry : 승&패, 무&패
- lobbedThroughPassSuccess : 승&패, 무&패
나의 데이터로 분산분석 한 경우 & 정규성 만족하는 경우- longPassTry : 승&패
- longPassTry : 승&패
- throughPassTry : 승&패
- throughPassSuccess : 승&패
나의 데이터로 분산분석 한 경우 & 정규성 불만족하는 경우
- lobbedThroughPassTry : 승&패, 무&패
- lobbedThroughPassSuccess : 승&패, 무&패
상대방 데이터로 분산분석 한 경우 & 정규성 만족하는 경우
- 존재하지 않음
전체 데이터로 분산분석 한 경우 & 정규성 불만족하는 경우
- 존재하지 않음
대표적으로 전체 데이터의 패스 DTO 중 집단간 유의미한 차이를 보인 변수를 박스플롯을 확인해보자.
그래프에 대표적인 변수로 throughPassSuccess를 본다면, 승리 했을 때에는 평균 12번의 성공을 했지만,
패배했을 때에는 평균 10번의 성공을 한 것을 보아, 두 집단 간의 스루패스 성공 횟수의 차이는 존재한다고 볼 수 있다.
즉, 승리했을 때의 스루패스 성공 횟수가 더 많다는 것을 의미한다.
[Defence DTO]
전체 데이터로 분산분석 한 경우 & 정규성 만족하는 경우
- tackleTry가 유의미한 결과를 나타냈지만, 사후분석에서 집단 간의 차이가 없다고 뜸.
전체 데이터로 분산분석 한 경우 & 정규성 불만족하는 경우
- 존재하지 않음
나의 데이터로 분산분석 한 경우 & 정규성 만족하는 경우
- 존재하지 않음
나의 데이터로 분산분석 한 경우 & 정규성 불만족하는 경우
- 존재하지 않음
상대방 데이터로 분산분석 한 경우 & 정규성 만족하는 경우
- 존재하지 않음
상대방 데이터로 분산분석 한 경우 & 정규성 불만족하는 경우
- blockSuccess : 무&패
- tackleTry : 무&패
대표적으로 상대방의 데이터의 패스 DTO 중 집단간 유의미한 차이를 보인 변수를 박스플롯을 확인해보자.
그래프에 대표적인 변수로 tackleTry를 본다면, 무승부 했을 때에는 평균 8번의 시도를 했지만,
패배했을 때에는 평균 12번의 시도를 한 것을 보아, 두 집단 간의 태클 시도 횟수의 차이는 존재한다고 볼 수 있다.
즉, 무승부 했을 때의 태클 시도 횟수가 더 작다는 것을 의미한다.
이렇게 Shoot DTO, Pass DTO, Defence DTO 변수들의 집단 간 차이의 유의미성을 살펴보았더니, 경기결과에 따라
유의미한 변수들이 무엇인지 알게 되었다. 앞으로는 유의미한 변수들의 시간대 별로 조작 횟수 차이 등을 살펴 볼
예정이다. 또한, 연속형 변수들간의 회귀분석 등 진행해보며, 변수들관의 인과관계도 살펴볼 것이다.
이후, 피파온라인4 데이터 센터를 통해 상대방 유저들의 구단가치, 경기 수, 승률 등의 정보를 크롤링을 통해 수집하고 진성 유저와 비진성 유저들의 클러스터링도 진행해 볼 예정이다.
꾸준히 흥미로운 인사이트를 뽑아보자 ! 🙋♂️
'Project > 피파온라인4 데이터 분석 프로젝트' 카테고리의 다른 글
피파온라인4 API 활용 데이터 분석 프로젝트(4) (2) | 2021.02.06 |
---|---|
피파온라인4 API 활용 데이터 분석 프로젝트(3) (0) | 2021.02.01 |
피파온라인4 API 활용 데이터 분석 프로젝트(2) (0) | 2021.01.19 |
피파온라인4 API 활용 데이터 분석 프로젝트 (0) | 2021.01.10 |