Menu

T-Test in R: Einstichproben-, Zweistichproben- und gepaarter t.test()

Führe Einstichproben-, Zweistichproben- und gepaarte t-Tests mit t.test() aus und lies - der Teil, der wirklich zählt - jede Zeile der Ausgabe: t, df, p-Wert, Konfidenzintervall.

Diese Seite enthält ausführbare Editoren - bearbeiten, ausführen und Ausgabe sofort sehen.

Was ein t-Test fragt

Jeder t-Test beantwortet dieselbe zugrunde liegende Frage: Ist dieser Mittelwertunterschied echt, oder könnte er bloß Rauschen sein? Stichproben wackeln - miss die Reaktionszeiten von zehn Personen zweimal, und du bekommst zwei verschiedene Durchschnitte, obwohl sich nichts geändert hat. Der t-Test vergleicht den beobachteten Unterschied mit dem Wackeln, das man vom Zufall erwarten würde, und meldet, wie überraschend deine Daten wären, wenn der wahre Unterschied null wäre.

Drei Geschmacksrichtungen, eine Funktion:

  • Einstichproben - unterscheidet sich der Mittelwert dieser Gruppe von einem festen Wert?
  • Zweistichproben - haben diese zwei unabhängigen Gruppen unterschiedliche Mittelwerte?
  • Gepaart - haben sich dieselben Personen zwischen zwei Messungen verändert?

Einstichproben: t.test(x, mu = ...)

Angenommen, ein Prozess soll im Mittel 5,0 Sekunden dauern, und du stoppst zehn Durchläufe:

Der Stichprobenmittelwert ist 5,61 - aber sind 0,61 über dem Ziel bei nur zehn Durchläufen bedeutsam oder im normalen Wackeln? Genau das beantwortet die Ausgabe.

Die Ausgabe Zeile für Zeile lesen

Das ist der Abschnitt, der sich lohnt - die Ausgabe jeder t.test()-Variante hat dieselbe Gestalt, lerne sie also einmal zu lesen. Führ den Block oben aus und ordne jede Zeile zu:

  • t = 4.26 - die Teststatistik: der beobachtete Unterschied (5,61 − 5 = 0,61) geteilt durch den Standardfehler des Mittelwerts (etwa 0,143). Sie sagt, dass der Stichprobenmittelwert etwas mehr als vier Standardfehler vom hypothetisierten Wert entfernt liegt. Größeres |t| = überraschender unter der Nullhypothese.
  • df = 9 - Freiheitsgrade, hier n − 1. Kleine df bedeuten kleine Stichproben, was heißt, dass der Test ein größeres t verlangt, bevor er beeindruckt ist.
  • p-value ≈ 0.002 - wäre der wahre Mittelwert wirklich 5, läge die Wahrscheinlichkeit, eine Stichprobe zu ziehen, deren Mittelwert mindestens so weit von 5 entfernt landet (in beide Richtungen), bei etwa 0,2 %. Das ist die gesamte Bedeutung. Es ist nicht die Wahrscheinlichkeit, dass der wahre Mittelwert 5 ist, und ein kleiner p-Wert beweist deine Lieblingserklärung nicht - er sagt nur "schwer dem Zufall zuzuschreiben". An der üblichen Schwelle von 0,05 verwirfst du hier die Nullhypothese.
  • alternative hypothesis - eine Neuformulierung dessen, was "verwerfen" bedeuten würde. not equal to 5 bestätigt, dass dies zweiseitig war.
  • 95 percent confidence interval: 5.29 to 5.93 - der Bereich wahrer Mittelwerte, der mit den Daten vereinbar ist. Beachte, dass 5 außerhalb liegt - dasselbe Urteil wie p < 0,05, ausgedrückt in den Einheiten der Daten, und es sagt dir zusätzlich die plausible Größe des Effekts, was der p-Wert nie tut.
  • sample estimates - der beobachtete Mittelwert, damit die Leserin die geprüfte Rohtatsache sieht.

