chi2_contingency#
- scipy.stats.chi2_contingency(observed, correction=True, lambda_=None, *, method=None)[Quelle]#
Chi-Quadrat-Test auf Unabhängigkeit von Variablen in einer Kontingenztafel.
Diese Funktion berechnet die Chi-Quadrat-Statistik und den p-Wert für den Hypothesentest auf Unabhängigkeit der beobachteten Häufigkeiten in der Kontingenztafel [1] observed. Die erwarteten Häufigkeiten werden basierend auf den Randsummen unter der Annahme der Unabhängigkeit berechnet; siehe
scipy.stats.contingency.expected_freq. Die Anzahl der Freiheitsgrade ist (ausgedrückt mit NumPy-Funktionen und -Attributen)dof = observed.size - sum(observed.shape) + observed.ndim - 1
- Parameter:
- observedarray_like
Die Kontingenztafel. Die Tabelle enthält die beobachteten Häufigkeiten (d. h. die Anzahl der Vorkommen) in jeder Kategorie. Im zweidimensionalen Fall wird die Tabelle oft als „R x C-Tabelle“ bezeichnet.
- correctionbool, optional
Wenn True, *und* die Freiheitsgrade 1 sind, wird die Yates-Korrektur für Stetigkeit angewendet. Die Korrektur bewirkt, dass jeder beobachtete Wert um 0,5 in Richtung des entsprechenden erwarteten Wertes angepasst wird.
- lambda_float oder str, optional
Standardmäßig ist die in diesem Test berechnete Statistik die Chi-Quadrat-Statistik nach Pearson [2]. lambda_ ermöglicht die Verwendung einer Statistik aus der Cressie-Read-Familie von Potenzdivergenzen [3] anstelle dessen. Einzelheiten finden Sie unter
scipy.stats.power_divergence.- methodResamplingMethod, optional
Definiert die Methode zur Berechnung des p-Werts. Nur kompatibel mit correction=False, dem Standard- lambda_ und zweidimensionalen Tabellen. Wenn method eine Instanz von
PermutationMethod/MonteCarloMethodist, wird der p-Wert mitscipy.stats.permutation_test/scipy.stats.monte_carlo_testunter Verwendung der bereitgestellten Konfigurationsoptionen und anderer geeigneter Einstellungen berechnet. Andernfalls wird der p-Wert wie in den Hinweisen dokumentiert berechnet. Beachten Sie, dass, wenn method eine Instanz vonMonteCarloMethodist, das Attributrvsunverändert bleiben muss; Monte-Carlo-Stichproben werden immer mit der Methodervsvonscipy.stats.random_tablegezogen.Hinzugefügt in Version 1.15.0.
- Rückgabe:
- resChi2ContingencyResult
Ein Objekt, das Attribute enthält
- statisticfloat
Die Teststatistik.
- pvaluefloat
Der p-Wert des Tests.
- dofint
Die Freiheitsgrade. NaN, wenn method nicht
Noneist.- expected_freqndarray, gleiche Form wie observed
Die erwarteten Häufigkeiten, basierend auf den Randsummen der Tabelle.
Siehe auch
Hinweise
Eine häufig zitierte Richtlinie für die Gültigkeit dieser Berechnung ist, dass der Test nur verwendet werden sollte, wenn die beobachteten und erwarteten Häufigkeiten in jeder Zelle mindestens 5 betragen.
Dies ist ein Test auf die Unabhängigkeit verschiedener Kategorien einer Population. Der Test ist nur sinnvoll, wenn die Dimension von observed zwei oder mehr beträgt. Die Anwendung des Tests auf eine eindimensionale Tabelle führt immer zu expected gleich observed und einer Chi-Quadrat-Statistik gleich 0.
Diese Funktion verarbeitet keine maskierten Arrays, da die Berechnung mit fehlenden Werten nicht sinnvoll ist.
Ähnlich wie
scipy.stats.chisquareberechnet diese Funktion eine Chi-Quadrat-Statistik; die Bequemlichkeit, die diese Funktion bietet, besteht darin, die erwarteten Häufigkeiten und Freiheitsgrade aus der gegebenen Kontingenztafel zu ermitteln. Wenn diese bereits bekannt waren und die Yates-Korrektur nicht erforderlich war, könnte manscipy.stats.chisquareverwenden. Das heißt, wenn man aufruftres = chi2_contingency(obs, correction=False)
dann gilt Folgendes
(res.statistic, res.pvalue) == stats.chisquare(obs.ravel(), f_exp=ex.ravel(), ddof=obs.size - 1 - dof)
Das Argument lambda_ wurde in Version 0.13.0 von SciPy hinzugefügt.
Referenzen
[1]„Kontingenztafel“, https://en.wikipedia.org/wiki/Contingency_table
[2]„Chi-Quadrat-Test nach Pearson“, https://en.wikipedia.org/wiki/Pearson%27s_chi-squared_test
[3]Cressie, N. und Read, T. R. C., „Multinomial Goodness-of-Fit Tests“, J. Royal Stat. Soc. Series B, Vol. 46, No. 3 (1984), pp. 440-464.
Beispiele
Ein zweidimensionales Beispiel (2 x 3)
>>> import numpy as np >>> from scipy.stats import chi2_contingency >>> obs = np.array([[10, 10, 20], [20, 20, 20]]) >>> res = chi2_contingency(obs) >>> res.statistic 2.7777777777777777 >>> res.pvalue 0.24935220877729619 >>> res.dof 2 >>> res.expected_freq array([[ 12., 12., 16.], [ 18., 18., 24.]])
Führen Sie den Test mit dem Log-Likelihood-Verhältnis (d. h. dem „G-Test“) anstelle der Chi-Quadrat-Statistik nach Pearson durch.
>>> res = chi2_contingency(obs, lambda_="log-likelihood") >>> res.statistic 2.7688587616781319 >>> res.pvalue 0.25046668010954165
Ein vierdimensionales Beispiel (2 x 2 x 2 x 2)
>>> obs = np.array( ... [[[[12, 17], ... [11, 16]], ... [[11, 12], ... [15, 16]]], ... [[[23, 15], ... [30, 22]], ... [[14, 17], ... [15, 16]]]]) >>> res = chi2_contingency(obs) >>> res.statistic 8.7584514426741897 >>> res.pvalue 0.64417725029295503
Wenn die Summe der Elemente in einer zweidimensionalen Tabelle klein ist, kann der durch die standardmäßige asymptotische Approximation erzeugte p-Wert ungenau sein. Erwägen Sie, eine
PermutationMethododerMonteCarloMethodals Parameter method mit correction=False zu übergeben.>>> from scipy.stats import PermutationMethod >>> obs = np.asarray([[12, 3], ... [17, 16]]) >>> res = chi2_contingency(obs, correction=False) >>> ref = chi2_contingency(obs, correction=False, method=PermutationMethod()) >>> res.pvalue, ref.pvalue (0.0614122539870913, 0.1074) # may vary
Für ein detaillierteres Beispiel siehe Chi-Quadrat-Test auf Unabhängigkeit von Variablen in einer Kontingenztafel.