Weiter zum Inhalt

Eine Einführung in T-Tests mit Python

Lerne, wie du t-Tests in Python durchführst. Verstehe die verschiedenen Arten von t-Tests – Ein-Stichproben-Test, Zwei-Stichproben-Test, gepaarter t-Test und Welch-Test – und wann du sie einsetzt.
Aktualisiert 18. Sept. 2026  · 13 Min. lesen

Mit KI erkunden

ChatGPTClaudePerplexity

In der heutigen datenbasierten Welt können sich Unternehmen bei wichtigen Entscheidungen nicht nur auf ihr Bauchgefühl verlassen. Sie brauchen statistische Verfahren wie Hypothesentests, um ihre Maßnahmen mit belastbaren Daten zu untermauern. Ein gängiger Test dafür ist der t-Test, mit dem du die Mittelwerte zweier Gruppen vergleichen und prüfen kannst, ob sie sich statistisch unterscheiden.

\n

Aber wie setzt du den t-Test in der Praxis ein, und wie interpretierst du die Ergebnisse? In diesem Tutorial gehen wir diesen Fragen auf den Grund. Konkret führen wir dich durch ein Beispiel, in dem du den Erfolg eines neuen Features eines Unternehmens bewerten willst. Wir zeigen dir, wie du t-Tests in Python und mit seinen leistungsstarken Bibliotheken anwendest, um die Ergebnisse zu analysieren.

\n

Am Ende dieses Tutorials verstehst du t-Tests sicher und kannst sie selbstbewusst auf deine eigenen Daten anwenden.

\n

In diesem Tutorial schauen wir uns die verschiedenen Arten von t-Tests an – Ein-Stichproben-Test, Zwei-Stichproben-Test, gepaarter t-Test und Welch-Test – sowie ihre Anwendungsfälle und wann du welchen Test verwendest.  

\n

Begriffe erklärt

\n

Bevor wir tiefer in die Details des t-Tests einsteigen, klären wir kurz einige zugehörige Begriffe, die dir helfen, das Konzept dieses statistischen Tests besser zu verstehen.

\n

Hypothesentest

\n

Ein Hypothesentest beginnt mit einer Annahme, der Nullhypothese, und versucht, Belege zu finden, um sie zu verwerfen. Die Nullhypothese steht für den Status quo, die Alternativhypothese für das Gegenteil der Nullhypothese. 

\n

Zum Beispiel können wir mit einem Hypothesentest prüfen, ob ein neues Feature eines Unternehmens bei Kundinnen und Kunden gut ankommt und sich das in einer Erfolgskennzahl widerspiegelt. Sieh dir unseren Kurs zu Hypothesentests an, um mehr zu erfahren.

\n

p-Wert 

\n

Der p-Wert ist die Wahrscheinlichkeit, Ergebnisse zu erhalten, die mindestens so extrem sind wie die beobachteten – unter der Annahme, dass die Nullhypothese wahr ist. Ein kleiner p-Wert zeigt an, dass die Wahrscheinlichkeit für das beobachtete Ergebnis sehr gering ist, falls die Nullhypothese stimmt.

\n

Signifikanzniveau

\n

Das Signifikanzniveau, mit Alpha bezeichnet, ist die Wahrscheinlichkeit, die Nullhypothese abzulehnen, obwohl sie zutrifft. Man spricht auch von einem Fehler 1. Art.

\n

Statistische Signifikanz

\n

Statistische Signifikanz drückt das Vertrauen aus, dass das beobachtete Ergebnis nicht dem Zufall geschuldet ist. Wichtig: Statistische Signifikanz bedeutet nicht automatisch praktische Relevanz – das Ergebnis kann in der Praxis trotzdem geringfügig sein. Außerdem kann Stichprobenfehler zu statistischer Signifikanz führen, wenn die Stichprobe die Grundgesamtheit nicht gut abbildet. 

\n

Voraussetzungen des t-Tests

\n

Die Annahmen hinter einem statistischen Test zu verstehen, ist entscheidend, um korrekte und verlässliche Ergebnisse zu erhalten. Der t-Test macht da keine Ausnahme. Werden Annahmen verletzt, kann das zu irreführenden Schlussfolgerungen führen. Schauen wir uns die vier zentralen Annahmen des t-Tests genauer an:

\n

Unabhängigkeit

\n

Erstens besagt die Unabhängigkeit, dass Beobachtungen nicht durch verborgene Faktoren beeinflusst werden und zeitlich nicht korreliert sind. Um Unabhängigkeit sicherzustellen, lassen sich verschiedene Verfahren für abhängige Daten anwenden, wie von der University of Texas at Austin erläutert.

\n

Identische Verteilung 

\n

Zweitens können Ausreißer oder anomale Datenpunkte den t-Wert verringern und die Varianz erhöhen – das beeinflusst die Wahrscheinlichkeit, die Nullhypothese abzulehnen. Deshalb ist es wichtig, Ausreißer zu identifizieren und die Ursachen zu verstehen, um zu entscheiden, ob es sich um legitime oder fehlerhafte Daten handelt. Hier hilft oft die Einschätzung von Fachexpertinnen und -experten.

\n

Normalverteilung 

\n

Drittens ist der t-Test nur für normalverteilte Daten gültig. Schiefe Verteilungen können dazu führen, dass die Nullhypothese fälschlich verworfen wird. Mit wenigen Datenpunkten ist ein Normalitätstest jedoch schwierig. In solchen Fällen bieten sich nichtparametrische Tests an, die keine Verteilungsannahme treffen, oder eine Daten­transformation als Korrekturmaßnahme hin zur Normalität.

\n

Varianzhomogenität 

\n

Schließlich sollten die beiden verglichenen Grundgesamtheiten gleiche Varianzen aufweisen, damit der klassische t-Test gilt. Das lässt sich zum Beispiel grafisch mit einem Q-Q-Plot prüfen.

\n

Jetzt, da wir die Annahmen besser verstehen, schauen wir uns die verschiedenen t-Test-Varianten anhand eines Python-Beispiels an. Am Ende wirst du in der Lage sein, t-Tests durchzuführen und ihre Ergebnisse sicher zu interpretieren.

\n

Ein-Stichproben-t-Test 

\n

Der Ein-Stichproben-t-Test prüft, ob ein unbekannter Populationsmittelwert (µ) von einem behaupteten Wert abweicht. 

\n

\"t-test

\n

Wobei

\n

x = Stichprobenmittel

\n

𝝁 = Populationsmittel

\n

S = Stichprobenstandardabweichung

\n

n = Stichprobengröße

\n

t = t-Statistik

\n

Verstehen wir das an einem Beispiel: Ein Unternehmen behauptet, Kugellager mit 10 cm Durchmesser zu produzieren (Nullhypothese), und du willst prüfen, ob das stimmt. Du sammelst 21 Kugellager aus verschiedenen Läden in der Stadt und misst ihren Durchmesser. Auf Basis dieser Messungen sollst du entscheiden, ob die Behauptung des Unternehmens falsch ist (Alternativhypothese).

\n

Der Test ist wie folgt aufgesetzt:

\n

Nullhypothese:          H0 : x = 𝝁

\n

Alternativhypothese:  Ha : x ≠ 𝝁 

\n

\"T-test

\n

Um die Unternehmensbehauptung zu widerlegen, musst du statistisch zeigen, dass die Messwerte der Stichprobe vom behaupteten 10-cm-Wert abweichen. Da die Stichprobe 21 Elemente umfasst (kleiner als 30), verwenden wir einen t-Test. Hier beträgt das Stichprobenmittel 11 cm, die Standardabweichung 1 cm.

\n

Beispiel für einen Ein-Stichproben-t-Test in Python

\n

Lernen wir, wie man in Python mit der Funktion scipy.stats.ttest_1samp() einen Ein-Stichproben-t-Test durchführt. 

\n
import numpy as np  \nfrom scipy import stats  \n\n# Population Mean \nmu = 10\n\n# Sample Size\nN1 = 21\n\n# Degrees of freedom  \ndof = N1 - 1\n\n# Generate a random sample with mean = 11 and standard deviation = 1\nx = np.random.randn(N1) + 11\n\n# Using the Stats library, compute t-statistic and p-value\nt_stat, p_val = stats.ttest_1samp(a=x, popmean = mu)\nprint(\"t-statistic = \" + str(t_stat))  \nprint(\"p-value = \" + str(p_val)) \n
\n
t-statistic = 4.689539773390642\np-value = 0.0001407967502139183
\n

Interpretation der Testergebnisse

\n

Die t-Statistik beträgt 4,69 und liegt damit weit vom Mittelwert null einer t-Verteilung entfernt. Um diesen extremen Wert zu quantifizieren, betrachten wir den p-Wert (siehe Begriffserklärung oben). Der p-Wert ist kleiner als das übliche Signifikanzniveau von 0,05. Das bedeutet, dass die Wahrscheinlichkeit für ein derart extremes Ergebnis nahezu null ist und die Nullhypothese verworfen werden kann.

\n

Wichtig: Das Signifikanzniveau wird zu Beginn des Experiments festgelegt.

\n

Eine alternative Herangehensweise

\n

Führen wir den Ein-Stichproben-t-Test ohne die Funktion ttest_1samp() durch. Die t-Statistik ergibt sich hier aus der Differenz zwischen Stichproben- und Populationsmittel, geteilt durch den Standardfehler – wie zuvor erläutert. 

\n
    \n
  • Berechne zuerst das Stichprobenmittel (x_bar).
  • \n
  • Berechne dann die Stichprobenstandardabweichung mit einem Freiheitsgrad von 1 (sie steht für die Standardabweichung der Stichprobe).
  • \n
  • Bestimme den Standardfehler, indem du die Standardabweichung durch die Wurzel der Stichprobengröße teilst.
  • \n
  • Verwende die Formel für die Ein-Stichproben-t-Statistik wie oben erklärt.
  • \n
  • Berechne den p-Wert, um die Signifikanz der t-Statistik zu beurteilen.
  • \n
\n
# Sample Mean\nx_bar = x.mean()\n\n# Standard Deviation  \nstd = np.std(x, ddof=1)\n\n# Standard Error\nste = std/np.sqrt(N1)\n\n# Calculating the T-Statistics  \nt_stat = (x_bar - mu) / ste\n\n# p-value of the t-statistic\np_val = 2*(1 - stats.t.cdf(abs(t_stat), df = dof))\nprint(\"t-statistic = \" + str(t_stat))  \nprint(\"p-value = \" + str(p_val)) 
\n
t-statistic = 4.689539773390642\np-value = 0.0001407967502139183
\n

Zwei-Stichproben-t-Test in Python durchführen

\n

Erweitern wir das Beispiel: Das Unternehmen eröffnet eine zweite Fabrik für identische Kugellager. Wir wollen herausfinden, ob sich die Kugellager aus beiden Fabriken in der Größe unterscheiden. Für dieses Szenario nutzen wir den Zwei-Stichproben-t-Test. Die t-Statistik ist wie folgt definiert. 

\n

\"Two

\n

Wobei

\n

X1= erstes Stichprobenmittel

\n

X2 = zweites Stichprobenmittel

\n

S1 = Standardabweichung der ersten Stichprobe

\n

S2 = Standardabweichung der zweiten Stichprobe

\n

N1 = Größe der ersten Stichprobe

\n

N2 = Größe der zweiten Stichprobe

\n

Beispiel für einen Zwei-Stichproben-t-Test in Python

\n

Nehmen wir an, die erste Fabrik liefert 21 Proben mit einem mittleren Durchmesser von 10,5 cm. Die zweite Fabrik liefert 25 Proben mit einem mittleren Durchmesser von 9,5 cm. Beide Stichproben haben eine Standardabweichung von 1 cm. 

\n
# Sample Sizes\nN1, N2 = 21, 25\n\n# Degrees of freedom  \ndof = min(N1,N2) - 1\n\n# Gaussian distributed data with mean = 10.5 and var = 1  \nx = np.random.randn(N1) + 10.5\n\n# Gaussian distributed data with mean = 9.5 and var = 1  \ny = np.random.randn(N2) + 9.5\n\n## Using the internal function from SciPy Package  \nt_stat, p_val = stats.ttest_ind(x, y)  \nprint(\"t-statistic = \" + str(t_stat))  \nprint(\"p-value = \" + str(p_val))
\n
t-statistic = 3.18913308431476\np-value = 0.0026296199823557754
\n

Interpretation der Testergebnisse

\n

Da der p-Wert von 0,0026 kleiner als das Signifikanzniveau von 0,05 ist, verwerfen wir die Nullhypothese und schließen, dass sich die Kugellager aus den beiden Fabriken unterscheiden.

\n

Gepaarter t-Test in Python durchführen

\n

Nach diesen Ergebnissen verbessert das Unternehmen seine Fertigungstechnologie mit einer neuen Gießmaschine. In einer Pilotphase in einer der Fabriken wird getestet, ob sich der Durchmesser der Kugellager ändert – dazu werden zwei Stichproben mit je 25 Lagern verglichen: eine vor der Einführung der Maschine und eine danach. 

\n

Die mittleren Durchmesser betragen 10,5 cm bzw. 9,9 cm. 

\n

Beispiel für einen gepaarten t-Test in Python

\n

Führen wir einen gepaarten t-Test durch, um zu prüfen, ob die Änderung statistisch signifikant ist.

\n
# Sample Sizes\nN = 25\n\n# Degrees of freedom  \ndof = N - 1\n\n# Gaussian distributed data with mean = 10.5 and var = 1  \nx = np.random.randn(N) + 10.5\n\n# Gaussian distributed data with mean = 9.9 and var = 1  \ny = np.random.randn(N) + 9.9\n\n`t_stat, p_val = stats.ttest_rel(x,y)\nprint(\"t-statistic = \" + str(t_stat))  \nprint(\"p-value = \" + str(p_val))
\n
t-statistic = 3.446152658909739\np-value = 0.0021043953630465787
\n

Interpretation der Testergebnisse

\n

Der niedrige p-Wert führt zur Verwerfung der Nullhypothese – es gibt also eine Veränderung des Durchmessers der Kugellager nach Einführung der neuen Gießmaschine. 

\n

Besonderheiten des gepaarten t-Tests

\n

Die Annahmen des gepaarten t-Tests beziehen sich auf die Differenzen der Paare, nicht auf die ursprünglichen Beobachtungen. Achte daher darauf, dass die Differenzen symmetrisch verteilt sind und keine Ausreißer enthalten. 

\n

Welch-Test in Python durchführen

\n

Nach der erfolgreichen Pilotphase mit der neuen Gießmaschine will das Unternehmen in der zweiten Fabrik eine neue Schleifmaschine testen. Diese liefert sehr präzise Kugellager, reagiert aber empfindlich auf Temperatur und Spannungsschwankungen. Das Unternehmen möchte prüfen, ob sich die Lager aus beiden Fabriken unterscheiden, und vergleicht dazu 21 Proben aus der ersten und 25 aus der zweiten Fabrik. 

\n

Beispiel für den Welch-Test in Python

\n

Der mittlere Durchmesser aus der ersten Fabrik beträgt 9,9 cm bei einer Standardabweichung von 1 cm, aus der zweiten 10 cm bei einer Standardabweichung von 3 cm.  Da die Standardabweichungen unterschiedlich sind, verwenden wir den Welch-Test.

\n
# Sample Sizes\nN1, N2 = 21, 25\n\n# Degrees of freedom  \ndof = min(N1,N2) - 1\n\n# Gaussian distributed data with mean = 9.9 and var = 1  \nx = np.random.randn(N1) + 9.9\n\n# Gaussian distributed data with mean = 10 and var = 3\ny = 3*np.random.randn(N2) + 10\n\n## Using SciPy Package  \nt_stat, p_val = stats.ttest_ind(x, y, equal_var = False) \nprint(\"t-statistic = \" + str(t_stat))  \nprint(\"p-value = \" + str(p_val))
\n
t-statistic = 1.3828843424092643\np-value = 0.17753505304053804
\n

Interpretation der Testergebnisse

\n

Der beobachtete p-Wert ist größer als das Signifikanzniveau von 0,05. Wir verwerfen die Nullhypothese daher nicht und schließen, dass sich die Lager aus beiden Fabriken nicht unterscheiden. Aufgrund der hohen Standardabweichung in der zweiten Stichprobe ist das Ergebnis jedoch unsicher; es sollten mehr Daten erhoben werden, um den Test mit höherer Aussagekraft fortzusetzen. 

\n

Besonderheiten des Welch-Tests 

\n

Im Unterschied zu anderen t-Tests ist der Welch-Test für ungleiche Populationsvarianzen geeignet.

\n

Fazit

\n

Daten können die wahren Einflussfaktoren auf Geschäftsentscheidungen nur dann sichtbar machen, wenn man die richtigen Fragen stellt und sauber prüft. Dafür braucht es ein solides Verständnis verschiedener statistischer Tests – und wann man welchen einsetzt. Dieses Tutorial konzentriert sich auf t-Tests und erklärt ihre Annahmen wie unabhängige, identisch verteilte Beobachtungen und Normalverteilung. 

\n

Neben einer kurzen Einführung in Hypothesentests bekommst du einen umfassenden Überblick über die verschiedenen t-Test-Varianten anhand eines Beispiels. Probiere t-Tests in Python selbst aus und entscheide, welcher Test die statistische Signifikanz deines Experiments am besten bewertet.    

\n

Referenzen und Empfehlungen

\n
Themen
Python
Datenanalyse