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.
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:
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")
Sie sehen hier die Schlafdauer von 10 Personen aus New York (die Stadt, die nie schläft…):
Besteht aus diesen Daten Evidenz dagegen, dass New Yorker im Durchschnitt 8 Stunden pro Nacht schlafen?
t.test()
Funktion.Die Abweichung ist nicht dramatisch.
Zuerst wird der Mittelwert, die Standardabweichung, das n und der Standardfehler berechnet:
\(\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:
\(Untere ~Schranke = \bar{x} - t * se =
7.215\)
\(Obere ~Schranke = \bar{x} + t * se =
8.505\)
Zuerst den t-Wert berechnen.
\[ 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.
Dieser beträgt 0.636.
R
Funktion:##
## 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
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.
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
t.test()
Funktion
durchAls 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.
Danach kann der QQ-Plot erstellt werden:
Die Abweichung ist nicht dramatisch.
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:
\(Untere ~Schranke = \bar{x} - t * se =
4.206\)
\(Obere ~Schranke = \bar{x} + t * se =
15.128\)
Zuerst den t-Wert berechnen.
\[ 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.
Dieser beträgt 0.002.
t.test()
Funktion
durch.##
## 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
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:
##
## 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
##
## 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