Einleitung

In dieser Übung geht es um den Einstichproben t-Test. Zu Übungszwecken machen wir die Berechnung zuerst von Hand und dann mit der t.test() Funktion. Die Codes, welche zur Erstellung der Grafiken verwendet wurden, dienen nur der Vollständigkeit und können ignoriert werden.

Exkurs zur t-Verteilung

William S. Gosset, Pseudonym: Student hatte festgestellt, dass die standardisierte Schätzfunktion des Stichproben-Mittelwerts normalverteilter Daten nicht mehr normalverteilt, sondern t-verteilt ist, wenn die zur Standardisierung des Mittelwerts benötigte Varianz des Merkmals unbekannt ist und mit der Stichprobenvarianz geschätzt werden muss. Seine t-Verteilung erlaubt – insbesondere für kleine Stichprobenumfänge – die Berechnung der Verteilung der Differenz vom Mittelwert der Stichprobe zum wahren Mittelwert der Grundgesamtheit.

Die t-Werte hängen vom Signifikanzniveau sowie von der Stichprobengrösse \(n\) ab und bestimmen das Vertrauensintervall und damit die Aussagekraft der Schätzung des Mittelwertes. Die t-Verteilung wird mit wachsendem Stichprobenumfang schmaler und geht für grosse Stichprobenumfänge in die Normalverteilung über (siehe Grafik unten). Hypothesentests, bei denen die t-Verteilung Verwendung findet, bezeichnet man als t-Tests. (mod. nach Wikipedia)

Merke:

  • Für die praktische Arbeit gilt, dass die t-Verteilung als Anpassung der Normalverteilung für kleine Stichprobenumfänge aufgefasst werden kann. Ab einem Stichprobenumfang von \(n > 30\) entspricht sie nahezu der Normalverteilung.
  • Der t-Wert, den Statistikprogramme berechnen, kann analog zu den z-Werten interpretiert werden.
  • Die Form der t-Verteilung ist abhängig vom Stichprobenumfang \(n\). Dieser wird in Freiheitsgraden (degrees of freedom, df) angegeben, wobei \(df=n−1\).
range <- seq(-4, 4, length = 100)
my_df <- data.frame(x <- rep(range, 5),
                    df = rep(c("df_03", "df_10", "df_30", "df_50", "normal"), each = 100),
                    value = c(dt(range, 3),
                              dt(range, 10),
                              dt(range, 30),
                              dt(range, 50),
                              dnorm(range)))
library(ggplot2)
ggplot(my_df, aes(x = x, y = value, colour = df)) + 
  geom_line() +
  xlab("") +
  ylab("Density") +
  ggtitle("t and z distributions")


Übung 1

Sie sehen hier die Schlafdauer von 10 Personen aus New York (die Stadt, die nie schläft…):

sleep <- c(7.0, 8.6, 7.6, 7.7, 6.4, 7.2, 9.6, 8.2, 8.3, 8.0)

Aufgabe

Besteht aus diesen Daten Evidenz dagegen, dass New Yorker im Durchschnitt 8 Stunden pro Nacht schlafen?

  1. Formulieren Sie die Nullhypothese \(H_0\) und die Alternativhypothese \(H_A\).
  2. Erstellen Sie einen QQ-Plot der zu untersuchenden Variable und beschreiben Sie, ob die Verteilung stark von einer Normalverteilung abweicht.
  3. Berechnen Sie das 95%-Vertrauensintervall für die Schlafdauer der New Yorker (basierend auf der t-Verteilung).
  4. Prüfen Sie ihre Nullhypothese in dem Sie den P-Wert berechnen.
  5. Verwenden Sie nun für 2. und 3. die t.test() Funktion.
  6. Fassen Sie ihr Resultat in ein bis zwei Sätzen zusammen.

Lösung

  1. Formulieren Sie die Nullhypothese \(H_0\) und die Alternativhypothese \(H_A\):
  • \(H_0\): Die durchschnittliche Schlafdauer von New Yorkern beträgt 8 Std. –> \(\mu = 8\).
  • \(H_A\): Die durchschnittliche Schlafdauer von New Yorkern beträgt nicht 8 Std. –> \(\mu \ne 8\).

  1. Erstellen Sie einen QQ-Plot der zu untersuchenden Variable und beschreiben Sie, ob die Verteilung stark von einer Normalverteilung abweicht.
qqnorm(sleep)
qqline(sleep)

Die Abweichung ist nicht dramatisch.


  1. Berechnen Sie das 95%-Vertrauensintervall für die Schlafdauer der New Yorker.

Zuerst wird der Mittelwert, die Standardabweichung, das n und der Standardfehler berechnet:

m <- round(mean(sleep),3)
s <- round(sd(sleep),3)
n <- length(sleep)
se <- round(s/sqrt(n),3)

