Wie führt man einen t-Test in R durch?
In diesem Beitrag
Was der t-Test testet – kurz und klar
In R führen Sie einen t-Test mit der Funktion t.test() durch – sie ist Teil der Basisinstallation und steht ohne zusätzliche Pakete sofort zur Verfügung. Die Funktion deckt alle drei gängigen Varianten ab: den Ein-Stichproben-t-Test, den Zwei-Stichproben-t-Test für unabhängige Gruppen und den gepaarten t-Test.
Beim t-Test geht es immer um Mittelwertvergleiche. Die Grundfrage lautet: Unterscheiden sich die Mittelwerte zweier Gruppen – oder der Mittelwert einer Stichprobe von einem bekannten Referenzwert – so stark, dass der Unterschied nicht mehr plausibel durch Zufall erklärbar ist? Die klassische Nullhypothese lautet dabei μ₁ = μ₂, die Alternative μ₁ ≠ μ₂ – die Entscheidung fällt anhand der Teststatistik und des p-Werts.
Welche Variante brauchen Sie?
Bevor Sie den ersten Code schreiben, klären Sie kurz, welcher Testtyp zu Ihrer Fragestellung passt. Das bestimmt, welche Argumente Sie t.test() übergeben.
| Variante | Typische Fragestellung | Entscheidendes Argument |
|---|---|---|
| Ein-Stichproben-t-Test | Weicht der Mittelwert meiner Gruppe von einem festen Wert (z. B. 0 oder 100) ab? | mu = [Referenzwert] |
| Zwei-Stichproben-t-Test (unabhängig) | Unterscheiden sich die Mittelwerte zweier unabhängiger Gruppen (z. B. Kontroll- vs. Experimentalgruppe)? | paired = FALSE (Standard) |
| Gepaarter t-Test | Unterscheiden sich Messwerte desselben Messobjekts zu zwei Zeitpunkten (z. B. Prä-/Post-Messung)? | paired = TRUE |
Falls Sie noch keine klare Vorstellung davon haben, welches Verfahren zu Ihrer Forschungsfrage passt, lohnt ein Blick in unsere statistische Beratung für R-Auswertungen – dort helfen wir Ihnen, das richtige Verfahren methodisch sauber festzulegen.
Voraussetzungen prüfen
Ein t-Test ist kein Allzweckmittel. Wichtige Voraussetzungen sind unabhängige Stichproben, nicht zu stark schiefe Daten und eine sinnvolle Schätzung des Standardfehlers der Mittelwertsdifferenz. In der Praxis bedeutet das:
- Metrisches Skalenniveau: Ihre abhängige Variable muss intervall- oder verhältnisskaliert sein.
- Annähernde Normalverteilung: Bei kleinen Stichproben (n < 30) sollten die Daten nicht stark schief sein. Bei größeren Stichproben greift der zentrale Grenzwertsatz, der eine näherungsweise Normalverteilung der Mittelwerte sichert.
- Unabhängigkeit der Beobachtungen: Jede Person oder Messeinheit darf nur einmal in den Daten vorkommen – außer beim gepaarten Design, wo die Abhängigkeit bewusst modelliert wird.
- Varianzhomogenität (nur beim klassischen Zwei-Stichproben-t-Test): R verwendet standardmäßig den Welch-Test, der diese Annahme nicht voraussetzt. Dazu gleich mehr.
t-Test in R durchführen: Schritt für Schritt
Daten vorbereiten
Stellen Sie sicher, dass Ihre Daten korrekt in R eingelesen sind. Falls Sie noch nicht wissen, wie das geht, hilft unser Beitrag zum Importieren von Daten in R. Für die folgenden Beispiele arbeiten wir mit einem kleinen Beispieldatensatz: Testwerte einer Kontroll- und einer Treatmentgruppe.
# Beispieldaten erstellen
set.seed(42)
kontrollgruppe <- c(82, 79, 85, 88, 76, 91, 83, 80, 87, 84)
treatmentgruppe <- c(90, 93, 88, 95, 92, 97, 89, 91, 94, 96)
# Alternativ als Data Frame (typisch bei echten Datensätzen)
df <- data.frame(
testwert = c(kontrollgruppe, treatmentgruppe),
gruppe = factor(rep(c("Kontrolle", "Treatment"), each = 10))
)
Zwei-Stichproben-t-Test (unabhängige Gruppen)
Das ist die häufigste Variante in empirischen Abschlussarbeiten. Die Funktion t.test() unterstützt dabei sowohl eine Vektor-basierte als auch eine Formel-Schnittstelle – Letztere ist bei Data Frames besonders praktisch.
# Variante 1: Zwei Vektoren direkt übergeben
t.test(x = treatmentgruppe, y = kontrollgruppe,
alternative = "two.sided",
var.equal = FALSE) # Welch-Test (Standard)
# Variante 2: Formel-Schnittstelle mit Data Frame
t.test(testwert ~ gruppe, data = df,
alternative = "two.sided",
var.equal = FALSE)
Das Argument var.equal = FALSE ist der R-Standard und bewirkt, dass R den Welch-t-Test verwendet. Dieser schätzt die Freiheitsgrade mit der Welch-Satterthwaite-Approximation und setzt keine gleichen Varianzen in den Gruppen voraus. Für die meisten Fragestellungen in Abschlussarbeiten ist das die richtige Wahl.
var.equal = TRUE, weil sie den klassischen t-Test aus dem Lehrbuch kennen. In R ist das aber nur dann korrekt, wenn Sie zuvor explizit geprüft haben, dass die Varianzen homogen sind (z. B. per Levene-Test). Im Zweifel: Welch-Test verwenden – er ist robuster und in den meisten Fachzeitschriften akzeptiert. Ein-Stichproben-t-Test
Sie vergleichen Ihren Stichprobenmittelwert mit einem bekannten Referenzwert – etwa dem Bevölkerungsdurchschnitt oder einem theoretischen Nullwert.
# Ein-Stichproben-t-Test: Weicht der Mittelwert von 80 ab?
t.test(x = treatmentgruppe,
mu = 80,
alternative = "two.sided",
conf.level = 0.95)
Gepaarter t-Test
Haben Sie dieselben Personen zweimal gemessen – z. B. vor und nach einer Intervention –, verwenden Sie paired = TRUE. Die Reihenfolge der Werte in den Vektoren muss dabei übereinstimmen (Zeile 1 in Vektor A gehört zu Zeile 1 in Vektor B).
# Gepaarter t-Test: Prä-Post-Vergleich
praemessung <- c(72, 68, 75, 70, 73, 69, 74, 71, 76, 70)
postmessung <- c(80, 75, 83, 78, 81, 74, 82, 79, 85, 77)
t.test(x = postmessung,
y = praemessung,
paired = TRUE,
alternative = "two.sided")
Einseitige Tests
Wenn Sie eine gerichtete Hypothese haben (z. B. „Die Treatmentgruppe erzielt höhere Werte"), passen Sie das Argument alternative an:
alternative = "greater"– x ist größer als yalternative = "less"– x ist kleiner als y
Den R-Output verstehen
Ein typischer Output des Zwei-Stichproben-t-Tests sieht so aus:
Welch Two Sample t-test
data: testwert by gruppe
t = -9.3541, df = 17.999, p-value = 2.317e-08
alternative hypothesis: true difference in means between group Kontrolle and group Treatment is not equal to 0
95 percent confidence interval:
-13.427 -8.573
sample estimates:
mean in group Kontrolle mean in group Treatment
83.5 92.5
Hier ist, was die einzelnen Zeilen bedeuten:
- t = −9.35: Die Teststatistik. Der t-Wert ergibt sich als Differenz der Gruppenmittelwerte geteilt durch den Standardfehler dieser Differenz. Ein großer Absolutwert spricht für einen deutlichen Unterschied.
- df = 17.999: Die Freiheitsgrade nach Welch-Satterthwaite-Approximation. Je größer die Freiheitsgrade, desto stärker nähert sich die t-Verteilung der Standardnormalverteilung.
- p-value = 2.317e-08: Die Wahrscheinlichkeit, einen so extremen oder noch extremeren t-Wert zu beobachten, wenn die Nullhypothese wahr wäre. Hier weit unter 0,05 – die Nullhypothese wird abgelehnt.
- 95 percent confidence interval: Das 95%-Konfidenzintervall für die Mittelwertsdifferenz. Da es die 0 nicht einschließt, ist der Unterschied auf dem 5%-Niveau signifikant.
- sample estimates: Die Gruppenmittelwerte (83,5 vs. 92,5).
Teststatistik des t-Tests
Für die Entscheidung gilt: Überschreitet der absolute t-Wert den kritischen Wert auf Ihrem gewählten Signifikanzniveau – oder liegt der p-Wert unterhalb von α (typischerweise 0,05) –, lehnen Sie die Nullhypothese ab.
Effektstärke berechnen
Ein signifikanter p-Wert sagt noch nichts darüber aus, wie bedeutsam der Unterschied praktisch ist. Deshalb sollten Sie zusätzlich eine Effektstärke berichten – in der Regel Cohens d für t-Tests.
Das Paket effectsize macht das besonders komfortabel. Einen ausführlichen Überblick zu den verfügbaren R-Paketen für statistische Auswertungen finden Sie in unserem separaten Beitrag. Für Cohens d genügen wenige Zeilen:
# Paket installieren (einmalig)
install.packages("effectsize")
library(effectsize)
# Cohens d berechnen
cohens_d(testwert ~ gruppe, data = df)
Alternativ berechnen Sie Cohens d auch manuell als Differenz der Mittelwerte geteilt durch die gepoolte Standardabweichung. Einen detaillierten Leitfaden dazu bietet unser Beitrag zum Berechnen von Effektstärken in R.
Cohens d – Formel
Orientierungswerte für Cohens d
- d ≈ 0,2 → kleiner Effekt
- d ≈ 0,5 → mittlerer Effekt
- d ≈ 0,8 → großer Effekt
Häufige Fehler und wie Sie sie vermeiden
Falschen Testtyp gewählt
Der gepaarte t-Test und der Zwei-Stichproben-t-Test führen bei identischen Daten zu unterschiedlichen Ergebnissen. Prüfen Sie deshalb vorab sorgfältig, ob Ihre Messungen abhängig (gepaart) oder unabhängig sind.
Voraussetzungen nicht geprüft
Gerade bei kleinen Stichproben lohnt ein kurzer Shapiro-Wilk-Test auf Normalverteilung (shapiro.test()) und eine visuelle Prüfung per Histogramm oder Q-Q-Plot. Falls Sie mit fehlenden Werten in Ihrem Datensatz arbeiten, lesen Sie zunächst unseren Beitrag zum Umgang mit fehlenden Werten in R – denn NA-Werte können t.test() zum Abbruch bringen, wenn Sie das Argument na.action nicht setzen.
Effektstärke vergessen
Ein p-Wert von 0,04 klingt signifikant – aber bei n = 500 kann selbst ein winziger, praktisch bedeutungsloser Unterschied signifikant werden. Berichten Sie deshalb immer Cohens d oder eine vergleichbare Maßzahl. Viele Hochschulrichtlinien sehen vor, Effektstärken standardmäßig neben dem p-Wert zu berichten.
Ergebnisse nicht nachvollziehbar dokumentiert
Speichern Sie Ihren R-Code in einem Script oder R-Markdown-Dokument, damit Ihre Analyse reproduzierbar ist. Wie Sie Ergebnisse sauber für Ihre Abschlussarbeit aufbereiten, erklärt unser Beitrag zum Exportieren von R-Ergebnissen für Abschlussarbeiten.
Falls Sie beim Durchführen oder Interpretieren Ihres t-Tests in R auf Schwierigkeiten stoßen, können Sie sich jederzeit an unsere R-Statistikberatung wenden. Unsere Statistikerinnen und Statistiker begleiten Sie von der Methodenwahl über die Durchführung bis zur Ergebnisdarstellung in Ihrer Abschlussarbeit.