Brauchst du Teile programmatisch: result <- t.test(times, mu = 5), dann result$p.value, result$conf.int, result$estimate.

Zweistichproben: unabhängige Gruppen vergleichen

Für zwei unabhängige Gruppen liest sich die Formelschnittstelle wie die Frage selbst. ToothGrowth erfasst das Zahnwachstum bei Meerschweinchen, die Vitamin C als Orangensaft (OJ) oder Ascorbinsäure (VC) erhielten:

Lies es als "teste len, aufgeschlüsselt nach supp". Die Ausgabe zeigt nun zwei Stichprobenschätzungen (Mittelwert je Gruppe, etwa 20,7 vs. 17,0), und das Konfidenzintervall gilt für den Unterschied zwischen ihnen. Hier ist p ≈ 0,061 und das Intervall reicht von etwa −0,17 bis 7,57: Es überschreitet null, sodass du auf dem 0,05-Niveau "kein Unterschied" nicht ausschließen kannst - wobei ein Intervall, das bis +7,6 reicht, dich auch davor warnt, den Unterschied für nicht existent zu erklären. "Nicht signifikant" heißt nicht bewiesen, nicht als abwesend bewiesen.

Welch ist die Voreinstellung - und das ist gut

Sieh dir den Ausgabekopf an: Welch Two Sample t-test, mit gebrochenen df (etwa 55,3). Der klassische Student-t-Test setzt voraus, dass beide Gruppen gleiche Varianz haben; die Welch-Variante lässt diese Annahme fallen und passt die Freiheitsgrade zum Ausgleich an. Sind die Varianzen tatsächlich gleich, liefert Welch praktisch identische Antworten; sind sie es nicht, kann der Student-Test schlecht kalibriert sein, während Welch ehrlich bleibt. R's Voreinstellung ist also die sichere - es gibt selten einen Grund, sie zu überschreiben.

Das Vortest-Ritual "erst Varianzgleichheit prüfen, dann den Test wählen" ist überholter Rat; nimm einfach Welch.

Gepaart: vorher und nachher

Wenn beide Messungen von denselben Personen stammen, sind die Gruppen nicht unabhängig - und sie als unabhängig zu behandeln verschenkt die Teststärke. Die Punktzahlen von acht Personen vor und nach einem Trainingskurs:

paired = TRUE prüft den Mittelwert der Differenzen innerhalb der Personen (hier im Schnitt 2,75 Punkte, p ≈ 0,001). Warum Paarung alles ändert: Menschen unterscheiden sich untereinander weit stärker, als das Training irgendjemanden verändert hat - eine Streuung von Person zu Person von 65 bis 80 würde eine Verbesserung von 2-3 Punkten in einem ungepaarten Test überschwemmen. Das Differenzieren zieht die Ausgangslage jeder Person ab, sodass nur die Veränderung bleibt. Die Regel: Hat die Datenstruktur ein natürliches "dieselbe Einheit zweimal gemessen", paare sie. (Und nutze paired = TRUE nie, wenn die Gruppen wirklich unabhängig sind - die Paarung wäre Fiktion.)

Einseitige Tests: mit Vorsicht behandeln

Standardmäßig ist der Test zweiseitig: Er wertet einen Unterschied in beide Richtungen als Evidenz. Wenn - bevor du die Daten gesehen hast - deine Hypothese nur in eine Richtung Sinn ergab, kannst du das angeben:

Der p-Wert halbiert sich gegenüber dem zweiseitigen Test, und genau deshalb besteht die Versuchung: Nach einem Blick auf die Daten auf einseitig zu wechseln ist p-Hacking. Nutze alternative = "greater" oder "less" nur mit einer wirklich vorab festgelegten Richtung; im Zweifel bleib zweiseitig.

Annahmen und der Rückfallplan

