2013-12-10 11 views
5

Sto tentando di utilizzare scipy.stats.chisquare. Ho costruito un esempio di giocattolo:Il chisquare di Python scipy restituisce valori diversi rispetto a R chisquare

In [1]: import scipy.stats as sps 

In [2]: import numpy as np 

In [3]: sps.chisquare(np.array([38,27,23,17,11,4]), np.array([98, 100, 80, 85,60,23])) 
Out[11]: (240.74951271813072, 5.302429887719704e-50) 

Lo stesso esempio in R rendimenti:

> chisq.test(matrix(c(38,27,23,17,11,4,98,100,80,85,60,23), ncol=2)) 

Pearson's Chi-squared test 

data: matrix(c(38, 27, 23, 17, 11, 4, 98, 100, 80, 85, 60, 23), ncol = 2) 
X-squared = 7.0762, df = 5, p-value = 0.215 

Che cosa sto facendo di sbagliato?

Grazie

risposta

9

Per questo pitone chisq.test chiamata equivalente è chi2_contingency:

Questa funzione calcola la statistica chi-quadrato e p-value per il test ipotesi di indipendenza delle frequenze osservate in the contingency table osservati.

>>> arr = np.array([38,27,23,17,11,4,98,100,80,85,60,23]).reshape(2,-1) 
>>> arr 
array([[ 38, 27, 23, 17, 11, 4], 
     [ 98, 100, 80, 85, 60, 23]]) 
>>> chi2, p, dof, expected = scipy.stats.chi2_contingency(arr) 
>>> chi2, p, dof 
(7.0762165124844367, 0.21503342516989818, 5)