F-Test in Python

Preet Sanghavi 21 Juni 2023
  1. F-Statistiken und P-Werte
  2. F-Wert in ANOVA
F-Test in Python

In diesem Tutorial geht es um F-Statistiken, F-Verteilung und die Durchführung von F-Tests an Ihren Daten mit Python.

Eine F-Statistik ist eine Zahl, die nach einem ANOVA-Test oder einer Regressionsanalyse erhalten wird, um festzustellen, ob sich die Mittelwerte zweier Populationen wesentlich unterscheiden. Es ist vergleichbar mit einer T-Statistik aus einem T-Test, und die Durchführung eines T-Tests sagt Ihnen, ob eine einzelne Variable statistisch signifikant ist, aber ein F-Test sagt Ihnen, ob eine Reihe von Variablen statistisch signifikant ist.

Was bedeutet statistisch signifikant?

Wenn Sie ein beachtliches Ergebnis haben, ist es wahrscheinlich kein Zufall, dass Sie diese Ergebnisse erhalten haben. Wenn Ihre Testergebnisse statistisch nicht signifikant sind, müssen Sie sie verwerfen, da sie unwirksam sind und Sie die Nullhypothese nicht ablehnen können.

F-Statistiken und P-Werte

Sie müssen die F-Statistik und den p-Wert berücksichtigen, wenn Sie bestimmen, ob Ihre Gesamtergebnisse signifikant sind.

Warum? Ein signifikantes Ergebnis bedeutet nicht unbedingt, dass alle Ihre Variablen ebenfalls signifikant sind. Einfach ausgedrückt beinhaltet die Statistik den Vergleich der kombinierten Wirkung aller Variablen.

F-Wert in ANOVA

Ein ANOVA-Test ist eine Methode der statistischen Analyse, die varianzbasierte Mittelwertunterschiede auswertet, um festzustellen, ob es einen statistisch wichtigen Unterschied zwischen zwei oder mehr kategorialen Gruppen gibt.

ANOVA teilt die unabhängige Variable in zwei oder mehr Gruppen, eine weitere wichtige Komponente. Zum Beispiel könnte vorhergesagt werden, dass sich eine oder mehrere Gruppen auf die abhängige Variable auswirken, während eine andere Gruppe als Kontrollgruppe verwendet werden könnte, ohne dass vorhergesagt wird, dass sie einen Einfluss hat.

In gewisser Weise fungiert der F-Wert in ANOVA wie ein Werkzeug, das bei der Beantwortung der Frage hilft, ob die Varianz zwischen den Mittelwerten zweier Statistiken oder Grundgesamtheiten signifikant unterschiedlich ist. Der P-Wert, also die Wahrscheinlichkeit, ein Ergebnis zu erhalten, das mindestens so extrem ist wie das beobachtete, vorausgesetzt, dass die Nullhypothese wahr ist, wird ebenfalls durch den F-Wert im ANOVA-Test bestimmt.

Die als f-Verhältnis bekannte Prüfgröße kann wie folgt berechnet werden:

$$ F = \frac{Var(X)}{Var(Y)} $$

Um den folgenden Test mit Python durchzuführen, können wir das Modul SciPy in Python verwenden.

SciPy bietet Algorithmen für viele Problemtypen, darunter Optimierung, Integration, Interpolation, Eigenwertproblem, algebraische Gleichungen, Differentialgleichungen, Statistik und viele andere.

Um scipy zu installieren, führen Sie diesen Befehl aus:

pip install scipy

Sie können die folgende Klasse im Modul scipy.stats verwenden. Die Klasse stats in scipy enthält alle notwendigen Funktionen und Klassen, um statistische Operationen durchzuführen.

>>> from scipy.stats import f

Die <span style="color: blue;">scipy.stats.f</span> hat eine CDF-Methode (Cumulative Distribution Function). Unter Verwendung des p-Werts kann für die gegebenen Statistiken berechnet werden.

Daher können Sie bestimmen, ob die NULL-Hypothese für das gegebene Alpha-Niveau abgelehnt oder akzeptiert wird.

Betrachten Sie das folgende Beispiel:

Importieren der Module und Erstellen von Variablen.

from scipy.stats import f
import numpy as np

a = np.array([1, 2, 1, 2, 1, 2, 1, 2, 1, 2])
b = np.array([1, 3, -1, 2, 1, 5, -1, 6, -1, 2])
alpha = 0.05  # you can set to level.

Die Formel zur Berechnung des F-Wertes lautet Var(X)/Var(Y).

# calculating F value.
F = a.var() / b.var()

Da F eine Verteilung ist:

df1 = len(a) - 1
df2 = len(b) - 1

Die Klasse scipy.stats.f enthält die Funktion, mit der wir den p-Wert und die kritischen Werte für die gegebenen Statistiken berechnen können.

# Fetching p-value.
p_value = f.cdf(F, df1, df2)
p_value > alpha

Aus dem obigen Code können wir den mit F-Statistiken berechneten p-Wert erhalten; Wir werden die NULL-Hypothese ablehnen, die besagt, dass die Varianz von a gleich der Varianz von b ist.

Hinweis: Der F-Test reagiert sehr empfindlich auf die Nichtnormalität gegebener Statistiken.

Angenommen, Sie sind sich nicht sicher, ob die bereitgestellten Daten die Normalität widerspiegeln. Eine robustere Alternative zum F-Test ist der Bartlett-Test oder der Levene-Test.

Scipy bietet auch die Möglichkeit, diese Tests durchzuführen.

Bartlett-Test:

>>> from scipy.stats import bartlett
>>> x = [8.88, 9.12, 9.04, 8.98, 9.00, 9.08, 9.01, 8.85, 9.06, 8.99]
>>> y = [8.88, 8.95, 9.29, 9.44, 9.15, 9.58, 8.36, 9.18, 8.67, 9.05]
>>> z = [8.95, 9.12, 8.95, 8.85, 9.03, 8.84, 9.07, 8.98, 8.86, 8.98]
>>> stat, p = bartlett(x, y, z)
>>> p
1.1254782518834628e-05

Der p-Wert ist sehr klein; wir können sagen, dass die gegebene Population nicht die gleiche Varianz hat.

Dies liegt an den Unterschieden in den Varianzen.

>>> [np.var(x, ddof=1) for x in [x, y, z]]
[0.007054444444444413, 0.13073888888888888, 0.008890000000000002]

Levenes Test:

>>> from scipy.stats import levene
>>> x = [8.88, 9.12, 9.04, 8.98, 9.00, 9.08, 9.01, 8.85, 9.06, 8.99]
>>> y = [8.88, 8.95, 9.29, 9.44, 9.15, 9.58, 8.36, 9.18, 8.67, 9.05]
>>> z = [8.95, 9.12, 8.95, 8.85, 9.03, 8.84, 9.07, 8.98, 8.86, 8.98]
>>> stat, p = levene(x, y, z)
>>> p
0.002431505967249681

Der p-Wert ist sehr klein; wir können sagen, dass die gegebene Population nicht die gleiche Varianz hat.

>>> [np.var(x, ddof=1) for x in [x, y, z]]
[0.007054444444444413, 0.13073888888888888, 0.008890000000000002]
Preet Sanghavi avatar Preet Sanghavi avatar

Preet writes his thoughts about programming in a simplified manner to help others learn better. With thorough research, his articles offer descriptive and easy to understand solutions.

LinkedIn GitHub

Verwandter Artikel - Python Statistics