Fisher精确检验未给出R中的预期结果

Fisher精确检验未给出R中的预期结果,r,R,我想测试A的计数是否大于B的计数。我试图使用fisher精确检验,但它会根据我如何排列数据给出不同的结果。我不知道问题是来自这个特定的数据集(太多的零)还是来自它们的排列方式 首先,我尝试构建一个列联表(m),正如在互联网上解释的那样 factor counts A B 0 205 226 1 33 29 2 15 18 3 13 8

我想测试A的计数是否大于B的计数。我试图使用fisher精确检验,但它会根据我如何排列数据给出不同的结果。我不知道问题是来自这个特定的数据集(太多的零)还是来自它们的排列方式

首先,我尝试构建一个列联表(m),正如在互联网上解释的那样

       factor
 counts     A       B
      0   205       226
      1    33        29
      2    15        18
      3    13         8
      4     4         2
      5     5         1
      6     3         0
      7     2         0
      9     1         0
      12    2         0
      23    1         0

fisher.test(m, workspace = 200000, hybrid = FALSE,
control = list(), or = 1, 
alternative = "two.sided",
conf.int = TRUE, 
conf.level = 0.95,
simulate.p.value = T, B = 2000)    
#results: data:  m  pvalue = 0.1184    alternative hypothesis: two.sided
这给了我微不足道的差异,这在查看数据和表时是完全出乎意料的。数据集太大太复杂,无法在这里发布或模拟,但我可以将其发送给感兴趣的任何人

但是,如果我创建列联表的矩阵

classes=c(0,1,2,3,4,5,6,7,9,12,23)
A=c(205,33,15,13,4,5,3,2,1,2,1)
B=c(226,29,18,8,2,1,0,0,0,0,0)
m=as.matrix(data.frame(classes,A,B))
fisher.test(m, workspace = 200000, hybrid = FALSE,
control = list(), or = 1, 
alternative = "two.sided",
conf.int = TRUE, 
conf.level = 0.95,
simulate.p.value = T, B = 2000)
#results: data:  m p-value = 0.0004998 alternative hypothesis: two.sided 
哪个程序正确?如果是第一次,那么这么大的差异怎么可能不显著呢


谢谢,第一项很可能是一个R列联表(实际上是一个伪装的矩阵),所以第一个“列”实际上是一组行名。当我用这些行名生成data.frame并强制生成一个矩阵并传递给
fisher.test时,我得到的结果与生成矩阵时相同。。。没有额外列:

m=matrix( cbind(A,B),,2)
rownames(m)=classes

> m
   [,1] [,2]
0   205  226
1    33   29
2    15   18
3    13    8
4     4    2
5     5    1
6     3    0
7     2    0
9     1    0
12    2    0
23    1    0

> as.matrix(d)
     A   B
0  205 226
1   33  29
2   15  18
3   13   8
4    4   2
5    5   1
6    3   0
7    2   0
9    1   0
12   2   0
23   1   0
> fisher.test( as.matrix(d) )

    Fisher's Exact Test for Count Data

data:  as.matrix(d)
p-value = 0.1197
alternative hypothesis: two.sided

> fisher.test(m)

    Fisher's Exact Test for Count Data

data:  m
p-value = 0.1197
alternative hypothesis: two.sided

请与您的教授或CV.com上的同事澄清您对这一问题的统计(错误?)理解。你的p值和我展示的两个p值之间的微小数值差异是因为你坚持一开始的“真实”精确测试。我们两人都怀疑在统计上有显著差异的部分检测能力的丧失是那些带有小数字的分布的长尾。它被fisher.test处理不当。此外,额外的自由度降低了统计能力。通过将其作为两个指数变量进行测试,您将获得更大的威力。。。。但是,这也是一个统计讨论的问题。

第一个示例中没有太大的差异。我不知道你为什么认为这会很重要。例如,查看
m
-
四舍五入(项目表(m,2)*100,1)
-各组中的列百分比没有很大的比例差异。您对
m
的第二次测试完全不同,因为它也在分析第一列
计数。如果您使用第二个示例进行
fisher.test(m[,-1])
,但删除了
counts
列,您将看到您得到了可比的结果。错误的论坛(实际上不是关于R):属于CV。com@BondedDust-两者兼而有之-一个结果重要而另一个结果不重要的原因是对表格的解释(2列+行名),而非fisher.test编写的矩阵(3列)。我想关于R结构的混淆可以通过讨论来解决,但这里真正的错误是使用了错误的测试,并期望它给出“正确的”答案。列联表中的“计数”列在fisher检验中根本没有使用,因此,fisher.test没有正确解释A类中尾巴更长的事实。我最终决定对此进行一次投票,因为从长远来看,这可能有助于暴露“同质性”的缺陷测试。@BondedDust-我同意你所说的一切。我真的不确定“计数”列在这个例子中代表什么,但它可能会对响应的分布产生巨大的影响。如果没有这样的澄清,我就不谈了。非常感谢所有人,特别是BondedDust。你的例子让我完全明白了di的原因不同的结果。这些计数是丰富的数据,它们通常有很多零和低值。事实上,一个群体中的物种在高于零的相似等级上达到一致的高值,这表明我有明显的差异。这意味着当你去野外时,你一致地发现了更多的a型。渔民测试这是比较两个计数数据分布的合适解决方案,这就是我使用它的原因。我希望很明显,我强烈反对“Fisher检验是比较两个计数数据分布的合适解决方案”这一说法有任何普遍性。