--- fontsize: 8pt format: beamer: include-in-header: ../ALM_Header.tex bibliography: ../ALM_Referenzen.bib --- ```{r, include = F} source("../ALM_Common.R") ``` # \setcounter{framenumber}{33} \large \setstretch{3} \vfill Vorbemerkungen Additive Kovarianzanalyse Kovarianzanalyse mit Interaktion **Anwendung/Praxis** Selbstkontrollfragen \vfill # Anwendung/Praxis \small Datensatz: Geburtsgewicht und Muttergewicht für Mutter-Kind-Paare ($n = 189$; hier: $i = 1,...,25$) \setstretch{1.0} \footnotesize \vspace{2mm} ```{r, echo = T} filename = "Daten/birth_weights.csv" # Dateiname D = read.csv(filename) # Datenframe ``` \tiny \vspace{-2mm} ```{r, echo = F} knitr::kable(D[c(1:25),], align = "rrrcccc", "pipe") ``` # Anwendung/Praxis \small Datensatz: Geburtsgewicht und Muttergewicht, getrennt nach Raucherstatus ($n = 189$) ```{r, echo = F, eval = F} # Daten extrahieren filename = "Daten/birth_weights.csv" # Dateiname D = read.csv(filename) # Datenframe y = D$Birth_weight # abhängige Variable f = D$Smoker # kategorische UV x = D$Weight # parametrische UV # Modellschätzung y_1 = y[f=="no"] # Datenpunkte Gr. 1 y_2 = y[f=="yes"] # Datenpunkte Gr. 2 x_1 = x[f=="no"] # Kovariatenwerte Gr. 1 x_2 = x[f=="yes"] # Kovariatenwerte Gr. 2 n_1 = length(y_1) # Anzahl Datenpunkte Gr. 1 n_2 = length(y_2) # Anzahl Datenpunkte Gr. 2 n = n_1 + n_2 # Anzahl Datenpunkte p = 4 # Anzahl Regressoren y = matrix(c(y_1, y_2), nrow = n) # Datenvektor x = matrix(c(x_1, x_2), nrow = n) # Kovariatenvektor X = matrix(c(rep(1,n_1), rep(1,n_2), # \mu_0 Regressor rep(0,n_1), rep(1,n_2), # \alpha_2 Regressor x, # \beta_0 Regressor x*(c(rep(0,n_1), rep(1,n_2)))), # \gamma_2 Regressor nrow = n) # Anzahl Zeilen der Designmatrix beta_hat = solve(t(X) %*% X) %*% t(X) %*% y # Betaparameterschätzer vollständiges Modell # Visualisierung library(latex2exp) par( family = "sans", mfcol = c(1,2), pty = "s", bty = "l", lwd = 1, las = 1, mgp = c(2,1,0), xaxs = "i", yaxs = "i", font.main = 1, cex = 1, cex.main = 1) # Punktwolken plot(x_1, y_1, pch = 16, xlab = "Muttergewicht", ylab = "Geburtsgewicht", xlim = c(35,115), ylim = c(1,5)) points(x_2, y_2, pch = 16, col = "gray80") # prädizierte Daten y_hat = X %*% beta_hat lines(x_1, y_hat[1:n_1], col = "black") lines(x_2, y_hat[(n_1+1):n], col = "gray80") legend("topleft", c("Nichtraucherin", "Raucherin"), lty = 0, pch = 16, col = c("black", "gray80"), bty = "n", cex = 1, x.intersp = 1) # Speichern dev.copy2pdf( file = "Abbildungen/birth_weights_1.pdf", width = 9, height = 4.5) ``` \center ```{r, echo = F, out.width = "100%"} knitr::include_graphics("Abbildungen/birth_weights_1.pdf") ``` # Anwendung/Praxis \small Zweistichproben-T-Test: Geburtsgewicht, Nichtraucherinnen vs. Raucherinnen ($n_1 = 115$, $n_2 = 74$) \vspace{2mm} ```{r, echo = T, eval = T} # Zweistichproben-T-Test y1 = D$Birth_weight[D$Smoker=="no"] # Gruppe 1 y2 = D$Birth_weight[D$Smoker=="yes"] # Gruppe 2 n1 = length(y1) # Anzahl Gruppe 1 n2 = length(y2) # Anzahl Gruppe 2 n = n1 + n2 # Anzahl Datenpunkte p = 2 # Anzahl Regressoren y = matrix(c(y1,y2), nrow = n) # Datenvektor X = matrix(c(rep(1,n1), rep(0,n2), # Designmatrix rep(0,n1), rep(1,n2)), ncol = p) ``` ```{r, echo = F, eval = T} # Zweistichproben-T-Test b_hat = solve(t(X) %*% X) %*% t(X) %*% y # Betaparameterschätzer e_hat = y - X %*% b_hat # Residuenvektor s2_hat = (t(e_hat) %*% e_hat)/(n-p) # Varianzparameterschätzer c = matrix(c(1,-1), nrow = p) # Kontrastvektor cTb0 = 0 # Nullhypothese t = (t(c)%*%b_hat - cTb0)/sqrt(s2_hat * t(c)%*%solve(t(X) %*% X)%*%c) # T-Statistik d = t/sqrt(n) # Cohen's d pval = 2*(1 - pt(abs(t), n-1)) # p-Wert cat( "Datenpunkte pro Gruppe : ", round(c(n1,n2), digits = 3), "\nBetaparameterschätzer : ", round(b_hat, digits = 3), "\nVarianzparameterschätzer : ", round(s2_hat, digits = 3), "\nZweistichproben-T-Teststatistik : ", round(t, digits = 3), "\nCohen's d : ", round(d, digits = 3), "\np-Wert : ", round(pval, digits = 3), "\n\n") ``` # Anwendung/Praxis \small Kovarianzanalyse: T-Test auf Haupteffekt von Raucherstatus \vspace{2mm} \footnotesize ```{r, echo = T, eval = T} # Kovarianzanalyse D$Weight = D$Weight - mean(D$Weight) # Kovariate mittelwertzentrieren y_1 = D$Birth_weight[D$Smoker=="no"] # Datenpunkte Gr. 1 y_2 = D$Birth_weight[D$Smoker=="yes"] # Datenpunkte Gr. 2 x_1 = D$Weight[D$Smoker=="no"] # Kovariatenwerte Gr. 1 x_2 = D$Weight[D$Smoker=="yes"] # Kovariatenwerte Gr. 2 n_1 = length(y_1) # Anzahl Datenpunkte Gr. 1 n_2 = length(y_2) # Anzahl Datenpunkte Gr. 2 n = n_1 + n_2 # Anzahl Datenpunkte p = 4 # Anzahl Regressoren y = matrix(c(y_1, y_2), nrow = n) # Datenvektor x = matrix(c(x_1, x_2), nrow = n) # Kovariatenvektor X = matrix(c(rep(1,n_1), rep(1,n_2), # \mu_0 Regressor rep(0,n_1), rep(1,n_2), # \alpha_2 Regressor x, # \beta_0 Regressor x*(c(rep(0,n_1), rep(1,n_2)))), # \gamma_2 Regressor nrow = n) # Anzahl Zeilen der Designmatrix c = matrix(c(0,1,0,0), nrow = p) # Kontrastgewichtsvektor ``` ```{r, echo = F, eval = T} # Evaluation der T-Teststatistik beta_hat = solve(t(X) %*% X) %*% t(X) %*% y # Betaparameterschätzer eps_hat = y - X %*% beta_hat # Residuenvektor sigsqr_hat = (t(eps_hat) %*% eps_hat)/(n-p) # Varianzparameterschätzer c = matrix(c(0,1,0,0), nrow = p) # Kontrastgewichtsvektor t_num = t(c) %*% beta_hat # Zähler der T-Statistik ste = sqrt(sigsqr_hat*t(c) %*% solve(t(X) %*%X ) %*% c)# Nenner der T-Statistik tee = t_num/ste # T-Statistik pval = 2*(1 - pt(abs(tee),n-p)) # p-Wert # Ausgabe der Ergebnisse R = data.frame(t_num, ste, tee, pval) rownames(R) = c("Smoking") colnames(R) = c("Estimate", "Std. Error", "t-value", "Pr(>|t|)") print(R) ``` # Anwendung/Praxis \small Kovarianzanalyse: F-Test auf Effekt der Kovariate Muttergewicht \vspace{2mm} \footnotesize ```{r, echo = T, eval = T} # Kovarianzanalyse D$Weight = D$Weight - mean(D$Weight) # Kovariate mittelwertzentrieren y_1 = D$Birth_weight[D$Smoker=="no"] # Datenpunkte Gr. 1 y_2 = D$Birth_weight[D$Smoker=="yes"] # Datenpunkte Gr. 2 x_1 = D$Weight[D$Smoker=="no"] # Kovariatenwerte Gr. 1 x_2 = D$Weight[D$Smoker=="yes"] # Kovariatenwerte Gr. 2 n_1 = length(y_1) # Anzahl Datenpunkte Gr. 1 n_2 = length(y_2) # Anzahl Datenpunkte Gr. 2 n = n_1 + n_2 # Anzahl Datenpunkte p = 4 # Anzahl Regressoren y = matrix(c(y_1, y_2), nrow = n) # Datenvektor x = matrix(c(x_1, x_2), nrow = n) # Kovariatenvektor X = matrix(c(rep(1,n_1), rep(1,n_2), # \mu_0 Regressor rep(0,n_1), rep(1,n_2), # \alpha_2 Regressor x, # \beta_0 Regressor x*(c(rep(0,n_1), rep(1,n_2)))), # \gamma_2 Regressor nrow = n) # Anzahl Zeilen der Designmatrix p_0 = 2 # Anzahl Parameter reduziertes Modell ``` ```{r, echo = F, eval = T} # Evaluation der F-Teststatistik p_0 = 2 # Anzahl Parameter reduziertes Modell p_1 = p - p_0 # Anzahl zusätzlicher Parameter im vollst. Modell X_0 = X[,1:p_0] # Designmatrix reduzierters Modell beta_hat_0 = solve(t(X_0) %*% X_0) %*% t(X_0) %*% y # Betaparameterschätzer reduziertes Modell beta_hat = solve(t(X) %*% X ) %*% t(X) %*% y # Betaparameterschätzer vollständiges Modell eps_hat_0 = y - X_0 %*% beta_hat_0 # Residuenvektor reduziertes Modell eps_hat = y - X %*% beta_hat # Residuenvektor vollständiges Modell eh0_eh0 = t(eps_hat_0) %*% eps_hat_0 # residuelle Quadratsumme reduziertes Modell eh_eh = t(eps_hat) %*% eps_hat # residuelle Quadratsumme vollständiges Modell sigsqr_hat = eh_eh/(n-p) # Varianzparameterschätzer vollständiges Modell f = ((eh0_eh0-eh_eh)/p_1)/sigsqr_hat # F-Statistik pval = 1 - pf(f,p_1,n-p) # p-Wert # Ausgabe der Ergebnisse R = data.frame(p_1, n-p, f, pval) rownames(R) = c("Weight") colnames(R) = c("numerator DFs", "denominator DFs", "F-value", "Pr(>F)") print(R) ``` # Anwendung/Praxis \small Kovarianzanalyse: T-Test auf Interaktion von Raucherstatus und Muttergewicht \vspace{2mm} \footnotesize ```{r, echo = T, eval = T} # Kovarianzanalyse D$Weight = D$Weight - mean(D$Weight) # Kovariate mittelwertzentrieren y_1 = D$Birth_weight[D$Smoker=="no"] # Datenpunkte Gr. 1 y_2 = D$Birth_weight[D$Smoker=="yes"] # Datenpunkte Gr. 2 x_1 = D$Weight[D$Smoker=="no"] # Kovariatenwerte Gr. 1 x_2 = D$Weight[D$Smoker=="yes"] # Kovariatenwerte Gr. 2 n_1 = length(y_1) # Anzahl Datenpunkte Gr. 1 n_2 = length(y_2) # Anzahl Datenpunkte Gr. 2 n = n_1 + n_2 # Anzahl Datenpunkte p = 4 # Anzahl Regressoren y = matrix(c(y_1, y_2), nrow = n) # Datenvektor x = matrix(c(x_1, x_2), nrow = n) # Kovariatenvektor X = matrix(c(rep(1,n_1), rep(1,n_2), # \mu_0 Regressor rep(0,n_1), rep(1,n_2), # \alpha_2 Regressor x, # \beta_0 Regressor x*(c(rep(0,n_1), rep(1,n_2)))), # \gamma_2 Regressor nrow = n) # Anzahl Zeilen der Designmatrix c = matrix(c(0,0,0,1), nrow = p) # Kontrastgewichtsvektor ``` ```{r, echo = F, eval = T} # Evaluation der T-Teststatistik beta_hat = solve(t(X) %*% X) %*% t(X) %*% y # Betaparameterschätzer eps_hat = y - X %*% beta_hat # Residuenvektor sigsqr_hat = (t(eps_hat) %*% eps_hat)/(n-p) # Varianzparameterschätzer c = matrix(c(0,0,0,1), nrow = p) # Kontrastgewichtsvektor t_num = t(c) %*% beta_hat # Zähler der T-Statistik ste = sqrt(sigsqr_hat*t(c) %*% solve(t(X) %*%X ) %*% c)# Nenner der T-Statistik tee = t_num/ste # T-Statistik pval = 2*(1 - pt(abs(tee),n-p)) # p-Wert # Ausgabe der Ergebnisse R = data.frame(t_num, ste, tee, pval) rownames(R) = c("Smoking x Weight") colnames(R) = c("Estimate", "Std. Error", "t-value", "Pr(>|t|)") print(R) ``` # Anwendung/Praxis \small Datensatz: Geburtsgewicht und Muttergewicht, getrennt nach Raucherstatus ```{r, echo = F, eval = F} # Daten extrahieren filename = "Daten/birth_weights.csv" # Dateiname D = read.csv(filename) # Datenframe y = D$Birth_weight # abhängige Variable f = D$Smoker # kategorische UV x = D$Weight # parametrische UV # Modellschätzung y_1 = y[f=="no"] # Datenpunkte Gr. 1 y_2 = y[f=="yes"] # Datenpunkte Gr. 2 x_1 = x[f=="no"] # Kovariatenwerte Gr. 1 x_2 = x[f=="yes"] # Kovariatenwerte Gr. 2 n_1 = length(y_1) # Anzahl Datenpunkte Gr. 1 n_2 = length(y_2) # Anzahl Datenpunkte Gr. 2 n = n_1 + n_2 # Anzahl Datenpunkte p = 4 # Anzahl Regressoren y = matrix(c(y_1, y_2), nrow = n) # Datenvektor x = matrix(c(x_1, x_2), nrow = n) # Kovariatenvektor X = matrix(c(rep(1,n_1), rep(1,n_2), # \mu_0 Regressor rep(0,n_1), rep(1,n_2), # \alpha_2 Regressor x, # \beta_0 Regressor x*(c(rep(0,n_1), rep(1,n_2)))), # \gamma_2 Regressor nrow = n) # Anzahl Zeilen der Designmatrix beta_hat = solve(t(X) %*% X) %*% t(X) %*% y # Betaparameterschätzer vollständiges Modell # Visualisierung library(latex2exp) par( family = "sans", mfcol = c(1,2), pty = "s", bty = "l", lwd = 1, las = 1, mgp = c(2,1,0), xaxs = "i", yaxs = "i", font.main = 1, cex = 1, cex.main = 1) # Punktwolken plot(x_1, y_1, pch = 16, xlab = "Muttergewicht", ylab = "Geburtsgewicht", xlim = c(35,115), ylim = c(1,5)) points(x_2, y_2, pch = 16, col = "gray80") # prädizierte Daten y_hat = X %*% beta_hat lines(x_1, y_hat[1:n_1], col = "black") lines(x_2, y_hat[(n_1+1):n], col = "gray80") legend("topleft", c("Nichtraucherin", "Raucherin"), lty = 0, pch = 16, col = c("black", "gray80"), bty = "n", cex = 1, x.intersp = 1) # adjustierte Daten y_adj = y - X %*% matrix(c(0, 0, beta_hat[3], beta_hat[4]), nrow = 4) groupmeans = c(mean(y_adj[1:n_1]), mean(y_adj[(n_1+1):n])) groupstds = c(sd(y_adj[1:n_1]), sd(y_adj[(n_1+1):n])) names(groupmeans) = c("Nichtraucherin", "Raucherin") bp = barplot(groupmeans, ylim = c(0,5), xlim = c(-0.5,3), col = c("black", "gray90"), ylab = "Geburtsgewicht", xlab = "Studiengruppe", main = "adjustierte Daten") arrows( x0 = bp, y0 = groupmeans - groupstds, x1 = bp, y1 = groupmeans + groupstds, code = 3, angle = 90, length = 0.05) # Speichern dev.copy2pdf( file = "Abbildungen/birth_weights_2a.pdf", width = 9, height = 4.5) ``` \center ```{r, echo = F, out.width = "100%"} knitr::include_graphics("Abbildungen/birth_weights_2a.pdf") ``` # Anwendung/Praxis \small Datensatz: Geburtsgewicht und Muttergewicht (mittelwertzentriert), getrennt nach Raucherstatus ```{r, echo = F, eval = F} # Daten extrahieren filename = "Daten/birth_weights.csv" # Dateiname D = read.csv(filename) # Datenframe y = D$Birth_weight # abhängige Variable f = D$Smoker # kategorische UV x = D$Weight # parametrische UV x = x - mean(x) # Mittelwertzentrierung # Modellschätzung y_1 = y[f=="no"] # Datenpunkte Gr. 1 y_2 = y[f=="yes"] # Datenpunkte Gr. 2 x_1 = x[f=="no"] # Kovariatenwerte Gr. 1 x_2 = x[f=="yes"] # Kovariatenwerte Gr. 2 n_1 = length(y_1) # Anzahl Datenpunkte Gr. 1 n_2 = length(y_2) # Anzahl Datenpunkte Gr. 2 n = n_1 + n_2 # Anzahl Datenpunkte p = 4 # Anzahl Regressoren y = matrix(c(y_1, y_2), nrow = n) # Datenvektor x = matrix(c(x_1, x_2), nrow = n) # Kovariatenvektor X = matrix(c(rep(1,n_1), rep(1,n_2), # \mu_0 Regressor rep(0,n_1), rep(1,n_2), # \alpha_2 Regressor x, # \beta_0 Regressor x*(c(rep(0,n_1), rep(1,n_2)))), # \gamma_2 Regressor nrow = n) # Anzahl Zeilen der Designmatrix beta_hat = solve(t(X) %*% X) %*% t(X) %*% y # Betaparameterschätzer vollständiges Modell # Visualisierung library(latex2exp) par( family = "sans", mfcol = c(1,2), pty = "s", bty = "l", lwd = 1, las = 1, mgp = c(2,1,0), xaxs = "i", yaxs = "i", font.main = 1, cex = 1, cex.main = 1) # Punktwolken plot(x_1, y_1, pch = 16, xlab = "Muttergewicht (mittelwertzentriert)", ylab = "Geburtsgewicht", xlim = c(-30,50), ylim = c(1,5)) points(x_2, y_2, pch = 16, col = "gray80") # prädizierte Daten y_hat = X %*% beta_hat lines(x_1, y_hat[1:n_1], col = "black") lines(x_2, y_hat[(n_1+1):n], col = "gray80") legend("topleft", c("Nichtraucherin", "Raucherin"), lty = 0, pch = 16, col = c("black", "gray80"), bty = "n", cex = 1, x.intersp = 1) # adjustierte Daten y_adj = y - X %*% matrix(c(0, 0, beta_hat[3], beta_hat[4]), nrow = 4) groupmeans = c(mean(y_adj[1:n_1]), mean(y_adj[(n_1+1):n])) groupstds = c(sd(y_adj[1:n_1]), sd(y_adj[(n_1+1):n])) names(groupmeans) = c("Nichtraucherin", "Raucherin") bp = barplot(groupmeans, ylim = c(0,5), xlim = c(-0.5,3), col = c("black", "gray90"), ylab = "Geburtsgewicht", xlab = "Studiengruppe", main = "adjustierte Daten") arrows( x0 = bp, y0 = groupmeans - groupstds, x1 = bp, y1 = groupmeans + groupstds, code = 3, angle = 90, length = 0.05) # Speichern dev.copy2pdf( file = "Abbildungen/birth_weights_2b.pdf", width = 9, height = 4.5) ``` \center ```{r, echo = F, out.width = "100%"} knitr::include_graphics("Abbildungen/birth_weights_2b.pdf") ``` # \large \setstretch{3} \vfill Vorbemerkungen Additive Kovarianzanalyse Kovarianzanalyse mit Interaktion Anwendung/Praxis **Selbstkontrollfragen** \vfill # Selbstkontrollfragen \footnotesize \setstretch{2} 1. Erläutern Sie die Begriffe der Gesamt-/Primär-/Sekundär- und Residualvaribilität. 1. Geben Sie jeweils zwei Beispiele für parametrische bzw. faktorielle ALM-Designs an. 1. Geben Sie die Definition des Modells der additiven einfaktoriellen Kovarianzanalyse (EKA) wieder. 1. Erläutern Sie die Bedeutung der Parameter $\mu_0, \alpha_i$ und $\beta_0$ im Modell der additiven EKA. 1. Geben Sie die Designmatrixform des Modells der additiven EKA für $I := 2$ und $n_1 = n_2 = 3$ an. 1. Erläutern Sie den Unterschied zwischen dem Modell der einfaktoriellen Varianzanalyse und dem Modell der additiven einfaktoriellen Kovarianzanalyse. 1. Geben Sie die Definition des Modells der einfaktoriellen Kovarianzanalyse (EKA) mit Interaktion wieder. 1. Erläutern Sie die Bedeutung der Parameter $\mu_0, \alpha_i, \beta_0$ und $\gamma_i$ im Modell der EKA mit Interaktion. 1. Geben Sie die Designmatrixform des Modells der EKA mit Interaktion für $I := 2$ und $n_1 = n_2 = 3$ an. 1. Erläutern Sie den Unterschied zwischen dem Modell der additiven einfaktoriellen Kovarianzanalyse und dem Modell der einfaktoriellen Kovarianzanalyse mit Interaktion.