Fisher测试2组以上

use*_*193 -1 statistics r stata

主要编辑:由于我的原著放置不当,我决定重写这个问题。我将在下面保留原始问题,以保持记录。基本上,我需要在4 x 5的大表上进行费舍尔测试,并进行200个观察。事实证明,这往往是作为解释的一大挑战计算这里(我想,我不能按照它完全)。当我同时使用R和Stata时,我将用一些虚构数据对问题进行框架化。

Stata:

    tabi 1 13 3 27 46 \ 25 0 2 5 3 \ 22 2 0 3 0 \ 19 34 3 8 1 , exact(10)
Run Code Online (Sandbox Code Playgroud)

您可以增加到exact()1000个最大值(但可能需要一天的时间才能返回错误)。

R:

    Job <- matrix(c(1,13,3,27,46, 25,0,2,5,3, 22,2,0,3,0, 19,34,3,8,1), 4, 5,
         dimnames = list(income = c("< 15k", "15-25k", "25-40k", ">40k"),
         satisfaction = c("VeryD", "LittleD", "ModerateS", "VeryS", "exstatic")))
    fisher.test(Job)
Run Code Online (Sandbox Code Playgroud)

至少对我来说,这两个程序都出错。那么问题是如何在Stata或R上进行此计算?

原始问题:我有Stata和R一起玩。我有一个包含各种分类变量的数据集,其中一些具有多个类别。因此,我想用超过2 x 2的类别进行Fisher的精确测试,即将Fisher应用于2 x 6的表或4 x 4的表。

可以使用R或Stata完成此操作吗?

编辑:虽然这可以在Stata中完成-但由于我的类别过多,因此不适用于我的数据集。Stata经过无休止的迭代,甚至搁置一天或更长时间也无法解决。

我的问题确实是-R可以做到吗,并且它可以很快做到吗?

Rol*_*and 5

您是否研究过R函数的文档fisher.test?引用自help("fisher.test")

对于2 x 2的情况,可以使用(中心或非中心)超几何分布直接获得p值。否则,计算将基于FORTRAN子例程FEXACT的C版本,该子例程实现由Mehta和Patel(1986)开发并由Clarkson,Fan和Joe(1993)改进的网络。

这是文档中给出的示例:

Job <- matrix(c(1,2,1,0, 3,3,6,1, 10,10,14,9, 6,7,12,11), 4, 4,
              dimnames = list(income = c("< 15k", "15-25k", "25-40k", "> 40k"),
                              satisfaction = c("VeryD", "LittleD", "ModerateS", "VeryS")))
fisher.test(Job)

# Fisher's Exact Test for Count Data
# 
# data:  Job
# p-value = 0.7827
# alternative hypothesis: two.sided
Run Code Online (Sandbox Code Playgroud)