본문 바로가기
의학통계/통계분석

Categorical Data - Chi-sq test & McNemar test

by boogler 2022. 6. 21.
반응형

Categorical Data - Chi-sq test & McNemar test

 

독립인 두 집단의 비율이 동일한지 알고 싶을때 Chi-square Test를 사용하게 되며, Contingency test의 일종으로 보시면 됩니다. 이 때 Chi-square test 와 달리, 두집단이 서로 연관되어 있는 즉, dependent 한 경우는 McNemar test 를 사용할 수 있습니다.


1) Chi-Square Test

EX. 비당뇨/당뇨환자군에서 운동여부(no/yes)의 비율의 차이가 있는지 테스트해보겠습니다.

       ( dm=0(비당뇨), dm=1(당뇨), exercise=0(no 운동), exercise=1(운동) )

       데이터는 아래의 형태로 총 n=2520 으로 테스트 했습니다.

<SAS Code>

 

*Chi-sq test;
proc freq data=test.test_data;
tables dm*exercise/chisq;
run;

 

<SAS Output>

 

Chi-sq Test 는 카이제곱 부분의 p-value=0.439로 당뇨유무에 따른 운동여부의 차이는 유의하지 않다로 결론을 내릴 수 있습니다.

 

▶ 만약, 데이터를 대상자 1건씩이 아닌 Contingency table 형태로 가지고 있을때에는 weight 구문을 추가하면 동일한결과를 얻을 수 있습니다.

 

위의 예제의 Contingency table 을 데이터화 해서 chi-sq test를 해보겠습니다.

 

data count_test;
input dm exercise count;
datalines;
0 0 1456
0 1 786
1 0 174
1 1 104
;
proc freq data=count_test;
tables dm*exercise / chisq nocol norow nopercent expected;
weight count;
run;

Chi-sq test 결과도 p-value=0.439로 동일한 결과를 얻을 수 있습니다.

 

Chi-sq Test 의 사후검정(post-hoc)으로 가장 많이 사용하는 Bonferroni correction 과 Tukey-type adjusted p-value를 구해주는 Macro는 아래 링크를 참고합니다.

 

%Chisq_MC


2) McNemar Test

맥니마 테스트는 아래의 가정을 만족해야 합니다.

- 2X2 의 matched pair 데이터이다.

- 아래 표 기준으로 b+c > 10 이어야 합니다.

    Treatment Y
    (+) (-)
Treatment X (+) a b
(-) c d

Ex. Treatment X or Y 가 결과에 영향을 유의하게 주는지 즉, Treatment X에서 Y로 변경되었을때 유의한 효과의 차이가 있는지 테스트 해보겠습니다.

 

Mc_test 데이터셋의 형태는 아래와 같습니다.

 

<SAS Code>

 

proc freq data=Mc_test;
title "McNemar's test";
tables Treat_X*Treat_Y /agree expected norow nocol nopercent; 
run;

 

* agree statement는 Bowker's test 로 McNemar 테스트 결과로 사용됩니다.

데이터를 Contingency table 형태로 가지고 있을 경우는 Chi-sq test와 동일하게 weight 구문을 이용하면 됩니다.

 

< SAS Output>

 

McNemar 결과

P-value 가 <.0001로 Treatment X 에서 Y 전후로 효과의 차이가 유의하게 있다고 말할 수 있습니다.

 

▶ 그룹 3개 이상의 matched set에 대해서는 Cochran's Q test 를 사용합니다.

댓글