Hi scipy stats实现了Fisher的精确测试,但它仅适用于2乘2列联表。我想在大于2x2的表格上做测试。(5x2 ,5x3)我知道R中有fisher.test可以完成这项工作,但我想在我的python代码中完成
有人知道可以在更大的表上工作的Fisher精确测试的python实现吗?
此外,我不确定是否可以在大于2x2的表格上进行Fisher的精确测试。
谢谢
发布于 2016-09-16 21:54:04
是的,在大于2x2的表上做Fisher's精确测试是可以的。
目前在python中还没有任何干净的、经过广泛测试的解决方案。一种解决方案是使用rpy2并从python中调用R函数:
import numpy as np
import rpy2.robjects.numpy2ri
from rpy2.robjects.packages import importr
rpy2.robjects.numpy2ri.activate()
stats = importr('stats')
m = np.array([[4,4],[4,5],[10,6]])
res = stats.fisher_test(m)
print 'p-value: {}'.format(res[0][0])
>> p-value: 0.668165917041
另一种解决方案是深入研究R实现使用的C代码,并直接调用该代码。这里有一个到某人的github project的链接,在那里他们回到了最初的fortran实现,并从python中调用了它。
https://stackoverflow.com/questions/25368284
复制相似问题