📌 독립성 검정(independence test)
두 범주형 변수가 서로 독립인지 검정
독립이라는 것은 두 변수가 서로 관련이 없다는 것을 의미
귀무가설 : 두 변수는 독립이다.
대립가설 : 두 변수는 독립이 아니다.
- Class : 등급 (1등실, 2등실, 3등실, 선원)
- Sex : 성별
- Age : 나이
- Survived : 생존 여부
> str(Titanic)
'table' num [1:4, 1:2, 1:2, 1:2] 0 0 35 0 0 0 17 0 118 154 ...
- attr(*, "dimnames")=List of 4
..$ Class : chr [1:4] "1st" "2nd" "3rd" "Crew"
..$ Sex : chr [1:2] "Male" "Female"
..$ Age : chr [1:2] "Child" "Adult"
..$ Survived: chr [1:2] "No" "Yes"
> head(Titanic)
, , Age = Child, Survived = No
Sex
Class Male Female
1st 0 0
2nd 0 0
3rd 35 17
Crew 0 0
, , Age = Adult, Survived = No
Sex
Class Male Female
1st 118 4
2nd 154 13
3rd 387 89
Crew 670 3
, , Age = Child, Survived = Yes
Sex
Class Male Female
1st 5 1
2nd 11 13
3rd 13 14
Crew 0 0
, , Age = Adult, Survived = Yes
Sex
Class Male Female
1st 57 140
2nd 14 80
3rd 75 76
Crew 192 20
다차원 테이블
> Titanic.margin <- margin.table(Titanic, c(4, 1))
> Titanic.margin
Class
Survived 1st 2nd 3rd Crew
No 122 167 528 673
Yes 203 118 178 212
열의 비율의 합이 100%가 되도록 만들어준다.
> addmargins(Titanic.margin)
Class
Survived 1st 2nd 3rd Crew Sum
No 122 167 528 673 1490
Yes 203 118 178 212 711
Sum 325 285 706 885 2201
> prop.table(addmargins(Titanic.margin, 2), 2)
Class
Survived 1st 2nd 3rd Crew Sum
No 0.3753846 0.5859649 0.7478754 0.7604520 0.6769650
Yes 0.6246154 0.4140351 0.2521246 0.2395480 0.3230350
> # 열의 합이 100% 라는 것을 보여줌
> addmargins(prop.table(addmargins(Titanic.margin, 2), 2), 1)
Class
Survived 1st 2nd 3rd Crew Sum
No 0.3753846 0.5859649 0.7478754 0.7604520 0.6769650
Yes 0.6246154 0.4140351 0.2521246 0.2395480 0.3230350
Sum 1.0000000 1.0000000 1.0000000 1.0000000 1.0000000
승객 구분에 따라 생존율에 차이가 있는지 검정해보자.
> chisq.test(Titanic.margin)
Pearson's Chi-squared test
data: Titanic.margin
X-squared = 190.4, df = 3, p-value < 2.2e-16
귀무가설을 기각한다. 승객 구분에 따라 생존율에 차이가 있다.
만약 귀무가설을 기각하게 된다면 이들 간의 관련성을 평가할 수 있다.
> library(vcd)
> assocstats(Titanic.margin)
X^2 df P(> X^2)
Likelihood Ratio 180.9 3 0
Pearson 190.4 3 0
Phi-Coefficient : NA
Contingency Coeff.: 0.282
Cramer's V : 0.294
📊 모자이크 도표
shade=TRUE : 귀무가설을 기각하는 데에 있어서 누가 더 큰 기여를 하는 지 색상으로 구분해볼 수 있다.
> mosaic(Titanic.margin, shade=TRUE)
빨간색, 파란색 셀은 귀무가설을 기각하는데 크게 기여한다.
DataFrame
- Sex : 성별
- Fold : 팔짱을 꼈을 때 어느 손이 위에 위치하는지
> str(survey)
'data.frame': 237 obs. of 12 variables:
$ Sex : Factor w/ 2 levels "Female","Male": 1 2 2 2 2 1 2 1 2 2 ...
$ Wr.Hnd: num 18.5 19.5 18 18.8 20 18 17.7 17 20 18.5 ...
$ NW.Hnd: num 18 20.5 13.3 18.9 20 17.7 17.7 17.3 19.5 18.5 ...
$ W.Hnd : Factor w/ 2 levels "Left","Right": 2 1 2 2 2 2 2 2 2 2 ...
$ Fold : Factor w/ 3 levels "L on R","Neither",..: 3 3 1 3 2 1 1 3 3 3 ...
$ Pulse : int 92 104 87 NA 35 64 83 74 72 90 ...
$ Clap : Factor w/ 3 levels "Left","Neither",..: 1 1 2 2 3 3 3 3 3 3 ...
$ Exer : Factor w/ 3 levels "Freq","None",..: 3 2 2 2 3 3 1 1 3 3 ...
$ Smoke : Factor w/ 4 levels "Heavy","Never",..: 2 4 3 2 2 2 2 2 2 2 ...
$ Height: num 173 178 NA 160 165 ...
$ M.I : Factor w/ 2 levels "Imperial","Metric": 2 1 NA 2 2 1 1 2 2 2 ...
$ Age : num 18.2 17.6 16.9 20.3 23.7 ...
두 변수를 이용해 성별에 따라 팔짱을 꼈을 때 손 위치에 차이가 있는지 검정한다.
> chisq.test(survey$Fold, survey$Sex)
Pearson's Chi-squared test
data: survey$Fold and survey$Sex
X-squared = 2.5741, df = 2, p-value = 0.2761
귀무가설을 기각하지 못 한다. 손 위치와 성별 간에 관련성이 없다.