SAS Fisher 检验大样本量的 p 值

标签 sas

我正在尝试计算一些可以放入 2x2 表中的比值比和显着性。问题是 Sas 中的 Fisher 测试需要很长时间。

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

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

当我创建一个玩具示例(从数据集中提取一个实例并计算它)时,它确实会计算,但需要很长时间。 数据鲍勃; 输入目标$status$wt; 牌; 空调4083 公元111年 公元前 376494 BD 114231 ; 运行;

Proc freq data = Bob; 重量wt; 表 targ*status; 精确的费舍尔; 运行;

这里出了什么问题?

最佳答案

这很有趣。 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 
> 

不到一秒。

也就是说,聪明的统计学家会意识到,在像您这样的表格中,对数优势比的正常近似值相当不错,因此 PIL 逊卡方检验应该给出大约非常 类似的结果。

人们声称费舍尔精确检验有两个截然不同的优点:有人说它在小样本量下效果很好。其他人则表示,当表格特定边缘的单元格计数非常小时,这很好。我的理解是,当引导数据集有可能生成具有无限优势比的表时,费舍尔精确检验是卡方检验的一个很好的替代方案。从视觉上看,您可以想象对数优势比的正常近似值正在崩溃。

关于SAS Fisher 检验大样本量的 p 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28253998/

相关文章:

postgresql - 将 SAS 9.2 与 Amazon Redshift 连接

SAS 如何使用宏变量作为日期

dataset - 在 sas 中定义变量来清理代码

sas - 不带左修剪的数据步骤中从文件输入

linux - 如何使用代码获取 sas.servers 的状态

sas7bdat 变量名中有空格

csv - SAS CSV 导出在每行中都有不需要的前导逗号

SAS 服务器 : How to get machine name of client machine?

sas - 使用数据集变量的文件名语句的正确语法

mysql - 根据SQL中的属性删除重复行