Bei einer einfachen linearen Regression versuchen wir zu vorgegebenen Datenpunkten \((x_1, y_1), \cdots (x_n, y_n)\) die Parameter einer möglichst passenden Gerade \(g(x)=\beta_0 + \beta_1 \cdot x\) zu schätzen.
Die Schätzung des y-Achsenabschnitts \(\hat\beta_0\) und der Steigung \(\hat\beta_1\) erfolgt dabei algebraisch exakt mittels:
Dabei sind \(\bar{x}\) bzw. \(\bar{y}\) die Mittelwerte und \(s_x\) bzw. \(s_y\) die Standardabweichungen der Datenpunkte \(x_i\) bzw. \(y_i\); darüberhinaus ist \(r_{x,y}\) der Korrelationskoeffizient der Datenpunkte.
Beim studentisieren werden die Datenpunkte bzgl. des Mittelwertes zentriert und bzgl der Standardabweichung normiert:
Was passiert nun durch eine solche Studentisierung (oft auch z-Transformation genannt) mit den geschätzen Parametern?
Die Mittelwerte \(\bar{x}^{stud}\) und \(\bar{y}^{stud}\) werden zu Null. Die Standardabweichungen \(s_{x^{stud}}\) und \(s_{y^stud}\) werden zur Eins:
In Worten zusammengefasst: Im studentisierten Fall ist
der y-Achsenabschnitt immer 0 und
die Steigung immer ein Wert zwischen -1 und 1
Beispiel: mtcars- Daten
Auf Grundlage der Datentabelle mtcars wollen wir den linearer Zusammenhang zwischen dem Verbrauch (in Meilen pro Gallone mpg) und der Leistung (Pferdestärke hp) modellieren.1
library(mosaic)# Wir nehmen die Datentabelle 'mtcars':mtcars %>%select(hp, mpg) -> dt# Ein kurzer Blick aus die Daten:df_stats( ~ hp + mpg, mean, sd, data = dt)#> response mean sd#> 1 hp 146.68750 68.562868#> 2 mpg 20.09062 6.026948# Wir vergleichen den Verbrauch (mpg, miles per gallon) # mit den Pferdestärken (hp) mit Hilfe eines Streudiagramms.# Dazu berechnen wir vorab die Mittelwertemean_hp <-mean(~ hp, data = dt)mean_mpg <-mean(~ mpg, data = dt)# und berechnen nun die Schätzwerte für die Regressionsgeradebeta_1 <-cov(mpg ~ hp, data = dt) /var(~ hp, data = dt)beta_0 <- mean_mpg - beta_1 * mean_hp# schliesslich zeichnen alles in das Streudiagramm ein:gf_point(mpg ~ hp, data = dt) %>%gf_hline(yintercept =~ mean_mpg, color ="grey60", linetype ="dashed") %>%gf_vline(xintercept =~ mean_hp, color ="grey60", linetype ="dashed") %>%gf_point(mean_mpg ~ mean_hp, color ="red", size =5, alpha =0.2) %>%gf_abline(slope =~ beta_1, intercept =~beta_0, color ="dodgerblue") %>%gf_lims(y =c(5,35))
Die Funktionsvorschrift für die (blaue) Regressionsgerade lautet:
\[
\begin{aligned}
\hat{y} &= \hat\beta_0 + \hat\beta_1 \cdot x \\
&\approx 30.0988605 -0.0682283 \cdot x \\
&\approx 30.099 -0.068 \cdot x
\end{aligned}
\]
Studentisieren wir nun die mpg und hp Werte. In R können wir das mit der Funktion ‘zscore()’2 wie folgt machen:
dt %>%mutate(hp_stud =zscore(hp),mpg_stud =zscore(mpg) ) -> dt# Ein kurzer Blick aus die Daten:df_stats( ~ hp_stud + mpg_stud, mean, sd, data = dt)#> response mean sd#> 1 hp_stud -4.857226e-17 1#> 2 mpg_stud 4.336809e-17 1
Der Grund für die kleinen Abweichungen von der Null bei den Mittelwerten sind unumgängliche Rundungsfehler, die der Computer macht!
# Wir "berechnen" die Mittelwerte:mean_hp_stud <-0# = mean(~ hp_stud, data = dt)mean_mpg_stud <-0# = mean(~ mpg_stud, data = dt)# Berechnen wir nun die Schätzwerte für die Regressionsgerade:beta_1_stud <-cov(mpg_stud ~ hp_stud, data = dt)beta_0_stud <-0# = mean_mpg_stud - beta_1_stud * mean_hp_stud# und zeichnen diese in unser Streudiagramm ein:gf_point(mpg_stud ~ hp_stud, data = dt) %>%gf_hline(yintercept =~ mean_mpg_stud, color ="grey60", linetype ="dashed") %>%gf_vline(xintercept =~ mean_hp_stud, color ="grey60", linetype ="dashed") %>%gf_point(mean_mpg_stud ~ mean_hp_stud, color ="red", size =5, alpha =0.2) %>%gf_abline(slope =~ beta_1_stud, intercept =~beta_0_stud, color ="dodgerblue") %>%gf_lims(y =c(-2,2))
Die Regressionsgerade im studentisierten Problem lautet nun: