class: center, middle, inverse, title-slide # Régression linéaire ## simple ### Marie-Pierre Etienne ###
marie-pierre.etienne@agrocampus-ouest.fr
### 2021/11/19 (updated: 2023-09-08) --- name: intro <!-- F1D763 --> <!-- F7A913 --> <!-- C94326 --> <!-- 1F908E --> <!-- 33658A --> # Introduction -- ## Etude de la pollution au SO2 On a mesuré pour 41 villes américaines, la pollution au SO2 ainsi que la population dans la ville ```r library(coursesdata) #remotes::install_github('MarieEtienne/coursesdata') data(usdata) ``` <img src="regression_simple_files/figure-html/visu_reg_simple-1.png" width="60%" height="30%" style="display: block; margin: auto;" /> -- <p class="question"> La taille d'une ville est elle liée à la pollution en SO2 ?</p> --- template: intro ## Cadre général du modèle de régression simple On étudie le lien entre - une variable quantitative notée `\(Y\)` (l'indicateur de SO2), - et une variable quantitative `\(x\)` (la taille de la population) Les données peuvent être visualisées à l'aide d'un nuage de points. -- <img src="regression_simple_files/figure-html/visu_reg_simple-1.png" width="60%" height="30%" style="display: block; margin: auto;" /> -- <p class="question"> La variable x permet-elle d'expliquer la variabilité de la variable Y ?</p> --- name: model # Le modèle de régression simple -- ## Une visualisation graphique du modèle d'analyse de régression simple .center[Si la population et la pollution en SO2 sont liées, comment imagine-t-on le processus aléatoire qui a conduit à nos données ?] --- count: false <img src="regression_simple_files/figure-html/reg_versiongraphique_user_01_output-1.png" width="60%" height="30%" style="display: block; margin: auto;" /> --- count: false <img src="regression_simple_files/figure-html/reg_versiongraphique_user_02_output-1.png" width="60%" height="30%" style="display: block; margin: auto;" /> --- count: false <img src="regression_simple_files/figure-html/reg_versiongraphique_user_03_output-1.png" width="60%" height="30%" style="display: block; margin: auto;" /> --- count: false <img src="regression_simple_files/figure-html/reg_versiongraphique_user_04_output-1.png" width="60%" height="30%" style="display: block; margin: auto;" /> <style> .panel1-reg_versiongraphique-user { color: black; width: 99%; hight: 32%; float: left; padding-left: 1%; font-size: 80% } .panel2-reg_versiongraphique-user { color: black; width: NA%; hight: 32%; float: left; padding-left: 1%; font-size: 80% } .panel3-reg_versiongraphique-user { color: black; width: NA%; hight: 33%; float: left; padding-left: 1%; font-size: 80% } </style> --- template: model .pull-left[ ## Le modèle de régression simple, graphiquement <img src="regression_simple_files/figure-html/reg_versiongraphique-1.png" width="60%" height="30%" style="display: block; margin: auto;" /> ] .pull-right[ ## Le modèle de régression simple, mathématiquement `$$M_{comp}: \quad \class{alea}{Y_{k}} = \class{rouge}{\beta_0} +\class{rouge}{\beta_1} x_{k} + \class{alea}{E_{k}},\quad \class{alea}{E_{k}}\overset{ind}{\sim}\mathcal{N}(0, \class{rouge}{\sigma^2}),$$` avec - `\(x_k\)` la valeur de la variable explicative pour l'observation `\(k\)`, - `\(k=1,\ldots,n\)` le numéro d'individu, `\(n\)` le nombre total d'individus, - `\(\class{rouge}{\beta_0}\)` l'ordonnée à l'origine, - `\(\class{rouge}{\beta_1}\)` la pente de la droite, mesure de l'effet de la variable `\(x\)` - `\(\class{rouge}{\sigma^2}\)` la variance. ### Nombre de paramètres du modèle - `\(2\)` paramètres de moyenne `\((\class{rouge}{\beta_0}, \class{rouge}{\beta_1})\)`; - 1 paramètre de variance `\(\class{rouge}{\sigma^2}\)` ] --- template: model ## Une visualisation graphique du modèle d'analyse de régression simple .center[Si la population et la pollution en SO2 n'ont aucun lien , comment imagine-t-on le processus aléatoire qui a conduit à nos données ?] --- count: false <img src="regression_simple_files/figure-html/reg_versiongraphique_M0_user_01_output-1.png" width="60%" height="30%" style="display: block; margin: auto;" /> --- count: false <img src="regression_simple_files/figure-html/reg_versiongraphique_M0_user_02_output-1.png" width="60%" height="30%" style="display: block; margin: auto;" /> --- count: false <img src="regression_simple_files/figure-html/reg_versiongraphique_M0_user_03_output-1.png" width="60%" height="30%" style="display: block; margin: auto;" /> --- count: false <img src="regression_simple_files/figure-html/reg_versiongraphique_M0_user_04_output-1.png" width="60%" height="30%" style="display: block; margin: auto;" /> <style> .panel1-reg_versiongraphique_M0-user { color: black; width: 99%; hight: 32%; float: left; padding-left: 1%; font-size: 80% } .panel2-reg_versiongraphique_M0-user { color: black; width: NA%; hight: 32%; float: left; padding-left: 1%; font-size: 80% } .panel3-reg_versiongraphique_M0-user { color: black; width: NA%; hight: 33%; float: left; padding-left: 1%; font-size: 80% } </style> --- template: model .pull-left[ ## Le modèle sans effet de la variable population, graphiquement <img src="regression_simple_files/figure-html/reg_versiongraphique_M0-1.png" width="60%" height="30%" style="display: block; margin: auto;" /> ] .pull-right[ ## Le modèle sans effet de la variable population, mathématiquement `$$M_0: \quad \class{alea}{Y_{k}} = \class{rouge}{\beta_0} + \class{alea}{E_{k}},\quad \class{ælea}{E_{k}}\overset{ind}{\sim}\mathcal{N}(0, \class{rouge}{\sigma^2}),$$` avec - `\(k=1,\ldots,n\)` le numéro d'individu, `\(n\)` le nombre total d'individus, - `\(\class{rouge}{\beta_0}\)` l'ordonnée à l'origine, - `\(\class{rouge}{\sigma^2}\)` la variance. ### Nombre de paramètres du modèle - `\(1\)` paramètre de moyenne `\(\class{rouge}{\beta_0}\)`; - 1 paramètre de variance `\(\class{rouge}{\sigma^2}\)` ] --- template: model .center[Lequel de ces mécanismes est le plus crédible au vu des données ?] <img src="regression_simple_files/figure-html/compare_model_graph-1.png" width="60%" height="30%" style="display: block; margin: auto;" /> -- Les statistiques permettent de comparer ces deux modèles pour répondre à cette question. --- template: model ## Le modèle de régression simple sur l'exemple de la pollution. `$$\class{alea}{Y_k} = \class{rouge}{\beta_0} +\class{rouge}{\beta_1} x_{k} +\class{alea}{E_{k}},\quad \class{alea}{E_{k}}\overset{ind}{\sim}\mathcal{N}(0, \class{rouge}{\sigma^2}),$$` avec - `\(x_k\)` la population dans la ville `\(k\)`, - `\(k=1,\ldots,n\)` le numéro de la ville, `\(n=41\)`, - `\(\class{rouge}{\beta_0}\)` l'ordonnée à l'origine, - `\(\class{rouge}{\beta_1}\)` la pente de la droite, mesure de l'effet de la population sur la pollution. - `\(\class{rouge}{\sigma^2}\)` la variance. ### Nombre de paramètres du modèle - 2 paramètres de moyenne - 1 paramètre de variance --- template: model ## Ajuster le modèle de régression simple pour la pollution ``` Call: lm(formula = SO2 ~ pop, data = usdata) Residuals: Min 1Q Median 3Q Max -32.545 -14.456 -4.019 11.019 72.549 Coefficients: Estimate Std. Error t value Pr(>|t|) (Intercept) 17.868316 4.713844 3.791 0.000509 *** pop 0.020014 0.005644 3.546 0.001035 ** --- Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 Residual standard error: 20.67 on 39 degrees of freedom Multiple R-squared: 0.2438, Adjusted R-squared: 0.2244 F-statistic: 12.57 on 1 and 39 DF, p-value: 0.001035 ``` --- name: test # Test du modèle complet -- Pour répondre à la question "Y a-t-il un effet de la population sur la pollution" on peut comparer le modèle `$$M_{comp}: \class{alea}{Y_k} = \class{rouge}{\beta_0} +\class{rouge}{\beta_1} x_{k} +\class{alea}{E_{k}}$$` au modèle nul `$$M_0: \class{alea}{Y_k} = \class{rouge}{\beta_0} +\class{alea}{E_{k}}$$` --- template: test Hypothèses de test `$$\begin{align} H_0 & =\left \lbrace \mbox{Pas de lien entre population et pollution}\right\rbrace\\ & =\left \lbrace \beta_1 =0 \right\rbrace\\ & =\left \lbrace M_{comp} \mbox{ est équivalent à } M0 \right\rbrace. \end{align}$$` `$$\begin{align} H_1 & =\left \lbrace \mbox{Il existe un lien entre population et pollution}\right\rbrace\\ & =\left \lbrace \beta_1 \ne 0 \right\rbrace\\ & =\left \lbrace M_{comp} \mbox{ est préférable à } M_0 \right\rbrace. \end{align}$$` -- Statistique de test et loi sous `\(H_0\)` `$$F = \frac{ \frac{RSS_0 - RSS}{1}}{\frac{RSS}{n-2}} \sim \mathcal{F}(1, n-2)$$` --- template: test .pull-left[ ```r Mcomp <- lm(SO2 ~ pop , data = usdata) M0 <- lm(SO2 ~ 1 , data = usdata) anova(M0, Mcomp) ``` ] .pull-right[ ``` Analysis of Variance Table Model 1: SO2 ~ 1 Model 2: SO2 ~ pop Res.Df RSS Df Sum of Sq F Pr(>F) 1 40 22038 2 39 16665 1 5373.2 12.575 0.001035 ** --- Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 ``` ] --- name: test_param # Test sur la valeur d'un paramètre La question d'intérêt porte ici sur l'unique paramètre `\(\beta_1\)`. On peut donc répondre à la question sur le lien entre pollution et population en testant si le paramètre `\(\beta_1\)` vaut ou non 0. `$$H_0 =\left \lbrace \beta_1 =0 \right\rbrace$$` `$$H_1 =\left \lbrace \beta_1 \ne 0 \right\rbrace$$` -- Statistique de test et loi sous `\(H_0\)` `$$T = \frac{B_1}{Var(B_1)} \sim \mathcal{T}(n-2)$$` --- template: test_param .pull-left[ ```r summary(Mcomp) ``` ] .pull-right[ ``` Call: lm(formula = SO2 ~ pop, data = usdata) Residuals: Min 1Q Median 3Q Max -32.545 -14.456 -4.019 11.019 72.549 Coefficients: Estimate Std. Error t value Pr(>|t|) (Intercept) 17.868316 4.713844 3.791 0.000509 *** pop 0.020014 0.005644 3.546 0.001035 ** --- Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 Residual standard error: 20.67 on 39 degrees of freedom Multiple R-squared: 0.2438, Adjusted R-squared: 0.2244 F-statistic: 12.57 on 1 and 39 DF, p-value: 0.001035 ``` ] --- name: prediction # Prediction -- Il est fréquent d'utiliser un modèle de régression pour prédire. ## Prédiction de la valeur moyenne pour un `\(x\)` particulier * Valeur moyenne .rouge[attendue] pour `\(y\)` pour un `\(x\)` donné : `\(\class{rouge}{\beta_0} + \class{rouge}{\class{rouge}{\beta_1}} x.\)` * Valeur moyenne .orange[prédite] pour `\(y\)` pour un `\(x\)` donné : `\(\class{fixe}{\hat{\beta}_0} + \class{fixe}{\hat{\beta}_1 x.}\)` ```r predict(Mcomp, newdata=data.frame(pop=333)) ``` ``` 1 24.53284 ``` -- ### Intervalle de confiance pour la valeur moyenne prédite pour `\(y\)` pour un `\(x\)` donné : `\(IC_{1-\alpha}({B_0} + \class{alea}{B_1} x)\)` ```r predict(Mcomp, newdata=data.frame(pop=333), interval = 'confidence') ``` ``` fit lwr upr 1 24.53284 17.28453 31.78115 ``` On peut affirmer, avec un risque de se tromper de `\(\alpha\)` que cet intervalle contient la vraie valeur de `\(\class{rouge}{\beta_0} + \class{rouge}{\class{rouge}{\beta_1}} x\)` --- template: prediction Il est fréquent d'utiliser un modèle de régression pour prédire. ## Cas de la régression simple ### Prédiction de la valeur moyenne pour un `\(x\)` particulier et son intervalle de confiance <img src="regression_simple_files/figure-html/conf_plot-1.png" width="60%" height="30%" style="display: block; margin: auto;" /> --- template: prediction Il est fréquent d'utiliser un modèle de régression pour prédire. ## Prédiction d'une .vert[nouvelle valeur] `\(\class{vert}{Y_{new}}\)` pour un `\(x\)` donné * `\(\mathbb{E}(\class{alea}{Y_{new}}) = \class{rouge}{\beta_0} + \class{rouge}{\beta_1} x_{new}\)` * La variance de `\(\class{alea}{Y_{new}}\)` prend en compte l'incertitude sur les paramètres et la variabilité naturelle des observations ( `\(\class{rouge}{\sigma^2}\)` ) ```r predict(Mcomp, newdata=data.frame(pop=333), interval = 'prediction') ``` ``` fit lwr upr 1 24.53284 -17.90225 66.96793 ``` --- template: prediction Il est fréquent d'utiliser un modèle de régression pour prédire. ## Prédiction d'une .vert[nouvelle valeur] `\(\class{vert}{Y_{new}}\)` pour un `\(x\)` donné <img src="regression_simple_files/figure-html/predic_plot_pred-1.png" width="60%" height="30%" style="display: block; margin: auto;" /> --- # Ce qu'il faut absolument savoir pour les TDs - savoir reconnaître une situtation de régression simple -- * On cherche à comprendre le lien entre une variable d'intérêt `\(Y\)` et une variable quantitative. -- - savoir écrire le modèle de régression simple -- - Tester l'existence de l'effet de la variable explicative de deux manières -- - Ce que signifie prédire en utilisant le modèle et comment le faire