2014-08-31 47 views
0

SciPy允許您進行卡方檢驗和Fisher精確檢驗。 雖然卡方檢驗的輸出包含預期數組,但Fisher精確度不包含。用SciPy的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什麼也沒說,我也找不到任何東西。有可能嗎? 謝謝!

回答

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]]) 
+0

啊,是的,當然。雞蛋全在我的臉上。不要告訴我的大學統計學教授。 :)我的方法是使用Fisher的精確值來查看是否有效果,並使用與期望值的比較來查看方向。非常感謝! – Optimesh 2014-09-01 08:39:42