chi2_contingency#
- scipy.stats.contingency.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 Unabhängigkeitstest der beobachteten Häufigkeiten in der Kontingenztabelle [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 wird (ausgedrückt mit Numpy-Funktionen und Attributen) berechnet.dof = observed.size - sum(observed.shape) + observed.ndim - 1
- Parameter:
- observedarray_like
Die Kontingenztabelle. Die Tabelle enthält die beobachteten Häufigkeiten (d.h. 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 sind 1, wird die Yates'sche 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 Pearson'sche Chi-Quadrat-Statistik [2]. lambda_ ermöglicht die Verwendung einer Statistik aus der Cressie-Read-Potenzdivergenz-Familie [3]. Siehe
scipy.stats.power_divergencefür Details.- methodResamplingMethod, optional
Definiert die zur Berechnung des p-Werts verwendete Methode. Kompatibel nur mit correction=False, Standard- lambda_ und zweidimensionalen Tabellen. Wenn method eine Instanz von PermutationMethod/MonteCarloMethod ist, wird der p-Wert mithilfe von
scipy.stats.permutation_test/scipy.stats.monte_carlo_testmit den bereitgestellten Konfigurationsoptionen und anderen geeigneten Einstellungen berechnet. Andernfalls wird der p-Wert wie in den Anmerkungen dokumentiert berechnet. Beachten Sie, dass, wenn method eine Instanz von MonteCarloMethod ist, das Attributrvsnicht spezifiziert werden darf; Monte-Carlo-Stichproben werden immer mithilfe derrvs-Methode vonscipy.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 oft 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 für die Unabhängigkeit verschiedener Kategorien einer Population. Der Test ist nur sinnvoll, wenn die Dimension von observed zwei oder mehr beträgt. Das Anwenden des Tests auf eine eindimensionale Tabelle führt immer dazu, dass expected gleich observed ist und eine Chi-Quadrat-Statistik von 0 ergibt.
Diese Funktion verarbeitet keine Masked Arrays, da die Berechnung mit fehlenden Werten nicht sinnvoll ist.
Ähnlich wie
scipy.stats.chisquareberechnet diese Funktion eine Chi-Quadrat-Statistik; der Vorteil, den diese Funktion bietet, ist die Ermittlung der erwarteten Häufigkeiten und Freiheitsgrade aus der gegebenen Kontingenztabelle. Wenn diese bereits bekannt wären und die Yates'sche Korrektur nicht erforderlich wäre, 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]„Kontingenztabelle“, https://en.wikipedia.org/wiki/Contingency_table
[2]„Pearson’s Chi-Quadrat-Test“, 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 mithilfe des Log-Likelihood-Verhältnisses (d.h. des "G-Tests") anstelle der Pearson'schen Chi-Quadrat-Statistik 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 gering ist, kann der vom Standard-Asymptotik-Approximation produzierte p-Wert ungenau sein. Erwägen Sie die Übergabe einer PermutationMethod oder MonteCarloMethod als Parameter method mit correction=False.
>>> 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-Unabhängigkeitstest von Variablen in einer Kontingenztabelle.