-
고구려 해모수 : 이미지출처 MBC 드라마 주몽 통계분석 공부를 하다 보면 개념보다 용어가 어렵다는 생각을 가끔 한다. 내겐 비모수 검정이 대표적인 예다. 무시무시하게 들리는 비모수 검정이란 말이 그렇게 어려운 개념은 아니다. 비모수 검정은 데이터가 정규 분포를 따른다고 가정하는 검정들과 달리 데이터가 정규 분포를 따르지 않거나 표본 크기가 너무 작아서 모집단 분포에 대해 신뢰할 수 있는 가정을 할 수 없을 때 사용하는 검정을 의미한다. 그런데 나는 이상하게도 비모수라는 말을 들을 때 마다 고구려 설화의 해모수가 생각난다. 해모수와 비모수는 전혀 상관없고 한자 표기도 解慕漱와 非母數 완전히 다르지만 발음이 비슷해서 그런가보다.
장난끼가 발동하여 요즘 자주 쓰고 있는 chatGPT에게 다음과 같은 질문을 해봤다.
고구려 시대에 살던 해모수왕과 비모수 형제 이야기를 해줘
이에대한 chatGPT의 답은 다음과 같았다.
해모수 왕과 그의 남동생 비모수는 한국의 고대 왕조인 고구려의 역사상 전설적인 인물로, 고구려는 기원전 1세기부터 7세기까지 존재한 고대 한국 왕국이다.
전설에 따르면, 해모수 왕은 고구려의 창건자인 주몽의 장자이며, 아버지의 죽음 이후 다음 왕으로 선정되었다. 그러나 그의 남동생 비모수는 형제에 대한 질투심을 품고 그를 암살하고 왕위를 차지하기로 계획했다.
어느 날, 해모수 왕이 사냥을 나가있는 동안, 비모수와 그의 부하들이 그를 습격하여 죽였다. 그들은 그의 시체를 묻고, 그가 실종되었다는 소문을 퍼뜨렸다. 비모수는 이후 고구려의 새로운 왕으로 자리잡고, 철권정치를 펼쳤다.
한편, 해모수 왕의 임신한 아내인 유화 부인은 그의 죽음 소식에 깊이 충격을 받았다. 그녀는 숲으로 도피하여 자신의 아버지를 모태로 한 아들을 낳았다. 이 아들은 어머니가 그의 할아버지의 이름인 주몽이라 이름 지어주었다. 유화 부인은 그녀의 아들을 비밀리에 양육하며, 그를 전사로 훈련시키고 그의 아버지와 그가 자신이 가지고 있는 왕위의 적법한 상속권에 대한 이야기를 전하였다.
주몽은 나이가 들수록 카리스마 있는 지도자와 숙련된 전사가 되었다. 그는 충성심 있는 팔로우어들을 모아 비모수의 체제에 반란을 일으키기 시작했다. 그의 어머니와 지지자들의 도움으로, 주몽은 아버지의 죽음의 진실을 밝히고 고구려의 국민들을 동원하여 반란을 일으켰다.
최종적으로, 주몽과 그의 군대는 비모수와 그의 부하들을 물리치고, 주몽은 고구려의 새로운 왕으로 즉위되었다. 그는 이후에 한국 역사에서 가장 위대한 왕조 중 하나를 세우며 국민적인 영웅으로 기억된다.
해모수 왕과 그의 남동생 비모수의 이야기는 “주몽”이라는 인기 있는 TV 드라마 시리즈를 비롯해 한국 역사상 여러 가지 형태로 재창조되어 왔다. 이 이야기는 정의, 충성심, 가족 유대의 영속한 힘의 중요성을 상기시키는 역할을 한다.chatGPT는 의외로 상상력이 뛰어난 AI이다. 본인이 잘 알지 못하는 지식을 chatGPT에만 의지해서 글을 쓰거나 말을 하면 돌이킬 수 없는 심각한 오류를 범할 수 있다. chatGPT를 사용하면서 교차검정 하는 것을 잊지 말아야 하겠다.
그럼 chatGPT를 그만 놀리고 비모수 검정에 대해 공부해보자.
다음은 두 그룹의 평균을 비교하는 검정 방법을 플로우 차트로 정리한 것이다. 플로우 차트 중 표본의 크기가 작거나, 정규성을 만족하지 못하는 경우에 사용하는 것이 비모수 검정이며 여기서는 윌콕슨 순위합 검정과 윌콕슨의 부호 순위 검정 두가지를 표현하고 있다.
두 그룹의 평균비교:이미지출처:통계의 도구들 비모수 검정
비모수 검정은 모집단의 분포가 정규 분포라고 확신하기 어려운 경우나 데이터 샘플 수가 너무 적은 경우에는 사용하는 검정 방법이다. 또, 데이터가 연속적인 수치값이 아닌 등수나 서열로 비모수 검정을 사용한다.
윌콕슨 순위합 검정(Wilcoxon Rank-Sum Test)
윌콕슨 순위합 검정(Wilcoxon rank sum test)은 두 개의 독립적인 데이터 그룹을 비교하여 분포가 동일한 모집단에서 추출되었는지를 확인하는 비모수 통계 검정이며, 두집단을 비교함에 있어 정규성 가정을 두지 않고 통계적인 비교를 할 수 있는 기법이다. 즉 정규성을 만족할때 사용하는 Independent t-test를 정규성이 만족하지 않는 데이터에 적용한 개념으로 이해 할 수 있다. 이 검정은 Mann-Whitney U 검정이라고도 한다.
이 테스트는 두 그룹의 모든 관측치를 대상으로 가장 작은 것부터 가장 큰 것까지 순위를 지정한다. 그런 다음 각 그룹의 순위 합계를 계산한다. 검정 통계량은 두 합계 중 더 작은 값이다. 검정 통계량이 충분히 작으면 두 그룹이 서로 다른 모집단에서 왔다는 증거를 제공한다. 순위합 검정에서 통계량에 대한 p-value를 계산하는 개념은 참고 url에 설명이 잘 되어있다. R에서 순위 합계 테스트를 수행하려면 wilcox.test 함수를 사용한다. 다음은 R의 샘플 데이터로 순위 합계 테스트를 수행하는 방법의 예이다.# 반려견과 반려묘 평균수명 데이터를 각각 10씩 생성 dogs <- round(rnorm(10, 13, 3),2) # 평균수명 13년, sd =3 년 cats <- round(rnorm(10, 17, 3.5),2) # 평균수명 17년, sd =3.5 년 # 가시화 boxplot(dogs, cats, names = c("dogs", "cats"))
# 정규성 검정 --> shapiro wilk test shapiro.test(dogs)
## ## Shapiro-Wilk normality test ## ## data: dogs ## W = 0.84104, p-value = 0.04541
shapiro.test(cats)
## ## Shapiro-Wilk normality test ## ## data: cats ## W = 0.93488, p-value = 0.4976
# 두 데이터가 모두 정규성은 만족하나 숫자가 너무 적어 # 독립표본 t 검정의 비모수 버전이라 할 수 있는 윌콕스 순위합 검정수행 # 윌콕스 순위합 검정 수행 wilcox.test(dogs, cats)
## ## Wilcoxon rank sum exact test ## ## data: dogs and cats ## W = 17, p-value = 0.0115 ## alternative hypothesis: true location shift is not equal to 0
윌콕슨 순위합 검정의 귀무 가설은 “두 그룹의 평균값은 같다” 이며 대립가설은 “두 그룹의 평균값은 같지 않다” 이다. 검정에서 계산된 p-값은 귀무 가설에 대한 증거의 강도를 나타내고 p-값이 유의 수준(일반적으로 0.05)보다 작으므로 귀무 가설을 기각한다. 즉 위 데이터를 기반해서 윌콕슨 순위합 검정을 하면 고양이의 평균 수명이 개보다 더 길다는 주장을 할 수 있다.
윌콕슨 순위합 검정 - 공돌이의 수학정리노트 (Angelo's Math Notes)
angeloyeo.github.io
윌콕슨 부호 순위 검정(Wilcoxon Signed Rank Test)
윌콕슨의 부호순위 검정은 Paired t test의 비모수 버전이라고 생각하면 된다. 검정의 대상이 되는 실험 전 데이터와 실험 후로 짝을 이룬 데이터를 비교하여 실험으로 차이가 발생했는지를 검정하는 것인데, 데이터가 정규성을 만족하지 못하거나, 관측치가 너무 적을 경우에는 Paired t test를 적용하지 않고, 윌콕슨 부호 순위 검정을 하게된다. 다음은 R에 내장되어있는 sleep이란 데이터를 이용하여 윌콕슨 부호순위 검정을 하는 과정이다. sleep 데이터는 수면제의 효과를 실험한 데이터이다. 10명의 사람들에 대해 한번은(그룹1) 수면제를 또 한번은(그룹2) 가짜약을 투여하고 수면 시간을 조사한 데이터이다.
# 윌콕슨 부호순위검정에는 sleep이라는 데이터를 이용용 data(sleep) head(sleep)
## extra group ID ## 1 0.7 1 1 ## 2 -1.6 1 2 ## 3 -0.2 1 3 ## 4 -1.2 1 4 ## 5 -0.1 1 5 ## 6 3.4 1 6
# 1. 먼저 두 그룹의 데이터가 정규성을 갖는지 확인해야 한다. # 각각을 확인할 수 도 있지만 차을 이용하면 한번에 검정가능하다. shapiro.test(sleep$extra[sleep$group==1] - sleep$extra[sleep$group ==2])
## ## Shapiro-Wilk normality test ## ## data: sleep$extra[sleep$group == 1] - sleep$extra[sleep$group == 2] ## W = 0.82987, p-value = 0.03334
# 위 문장은 아래와 같이 축약형으로 표현가능 with(sleep, shapiro.test(extra[group==1] - extra[group==2]))
## ## Shapiro-Wilk normality test ## ## data: extra[group == 1] - extra[group == 2] ## W = 0.82987, p-value = 0.03334
# shapiro 검정 결과 p-value가 0.033으로 유의수준 0.05에서 # 두 데이터가 정규성을 따른 다는 귀무가설을 기각한다. 즉 정규성을 따르지 않는다. # --->>> 따라서 Paired t test 를 수행하지 않고 윌콕스 부호순위검정을 수행한다. # 2. 데이터를 가시화해보자. #install.packages("PairedData") library(PairedData) before <- subset(sleep, group == 1, extra, drop = TRUE) after <- subset(sleep, group == 2, extra, drop = TRUE) plot(paired(before, after), type ="profile") + theme_bw()
# 3. 윌콕슨 부호순위 검정 with(sleep, wilcox.test(extra[group==1]- extra[group==2])) # Paired 이므로 차이로 검정
## ## Wilcoxon signed rank test with continuity correction ## ## data: extra[group == 1] - extra[group == 2] ## V = 0, p-value = 0.009091 ## alternative hypothesis: true location is not equal to 0
윌콕스 부호순위검정 결과 p-value는 0.00909로 유의수준 0.005 보다 작아 “두그룹간의 평균의 차이가 없다”라는 귀무가설을 기각하고 “두 그룹간의 평균의 차이가 존재한다”는 대립가설을 채택한다.
아래 제시하는 참고 링크는 윌콕스 부호순위 검정에 대해 가장 차분하고 개념적으로 설명한 자료이다.
참고 : https://angeloyeo.github.io/2021/11/26/signed_rank.html
윌콕슨 부호 순위 검정 - 공돌이의 수학정리노트 (Angelo's Math Notes)
angeloyeo.github.io
'데이터' 카테고리의 다른 글
caret 패키지로 유방암 진단하기 (0) 2023.06.18 상관분석 (1) 2023.05.21 Data Stroage의 진화 (0) 2023.04.23 Data Governance (0) 2023.04.09 Data Literacy (0) 2023.03.26