Ein statistischer Test dient dazu, zu entscheiden, ob man aufgrund einer Stichprobe eine bestimmte Annahme über die Grundgesamtheit widerlegen oder bestätigen kann. Diese Annahme nennt man auch die Nullhypothese (\(H_0\) ), ihr Gegenteil ist die Alternativhypothese (\(H_1\)).
Der Einstichproben t-Test wird verwendet, um zu prüfen, ob der Mittelwert einer Stichprobe signifikant von einem bekannten oder angenommenen Populationsmittelwert abweicht. Die Schritte sind:
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)
print(sleep)
Besteht aus diesen Daten Evidenz dagegen, dass New Yorker im Durchschnitt 8 Stunden pro Nacht schlafen?
Formulieren Sie die Nullhypothese H0 und die Alternativhypothese HA
Erstellen Sie einen QQ-Plot der zu untersuchenden Variable und beschreiben Sie, ob die Verteilung stark von einer Normalverteilung abweicht.
Berechnen Sie das 95%-Vertrauensintervall für die Schlafdauer der New Yorker.
Prüfen Sie ihre Hypothese mit einem statistischen Test.
Verwenden Sie für 2. und 3. die t.test() Funktion
Fassen Sie ihr Resultat in ein bis zwei Sätzen zusammen.
qqnorm(sleep)
qqline(sleep)
Die Abweichung ist nicht dramatisch.
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)
\(\overline{x}= 7.86\)
\(s=0.901\)
\(n=10\)
\(SE=\frac{s}{\sqrt{n}}=\frac{0.901}{\sqrt{10}}=0.285\)
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, d f=9}=2.262 \]
Nun können wir die untere und obere Schranke des \(95\%\) CI’s berechnen:
UntereSchranke \(=\bar{x}-t * s e=7.215\)
ObereSchranke \(=\bar{x}+t *\) se \(=8.505\)$
Zuerst den t-Wert berechnen.
t2 <- round((m-8)/se,3)
\[ t=(\bar{x}-8) / s e=-0.491 \] Den kritischen t-Wert für einen zweiseitigen Test \((\mathrm{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 die 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\).
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
Die durchschnittliche Schlafdauer von New Yorkern beträgt 7.86 [ \(7.215,8.505\) ] Stunden und unterscheidet sich nicht von den erwarteten 8 Stunden, \(\mathrm{t}=-0.491, \mathrm{p}=0.636\).
Patientenedukation nimmt in der medizinischen Behandlung eine immer wichtigere Rolle ein. 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 einen 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
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
DM
# ID Score_pre Score_post difference
# 1 1 41 47 6
# 2 2 41 48 7
# 3 3 29 41 12
# 4 4 47 34 -13
# 5 5 34 35 1
# 6 6 41 57 16
# 7 7 43 61 18
# 8 8 29 54 25
# 9 9 18 27 9
# 10 10 30 43 13
# 11 11 40 63 23
# 12 12 37 48 11
# 13 13 60 57 -3
# 14 14 38 43 5
# 15 15 39 54 15
Danach kann der QQ-Plot erstellt werden:
qqnorm(DM$difference)
Die Abweichung ist nicht dramatisch.
Zuerst wird die mittlere Differenz, die Standardabweichung der Differenzen, das 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\)
\(S E=\frac{s}{\sqrt{n}}=\frac{9.861}{\sqrt{15}}=2.546\)
Dann wird auf der t-Tabelle für n-1 Freiheitsgerade das 97.5-ste Quantil gesucht (damit links und rechts noch) \(2.5 \%\) bleiben
n<-15
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)
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)
UntereSchranke \(=\bar{x}-t *\) se \(=4.206\)
ObereSchranke \(=\bar{x}+t *\) se \(=15.128\)
Zuerst den t-Wert berechnen.
t2 <- round((m-0)/se,3)
\[ t=(\bar{x}-0) / s e=3.797 \]
Den kritischen \(t\)-Wert für einen zweiseitigen Test \((\mathrm{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 HO.
Mit R lässt sich noch der genaue p -Wert berechnen.
p <- 2*round(pt(-t2, n-1,), 3)
Dieser beträgt \(0.002\).
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