本帖最后由 凤鸾 于 2012-1-6 13:45 编辑
在SAS中进行fisher检验的code 如下:
proc freq;
weight count;
table treat * outcome /chisq ; /*用chisq这个选项时,当为2*2表示,会默认输出fisher精确检验的结果,当大于2*2行列表时,不会默认输出精确检验的,需要加上exact这个选项,如:table treat * outcome /exact ;*/
看个实例:
Treatment 有效 无效 Total
---------------------------------------------------------
Test 10 2 12
Control 2 4 6
-----------------------------------------------------------
Total 12 6 18
根据超几何分布,固定边际,nij的概率为:
Pr{nij} =n1+!n2+!n+1!n+2!/[n!n11!n12!n21!n22!]
固定边际,n11,n12,n21,n22的可取值的排练组合如下表,再根据以上公式可以计算出相应的概率值。
我们表四格表的概率为0.0533,
首先我们要理解更极端的情况是概率比四格表的概率更小的情况。
所以右侧(右侧:指的是(1,1)的值大于10)出现更极端的概率为0.0001,0.0039.
左侧(左侧:指的是(1,1)的值小于10)出现更极端的概率为:0.0498.
所以,单侧备则:test 组的疗效更好。p=0.0533+0.0039+0.0001=0.0573.
双侧备则:比我们观测的更极端的情况:p=0.0533+0.0039+0.0001+0.0498=0.1071,
当行(或者列)相近时,双侧的p越等于单侧p的两倍。当行(或者列)相等时,双侧p=单侧p*2.
Table Cell
-----------------------------------------
(1,1) (1,2) (2,1) (2,2) Probabilities
-------------------------------------------
12 0 0 6 0.0001
11 1 1 5 0.0039
----------------------------------------------
10 2 2 4 0.0533
----------------------------------------------
9 3 3 3 0.2370
8 4 4 2 0.4000
7 5 5 1 0.2560
6 6 6 0 0.0498
-------------------------------------------------
data severe;
input treat $ outcome $ count;
datalines;
Test f 10
Test u 2
Control f 2
Control u 4
;
proc freq order=data;
weight count;
tables treat*outcome / chisq nocol;
run;
fisher 的结果如下:
Fisher’s Exact Test
-------------------------------------- -------
Cell (1,1) Frequency (F) 10
Left-sided Pr <= F 0.9961
Right-sided Pr >= F 0.0573
Table Probability (P) 0.0533
Two-sided Pr <= P 0.1070
可以看出单侧,双侧的概率跟我们计算的一样。
还有,值得注意的时,left-side 与right-side的P相加并不等于1,因为多计算了一个0.0533
^_^ 希望对大家有所用。
reference:categorical data analysis using in the sas system.
|