费舍尔测试超过2组

时间:2013-12-10 16:24:10

标签: r statistics stata

主要编辑: 我决定重写这个问题,因为我的原文很糟糕。我将在下面留下原始问题以保持记录。基本上,我需要对大约4 x 5的表进行Fisher's Test,大约有200次观察。事实证明,这通常是一个重大的计算挑战,正如here解释的那样(我认为,我无法完全遵循它)。当我同时使用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)

您可以将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)

对我而言,至少,它在两个程序上都出错了。所以问题是如何在Stata或R上进行计算?

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

可以用R或Stata完成吗?

编辑:虽然这可以在Stata中完成 - 它不适用于我的数据集,因为我有太多的类别。 Stata经历了无休止的迭代,即使离开一天或更长时间也无法产生解决方案。

我的问题是 - R可以做到这一点吗,它可以快速完成吗?

2 个答案:

答案 0 :(得分:5)

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

  

对于2乘2的情况,p值是直接使用(中心或   非中心)超几何分布。否则,计算是   基于实现的FORTRAN子例程FEXACT的C版本   由Mehta和Patel(1986)开发的网络,并由...改进   克拉克森,范和乔(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

答案 1 :(得分:3)

就Stata而言,您的原始陈述完全不正确。 search fisher快速导致help tabulate twoway

  • exact选项的帮助说明它可能适用于 r x      c 以及2 x 2表

  • Fisher精确测试在同一个地方的第一个例子强调Stata不限于2 x 2表。

您尝试阅读基本文档时,本网站上的任何地方都是最低限度的期望。请!