class: center, middle, inverse, title-slide # Lineare Modelle ### Statistik mit R
The R Bootcamp
### September 2020 --- layout: true <div class="my-footer"> <span style="text-align:center"> <span> <img src="https://raw.githubusercontent.com/therbootcamp/therbootcamp.github.io/master/_sessions/_image/by-sa.png" height=14 style="vertical-align: middle"/> </span> <a href="https://therbootcamp.github.io/"> <span style="padding-left:82px"> <font color="#7E7E7E"> www.therbootcamp.com </font> </span> </a> <a href="https://therbootcamp.github.io/"> <font color="#7E7E7E"> Statistik mit R | September 2020 </font> </a> </span> </div> --- # Lineare Modelle .pull-left4[ <ul> <li class="m1"><span>Die <high>meisten inferenzstatistischen Tests</high> gehören zur Klasse der linearen Modelle.</span></li> <li class="m2"><span>Beispiele</span></li> <ul class="level"> <li><span><high>Regression</high></li></span> <li><span><high>t-Test<high></li></span> <li><span><high>Varianzanalyse (ANOVA)</high></li></span> <li><span>Mediationsanalyse</li></span> <li><span>Faktorenanalyse</li></span> <li><span>Strukturgleichungsmodelle</li></span> </ul> </ul> ] .pull-righ5[ <p align = "center"> <img src="image/linear.png" ><br> <font style="font-size:10px">from <a href="https://lifehacker.com/four-common-statistical-misconceptions-you-should-avoid-906056582">lifehacker.com</a></font> </p> ] --- # Korrelation .pull-left4[ <ul> <li class="m1"><span>Korrelationsmasse drücken aus, <high>wie stark Veränderungen</high> in einer Variable <high>mit Veränderungen</high> in einer anderen Variable <high>einhergehen</high>.</span></li> <li class="m2"><span>Beispiele</span></li> <ul class="level"> <li><span><high>Produkt-Moment Korrelation</high></span></li> <li><span>Rangkorrelation</span></li> <li><span>Phi-koeffizient</span></li> </ul> </ul> <br> `$$\large r_{xy} = \frac{\sum_i (x_i - \bar{x})(y_i - \bar{y})}{(n-1)s_xs_y}$$` ] .pull-right5[ <img src="LinearModelsI_files/figure-html/unnamed-chunk-2-1.png" style="display: block; margin: auto;" /> ] --- # Korrelation .pull-left4[ <ul> <li class="m1"><span>Korrelationsmasse drücken aus, <high>wie stark Veränderungen</high> in einer Variable <high>mit Veränderungen</high> in einer anderen Variable <high>einhergehen</high>.</span></li> <li class="m2"><span>Beispiele</span></li> <ul class="level"> <li><span><high>Produkt-Moment Korrelation</high></span></li> <li><span>Rangkorrelation</span></li> <li><span>Phi-koeffizient</span></li> </ul> </ul> <br> `$$\large r_{xy} = \frac{\sum_i (x_i - \bar{x})(y_i - \bar{y})}{(n-1)s_xs_y}$$` ] .pull-right5[ <img src="LinearModelsI_files/figure-html/unnamed-chunk-3-1.png" style="display: block; margin: auto;" /> ] --- # Lineare Regression .pull-left4[ <ul> <li class="m1"><span>Die lineare Regression ist eine <high>gerichtete Zusammenhangsanalyse</high>.</span></li> <li class="m2"><span>Ein <high>Kriterium</high> soll durch einen (einfach) oder mehrere (multiple) <high>Prädiktoren</high> modelliert werden.</span></li> <li class="m3"><span>Getestet wird ob und wie sehr der Prädiktor / die Prädiktoren <high>das Kriterium erklären</high>.</span></li> </ul> </ul> ] .pull-righ5[ <p align = "center"> <img src="image/linear.png" ><br> <font style="font-size:10px">from <a href="https://lifehacker.com/four-common-statistical-misconceptions-you-should-avoid-906056582">lifehacker.com</a></font> </p> ] --- # Einfache lineare Regression .pull-left4[ <ul> <li class="m1"><span>Wie gut sagt <high>eine lineare Funktion des Prädiktors (x)</high> das Krierium (y) vorher?</span></li> <li class="m2"><span>Parameter:</span></li> <ul class="level"> <li><span>β<sub>0</sub>: <high>Intercept</high> oder y-Achsenabschnitt</span></li> <li><span>β<sub>1</sub>: <high>Slope</high> oder Steigung</span></li> </ul> </ul> <br> `$$\Large \hat{y} = b_0 + b_1 * x$$` ] .pull-right5[ <img src="LinearModelsI_files/figure-html/unnamed-chunk-4-1.png" style="display: block; margin: auto;" /> ] --- # Einfache lineare Regression .pull-left4[ <ul> <li class="m1"><span>Wie gut sagt <high>eine lineare Funktion des Prädiktors (x)</high> das Krierium (y) vorher?</span></li> <li class="m2"><span>Parameter:</span></li> <ul class="level"> <li><span>β<sub>0</sub>: <high>Intercept</high> oder y-Achsenabschnitt</span></li> <li><span>β<sub>1</sub>: <high>Slope</high> oder Steigung</span></li> </ul> </ul> <br> `$$\Large \hat{Nächte} = b_0 + b_1 * Äquiv.eink.$$` ] .pull-right5[ <img src="LinearModelsI_files/figure-html/unnamed-chunk-5-1.png" style="display: block; margin: auto;" /> ] --- # Parameterschätzung .pull-left4[ <ul> <li class="m1"><span>Die <high>Parameter</high>, β<sub>0</sub> und β<sub>1</sub> müssen aus den Daten <high>geschätzt</high> werden.</span></li> <li class="m2"><span>Die Schätzung basiert auf dem <high>Kleinsten-Quadrate Kriterium</high>.</span></li> </ul> </ul> <br> `$$\Large b_1 = r_{xy} \cdot \frac{s_y}{s_x}$$` `$$\Large b_0 = \bar{y} + b_1 \cdot \bar{x}$$` ] .pull-right5[ <img src="LinearModelsI_files/figure-html/unnamed-chunk-6-1.png" style="display: block; margin: auto;" /> ] --- # Residuen .pull-left4[ <ul> <li class="m1"><span>Die Residuen e sind der <high>Fehler</high> den die Regreessionsfunktion in der <high>Vorhersage ŷ des Kriteriums</high> macht.</span></li> <li class="m2"><span>Mittels der Residuen kann die <high>Qualität der Vorhersage</high> evaluaiert werden.</span></li> </ul> </ul> <br> `$$\Large e = y - \hat{y}$$` ] .pull-right5[ <img src="LinearModelsI_files/figure-html/unnamed-chunk-7-1.png" style="display: block; margin: auto;" /> ] --- # Kleinste-Quadrate Kriterium .pull-left4[ <ul> <li class="m1"><span>Die Qualität einer Regression wird über die <high>Summe der Quadrate der Residuen bestimmt</high>.</span></li> <li class="m2"><span>Die Parameter <b>b</b>=[b<sub>0</sub>, b<sub>1</sub>] werden so gewählt, so dass die <high>Quadrate der Residuen minimal sind</high>.</span></li> </ul> </ul> <br> `$$\large \mathbf{b} = \underset{\mathbf{b}}{\operatorname{argmin}} \sum_i e_{\mathbf{b}}^2$$` ] .pull-right5[ <img src="LinearModelsI_files/figure-html/unnamed-chunk-8-1.png" style="display: block; margin: auto;" /> ] --- # Kleinste-Quadrate Kriterium .pull-left4[ <ul> <li class="m1"><span>Die Qualität einer Regression wird über die <high>Summe der Quadrate der Residuen bestimmt</high>.</span></li> <li class="m2"><span>Die Parameter <b>b</b>=[b<sub>0</sub>, b<sub>1</sub>] werden so gewählt, so dass die <high>Quadrate der Residuen minimal sind</high>.</span></li> </ul> </ul> <br> `$$\large \mathbf{b} = \underset{\mathbf{b}}{\operatorname{argmin}} \sum_i e_{\mathbf{b}}^2$$` ] .pull-right5[ <img src="image/regression_fit.gif"> ] --- # R-Quadrat .pull-left4[ <ul> <li class="m1"><span>Die Qualität einer Regression wird über die <high>Summe der Quadrate der Residuen bestimmt</high>.</span></li> <li class="m2"><span>Der inverse Wert, d.h., eins minus die Summe der Residualquadrate, is als R-Quadrat definiert.</span></li> </ul> </ul> <br> `$$\large R^2 = 1 - \frac{\sum_i e^2}{\sum_i (y - \bar{y})^2}\\ \;\;\;\;\; \large =1 - \frac{\sum_i (y - \hat{y})^2}{\sum_i (y - \bar{y})^2}$$` ] .pull-right5[ <img src="LinearModelsI_files/figure-html/unnamed-chunk-9-1.png" style="display: block; margin: auto;" /> ] --- # Multiple lineare regression .pull-left4[ <ul> <li class="m1"><span>Wie beschreiben <high>mehrere linear verknüpfte Prädiktoren (x) zusammen</high> das Krierium (y)?</span></li> <li class="m2"><span>Parameter:</span></li> <ul class="level"> <li><span>β<sub>0</sub>: <high>Intercept</high> oder y-Achsenabschnitt</span></li> <li><span>β<sub>1</sub>: <high>Slope</high> für x<sub>1</sub></span></li> <li><span>β<sub>2</sub>: <high>Slope</high> für x<sub>2</sub></span></li> <li><span>β<sub>k</sub>: <high>Slope</high> für x<sub>k</sub></span></li> </ul> </ul> <br> `$$\Large \hat{y} = b_0 + b_1 \cdot x_1 + ... b_k \cdot x_k$$` ] .pull-right5[
] --- # Parameterschätzungen .pull-left4[ <ul> <li class="m1"><span>Die Schätzung basiert auf dem <high>Kleinsten-Quadrate Kriterium</high>.</span></li> </ul> </ul> <br> `$$\Large b_1 = \frac{r_{x_1y}-r_{x_2y}r_{x_2x_1}}{1-r_{x_2x_1}^2} \cdot \frac{s_y}{s_{x_1}}$$` `$$\Large b_2 = \frac{r_{x_2y}-r_{x_1y}r_{x_1x_2}}{1-r_{x_1x_2}^2} \cdot \frac{s_y}{s_{x_2}}$$` `$$\Large b_0 = \bar{y} + b_1 \cdot \bar{x_1} + b_2 \cdot \bar{x_2}$$` ] .pull-right5[
] --- # Datenmodell .pull-left4[ <ul> <li class="m1"><span>Gemäss dem Datenmodell der Regression folgen die Kriteriumswerte einer <high>Normalverteilung um den vorhergesagten Wert</high></span></li> </ul> </ul> <br> `$$\Large y \sim \mathcal{N}(\hat{y}, \sigma_e)$$` <br> `$$\large p(x|\mu, \sigma) = \frac{1}{\sigma \sqrt 2\pi}e^{-(x-\mu)/2\sigma^2}$$` ] .pull-right5[ <img src="LinearModelsI_files/figure-html/unnamed-chunk-12-1.png" style="display: block; margin: auto;" /> ] --- # Teststatistik .pull-left4[ <ul> <li class="m1"><span>Die Betagewichte folgen einer <high>t-Verteilung</high>.</span></li> <li class="m2"><span>Die Verteilung hängt von <high>Freiheitsgraden ν</high> ab.</span></li> </ul> </ul> <br> `$$\Large t_\nu=\frac{\beta_j}{\sigma_{\beta_j}}$$` <br> `$$\Large \nu = n - k - 1$$` ] .pull-right5[ <img src="LinearModelsI_files/figure-html/unnamed-chunk-13-1.png" style="display: block; margin: auto;" /> ] --- # Standardfehler .pull-left4[ <ul> <li class="m1"><span>Der Standardfehler σ<sub>β</sub> bezieht die <high>Interkorrelation aller Prädiktoren</high> mit ein.</span></li> </ul> </ul> <br> <p align="center"> <img src="image/vif.png"> </p> ] .pull-right5[ <img src="LinearModelsI_files/figure-html/unnamed-chunk-14-1.png" style="display: block; margin: auto;" /> ] --- # t-Test .pull-left4[ <ul> <li class="m1"><span>Der Test vergleicht den beobachteten t-Wert mit entweder...</span></li> <ul> <li><span>Einseitig: t<sub>α</sub></span></li> <li><span>Zweiseitig: t<sub>α/2</sub></span></li> </ul> </ul> </ul> <br> `$$\Large t_\nu=\frac{\beta_j}{\sigma_{\beta_j}}>t_{\nu,\alpha}$$` <br> `$$\Large t_\nu=\frac{\beta_j}{\sigma_{\beta_j}}>t_{\nu,\frac{\alpha}{2}}$$` ] .pull-right5[ <img src="LinearModelsI_files/figure-html/unnamed-chunk-15-1.png" style="display: block; margin: auto;" /> ] --- class: middle, center <h1><a href="">Lineare Modelle mit R</a></h1> --- # Formulas .pull-left4[ <ul> <li class="m1"><span>Modelle in R werden über einen <highm>formula</highm> Ausdruck definiert.</span></li> </ul> <font style="font-size:20px"><u>Syntax</u></p> <table style="cellspacing:0; cellpadding:0; border:none; padding-top:10px" width=100%> <col width="40%"> <col width="60%"> <tr> <td bgcolor="white"> <b>Funktion</b> </td> <td bgcolor="white"> <b>Beschreibung</b> </td> </tr> <tr> <td bgcolor="white"> <mono>+</mono> / <mono>-</mono> </td> <td bgcolor="white"> Ergänze / eliminiere Prädiktor. </td> </tr> <tr> <td bgcolor="white"> <mono>*</mono> / <mono>:</mono> </td> <td bgcolor="white"> Ergänze Interaktionen mit/ohne Haupteffekte. </td> </tr> <tr> <td bgcolor="white"> <mono>1</mono> / <mono>0</mono> </td> <td bgcolor="white"> Ergänze / eliminiere Intercept </td> </tr> <tr> <td bgcolor="white"> <mono>.</mono> </td> <td bgcolor="white"> Ergänze alle Prädiktoren. </td> </tr> </table> ] <br> .pull-right5[ <p align="center"> <img src="image/mod.png"> </p> ] --- # <mono>lm()</mono> .pull-left35[ <font style="font-size:20px"><u>Fitting</u></p> <table style="cellspacing:0; cellpadding:0; border:none; padding-top:10px" width=100%> <col width="40%"> <col width="60%"> <tr> <td bgcolor="white"> <b>Funktion</b> </td> <td bgcolor="white"> <b>Beschreibung</b> </td> </tr> <tr> <td bgcolor="white"> <mono>lm(formula, data)</mono> </td> <td bgcolor="white"> Fitte ein <high>lineares Modell</high>. </td> </tr> </table> <font style="font-size:20px"><u>Evaluation</u></p> <table style="cellspacing:0; cellpadding:0; border:none; padding-top:10px" width=100%> <col width="40%"> <col width="60%"> <tr> <td bgcolor="white"> <b>Funktion</b> </td> <td bgcolor="white"> <b>Beschreibung</b> </td> </tr> <tr> <td bgcolor="white"> <mono>summary()</mono> </td> <td bgcolor="white"> Erhalte <high>Testergebnisse</high>. </td> </tr> <tr> <td bgcolor="white"> <mono>coef(mod)</mono> </td> <td bgcolor="white"> Erhalte <high>Koeffizienten</high>. </td> </tr> <tr> <td bgcolor="white"> <mono>predict(mod)</mono>, <mono>resid(mod)</mono> </td> <td bgcolor="white"> Erhalte <high>gefittete Werte</high> / <high>Residuen</high>. </td> </tr> </table> ] .pull-right6[ ```r # Fitte Model naechte_lm <- lm( formula = Nächte ~ Äquivalenzeinkommen + Bevölkerung, data = naechte) ``` ] --- # <mono>lm()</mono> .pull-left35[ <font style="font-size:20px"><u>Fitting</u></p> <table style="cellspacing:0; cellpadding:0; border:none; padding-top:10px" width=100%> <col width="40%"> <col width="60%"> <tr> <td bgcolor="white"> <b>Funktion</b> </td> <td bgcolor="white"> <b>Beschreibung</b> </td> </tr> <tr> <td bgcolor="white"> <mono>lm(formula, data)</mono> </td> <td bgcolor="white"> Fitte ein <high>lineares Modell</high>. </td> </tr> </table> <font style="font-size:20px"><u>Evaluation</u></p> <table style="cellspacing:0; cellpadding:0; border:none; padding-top:10px" width=100%> <col width="40%"> <col width="60%"> <tr> <td bgcolor="white"> <b>Funktion</b> </td> <td bgcolor="white"> <b>Beschreibung</b> </td> </tr> <tr> <td bgcolor="white"> <mono>summary()</mono> </td> <td bgcolor="white"> Erhalte <high>Testergebnisse</high>. </td> </tr> <tr> <td bgcolor="white"> <mono>coef(mod)</mono> </td> <td bgcolor="white"> Erhalte <high>Koeffizienten</high>. </td> </tr> <tr> <td bgcolor="white"> <mono>predict(mod)</mono>, <mono>resid(mod)</mono> </td> <td bgcolor="white"> Erhalte <high>gefittete Werte</high> / <high>Residuen</high>. </td> </tr> </table> ] .pull-right6[ ```r # Printe naechte_lm naechte_lm ``` ``` ## ## Call: ## lm(formula = Nächte ~ Äquivalenzeinkommen + Bevölkerung, data = naechte) ## ## Coefficients: ## (Intercept) Äquivalenzeinkommen Bevölkerung ## -1.99e+03 1.17e-01 8.33e-02 ``` ] --- # <mono>summary()</mono> .pull-left35[ <font style="font-size:20px"><u>Fitting</u></p> <table style="cellspacing:0; cellpadding:0; border:none; padding-top:10px" width=100%> <col width="40%"> <col width="60%"> <tr> <td bgcolor="white"> <b>Funktion</b> </td> <td bgcolor="white"> <b>Beschreibung</b> </td> </tr> <tr> <td bgcolor="white"> <mono>lm(formula, data)</mono> </td> <td bgcolor="white"> Fitte ein <high>lineares Modell</high>. </td> </tr> </table> <font style="font-size:20px"><u>Evaluation</u></p> <table style="cellspacing:0; cellpadding:0; border:none; padding-top:10px" width=100%> <col width="40%"> <col width="60%"> <tr> <td bgcolor="white"> <b>Funktion</b> </td> <td bgcolor="white"> <b>Beschreibung</b> </td> </tr> <tr> <td bgcolor="white"> <mono>summary()</mono> </td> <td bgcolor="white"> Erhalte <high>Testergebnisse</high>. </td> </tr> <tr> <td bgcolor="white"> <mono>coef(mod)</mono> </td> <td bgcolor="white"> Erhalte <high>Koeffizienten</high>. </td> </tr> <tr> <td bgcolor="white"> <mono>predict(mod)</mono>, <mono>resid(mod)</mono> </td> <td bgcolor="white"> Erhalte <high>gefittete Werte</high> / <high>Residuen</high>. </td> </tr> </table> ] .pull-right6[ ```r # Zeige Testergebnisse summary(naechte_lm) ``` ``` ## ## Call: ## lm(formula = Nächte ~ Äquivalenzeinkommen + Bevölkerung, data = naechte) ## ## Residuals: ## Min 1Q Median 3Q Max ## -5403 -795 144 672 10721 ## ## Coefficients: ## Estimate Std. Error t value Pr(>|t|) ## (Intercept) -1.99e+03 1.12e+03 -1.78 0.085 . ## Äquivalenzeinkommen 1.17e-01 6.32e-02 1.86 0.073 . ## Bevölkerung 8.33e-02 1.67e-02 4.99 2.2e-05 *** ## --- ## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 ``` ] --- # <mono>predict()</mono> .pull-left35[ <font style="font-size:20px"><u>Fitting</u></p> <table style="cellspacing:0; cellpadding:0; border:none; padding-top:10px" width=100%> <col width="40%"> <col width="60%"> <tr> <td bgcolor="white"> <b>Funktion</b> </td> <td bgcolor="white"> <b>Beschreibung</b> </td> </tr> <tr> <td bgcolor="white"> <mono>lm(formula, data)</mono> </td> <td bgcolor="white"> Fitte ein <high>lineares Modell</high>. </td> </tr> </table> <font style="font-size:20px"><u>Evaluation</u></p> <table style="cellspacing:0; cellpadding:0; border:none; padding-top:10px" width=100%> <col width="40%"> <col width="60%"> <tr> <td bgcolor="white"> <b>Funktion</b> </td> <td bgcolor="white"> <b>Beschreibung</b> </td> </tr> <tr> <td bgcolor="white"> <mono>summary()</mono> </td> <td bgcolor="white"> Erhalte <high>Testergebnisse</high>. </td> </tr> <tr> <td bgcolor="white"> <mono>coef(mod)</mono> </td> <td bgcolor="white"> Erhalte <high>Koeffizienten</high>. </td> </tr> <tr> <td bgcolor="white"> <mono>predict(mod)</mono>, <mono>resid(mod)</mono> </td> <td bgcolor="white"> Erhalte <high>gefittete Werte</high> / <high>Residuen</high>. </td> </tr> </table> ] .pull-right6[ ```r # Zeige gefittete Werte (only first 5) predict(naechte_lm) # Zeige Residualwerte (only first 10) resid(naechte_lm) ``` ``` ## 1 2 3 4 5 ## 1392.5 -605.0 961.1 7338.0 -490.8 ``` ``` ## 1 2 3 4 5 ## 196.5 895.0 -411.1 10721.0 541.8 ``` ] --- class: middle, center <h1><a href="https://therbootcamp.github.io/SmR_2020Sep/_sessions/LinearModelsI/LinearModelsI_practical.html">Practical</a></h1>