大样本量的SAS Fisher测试p值

大样本量的SAS Fisher测试p值,sas,Sas,我正试图计算一些优势比和重要性,这些优势比和重要性可以放在2x2表格中。问题是Sas中的Fisher测试需要很长时间 我已经有手机号码了。如果不是因为样本量非常小,我可以计算卡方检验。但有些细胞非常大,细胞大小有几十万个 当我试着用R来计算这些时,我没有问题。然而,当我尝试在Sas中计算它们时,要么任务太长,要么出错,并显示消息“Fishers精确测试无法以足够的精度计算此样本大小。” 当我创建一个玩具示例时(从数据集中提取一个实例并进行计算),它会进行计算,但需要很长时间。 数据鲍勃; 输入

我正试图计算一些优势比和重要性,这些优势比和重要性可以放在2x2表格中。问题是Sas中的Fisher测试需要很长时间

我已经有手机号码了。如果不是因为样本量非常小,我可以计算卡方检验。但有些细胞非常大,细胞大小有几十万个

当我试着用R来计算这些时,我没有问题。然而,当我尝试在Sas中计算它们时,要么任务太长,要么出错,并显示消息“Fishers精确测试无法以足够的精度计算此样本大小。”

当我创建一个玩具示例时(从数据集中提取一个实例并进行计算),它会进行计算,但需要很长时间。 数据鲍勃; 输入targ$状态$wt; 卡; A c 4083 A d 111 B c 376494 B d 114231 ; 运行

Proc freq data=Bob; 重量; 表targ*状态; 精确费希尔; 跑


这里出了什么问题?

真有趣。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
fisher.test
在2x2情况下不使用模拟;它只是调用超几何分布函数,
dhyper
@Scortchi-hmm是的,我记得实际上是fisher-power测试的实现计算了这个。我对SAS内部发生的事情没有足够的信心,无法真正说出这里发生了什么。您可以明确地请求蒙特卡罗估计,就像
MC
选项中的
exact
语句一样。
> 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 
>