嗨scipy统计数据有Fisher精确测试的实现,但它只适用于2乘2的列联表.我想在大于2比2的表格上进行测试.(5x2,5x3)我知道在R中有fisher.test可以完成这项工作,但我想在我的python代码中完成
有人知道Fisher的精确测试的python实现可以在更大的表上工作吗?
此外,我不确定是否可以在大于2比2的表格上进行Fisher精确测试.
谢谢
ben*_*nbo 11
是的,可以在5x2或5x3表上进行Fisher精确测试.
目前在python中没有任何干净,经过广泛测试的解决方案.一种解决方案是使用rpy2并从python调用R函数.
更新:
无需创建R对象,我们可以直接使用numpy数组:
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
Run Code Online (Sandbox Code Playgroud)
另一种解决方案是深入研究R实现使用的C代码并直接调用该代码.这是一个链接到某人的github项目,他们回到原来的fortran实现并从python中调用它.
旧:
import rpy2.robjects as robjects
from rpy2.robjects.packages import importr
stats = importr('stats')
v = robjects.IntVector([4,4,10,4,5,6])
m = robjects.r['matrix'](v,nrow=3)
res = stats.fisher_test(m)
print m
>>> [,1] [,2]
>>> [1,] 4 4
>>> [2,] 4 5
>>> [3,] 10 6
print 'p-value: {}'.format(res[0][0])
>>> p-value: 0.668165917041
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5338 次 |
| 最近记录: |