Call:
lm(formula = offspring ~ length, data = daphnia)
Coefficients:
(Intercept) length
-25.5385 0.0233
Data Science 2
Saskia Otto
Universität Hamburg, IMF
Sommersemester 2024
Nach Abschluss dieser VL und Übung..
Hat die Größe der Weibchen bei Wasserflöhen der Art Daphnia galeata einen signifikanten Einfluss auf die Nachkommenzahl (pro Weibchen)? Und wenn ja, wie groß ist der Einfluss bzw. wie sehr kann die Größe die Variabilität der Nachkommenzahl erklären?
Bildquellen links: Znachor et al. (2016): Brief history of long-term ecological research into aquatic ecosystems and their catchments in the Czech Republic. Part I: Manmade reservoirs, Biology Centre CAS, Institute of Hydrobiology, České Budějovice; rechts: Tams et al. (2018): Intraspecific phenotypic variation in life history traits of Daphnia galeata populations in response to fish kairomones. PeerJ 6:e5746; DOI 10.7717/peerj.5746
lm()
Wir modellieren die Anzahl an Nachkommen als Funktion der Größe der Wasserflohweibchen:
Call:
lm(formula = offspring ~ length, data = daphnia)
Coefficients:
(Intercept) length
-25.5385 0.0233
Beispiel aus Lektion 6 im Swirl-Kurs DSB-04-Datenvisualsierung mit ggplot2.
Shapiro-Wilk normality test
data: daphnia$offspring
W = 1, p-value = 4e-05
→ Die Annahme der Normalverteilung der Antwortvariable ist erstmal nicht gegeben. Entscheidend ist aber letztendlich die Verteilung der Modellresiduen, die wir nach der Modellierung prüfen!
'data.frame': 603 obs. of 9 variables:
$ round : int 1 1 1 1 1 1 1 1 1 1 ...
$ exp_id : chr "FK274" "FK327" "FK328" "FK329" ...
$ pop : chr "G" "G" "G" "G" ...
$ treatment: chr "control" "control" "control" "control" ...
$ length : num 1817 1864 1779 1852 1902 ...
$ afr : int 8 9 11 10 10 10 10 10 9 8 ...
$ broods : int 1 3 1 2 2 2 2 2 2 3 ...
$ offspring: int 1 15 2 9 5 7 3 7 13 27 ...
$ repro : num 1 5 2 4.5 2.5 3.5 1.5 3.5 6.5 9 ...
Wie lautet die vollständige lineare Regressionsgleichung?
Für die beobachteten Stichprobenwerte gilt:
offspring_i = -25.5 + 0.023*length_i + \epsilon_{i} ~~\text{wobei}~~\epsilon_i \sim N(\mu, \sigma^2)
Call:
lm(formula = offspring ~ length, data = daphnia)
Residuals:
Min 1Q Median 3Q Max
-18.12 -4.77 0.26 4.37 19.77
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) -25.53847 2.43119 -10.5 <2e-16 ***
length 0.02329 0.00133 17.5 <2e-16 ***
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Residual standard error: 6.51 on 601 degrees of freedom
Multiple R-squared: 0.337, Adjusted R-squared: 0.336
F-statistic: 305 on 1 and 601 DF, p-value: <2e-16
Wo sind a und b? Und was bedeuten die anderen Zahlen…?
Zur Erinnerung
Die Genauigkeit der Punktschätzung sollte immer durch den Standardfehler des Schätzers angegeben werden
→ je kleiner der Standardschätzfehler, desto größer ist die Effizienz des Schätzers.
Stellen Sie sich vor, jeder Datenpunkt repräsentiert einen individuellen Fisch und alle Datenpunkte zusammen repräsentieren eine Population.
Wenn jetzt mehrere Zufallsproben von N Fischen genommen werden, wie ähnlich wären sich dann die geschätzten Koeffizienten?
Welche sind sich viel ähnlicher und welche sind näher an den wahren Populationskoeffizienten dran?
‘Wahre’ Parameter: \alpha = 11.27 und \beta = 0.41
Wir steigern nun die Probengröße auf 100 Fische!
‘Wahre’ Parameter: \alpha = 11.27 und \beta = 0.41
Wie ähnlich sind sich die geschätzten Koeffizienten bei schwacher Streuung und einem Stichprobenumfang von 10 Fischen?
‘Wahre’ Parameter: \alpha = 10.04 und \beta = 0.50
Wir steigern wieder die Probengröße auf 100 Fische!
‘Wahre’ Parameter: \alpha = 10.04 und \beta = 0.50
Die Unsicherheit der geschätzten Steigung und Achsenabschnitt
s_{\bar{a}}=\sqrt{\frac{MS_{Residual}\sum x_i^2}{n*SS_x}}=\sqrt{\frac{\frac{\sum(y_i-\hat{y_i})}{n-2}\sum x_i^2}{n*\sum(x_i-\bar{x})^2}}
s_{\bar{b}}=\sqrt{\frac{MS_{Residual}}{SS_x}}=\sqrt{\frac{\frac{\sum(y_i-\hat{y_i})}{n-2}}{\sum(x_i-\bar{x})^2}}
Die Gesamtstreuung (SS_Y oder SS_{Gesamt}) kann in 2 Komponenten zerlegt werden:
erklärbare Streuung = SS_{Regression} + nicht erklärbare Streuung = SS_{Residuen}
Call:
lm(formula = offspring ~ length, data = daphnia)
Residuals:
Min 1Q Median 3Q Max
-18.12 -4.77 0.26 4.37 19.77
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) -25.53847 2.43119 -10.5 <2e-16 ***
length 0.02329 0.00133 17.5 <2e-16 ***
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Residual standard error: 6.51 on 601 degrees of freedom
Multiple R-squared: 0.337, Adjusted R-squared: 0.336
F-statistic: 305 on 1 and 601 DF, p-value: <2e-16
→ Punktschätzung für den Achsenabschnitt: -25.5 ± 2.43
→ Punktschätzung für die Steigung: 0.023 ± 0.001
a <- -25.53847; b <- 0.02329
a_se <- 2.43119; b_se <- 0.00133
a_ci <- a_se * qt(p = 0.975, df = 603)
b_ci <- b_se * qt(p = 0.975, df = 603)
mat <- matrix(c(a-a_ci, a+a_ci, b-b_ci, b+b_ci), nrow = 2, byrow = TRUE)
rownames(mat) <- c("(Intercept)", "Sepal.Length")
colnames(mat) <- c("2.5%", "97.5%")
mat
2.5% 97.5%
(Intercept) -30.3131 -20.7638
Sepal.Length 0.0207 0.0259
Die Teststatistik t bei der Regression ist einfach nur der Quotient aus dem Schätzwert und seinem Standardfehler und folgt einer t-Verteilung:
(Intercept)
-10.5
length
17.5
summary()
Output
Call:
lm(formula = offspring ~ length, data = daphnia)
Residuals:
Min 1Q Median 3Q Max
-18.12 -4.77 0.26 4.37 19.77
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) -25.53847 2.43119 -10.5 <2e-16 ***
length 0.02329 0.00133 17.5 <2e-16 ***
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Residual standard error: 6.51 on 601 degrees of freedom
Multiple R-squared: 0.337, Adjusted R-squared: 0.336
F-statistic: 305 on 1 and 601 DF, p-value: <2e-16
Wenn ein p-Wert sehr niedrig ist ( < 0.05), bedeutet das, dass
Die statistische Kenngröße R^2 ist ein Maß für den Anteil der Variabilität in y, welcher durch das lineare Modell erklärt werden kann:
R^2 = \frac{SS_{Regression}}{SS_{Gesamt}} = \frac{\sum(\hat{y}_i-\bar{y})^2}{\sum(y_i-\bar{y})^2} 1 \geq R^2 \geq 0
Call:
lm(formula = offspring ~ length, data = daphnia)
Residuals:
Min 1Q Median 3Q Max
-18.12 -4.77 0.26 4.37 19.77
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) -25.53847 2.43119 -10.5 <2e-16 ***
length 0.02329 0.00133 17.5 <2e-16 ***
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Residual standard error: 6.51 on 601 degrees of freedom
Multiple R-squared: 0.337, Adjusted R-squared: 0.336
F-statistic: 305 on 1 and 601 DF, p-value: <2e-16
Modellvalidierung mittels sog. Diagnostikplots mit den Residuen:
→ Überprüfung beider Annahmen anhand einer Exploration der y Variable schwierig
→ Was aber, wenn es pro X-Wert 50 Beobachtungen gäbe?
→ bei Replikation offensichtlicher:
Wo sind die jeweils 50 Beobachtung bei x = 2,3,4… normal verteilt sein und die Varianzen zwischen den versch. X-Werten homogen?
→ bei Replikation offensichtlicher:
→ Es ist einfacher den Ausschluss beeinflussender Datenpunkte zu rechtfertigen, wenn eine große Cook’s Distanz und eine große Leverage für den Datenpunkt vorliegt.
Modifizierte Abb. aus: Zuur et al. (2007)
residuals()
→ gibt einen Vektor mit den gewöhnlichen Residuen ausrstandard(model)
→ gibt einen Vektor mit den standardisierten Residuen ausfitted(model)
→ gibt einen Vektor mit den angepassten Werte zurück, die vom Modell für die Werte der erklärenden Variablen vorhergesagt werdenpredict(model)
→ verwendet Informationen aus dem angepassten Modell, um eine Glättungsfunktion für die Darstellung einer Linie im Streudiagramm zu erstellen. Der Funktion kann ein neuer data frame mit Sequenzen von Werten aller X Variablen, die im Modell sind, übergeben werden (Argument newdata
).Nützlich, wenn Plot 2 in der Standardgrafik schwer interpretierbar ist.
Shapiro-Wilk normality test
data: residuen
W = 1, p-value = 0.3
→ Hier ist die Voraussetzung der Normalität nun gegeben.
03:00
Link zur Shiny-App: teaching-stats/diagnostics/simple-linear-regression/
Bei weiteren Fragen: saskia.otto(at)uni-hamburg.de
Diese Arbeit is lizenziert unter einer Creative Commons Attribution-ShareAlike 4.0 International License mit Ausnahme der entliehenen und mit Quellenangabe versehenen Abbildungen.
Kurswebseite: Data Science 2