<- c(17.6, 19.2, 21.3, 15.1, 17.6, 18.9, 16.2, 18.3, 19.0, 16.4) Konzentration
52 Lösungen Konfidenzintervalle (eine Stichprobe)
Hier finden Sie die Lösungen zu den Übungsaufgaben von Abschnitt 44.8.
Die hier vorgestellten Lösungen stellen immer nur eine mögliche Vorgehensweisen dar und sind sicherlich nicht der Weisheit letzter Schluss. In R
führen viele Wege nach Rom, und wenn Sie mit anderem Code zu den richtigen Ergebnissen kommen, dann ist das völlig in Ordnung.
52.1 Lösung zur Aufgabe 44.8.1
Konzentration
.
<-t.test(Konzentration, mu=0, conf.level=0.95)
d d
One Sample t-test
data: Konzentration
t = 31.78, df = 9, p-value = 1.485e-10
alternative hypothesis: true mean is not equal to 0
95 percent confidence interval:
16.68158 19.23842
sample estimates:
mean of x
17.96
# nur Konfidenzintervall ausgeben
as.numeric(d$conf.int)
[1] 16.68158 19.23842
<-t.test(Konzentration, mu=0, conf.level=0.99)
d d
One Sample t-test
data: Konzentration
t = 31.78, df = 9, p-value = 1.485e-10
alternative hypothesis: true mean is not equal to 0
99 percent confidence interval:
16.1234 19.7966
sample estimates:
mean of x
17.96
# nur Konfidenzintervall ausgeben
as.numeric(d$conf.int)
[1] 16.1234 19.7966
Mit höherem Konfidenzniveau sinkt die Genauigkeit der Aussagen.
# Berechnung der Standardabweichung der Stichprobe
<- sd(Konzentration)
sigma
# Gegebene Werte
# z-Wert für 95% Konfidenzniveau
<- 1.96
z
# Fehlermarge
<- 0.5
E
# Berechnung der Stichprobengröße
<- (z * sigma / E)^2
n
# Aufrunden auf die nächste ganze Zahl
ceiling(n)
[1] 50
t.test(Konzentration, mu = 16, alternative = "greater")
One Sample t-test
data: Konzentration
t = 3.4682, df = 9, p-value = 0.003534
alternative hypothesis: true mean is greater than 16
95 percent confidence interval:
16.92404 Inf
sample estimates:
mean of x
17.96
Der Test ist signifikant. Wir können also sagen, dass unserer Medikamentencharge wirksam ist.
52.2 Lösung zur Aufgabe 44.8.2
Hof
und Fett
.
# Daten übertragen
<- data.frame(Fett = c(0.34, 0.34,
Hof1 0.32, 0.35,
0.33, 0.33,
0.32, 0.32,
0.33, 0.30,
0.31, 0.32))
$Hof <- "Hof 1"
Hof1
<- data.frame(Fett = c(0.28, 0.29,
Hof2 0.30, 0.32,
0.32, 0.31,
0.29, 0.29,
0.31, 0.32,
0.29, 0.31,
0.33, 0.32,
0.32, 0.33))
$Hof <- "Hof 2"
Hof2
<- rbind(Hof1, Hof2)
milch $Hof <- factor(milch$Hof) milch
t.test(milch$Fett, conf.level=0.95)
One Sample t-test
data: milch$Fett
t = 96.537, df = 27, p-value < 2.2e-16
alternative hypothesis: true mean is not equal to 0
95 percent confidence interval:
0.3090040 0.3224246
sample estimates:
mean of x
0.3157143
t.test(Hof1$Fett, conf.level=0.95)
One Sample t-test
data: Hof1$Fett
t = 81.853, df = 11, p-value < 2.2e-16
alternative hypothesis: true mean is not equal to 0
95 percent confidence interval:
0.3170719 0.3345948
sample estimates:
mean of x
0.3258333
t.test(Hof2$Fett, conf.level=0.95)
One Sample t-test
data: Hof2$Fett
t = 76.994, df = 15, p-value < 2.2e-16
alternative hypothesis: true mean is not equal to 0
95 percent confidence interval:
0.299595 0.316655
sample estimates:
mean of x
0.308125
# Vorbereitung
<- t.test(Hof1$Fett, conf.level=0.95)
h1 <- t.test(Hof2$Fett, conf.level=0.95)
h2
# Als Datenframe für ggplot zusammenbauen
<- data.frame(unten = c(h1$conf.int[1], h2$conf.int[1]),
df oben = c(h1$conf.int[2], h2$conf.int[2]),
mitte = c(h1$estimate, h2$estimate ),
Hof = c("Hof 1", "Hof 2"))
# ggplot
ggplot(df, aes(x=Hof, color=Hof)) +
geom_point(aes(y=mitte)) +
geom_segment(aes(xend=Hof, y=unten, yend=oben))
df
unten oben mitte Hof
1 0.3170719 0.3345948 0.3258333 Hof 1
2 0.2995950 0.3166550 0.3081250 Hof 2
Die beiden Konfidenzintervalle überschneiden sich nicht. Das heisst, es kann ein signifikanter Unterschied abgeleitet werden.
52.3 Lösung zur Aufgabe 44.8.3
Antwort
.
# Daten übertragen
<- c("nein", "ja", "nein", "nein", "nein", "ja", "nein",
Antwort "ja", "ja", "ja", "ja", "nein", "ja", "nein", "ja",
"nein", "nein", "nein", "ja", "ja", "ja", "nein",
"nein", "ja", "nein", "nein", "ja", "ja", "nein",
"nein", "ja", "nein", "ja", "nein")
<- table(Antwort)
freq <- prop.test(freq[["ja"]], sum(freq),
bib alternative="two.sided",
p=0.5, conf.level=0.99)
bib
1-sample proportions test with continuity correction
data: freq[["ja"]] out of sum(freq), null probability 0.5
X-squared = 0.029412, df = 1, p-value = 0.8638
alternative hypothesis: true p is not equal to 0.5
99 percent confidence interval:
0.2617050 0.6896622
sample estimates:
p
0.4705882
$conf.int[2] - bib$conf.int[1] bib
[1] 0.4279572
Das Intervall ist sehr breit und daher unpräzise.
# gemessene Proportionen
<- bib$estimate
prop
# Z-Wert für 95% Konfidenz
<- 1.96
z
# Fehlerspanne +-1%
<- 0.01
e
# Fallzahl berechnen
<- (z^2 * prop * (1 - prop)) / (e^2) n
Es werden 9571 Probanden benötigt.
52.4 Lösung zur Aufgabe 44.8.4
# Daten übertragen
prop.test(154, 200, p=0.5, conf.level=0.95)
1-sample proportions test with continuity correction
data: 154 out of 200, null probability 0.5
X-squared = 57.245, df = 1, p-value = 3.848e-14
alternative hypothesis: true p is not equal to 0.5
95 percent confidence interval:
0.7042503 0.8251428
sample estimates:
p
0.77
# Daten übertragen
prop.test(154, 200, p=0.5, conf.level=0.95)$conf.int[1]
[1] 0.7042503
Da die untere Grenze des Konfidenzintervalls größer als 0,7 ist, können wir bestätigen, dass das Ministerium sein Ziel erreicht hat.
52.5 Lösung zur Aufgabe 44.8.5
# Daten übertragen
<- c(196, 212, 188, 206, 203, 210, 201, 198)
cholesterin
t.test(cholesterin, conf.level=0.90)
One Sample t-test
data: cholesterin
t = 72.849, df = 7, p-value = 2.416e-11
alternative hypothesis: true mean is not equal to 0
90 percent confidence interval:
196.5031 206.9969
sample estimates:
mean of x
201.75
t.test(cholesterin, conf.level=0.95)
One Sample t-test
data: cholesterin
t = 72.849, df = 7, p-value = 2.416e-11
alternative hypothesis: true mean is not equal to 0
95 percent confidence interval:
195.2014 208.2986
sample estimates:
mean of x
201.75
t.test(cholesterin, conf.level=0.99)
One Sample t-test
data: cholesterin
t = 72.849, df = 7, p-value = 2.416e-11
alternative hypothesis: true mean is not equal to 0
99 percent confidence interval:
192.0585 211.4415
sample estimates:
mean of x
201.75
# Daten übertragen
as.numeric(t.test(cholesterin, conf.level=0.90)$conf.int)
[1] 196.5031 206.9969
as.numeric(t.test(cholesterin, conf.level=0.95)$conf.int)
[1] 195.2014 208.2986
as.numeric(t.test(cholesterin, conf.level=0.99)$conf.int)
[1] 192.0585 211.4415
Die obere Grenze des 99%-Konfidenzintervall ist größer als 210. Wird dies berücksichtigt, lässt dich die Aussage nicht bestätigen.
52.6 Lösung zur Aufgabe 44.8.6
# Daten übertragen
<- c(rep("geheilt", 18), rep("nicht", 7))
a <- c(rep("geheilt", 21), rep("nicht", 14))
b
<- table(a)
freqA <- table(b)
freqB <- prop.test(freqA[["geheilt"]], sum(freqA),
A alternative="two.sided",
p=0.5, conf.level=0.95)
<- prop.test(freqB[["geheilt"]], sum(freqB),
B alternative="two.sided",
p=0.5, conf.level=0.95)
# Konfidenzintervalle
$conf.int[2] - A$conf.int[1] A
[1] 0.3672662
$conf.int[2] - B$conf.int[1] B
[1] 0.3343891
Das Konfidenzintervall von Gruppe B ist schmaler, und damit auch präziser.
52.7 Lösung zur Aufgabe 44.8.7
# lade Datensatz
load(url("https://www.produnis.de/R/data/neonates.RData"))
# t-Test
<- t.test(neonates$weight, conf.level = 0.99)
d
# Konfidenzgrenzen
as.numeric(d$conf.int)
[1] 2.975844 3.075531
# t-Test
<- t.test(neonates$apgar1, conf.level = 0.99)
a1 <- t.test(neonates$apgar5, conf.level = 0.99)
a5
# Konfidenzgrenzen
as.numeric(a1$conf.int)
[1] 5.422182 5.834068
as.numeric(a5$conf.int)
[1] 5.998597 6.426403
Die Konfidenzgrenzen schneiden sich nicht. Das bedeutet, wir können von einem signifikanten Unterschied ausgehen.
# geringes Gewicht kategorisieren
$GG <- "normal"
neonates$GG[neonates$weight<2.50001] <- "low"
neonates
# Subsets bilden
<- subset(neonates, smoke=="Yes")
k1 <- subset(neonates, smoke=="No")
k2 # Häufigkeitstabelle
<- table(k1$GG)
freq1 <- table(k2$GG)
freq2
# Proportion Test
<- prop.test(freq1[["low"]], sum(freq1),
m1 alternative="two.sided",
p=0.5, conf.level=0.95)
<- prop.test(freq2[["low"]], sum(freq2),
m2 alternative="two.sided",
p=0.5, conf.level=0.95)
# Konfidenzgrenzen anzeigen
as.numeric(m1$conf.int)
[1] 0.1049334 0.2610870
as.numeric(m2$conf.int)
[1] 0.008396857 0.055169043
Die Konfidenzgrenzen schneiden sich nicht. Das bedeutet, wir können von einem signifikanten Unterschied ausgehen.