我试图计算一些优势比和重要性,这可能是一个2x2表。问题是Sas的Fisher测试需要很长时间。
我已经有细胞计数了。我可以计算一个卡方,如果不是因为样本大小的完成非常小。然而有些非常大,细胞大小达数十万。
当我尝试在R中计算这些时,我没有问题。但是,当我尝试在Sas中计算它们时,它的任务方式太长,只是错误输出消息" Fishers精确测试无法以足够的精度计算此样本大小。"
当我创建一个玩具示例(从数据集中拉出一个实例并计算它)时,它会计算,但需要很长时间。
Data Bob;
Input targ $ status $ wt;
Cards;
A c 4083
A d 111
B c 376494
B d 114231
;
Run;
Proc freq data = Bob;
Weight wt;
Tables targ*status;
Exact Fisher;
Run;
这里出了什么问题?
答案 0 :(得分:2)
这很有趣。 SAS通过计算每个表的超几何概率计算Fisher精确测试p值精确方式,其中优势比至少大或更大的赞成替代假设。我可能有一种方法可以计算出有多少个表,但是知道它足以让SAS减速就足够了。
R不这样做。 R使用蒙特卡罗方法,在小样本量和大样本量下一样好。
tab <- matrix(c(4083, 111, 376494, 114231), 2, 2)
pc <- proc.time()
fisher.test(tab)
proc.time()-pc
给我们
> tab <- matrix(c(4083, 111, 376494, 114231), 2, 2)
> pc <- proc.time()
> fisher.test(tab)
Fisher's Exact Test for Count Data
data: tab
p-value < 2.2e-16
alternative hypothesis: true odds ratio is not equal to 1
95 percent confidence interval:
9.240311 13.606906
sample estimates:
odds ratio
11.16046
> proc.time()-pc
user system elapsed
0.08 0.00 0.08
>
几分之一秒。
也就是说,聪明的统计学家会在你这样的表中意识到,对数比值比的正常近似值是相当好的,因此Pearson卡方检验应该给出 very 类似的结果。
人们声称Fisher精确测试有两个非常不同的优点:有人说它在小样本中很好。其他人说,当细胞计数在表格的特定边缘非常小时,它是好的。我开始理解它的方式是,当引导数据集有可能生成具有无限比值比的表时,Fisher的精确测试是Chi Square测试的一个很好的替代方案。从视觉上你可以想象,对数比值比的正常近似值正在下降。