公告

[公告]
2014/01/17
由於已經是faculty的關係,不太有足夠時間寫部落格。因此更新的速度會相當緩慢。再加上近幾年來SAS GLOBAL FORUM沒有出現讓我覺得驚艷的技術文件,所以能分享的文章相對也減少許多。若有人推薦值得分享的SAS技術文件,請利用『問題討論區』告知。

2013/07/19
臉書留言板的功能因為有不明原因故障,因此特此移除。而intensedebate的留言板因管理不易,也一併移除。目前已經開啟內建的 G+ 留言系統,所以請有需要留言的朋友,可直接至『問題討論區』裡面留言。


2014年12月18日 星期四

Generalized McNemar’s Test for Homogeneity of the Marginal Distributions

原文載點:http://www2.sas.com/proceedings/forum2008/382-2008.pdf

在配對分析裡面,McNemar's test一直是主要被拿來使用的統計分析,但這個方法有個先天上的限制是只支援二項資料。一旦資料成為多項資料時,就必須使用Generalized McNemar's test (或稱Stuart-Maxwell test)或者是Bhapkar's test。其中,Bhapkar's test是有被SAS/STAT內的程序所支援,但Generalized McNemar's test則無。Xuezheng Sun和Zhao Yang在2008年發表了一篇技術文件裡面,敘述了如何使用既有的SAS程序來執行Bhapkar's test,並且公佈了一個自製的巨集程式來執行Generalized McNemar's test。

McNemar's test主要分析2X2的列連表,不過一旦列連表擴展為rXr (r>2)的格式,則McNemar's test就不能使用:

以下使用這個列連表當作範例:

資料輸入如下:

執行巨集方法如下:
(a) Generalized McNemar's test

語法如下:
%gMcNemart(dsin = , rowv =, colv = , count = );
。dsin = SAS資料名稱
。rowv = 行變數名
。colv = 列變數名
。count = 個數變數名稱
使用方法如下:
%gMcNemar(dsin = Vision, rowv = r, colv = c, count = count);

輸出報表如下:

其中PROBCHI下面那個數字就是p-value,因此這個例子顯示出p-value =0.0007 < 0.05,可以結論出左眼跟右眼的測量結果並沒有一致性。

這個巨集的原始碼可至原文載點內取得。

(b) Bhapkar's test

這個方法可以在PROC CATMOD程序能完成:

執行後會得到一個很短的輸出報表:

在vis後面那個p-value就是答案。跟用%gMcNemar巨集的結果其實是差不多的。

根據本人使用心得,基本上兩個方法都不錯用,但如果因為樣本稀少導致某些行或列裡面的個數全部都是0的話,則運行結果會有點問題。由於PROC CATMOD已經是編譯後的程式,所以不能去改內部的原始碼,所以必須從%gMcNemar這個巨集程式來著手。我打算有空改寫%gMcNemar來解決這個問題,若投稿到SAS Global Forum有獲得刊登的話再來分享給大家。

CONTACT INFORMATION
Your comments and questions are valued and encouraged. Contact the authors at:
Xuezheng Sun
Department of Epidemiology & Biostatistics,
University of South Carolina
Columbia, SC 29208
803-777-8907
E-mail: sun4@mailbox.sc.edu
Zhao Yang
Premier Research Group plc.
1800 Parkway Place, Suite 820
Marietta, GA 30067, USA
678-279-4848
E-mail: tonyyangsxz@gmail.edu



CODE { display: block; /* fixes a strange ie margin bug */ font-family: Courier New; font-size: 8pt; overflow:auto; background: #f0f0f0 url(http://klcintw.images.googlepages.com/Code_BG.gif) left top repeat-y; border: 1px solid #ccc; padding: 10px 10px 10px 21px; max-height:200px; height:200px; // for IE6 line-height: 1.2em; }