-
R 다변량 통계 분석 - 2. 이변량 정규분포, 다변량 정규성, qqplotR + Statsitic (통계학) 2020. 4. 27. 11:39
아래 내용은 <R과 함께하는 다변량 자료분석을 위한 추정과 검정, 최용석 지음, 2019>에서 대부분 발췌하였습니다
다변량 통계 분석에서 정규성 검정, 시각화 방법 등에 필요한 라이브러리 입니다
library(MVT)
library(MVN)
library(dplyr)
library(car)
library(multifluo)#### 데이터 불러오기
examScor 데이터를 불러옵니다
원활한 분석을 위해 결측치를 제거하고
데이터 형태와 요약 정보를 확인해봅시다
data(examScor)
examScor <- examScor %>% na.omit()
examScor %>% head()
examScor %>% summary()
examScor data에 대한 설명을 잠깐 하겠습니다
examScor는 학생 88명을 대상으로 두 가지 방식(open-book, closed-book)에 따라 치른
다섯 과목 mechanics, vectors, algebra, analysis, statistics의 성적 data입니다
과목명 시험방식 mechanics closed-book vectors closed-book algebra open-book analysis open-book statistics open-book #### ( closed-book )와 ( open-book )에 따라 이변량 정규분포와 삼변량 정규분포를 검토하기
### closed-book 방식 (mechanics + vectors), open-book 방식 (algebra + analysis + statistics) 분리
메카.벡터 <- examScor %>% select(mechanics, vectors)
대수.분석.통계 <- examScor %>% select(algebra, analysis, statistics)
## 이변량 정규 분포 (mvn)mvn 함수는 Multivariate Normality Tests를 실행하고 plot까지 제공합니다
앞에서 생성한 메카.벡터에 대해 실행해봅시다
메카.벡터_mvn <- mvn(메카.벡터, multivariatePlot = "qq")
해석해봅시다
mvn함수는 Mardia Test를 기반합니다
Mardia Test는 다변량의 왜도(skewness)와 첨도(kurtosis)로 정규성 검정을 합니다
Mardia(1970)가 제안한 방법입니다
자세한 사항은 위키피디아를 참고하시면 되겠습니다
우리는 결과 해석만 해봅시다
https://en.wikipedia.org/wiki/Multivariate_normal_distribution#Multivariate_normality_tests
# $multivariateNormality
메카.벡터는 왜도(skewness)와 첨도(kurtosis) 모두 정규성을 만족하고 MVN(Multivariate Normality)도 만족합니다
# $unitivariateNormality
메카(mechnics), 벡터(vector) 각각의 정규성도 만족합니다
# $Descriptives
메카(mechnics), 벡터(vector)의 왜도(skewness), 첨도(kurtosis)를 포함한 summary 결과입니다
# Q-Q plot
Chi-square Q-Q Plot입니다
y축은 Chi-Squre Quantile, x축은 Squared Mahalanobis Distance입니다
지금은 Q-Q plot의 의미만 해석해봅시다
y=x 직선을 기준으로 대부분의 data가 몰려있으면 정규성을 만족한다고 할 수 있습니다
x축 Mahalanobis Distance는 다변량 뿐만 아니라 통계학에서 자주 나오는 개념입니다
간단히 개념만 말하자면, 다변량의 데이터에서 분포의 형태까지 고려한 거리(Distance)입니다
고등학교 수학에서 배우는 표준정규분포 Z값을 구하는것이 Mahalanobis Distance를 구하는 과정입니다
그당시에는 멋 모르고 평균빼고 표준편차로 나누었는데 다 이유가 있었습니다
우리가 통상적으로 구하는 거리(피타고라스 정리로 구하는) 거리는 Euclidean distance입니다(간혹, Pythagorean Distance 라고도 하는것 같은데 정확하지 않습니다. 중요한 대목은 아닙니다ㅎㅎ;;)
Mahalanobis Distance는 다음에 다룰 이상치(Outlier)에서 다룰 예정입니다. 그때 한번 다뤄보겠습니다https://en.wikipedia.org/wiki/Mahalanobis_distance
## 삼변량 정규 분포 (mvn)
삼변량 정규 분포 역시 mvn 함수로 구합니다 (삼변량이상이 되면 다변량이라고 하죠)
앞에서 생성한 대수.분석.통계에 대해 실행해봅시다
해석은 이변량(메카.벡터)와 같은 흐름으로 하시면 됩니다
자세한 해석은 생략하겠습니다
대수.분석.통계_mvn <- mvn(대수.분석.통계, multivariatePlot = "qq") # 두 다변량이 paired 할때 적용가능한 srivastava test
srivastava test는 library(multifluo)에 내장되어있습니다
두 다변량의 변수(variable) 길이와 관측치(obsevation) 즉, 데이터의 길이가 같을때 실행할 수 있습니다
자세한 참고문헌은 아래를 참조해주십시요M. S. Srivastava and M. Du. A test for the mean vector with fewer observations than the dimension.Journal of Multivariate Analysis , 99(3):386 402, Mar. 2008. 예시로 mechanics + vectors와 algebra + analysis 두 데이터셋에 srivastava test를 실행하겠습니다
sri.test(메카.벡터_mat,대수.분석_mat)결과값이 나왔습니다
해석해봅시다
H0(영가설) : multivariate differences between two samples is close to 0
H1(대립가설) : H0 is not true
p.value가 매우 낮으므로 영가설을 기각합니다
(multivariate differences between two samples is not close to 0)
다음은 다변량 정규분포의 이상치과 시각화를 다루겠습니다
'R + Statsitic (통계학)' 카테고리의 다른 글