Der t-Test setzt voraus, dass die Beobachtungen unabhängig sind und dass die Stichprobenmittelwerte annähernd normalverteilt sind - was gilt, wenn die Daten selbst grob normal sind oder die Stichproben hinreichend groß (der zentrale Grenzwertsatz erledigt die Schwerarbeit; ab n ≈ 30+ je Gruppe ist moderate Nichtnormalität kein Thema). Prüfe die Form mit einem schnellen Histogramm oder Boxplot. Die Unabhängigkeit kann allerdings kein Test retten - sie ergibt sich daraus, wie die Daten erhoben wurden.

Für kleine Stichproben mit deutlich schiefen Daten oder extremen Ausreißern ist der übliche nichtparametrische Rückfallplan eine Zeile: wilcox.test(len ~ supp, data = ToothGrowth), das Verteilungen über Ränge statt über Mittelwerte vergleicht.

Was du mitnimmst

  • t.test(x, mu = ) für eine Stichprobe, t.test(y ~ group, data = ) für zwei, paired = TRUE für vorher/nachher.
  • Der p-Wert lautet "Wie überraschend sind diese Daten, wenn der wahre Unterschied null wäre" - nicht mehr; das Konfidenzintervall verrät dir die plausible Effektgröße in echten Einheiten.
  • R's Zweistichproben-Voreinstellung ist der Welch-Test (gebrochene df) - behalte sie.
  • Paarung entfernt das Rauschen zwischen Personen; nutze sie immer, wenn dieselben Einheiten zweimal gemessen werden.
  • Einseitige Alternativen nur mit vorab festgelegter Richtung; wilcox.test() ist der rangbasierte Rückfallplan.

Als Nächstes: die Mittelwerte von drei oder mehr Gruppen auf einmal vergleichen - ANOVA mit aov().

Häufig gestellte Fragen

Wie führt man in R einen t-Test durch?

Mit t.test(). Eine Stichprobe gegen einen festen Wert: t.test(x, mu = 5). Zwei unabhängige Gruppen: t.test(value ~ group, data = df). Vorher/nachher-Messungen an denselben Personen: t.test(after, before, paired = TRUE).

Wie interpretiert man den p-Wert eines t-Tests in R?

Er ist die Wahrscheinlichkeit, einen mindestens so großen Unterschied wie deinen zu sehen, wenn der wahre Unterschied null wäre. Ein kleiner p-Wert (konventionell unter 0,05) bedeutet, dass die Daten schwer als Rauschen zu erklären sind, du also die Nullhypothese verwirfst. Er ist nicht die Wahrscheinlichkeit, dass die Nullhypothese stimmt, und er sagt nichts darüber, wie groß oder wichtig der Unterschied ist - dafür liest du das Konfidenzintervall.

Warum meldet R standardmäßig einen Welch-t-Test?

R's Zweistichproben-t.test() nutzt standardmäßig die Welch-Variante, die nicht voraussetzt, dass beide Gruppen gleiche Varianzen haben - deshalb fallen die Freiheitsgrade gebrochen aus. Welch verhält sich bei gleichen Varianzen fast identisch zum klassischen Student-Test und ist sicherer, wenn sie ungleich sind, also ist die Voreinstellung die richtige Wahl. Nutze var.equal = TRUE nur, wenn eine Aufgabenstellung ausdrücklich den klassischen gepoolten Test verlangt.

Wann sollte man in R einen gepaarten t-Test nutzen?

Wenn die beiden Messreihen in natürlichen Paaren vorliegen - dieselbe Person vorher und nachher gemessen, dasselbe Objekt mit zwei Methoden bewertet. t.test(after, before, paired = TRUE) prüft den Mittelwert der Differenzen innerhalb der Paare, was die Variation zwischen Personen entfernt und meist weit mehr Teststärke liefert, als die Gruppen als unabhängig zu behandeln.

Coddy programming languages illustration

Lerne mit Coddy zu programmieren

LOS GEHT'S