f_oneway#
- scipy.stats.f_oneway(*samples, axis=0, equal_var=True, nan_policy='propagate', keepdims=False)[Quelle]#
Führt eine eindimensionale ANOVA durch.
Die eindimensionale ANOVA testet die Nullhypothese, dass zwei oder mehr Gruppen den gleichen Populationsmittelwert aufweisen. Der Test wird auf Stichproben aus zwei oder mehr Gruppen angewendet, möglicherweise mit unterschiedlichen Größen.
- Parameter:
- stichprobe1, stichprobe2, …array_like
Die Stichprobenmessungen für jede Gruppe. Es müssen mindestens zwei Argumente vorhanden sein. Wenn die Arrays mehrdimensional sind, müssen alle Dimensionen des Arrays gleich sein, mit Ausnahme von axis.
- axisint oder None, Standard: 0
Wenn es sich um eine ganze Zahl handelt, ist dies die Achse des Eingabearrays, entlang der die Statistik berechnet wird. Die Statistik jedes Achsen-Slices (z. B. Zeile) der Eingabe erscheint dann in einem entsprechenden Element der Ausgabe. Wenn
None, wird die Eingabe vor der Berechnung der Statistik geglättet.- equal_var: bool, optional
Wenn True (Standard), wird ein Standard-Eindimensionale-ANOVA-Test durchgeführt, der gleiche Populationsvarianzen annimmt [2]. Wenn False, wird der Welch-ANOVA-Test durchgeführt, der keine gleichen Populationsvarianzen annimmt [4].
Hinzugefügt in Version 1.15.0.
- nan_policy{‘propagate’, ‘omit’, ‘raise’}
Definiert, wie Eingabe-NaNs behandelt werden.
propagate: Wenn ein NaN in der Achsen-Slice (z. B. Zeile) vorhanden ist, entlang der die Statistik berechnet wird, wird der entsprechende Eintrag der Ausgabe NaN sein.omit: NaNs werden bei der Berechnung weggelassen. Wenn im Achsen-Slice, entlang dem die Statistik berechnet wird, nicht genügend Daten verbleiben, wird der entsprechende Eintrag der Ausgabe NaN sein.raise: Wenn ein NaN vorhanden ist, wird einValueErrorausgelöst.
- keepdimsbool, Standard: False
Wenn dies auf True gesetzt ist, bleiben die reduzierten Achsen im Ergebnis als Dimensionen mit der Größe eins erhalten. Mit dieser Option wird das Ergebnis korrekt gegen das Eingabearray gestreut (broadcasted).
- Rückgabe:
- statisticfloat
Die berechnete F-Statistik des Tests.
- pvaluefloat
Der zugehörige p-Wert aus der F-Verteilung.
- Warnungen:
ConstantInputWarningWird ausgelöst, wenn alle Werte innerhalb jedes der Eingangs-Arrays identisch sind. In diesem Fall ist die F-Statistik entweder unendlich oder nicht definiert, sodass
np.infodernp.nanzurückgegeben wird.- RuntimeWarning
Wird ausgelöst, wenn die Länge eines Eingangs-Arrays 0 ist oder wenn alle Eingangs-Arrays die Länge 1 haben. In diesen Fällen wird
np.nanfür die F-Statistik und den p-Wert zurückgegeben.
Hinweise
Der ANOVA-Test hat wichtige Annahmen, die erfüllt sein müssen, damit der zugehörige p-Wert gültig ist.
Die Stichproben sind unabhängig.
Jede Stichprobe stammt aus einer normalverteilten Population.
Die Standardabweichungen der Populationen der Gruppen sind alle gleich. Diese Eigenschaft ist als Homoskedastizität bekannt.
Wenn diese Annahmen für einen gegebenen Datensatz nicht zutreffen, ist es möglicherweise trotzdem möglich, den Kruskal-Wallis-H-Test (
scipy.stats.kruskal) oder den Alexander-Govern-Test (scipy.stats.alexandergovern) zu verwenden, wenn auch mit einem gewissen Verlust an Aussagekraft.Die Länge jeder Gruppe muss mindestens eins betragen, und es muss mindestens eine Gruppe mit einer Länge größer als eins geben. Wenn diese Bedingungen nicht erfüllt sind, wird eine Warnung ausgegeben und (
np.nan,np.nan) zurückgegeben.Wenn alle Werte in jeder Gruppe identisch sind und mindestens zwei Gruppen mit unterschiedlichen Werten vorhanden sind, gibt die Funktion eine Warnung aus und gibt (
np.inf, 0) zurück.Wenn alle Werte in allen Gruppen gleich sind, gibt die Funktion eine Warnung aus und gibt (
np.nan,np.nan) zurück.Der Algorithmus stammt von Heiman [2], S. 394-7.
Seit SciPy 1.9 werden
np.matrix-Eingaben (für neuen Code nicht empfohlen) vor der Berechnung innp.ndarraykonvertiert. In diesem Fall ist die Ausgabe eine Skalar- odernp.ndarraymit geeigneter Form anstelle eines 2D-np.matrix. Ebenso werden, während maskierte Elemente von Masked Arrays ignoriert werden, die Ausgabe eine Skalar- odernp.ndarrayanstelle eines Masked Arrays mitmask=Falsesein.Referenzen
[1]R. Lowry, „Concepts and Applications of Inferential Statistics“, Kapitel 14, 2014, http://vassarstats.net/textbook/
[2] (1,2)G.W. Heiman, „Understanding research methods and statistics: An integrated introduction for psychology“, Houghton, Mifflin and Company, 2001.
[3]G.H. McDonald, „Handbook of Biological Statistics“, One-way ANOVA. http://www.biostathandbook.com/onewayanova.html
[4]B. L. Welch, „On the Comparison of Several Mean Values: An Alternative Approach“, Biometrika, Bd. 38, Nr. 3/4, S. 330-336, 1951, doi: 10.2307/2332579.
Beispiele
>>> import numpy as np >>> from scipy.stats import f_oneway
Hier sind einige Daten [3] zur Messung einer Muschel (die Länge der vorderen Adduktormuskelnarbe, normiert durch die Länge) bei der Muschel Mytilus trossulus aus fünf Orten: Tillamook, Oregon; Newport, Oregon; Petersburg, Alaska; Magadan, Russland; und Tvarminne, Finnland, entnommen aus einem viel größeren Datensatz, der in McDonald et al. (1991) verwendet wurde.
>>> tillamook = [0.0571, 0.0813, 0.0831, 0.0976, 0.0817, 0.0859, 0.0735, ... 0.0659, 0.0923, 0.0836] >>> newport = [0.0873, 0.0662, 0.0672, 0.0819, 0.0749, 0.0649, 0.0835, ... 0.0725] >>> petersburg = [0.0974, 0.1352, 0.0817, 0.1016, 0.0968, 0.1064, 0.105] >>> magadan = [0.1033, 0.0915, 0.0781, 0.0685, 0.0677, 0.0697, 0.0764, ... 0.0689] >>> tvarminne = [0.0703, 0.1026, 0.0956, 0.0973, 0.1039, 0.1045] >>> f_oneway(tillamook, newport, petersburg, magadan, tvarminne) F_onewayResult(statistic=7.121019471642447, pvalue=0.0002812242314534544)
f_onewayakzeptiert mehrdimensionale Eingangs-Arrays. Wenn die Eingänge mehrdimensional sind und axis nicht angegeben ist, wird der Test entlang der ersten Achse der Eingangs-Arrays durchgeführt. Für die folgenden Daten wird der Test dreimal durchgeführt, einmal für jede Spalte.>>> a = np.array([[9.87, 9.03, 6.81], ... [7.18, 8.35, 7.00], ... [8.39, 7.58, 7.68], ... [7.45, 6.33, 9.35], ... [6.41, 7.10, 9.33], ... [8.00, 8.24, 8.44]]) >>> b = np.array([[6.35, 7.30, 7.16], ... [6.65, 6.68, 7.63], ... [5.72, 7.73, 6.72], ... [7.01, 9.19, 7.41], ... [7.75, 7.87, 8.30], ... [6.90, 7.97, 6.97]]) >>> c = np.array([[3.31, 8.77, 1.01], ... [8.25, 3.24, 3.62], ... [6.32, 8.81, 5.19], ... [7.48, 8.83, 8.91], ... [8.59, 6.01, 6.07], ... [3.07, 9.72, 7.48]]) >>> F = f_oneway(a, b, c) >>> F.statistic array([1.75676344, 0.03701228, 3.76439349]) >>> F.pvalue array([0.20630784, 0.96375203, 0.04733157])
Die Welch-ANOVA wird durchgeführt, wenn equal_var False ist.