scipy.stats.
chi2_contingency
(observed, correction=True, lambda_=None)¶
Test Chi-quadrato di indipendenza delle variabili in una tabella di contingenza.
Questa funzione calcola la statistica del chi-quadrato e il valore p per il test di ipotesi dell’indipendenza delle frequenze osservate nella tabella delle frequenze osservate. Le frequenze previste sono calcolate in base alle somme marginali nell’ipotesi di indipendenza; vedere scipy.stats.contingency.expected_freq
. Il numero di gradi di libertà è (espresso usando funzioni e attributi numpy):
dof = observed.size - sum(observed.shape) + observed.ndim - 1
Parametri observedarray_like
La tabella di contingenza. La tabella contiene le frequenze osservate (cioè il numero di occorrenze) in ciascuna categoria. Nel bidimensionale, la tabella è spesso descritta come una “tabella R x C”.
correctionbool, opzionale
Se True, e i gradi di libertà sono 1, applica la correzione di Yates per la continuità. L’effetto della correzione è quello di regolare ciascunovalore osservato di 0,5 verso il corrispondente valore atteso.
lambda_float o str, opzionale.
Per impostazione predefinita, la statistica calcolata in questo test è la statistica al quadrato di Pearson. lambda_ consente invece di utilizzare una statistica della famiglia di divergenza di potenza in lettura. Vederepower_divergence
per i dettagli.
Restituisce chi2float
La statistica del test.
pfloat
Il valore p del test
dofint
Gradi di libertà
expectedndarray, stessa forma osservata
Le frequenze previste, in base alle somme marginali della tabella.
Note
Una linea guida spesso citata per la validità di questo calcolo è che il test dovrebbe essere utilizzato solo se le frequenze osservate e attese in ogni cella sono almeno 5.
Questo è un test per l’indipendenza di diverse categorie di apopolazione. Il test è significativo solo quando la dimensione ofobserved è due o più. L’applicazione del test a una tabella unidimensionale comporterà sempre una statistica attesa uguale a quella osservata e achi-quadrata uguale a 0.
Questa funzione non gestisce gli array mascherati, perché il calculationdoes non ha senso con valori mancanti.
Come statistiche.chisquare, questa funzione calcola una statistica chi-quadrato; la convenienza questa funzione fornisce è quello di capire le expectedfrequencies e gradi di libertà dalla tabella di contingenza data.Se questi fossero già noti, e se la correzione di Yates non fosse richiesta, si potrebbero usare le statistiche.chisquare. Cioè, se si chiama:
chi2, p, dof, ex = chi2_contingency(obs, correction=False)
allora è vero quanto segue:
(chi2, p) == stats.chisquare(obs.ravel(), f_exp=ex.ravel(), ddof=obs.size - 1 - dof)
L’argomento lambda_ è stato aggiunto nella versione 0.13.0 di scipione.
1
“Contingency table”,https://en.wikipedia.org/wiki/Contingency_table
2
“Pearson’s chi-squared test”,https://en.wikipedia.org/wiki/Pearson%27s_chi-squared_test
3
Cressie, N. and Read, T. R. C., “Multinomial Goodness-of-FitTests”, J. Royal Stat. Soc. Serie B, Vol. 46, No. 3 (1984), pp. 440-464.
Esempi
Un esempio bidirezionale (2 x 3):
>>> from scipy.stats import chi2_contingency>>> obs = np.array(, ])>>> chi2_contingency(obs)(2.7777777777777777, 0.24935220877729619, 2, array(, ]))
Eseguire il test utilizzando il rapporto di log-verosimiglianza (cioè il “G-test”)invece della statistica del chi quadrato di Pearson.
>>> g, p, dof, expctd = chi2_contingency(obs, lambda_="log-likelihood")>>> g, p(2.7688587616781319, 0.25046668010954165)
Un esempio a quattro vie (2 x 2 x 2 x 2):