내용
독립성 검정과 변수 간의 연관성
독립성 검정(Test of Independence)
다양한 통계 방법에서의 전제조건이 데이터들의 독립성에 대한 것입니다. R은 범주형 변수의 독립성을 테스트하는 여러 방법을 제공합니다.
세 가지 검정은 카이제곱 독립성 검정, Fisher 정확 검정 및 Cochran-Mantel-Haenszel 검정에 대해 알아봅니다.
chi-square 검정
- chisq.test()
- 두 변수(2-way table)에 대해 독립성 검정을 실시
- 귀무가설: 두 변수는 독립입니다.
library(vcd)
twoTable<-xtabs(~Treatment+Improved, data=Arthritis) q<-chisq.test(twoTable); q
Pearson's Chi-squared test data: twoTable X-squared = 13.055, df = 2, p-value = 0.001463
위 chisq.test() 객체는 다음과 같은 속성을 포함합니다.
attributes(q)
$names [1] "statistic" "parameter" "p.value" "method" "data.name" "observed" [7] "expected" "residuals" "stdres" $class [1] "htest"
속성 중 관찰값을 나타내는 observed와 기대값을 나타내는 expected를 사용하여 통계량을 계산합니다. chisq분석은 각 변수 간의 연관성이 없다고 전제합니다. 그러므로 two-way table의 각 셀의 값은 행합과 열합의 곱을 전체 합으로 나눈 값을 기대할 수 있습니다. 즉, 기대값은 다음과 같이 계산됩니다.
a | b | a+b |
c | d | c+d |
a+c | b+d | a+b+c+d |
위 식에서 R, C,T는 각각 행합, 열합, 전체합을 나타냅니다. R · C는 외적(outer product)와 같습니다.
$$\begin{aligned}\text{outer} &=(r_1, r_2) \otimes (c_1, c_2, c_3)\\&=\begin{bmatrix} r_1\cdot c_1&r_1\cdot c_2&r_1\cdot c_3\\r_2\cdot c_1&r_2\cdot c_2&r_2\cdot c_3\end{bmatrix}\end{aligned}$$위와 같이 magin을 포함한 표를 작성하기 위해 addmargins() 함수를 사용합니다.
qM<-addmargins(twoTable);qM
Improved Treatment None Some Marked Sum Placebo 29 7 7 43 Treated 13 7 21 41 Sum 42 14 28 84
위 결과를 기반으로 각 셀의 기대값을 계산해 봅니다.
r<-qM[1:2,4] c<-qM[3, 1:3] re<-matrix(, 2,3) for (i in 1:length(r)){ for (j in 1:length(c)){ re[i, j]<-r[i]*c[j]/84 } } re
[,1] [,2] [,3] [1,] 21.5 7.166667 14.33333 [2,] 20.5 6.833333 13.66667
outer(rowSums(twoTable), colSums(twoTable))/sum(twoTable)
None Some Marked Placebo 21.5 7.166667 14.33333 Treated 20.5 6.833333 13.66667
위 결과는 q$expected와 같습니다.
q$expected
Improved Treatment None Some Marked Placebo 21.5 7.166667 14.33333 Treated 20.5 6.833333 13.66667
카이제곱 통계량은 관찰값과 기대값의 차이에 기반한 것으로 다음과 같이 계산할 수 있습니다.
$$\chi^2=\sum^n_{i=1}\left(\frac{O_i-E_i}{E_i}\right)$$ 위 식의 O, E는 각각 관찰값과 기대값을 나타냅니다. q가 포함하고 있는 observed와 expected를 사용하여 카이제곱 통게량을 계산해 보면 다음과 같습니다.chVal<-sum((q$observed-q$expected)^2/q$expected); chVal
[1] 13.05502이 카이제곱 통계량에 대응하는 p value는 확률분포함수의 전체 면적에서 그 통계량까지의 면적을 제거한 부분의 면적입니다.
pVal<-1-pchisq(chVal, 2);pVal
[1] 0.001462643
위 결과 유의학률, p <0.01이므로 Treatment와 Improved 두 변수에는 연관성이 있음을 나타냅니다. 반면에 아래 결과 Improved와 Sex 사이에는 p>0.05이므로 이 변수들에는 연관성이 없을 확률이 크다는 것을 의미합니다.
p 값은 비교하는 두 변수가 독립일 경우 즉, 서로 연관성이 없다는 전제하에 데이터들을 생성할 확률을 의미합니다. chi-square 분포는 정규분포를 따르는 확률변수들의 제곱에 의해 나타나는 것으로 p 값이 작다는 것은 정규분포의 꼬리 부분에 해당하는 것으로 작을수록 일반적인 상황에서 일어나는 것이 어렵다는 것을 나타냅니다. 그러므로 이 결과들에 의해 Improved와 Sex 사이에 독립이라는 귀무가설을 기각할 수 없습니다.
twoTable2<-xtabs(~Improved+Sex, data=Arthritis) w<-chisq.test(twoTable2);w
경고메시지(들): chisq.test(twoTable2)에서: 카이제곱 approximation은 정확하지 않을수도 있습니다 Pearson's Chi-squared test data: twoTable2 X-squared = 4.8407, df = 2, p-value = 0.08889
chisq.test()에 의해 생성된 객체의 속성들 중에 'expected'는 이 분석에 의한 기대값을 나타냅니다.
chisq 검정은 tow-way table의 각 성분에 대한 관찰값이나 기대값이 어느 수준이상이어야 하는 조건이 있습니다. 다음과 같이 이 두 변수에서 some-Male에서의 관찰치나 기대값이 5 이하임을 알 수 있습니다. 이것은 카이제곱 검증의 전제를 충족할 수 없기 때문에 이 분석에 대한 경고가 발생합니다.
w$observed
Sex Improved Female Male None 25 17 Some 12 2 Marked 22 6
w$expected
Sex Improved Female Male None 29.500000 12.500000 Some 9.833333 4.166667 Marked 19.666667 8.333333
Fisher's exact test
- fisher.test()
- 두 변수(two-way table)에 대한 독립성 검정
- 귀무가설: 두 변수는 독립입니다.
fisher.test(twoTable)
Fisher's Exact Test for Count Data data: twoTable p-value = 0.001393 alternative hypothesis: two.sided
카이제곱 검정의 결과와 같이 두 변수는 독립이라고 할 수 없습니다. fisher.test()는 검정 방식을 이 함수의 인자 alternative에 "two.sided"(양쪽검정), "greater, less"(한쪽 검정)의 전달로 지정할 수 있습니다. 위 결과는 기본값이 양쪽검정을 사용한 것입니다.
Cochran-Mantel-Haenszel 검정
mantelhaen.test()
함수는 두 개의 명목 변수가 세 번째 변수의 각 계층(levle)에서 조건부 독립이라는 귀무 가설의 Cochran-Mantel-Haenszel 카이제곱 검정을 제공합니다.
다음 코드는 Treatment 및 mproved 변수가 Sex의 각 수준 내에서 독립적이라는 가설을 테스트합니다. 테스트에서는 3방향(Treatment x mproved x Sex) 상호 작용이 없다고 가정합니다.
threeTable<-xtabs(~Treatment+Improved+Sex, data=Arthritis) mantelhaen.test(threeTable)
Cochran-Mantel-Haenszel test data: threeTable Cochran-Mantel-Haenszel M^2 = 14.632, df = 2, p-value = 0.0006647
위 결과는 Sex의 수준에서 Treatment와 Improved는 독립이라고 할 수 없습니다.
연관성의 측정
독립성 검정에서 독립이라는 귀무가설을 기각할 수 있다면 변수간의 연관성 정도를 평가 이어질 수 있습니다. 이러한 측정은 vcd 패키지의 assocstats()
함수는 two-way 테이블에 대한 파이 계수, 분할 계수 및 Cramer의 V를 계산하는 데 사용할 수 있습니다.
assocstats(twoTable)
X^2 df P(> X^2) Likelihood Ratio 13.530 2 0.0011536 Pearson 13.055 2 0.0014626 Phi-Coefficient : NA Contingency Coeff.: 0.367 Cramer's V : 0.394
파이계수
파이계수는 2 변수간의 상관계수를 검정하는 방법으로 2 × 2 데이블 구조에서만 사용할 수 있습니다. 그러므로 위 twoTable에서는 계산되지 않습니다.
예로서 성별(s, 남자:1, 여자:2)과 시험 통과(p, 실패:0, 통과:1)에 대한 다음 표에서 파이계수를 계산해 봅니다.
p | ||||
---|---|---|---|---|
0 | 1 | |||
s | 1 | 2(a) | 3(b) | 5 |
2 | 1(c) | 4(d) | 5 | |
Sum | 3 | 7 | 10 |
- -1.0< φ < -0.7 : 강한 부적 상관
- -0.7< φ < -0.3 : 약한 부적 상관
- -0.3< φ < 0.3 : 상관 관계 거의 없음
- 0.3< φ < 0.7 : 약한 정적 상관
- 0.7< φ < 1.0 : 강한 정적 상관
분할계수(Contigency Coefficiency)
분할 계수 C는 범주형 데이터에 대한 χ2 기반 연관 측정입니다. 그것은 독립성에 대한 χ2 테스트에 의존합니다. 즉, 분할표(이원표, 교차표)의 변수 간에 통계적 관계가 있는지 여부를 평가할 수 있습니다.
다음과 같이 분할계수는 chisq 통계량과 샘플 크기에 의해 계산합니다. $$C=\sqrt{\frac{\chi^2}{n+\chi^2}}$$n은 샘플 크기입니다. 두 변수 사이에 관계가 없는 경우 C=0입니다. 우발 계수 C는 값 >1을 초과할 수 없지만 두 변수가 서로 완벽하게 관련되어 있더라도 우발 계수는 1보다 작을 수 있습니다. 이것은 바람직하지 않으므로 C는 행과 열의 수에 관계없이 테이블에 완전한 연관이 있을 때 최대값 1에 도달하도록 조정됩니다. 따라서 우리는 Cmax를 계산합니다.
$$C_{max}=\sqrt{\frac{k-1}{k}}$$여기서 k는 행 수 또는 열 수 중 작은 값, k=min(rows,columns)입니다. 그런 다음 조정된 우발 계수는 다음과 같이 계산됩니다.
$$C_{adj}=\frac{C^*}{C_{max}}=\sqrt{\frac{k\cdot \chi^2}{(k-1)(n+\chi^2)}}$$twoTable에 대해 분할계수를 계산해보면 다음과 같습니다.
x2<-q$statistic k<-min(nrow(twoTable), ncol(twoTable)) n<-sum(twoTable) contigencyCoef<-function(x2, n){ return(sqrt(x2/(n+x2))) } contigencyCoef(x2, n)
X-squared 0.3667581
Cramer's V
범주형변수에 대한 연관성을 평가하는 것으로 chisq 통계량을 근거로 다음과 같이 계산합니다.
$$v=\sqrt{\frac{\chi^2}{n\cdot \text{min(C-1, R-1)}}}$$n, C, R은 각각 전체합, 열의수, 행의수를 나타냅니다. 이 값은 [0, 1]사이이며 두 변수의 연관성이 없는 경우 0, 완전한 연관성은 1을 나타냅니다.
twoTable에 대해 Cramer's V를 계산해보면 다음과 같습니다.
cramerV<-function(x2, n, r, c){ return(sqrt(x2/(n*min(r-1, c-1)))) } cramerV(x2, n, ncol(twoTable), nrow(twoTable))
X-squared 0.3942295
댓글
댓글 쓰기