2013年7月11日 星期四

列聯表、卡方檢定 (Contingency table、Chi-Square test) 【二】

實務上,卡方檢定時常用於檢定兩類別變數是否有相關,舉例來說,我們對阿斯匹靈是否能預防心血管疾病有興趣,換句話說探討心血管疾病與阿斯匹靈的相關。

假設檢定如下:
H0:阿斯匹靈與罹患心血管疾病沒有相關
(服用阿斯匹靈與安慰劑罹患心血管疾病的比例相同)
H1:阿斯匹靈與罹患心血管疾病沒相關
(服用阿斯匹靈與安慰劑罹患心血管疾病的比例不同)



Oij Table

行一
行二

列一
O11
O12
R1
列二
O21
O22
R2

C1
C2
S


服用阿斯匹靈
服用安慰劑

得心血管疾病
2
14
16
未得心血管疾病
20
6
26

22
20
42

Eij Table

行一
行二

列一
C1 *R1/ S=E11
C1 *R2/ S=E12

列二
C2 *R1/ S=E21
C2 *R2/ S=E22







服用阿斯匹靈
服用安慰劑

得心血管疾病
16*22/42=8.38
20*16/42=7.62

未得心血管疾病
22*26/42=13.62
20*26/42=12.38






檢定統計量:
χ2t=Σ(Oij-Eij)2/ Eij =16.48
拒絕域:
χ2(r-1)(c-1),α21,0.05=3.84

χ2t>χ21,0.05拒絕H0,沒有顯著效果,p-value也小於0.05

注:為確保機率分布的有效性,Eij Table內每一格的期望數不能小於1,且各格內期望數小於5的格數不能超過20%的總格數。

SAS Codes:
/*將資料讀進SAS*/
data Aspirin;
/*$代表變數為文字  @@為自由符號使不同的觀測值可以放在同一行,如範例*/
   input Aspirin Disease  Count ;
   datalines;
      1 1 2
      0 1 14
      1 0 20
      0 0 6
;
/*印出前5筆資料*/
proc print data=Aspirin  ; run;


/*
加權數(weight)Aspirin*Disease的列聯表
加入chisq語法可以做卡方檢定
*/
proc freq data=Aspirin;
   tables Aspirin*Disease  / out=FreqCount outexpect sparse   chisq ;
   weight Count;
   title 'Contingency table of Aspirin and Disease';
run;

/*也就是上方的Eij Table*/
proc print data=FreqCount noobs;
   title2 'Output Data Set from PROC FREQ';
run;

沒有留言:

張貼留言