作者热门文章
- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我注意到如果 p 值极小,SciPy 中的 Fisher 精确检验会返回负 p 值:
>>> import scipy as sp
>>> import scipy.stats
>>> x = [[48,60],[3088,17134]]
>>> sp.stats.fisher_exact(x)
(4.4388601036269426, -1.5673906617053035e-11)
在 R 中,使用相同的 2x2 列联表:
> a = matrix(c(48,60,3088,17134), nrow=2)
> fisher.test(a)
p-value = 6.409e-13
我的问题是 1) 为什么 SciPy 返回负 p 值? 2) 如何使用 SciPy 生成正确的 p 值?
感谢您的帮助。
最佳答案
Fisher 精确检验使用超几何分布。
您使用的 scipy 版本使用了不是很精确的超几何分布的实现。这是 known problem并已在 scipy 存储库中修复。
关于python - 为什么 SciPy 使用 Fisher 精确检验对极小的 p 值返回负 p 值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7504198/
我是一名优秀的程序员,十分优秀!