SciPy允许您进行卡方检验和Fisher精确检验。 虽然卡方检验的输出包括预期的数组,但Fisher精确不包括。
e.g:
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什么也没说,我也找不到网上的任何内容。有可能吗? 谢谢!
答案 0 :(得分:1)
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]])