\(\bar{x} = 7.86\)
\(s = 0.901\)
\(n = 10\)
\(se = s/\sqrt{n} = 0.901/\sqrt{10} = 0.285\)

Dann wird auf der t-Tabelle für \(n-1\) Freiheitsgerade das 97.5ste Quantil gesucht (damit links und rechts noch 2.5% bleiben).

t <- round(qt(0.975, n-1),3)

ggplot(NULL, aes(c(-3,3))) +
  geom_area(stat = "function", fun = dnorm, fill = "#00998a", xlim = c(-3, t)) +
  geom_area(stat = "function", fun = dnorm, fill = "grey80", xlim = c(t, 3)) +
  labs(x = paste("t, df = ", n-1), y = "") +
  scale_y_continuous(breaks = NULL) +
  scale_x_continuous(breaks = t)

\(t_{0.975, df = 9} = 2.262\)

Nun können wir die untere und obere Schranke des 95% CI’s berechnen:

ll <- round(m - t * se, 3)
ul <- round(m + t * se,3)

\(Untere ~Schranke = \bar{x} - t * se = 7.215\)
\(Obere ~Schranke = \bar{x} + t * se = 8.505\)


  1. Prüfen Sie ihre Hypothese mit einem statistischen Test.

Zuerst den t-Wert berechnen.

t2 <- round((m-8)/se,3)

\[ t = \frac{\bar{x}-8}{se} = -0.491 \]

Den kritischen t-Wert für einen zweiseitigen Test (\(df = 9\)) kennen wir von oben schon. Dieser beträgt 2.262. Weil der von uns berechnete Wert kleiner ist, fällt er in den Nicht-Verwerfungsbereich. Da der P-Wert somit > .05 ist, haben wir keine Evidenz dafür, dass sich die durchschnittliche Schlafdauer von New Yorkern von 8 Stunden unterscheidet und verwerfen \(H_0\) nicht.

Mit R lässt sich noch der genaue p-Wert berechnen.

p <- 2*round(pt(t2, n-1), 3)

Dieser beträgt 0.636.


  1. Natürlich geht das Ganze viel einfacher mit einer implementierten R Funktion:
t.test(sleep, mu = 8)
## 
##  One Sample t-test
## 
## data:  sleep
## t = -0.49144, df = 9, p-value = 0.6349
## alternative hypothesis: true mean is not equal to 8
## 95 percent confidence interval:
##  7.215561 8.504439
## sample estimates:
## mean of x 
##      7.86

  1. Fassen Sie ihr Resultat in ein bis zwei Sätzen zusammen.

Die durchschnittliche Schlafdauer von New Yorkern beträgt 7.86 [7.215, 8.505] Stunden und unterscheidet sich nicht von den erwarteten 8 Stunden, t = -0.491, p = 0.636.


Übung 2

In einer Studie wurde untersucht, ob bei Personen mit einem neu diagnostizierten Diabetes mellitus Typ II ein Edukationsvideo das Wissen der Patient:innen rund um ihre Krankheit beeinflusst. Alle Studienteilnehmer:innen haben vor und vier Wochen nach einem Edukationsvideo einen Wissenstest zum Thema “Diabetes Typ II” absolviert. Maximal konnten 100 Punkte erreicht werden.

Hier sehen sie den Datensatz:

ID <- c(1:15)
Score_pre <- c(41, 41, 29, 47, 34, 41, 43, 29, 18, 30, 40, 37, 60, 38, 39)
Score_post <- c(47, 48, 41, 34, 35, 57, 61, 54, 27, 43, 63, 48, 57, 43, 54)
DM <- data.frame(ID, Score_pre, Score_post)
DM
##    ID Score_pre Score_post
## 1   1        41         47
## 2   2        41         48
## 3   3        29         41
## 4   4        47         34
## 5   5        34         35
## 6   6        41         57
## 7   7        43         61
## 8   8        29         54
## 9   9        18         27
## 10 10        30         43
## 11 11        40         63
## 12 12        37         48
## 13 13        60         57
## 14 14        38         43
## 15 15        39         54

Aufgabe

  1. Formulieren Sie die Nullhypothese \(H_0\) und die Alternativhypothese \(H_A\).
  2. Erstellen Sie einen QQ-Plot der zu untersuchenden Variable und beschreiben Sie, ob die Verteilung stark von einer Normalverteilung abweicht.
  3. Berechnen Sie das 95%-Vertrauensintervall für die Veränderung des mittleren Test-Scores.
  4. Prüfen Sie \(H_0\) in dem Sie einen P-Wert berechnen.
  5. Führen Sie 2. und 3. mit der t.test() Funktion durch
  6. Fassen Sie ihr Resultat in ein bis zwei Sätzen zusammen.

