SciPy允许您执行卡方检验和Fisher精确检验。
虽然卡方检验的输出包括预期的数组,但Fisher精确的不包括。

例如。:

from scipy import stats
import numpy as np
obs = np.array(
    [[1100,6848],
    [11860,75292]])
stats.chi2_contingency(obs)


返回:

(0.31240019935827701,
 0.57621104841277448,
 1L,
 array([[  1083.13438486,   6864.86561514],
        [ 11876.86561514,  75275.13438486]]))


而:

from scipy import stats
oddsratio, pvalue = stats.fisher_exact([[1100,6848],
[11860,75292]])
print pvalue, oddsratio


返回:

0.561533439157 1.01974850672


documentation什么也没说,我也无法在网上找到任何东西。有可能吗?
谢谢!

最佳答案

Fisher的精确测试(http://en.wikipedia.org/wiki/Fisher%27s_exact_test)不涉及计算期望的数组。这就是fisher_exact()不返回一个的原因。

如果需要所需的数组,则该数组与chi2_contingency返回的数组相同。如果要在不调用chi2_contingency的情况下进行计算,则可以使用scipy.stats.contingency.expected_freq。例如:

In [40]: obs
Out[40]:
array([[ 1100,  6848],
       [11860, 75292]])

In [41]: from scipy.stats.contingency import expected_freq

In [42]: expected_freq(obs)
Out[42]:
array([[  1083.13438486,   6864.86561514],
       [ 11876.86561514,  75275.13438486]])

关于python - 通过SciPy的Fisher精确测试获得预期的阵列?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25596639/

10-13 08:37