【问题标题】:SAS Fisher test p values for large sample sizes大样本量的 SAS Fisher 检验 p 值
【发布时间】:2015-01-30 22:31:53
【问题描述】:

我正在尝试计算一些可能出现在 2x2 表格中的事物的优势比和重要性。问题是 Sas 中的 Fisher 检验需要很长时间。

我已经有了细胞计数。如果不是因为样本量非常小,我可以计算出卡方。然而有些非常大,细胞大小达到数十万。

当我尝试在 R 中计算这些时,我没有问题。但是,当我尝试在 Sas 中计算它们时,它要么任务太长,要么简单地出错,并显示消息“Fisher 精确检验无法以足够的精度计算此样本大小。”

当我创建一个玩具示例(从数据集中提取一个实例并计算它)时,它会计算,但需要很长时间。 Data Bob; Input targ $ status $ wt; Cards; A c 4083 A d 111 B c 376494 B d 114231 ; Run;

过程频率数据 = Bob; 重量重量; 表目标 * 状态; 精确费舍尔; 跑;

这里出了什么问题?

【问题讨论】:

标签: sas


【解决方案1】:

这很有趣。 SAS 以 精确 的方式计算 Fisher 的精确检验 p 值,方法是枚举每个表的超几何概率,其中优势比 至少更大 支持备择假设。我可能有一种方法可以计算有多少表,但知道它足够大以减慢 SAS 的速度就足够了。

R 不这样做。 R 使用 Monte Carlo 方法,该方法在小样本中的效果与在大样本中一样好。

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 卡方检验应该给出大约 非常 相似的结果。

人们声称Fisher 精确检验有两个截然不同的优势:有人说它在小样本量中很好。其他人说,当表格的特定边距中的单元格数量非常少时,这很好。我理解它的方式是,当自举数据集有可能生成具有无限优势比的表格时,Fisher 精确检验是卡方检验的一个很好的替代方案。从视觉上您可以想象对数优势比的正常近似值正在崩溃。

【讨论】:

  • fisher.test 在 2x2 情况下不使用模拟;它只是调用超几何分布函数dhyper
  • @Scortchi 嗯是的,你是对的,我记得实际上是执行费希尔功率测试来计算这一点。我对 SAS 内部发生的事情没有足够的信心来真正说出这里发生的事情。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-04-07
  • 1970-01-01
  • 1970-01-01
  • 2011-11-22
  • 1970-01-01
  • 2017-07-11
  • 1970-01-01
相关资源
最近更新 更多