Lösung

  1. Formulieren Sie die Nullhypothese \(H_0\) und die Alternativhypothese \(H_A\).
  • \(H_0\): Die mittlere Differenz der Testscores beträgt 0 –> \(\mu = 0\).
  • \(H_A\): Die mittlere Differenz der Testscores beträgt nicht 0 –> \(\mu \ne 0\).

  1. Erstellen Sie einen QQ-Plot der zu untersuchenden Variable und beschreiben Sie, ob die Verteilung stark von einer Normalverteilung abweicht.

Als erstes müssen die Differenzen berechnet werden. Hier wird Der Score vor dem Video vom Score nach dem Video subtrahiert. Eine positive Zahl bedeutet somit eine Verbesserung im Test.

DM$difference <- DM$Score_post-DM$Score_pre

Danach kann der QQ-Plot erstellt werden:

qqnorm(DM$difference)
qqline(DM$difference)

Die Abweichung ist nicht dramatisch.


  1. Berechnen Sie das 95%-Vertrauensintervall für die Veränderung des mittleren Test-Scores.

Zuerst wird die mittlere Differenz, die Standardabweichung der Differenzen, \(n\) und der Standardfehler der mittleren Differenz berechnet:

m <- round(mean(DM$difference),3)
s <- round(sd(DM$difference),3)
n <- length(DM$difference)
se <- round(s/sqrt(n),3)

\(\bar{x} = 9.667\)
\(s = 9.861\)
\(n = 15\)
\(se = s/\sqrt{n} = 9.861/\sqrt{15} = 2.546\)

Dann wird auf der t-Tabelle für n-1 Freiheitsgerade das 97.5ste Quantil gesucht (damit links und rechts noch 2.5% bleiben)

t <- round(qt(0.975, n-1),3)

ggplot(NULL, aes(c(-3,3))) +
  geom_area(stat = "function", fun = dnorm, fill = "#00998a", xlim = c(-3, t)) +
  geom_area(stat = "function", fun = dnorm, fill = "grey80", xlim = c(t, 3)) +
  labs(x = paste("t, df = ", n-1), y = "") +
  scale_y_continuous(breaks = NULL) +
  scale_x_continuous(breaks = t)

\(t_{0.975, df = 14} = 2.145\).

Nun können wir die untere und obere Schranke des 95% CI’s berechnen:

ll <- round(m - t * se, 3)
ul <- round(m + t * se,3)

\(Untere ~Schranke = \bar{x} - t * se = 4.206\)
\(Obere ~Schranke = \bar{x} + t * se = 15.128\)


  1. Prüfen Sie ihre Hypothese mit einem statistischen Test.

Zuerst den t-Wert berechnen.

t2 <- round((m-0)/se,3)

\[ t = \frac{\bar{x}-0}{se} = 3.797. \]

Den kritischen t-Wert für einen zweiseitigen Test (df = 14) kennen wir von oben schon. Dieser beträgt 2.145. Weil der von uns berechnete Wert grösser ist, fällt er in den Verwerfungsbereich. Da der P-Wert somit < .05 ist, haben wir Evidenz dafür, dass sich die mittlere Differenz der Testscores von 0 unterscheidet und verwerfen \(H_0\).

Mit R lässt sich noch der genaue p-Wert berechnen.

p <- 2*round(pt(-t2, n-1,), 3)

Dieser beträgt 0.002.


  1. Führen Sie 2. und 3. mit der t.test() Funktion durch.
t.test(DM$difference)
## 
##  One Sample t-test
## 
## data:  DM$difference
## t = 3.7967, df = 14, p-value = 0.001964
## alternative hypothesis: true mean is not equal to 0
## 95 percent confidence interval:
##   4.205861 15.127472
## sample estimates:
## mean of x 
##  9.666667

  1. Fassen Sie ihr Resultat in ein bis zwei Sätzen zusammen.

Die mittlere Differenz der Testscores beträgt 9.667 [4.206, 15.128] Punkte und unterscheidet sich statistisch signifikant von 0, t = 3.797, p = 0.002.


Anmerkung: Der einstichproben t-Test auf eine Differenz (wie oben) wird manchmal auch als t-Test für abhängige Daten bezeichnet. Die beiden sind jedoch äquivalent:

t.test(DM$difference)
## 
##  One Sample t-test
## 
## data:  DM$difference
## t = 3.7967, df = 14, p-value = 0.001964
## alternative hypothesis: true mean is not equal to 0
## 95 percent confidence interval:
##   4.205861 15.127472
## sample estimates:
## mean of x 
##  9.666667
t.test(DM$Score_post, DM$Score_pre, paired = TRUE)
## 
##  Paired t-test
## 
## data:  DM$Score_post and DM$Score_pre
## t = 3.7967, df = 14, p-value = 0.001964
## alternative hypothesis: true mean difference is not equal to 0
## 95 percent confidence interval:
##   4.205861 15.127472
## sample estimates:
## mean difference 
##        9.666667