추론통계는 parametric, nonparmetric으로 나누어 볼 수 있다.모수통계는 모수를 추정하는 기법이며, 모수통계의 대표적인 방법은 t-test로 꼽을 수 있다. 비모수 검정은 모수에 대한 가정을 전제로 하지 않고 모집단의 형태와 관계없이 주어진 데이터에서 직접 확률을 계산하여 통계적으로 검정하는 분석방법이다.
일반적으로 표본의 수가 30개 미만이면서 정규성을 만족하지 않는 경우, 수치에는 의미가 없고 상대적 크기가 의미있는 경우, 변수의 척도가 등간, 비율이 아닌 명목, 서열 척도로 구성되었을 경우 비모수적 검정을 사용한다.
비모수검정에는 데이터의 순위를 이용하는 전통적인 비모수적 접근법인 rank test, resmapling을 통해 생성한 경험적 분포(empirical distribution)를 반탕으로 한 permutation test와 bootstrapping등이 있다. 하지만 비모수검정은 정규분포를 가정하는 모수검정 만큼 강력하지 않기 때문에 이상치를 제거하거나 데이터 변환을 통해 모수통계의 가정을 충족시킬 수 있으면 모수검정을 하는 것이 효과적인 검정 결과를 얻을 수 있다.
Independent sample test
Wilcoxon rank sum test
독립표본 평균검정은 두 집단이 서로 차이 있는지 검정하는 방법이다. 데이터가 정규분포를 따른다는 가정이 충족된다면 t-test를 바탕으로 검정을 수행한다. 정규분포를 따르지 않으면 t-test를 사용할 수 없고, 이 때 주로 사용되는 비모수 통계기법은 Wilcoxon rank sum test이다(맨-휘트니 U검정, Mann-Whitney U test라고도 알려져있음).
t-test의 경우 두 집단 간 평균이 동일한지 검정하는 것이라면, Wilcoxon-test는 두 집단의 중위수가 동일한지 검정하는 것이다. 평균을 기반으로한 t-test는 중앙값을 기반으로한 nonparametric test에 비해 outlier에 상대적으로 민감할 수 밖에 없다. outlier에 대해 엄격한 가정을 할 수 없을 때는 이러한 이상점의 영향을 덜 받는 중위수를 기반으로한 검정이 더 적절할 수 있다.
Wilcoxon test를 수행하기 위해서는 우선 두 집단의 관측값을 통합하고 작은 값에서부터 큰 값의 크기순으로 순위를 부여한다. 동일한 관측값이 있을 때는 사잇값을 똑같이 부여한다.(e.g. 5, 5 -> 5.5, 5.5 부여) 그 후 각 집단별로 순위합의 평균을 계산한다. 이때의 가설은 다음과 같다.
H0 : 두 집단의 중위수가 동일하다. -> 두 집단의 순위합 평균이 대체로 비슷하다.
H1 : 두 집단의 중위수가 다르다. -> 두 집단의 순위합 평균이 차이가 난다.
Kruskal-Wallis test
두 집단이 서로 차이가 있는지 검정할 때 모수통계에서는 t-test, 비모수통계에서는 Wilcoxon test를 사용했다. 두 집단을 초과하는 세 개 이상의 집단을 비교할 때는 모수통계에서 ANOVA(분산분석)을 사용했을 것이다. 이때 사용되는 비모수통계기법은 Kruskal-Wallis test(크러스칼-왈리스검정)이다. Kruskal-Wallis test는 집단의 수가 세 개 이상으로 확장되었을 뿐 Wilcoxon test와 동일한 절차로 수행된다.
모든 관측값을 통합하고 순위를 부여하고 각 집단에 대한 순위합 평균을 계산하여 차이가 0인지 검정한다. ANOVA와 동일하게 집단 중 하나의 집단이라도 순위합 평균의 차이가 있다라는 결론이 나오면 귀무가설을 기각하고, 순위합 평균의 차이가 없으면 귀무가설을 채택한다.
paired sample test
Wilcoxon rank sum test
관측값들이 짝을 이루고 있거나 반복적으로 측정된 경우에는 서로 독립이 아니다. 그렇기 때문에 independent sample test를 사용할 수 없다. 모수통계의 경우 paired t test를 사용하고, 표본크기가 작을 때 paired t test를 이용하기 위해서는 표본은 정규분포를 따르는 모집단으로부터 추출되었다는 가정이 필요하다. 또한 모수통계는 이상치에 민감하기 때문에 이상점이 포함되어있지 않다고 가정을 해야한다.
비모수통계에서 쌍을 이루는 데이터를 측정하기 위해서는 independent sample test와 동일하게 Wilcoxon test를 사용한다. wilcoxon test를 위해서는 우선 각 쌍별로 짝을 이룬 값 간의 차이를 계산하고, 그런다음 차이가 0이 아닌 모든 케이스에 대해 절대값 기준으로 순위를 부여한다. 순위가 동일할 경우 위 방법과 동일하게 진행된다.
순위 부여가 끝나면 양의 차이를 갖는 케이스와 음의 차이를 갖는 케이스를 따로 평균 순위를 계산한다.
Fridman Test
동일한 케이스에 대해 반복 측정된 값이 세 개 이상일 경우, 세 개 이상의 집단 간 비교를 하기 위해서는 기존의 Kruskal-Wallis test를 사용할 수 없다. Kruskal-Wallis test는 집단이 독립일 때 사용이 가능하기 때문에 이 경우에는 Fridman Test를 사용해야 한다.
Fridman test를 하기 위해서는 각 케이스별로 순위를 계산하고, 순위를 매긴다. 예를 들어 A, B, C라는 약을 복용했을 때와 평상시 혈압 간 비교를 한다고 하자. 평상시 혈압은 140이고, 약을 복용했을 때의 혈압은 A : 100, B:100, C:120 이라고 하면 평상시 혈압의 순위는 4, A와 B는 1.5(1과 2의 평균), C는 3이 된다. 이와 같은 방식으로 모든 환자에 대해서 각 변수의 순위를 부여한다. 그 후 가설을 검정하게 된다.
permutation test
permutation test는 무작위로 배열한 표본 데이터로부터 귀무가설이 사실이라는 가정하에 표본 분포를 생성한 후 이를 바탕으로 통계적 검정을 수행하는 비모수통계 기법이며, randomization test라고도 불린다. permutation test는 귀무가설이 참이라고 가정하고 문제를 접근하기 때문에 두 집단 사이에 실제로 평균의 차이가 없다면 두 집단 데이터를 어느 곳에 할당하더라도 평균차이가 없을 것이다. permutation test의 절차는 다음과 같다.
1. 일반적인 통계적 검정에서처럼 t-value를 계산한다.
2. 두 집단 가운데 k개를 무작위 선정해 A집단에 할당하고, n-k개는 B집단에 할당한다. 새로 만들어진 집단으로 다시 t-value를 계산한다.
3. k개의 점수를 각각 A, B 집단에 할당하는 가능한 모든 경우의 수에 대해 새로운 t-value를 계산하는 과정을 반복 수행한다. $e.g.$ 데이터 셋이 10개고 각 집단별로 5개의 데이터가 있다고 하면 다음과 같은 조합의 갯수만큼 반복한다. $_{10}\mathrm{C}_{5}$
4. $_{n}\mathrm{C}+{k}$ 개의 t-value를 작은 값에서 큰 값의 순서대로 배열하고, 이렇게 배열된 t-value의 분포는 표본 데이터로부터 직접 생성한 확률분포가 된다. 이를 이론적 분포와 구별하여 경험적 분포라 부른다.
5. 원래 데이터의 t-value를 가지고 검정을 수행한다.
permutation test나 모수통계나 검정하고자 하는 표본 데이터에 대해 모두 동일한 t-value를 계산한다. 하지만 모수통계에서는 이론적 분포 상에서 그 값을 검정하는 것이고, permutation test는 경험적 분포에서 이를 검정하는 것이다. permutation에서는 t-value 뿐만 아니라 어떠한 통계량의 분포도 만들어낼 수 있어서 전통적인 통계 검정 방법으로 확장해 적용할 수 있다.
위에서 분석한 방법은 가능한 값의 모든 경우의 수를 고려해 분포를 만들었고, 이런 분포를 exact distribution이라고 부른다. 하지만 데이터의 표본의 크기가 커지게 되면 가능한 모든 배열을 만들고 계산하는 것은 사실상 불가능하다. 이런 경우 몬테카를로 시뮬레이션(MonteCarlo simulation)을 이용하여 모든 가능한 배열로부터 무작위 표본추출하는 방법을 사용하기도 한다. 이 방법은 approximate test라고 부른다.
permutation test는 모수통계 방법을 적용하기 어려운 데이터에 특히 유용하다. 데이터가 정규분포를 따른다고 가정하기 어렵거나 이상점의 영향이 우려되거나 표본의 크기가 지나치게 작은 경우라면 전통적인 통계기법 대신에 permutation test를 사용하는 것이 좋다.
https://github.com/ceo21ckim/R/tree/main/non-parametric
간략히 구현했습니다.
'Mathematics > Statistics' 카테고리의 다른 글
[Statistics] Factor analysis (0) | 2021.11.23 |
---|---|
[Statistics] non-parametric test with bootstrapping (0) | 2021.11.05 |
[Statistics] Logistic Regression with binomial (0) | 2021.11.05 |
[Statistics] independent of probability variable (0) | 2021.10.19 |
[Statistics] Chi-squared test (0) | 2021.10.17 |