class: center, middle, inverse, title-slide # Analyse de la variance ## à 1 facteur ### Marie-Pierre Etienne ###
https://github.com/marieetienne
### 2020/09/11 (updated: 2020-11-22) --- name: intro # Introduction --- template: intro ## Un exemple jouet à but pédagogique On a mesuré la fréquence cardiaque de 20 femmes et 20 hommes. ```r library(coursesdata) data(freqdata) ``` <img src="anova_files/figure-html/freqdata-1.png" width="60%" height="30%" style="display: block; margin: auto;" /> -- <p class="question"> Les hommes et les femmes ont-ils la même fréquence cardiaque au repos ?</p> --- template: intro ## Cas d'étude Chauve souris - Des espèces avec différents régimes alimentaires. - L'écho localisation (capacité auditive) est un sens essentiel pour les insectivores. ont recensé pour 63 espèces de chauves souris l'espèce, le régime alimentaire, le clade (groupe dans l'arbre phylogénétique), différentes variables morphologiques dont le volume du cerveau dédié à l'audition (AUD) <img src="anova_files/figure-html/batsdata-1.png" width="60%" height="30%" style="display: block; margin: auto;" /> -- <p class="question"> Le volume de la partie auditive du cerveau est il lié au régime alimentaire ?</p> --- template: intro ## Cadre général du modèle d'analyse de la variance à 1 facteur On étudie le lien entre - variable quantitative notée `\(Y\)` (la fréquence cardiaque, volume de cerveau), - et une variable qualitative (un facteur) pourvant prendre `\(I\)` modalités (I=2 pour l'exemple 1 et I=4 dans l'exemple 2). Les données peuvent être visualisées à l'aide d'un boxplot. -- <p class="question"> La variable d'intérêt Y est-elle en moyenne différente selon les différentes modalités ?</p> --- name: model # Le modèle d'analyse de la variance à 1 facteur --- template: model ## Graphiquement Une visalisation graphique du modèle d'analyse de la variance. <br> <br> <br> <br> Comment imagine-t-on le processus aléatoire qui a conduit à nos données ? --- count: false <img src="anova_files/figure-html/anova_versiongraphique_proba_user_01_output-1.png" width="60%" height="30%" style="display: block; margin: auto;" /> --- count: false <img src="anova_files/figure-html/anova_versiongraphique_proba_user_02_output-1.png" width="60%" height="30%" style="display: block; margin: auto;" /> --- count: false <img src="anova_files/figure-html/anova_versiongraphique_proba_user_03_output-1.png" width="60%" height="30%" style="display: block; margin: auto;" /> <style> .panel1-anova_versiongraphique_proba-user { color: black; width: 99%; hight: 32%; float: left; padding-left: 1%; font-size: 80% } .panel2-anova_versiongraphique_proba-user { color: black; width: NA%; hight: 32%; float: left; padding-left: 1%; font-size: 80% } .panel3-anova_versiongraphique_proba-user { color: black; width: NA%; hight: 33%; float: left; padding-left: 1%; font-size: 80% } </style> --- count:false <img src="anova_files/figure-html/anova_versiongraphique_proba2-1.png" width="60%" height="30%" style="display: block; margin: auto;" /> --- count: false <img src="anova_files/figure-html/anova_versiongraphique_proba_M0_user_01_output-1.png" width="60%" height="30%" style="display: block; margin: auto;" /> --- count: false <img src="anova_files/figure-html/anova_versiongraphique_proba_M0_user_02_output-1.png" width="60%" height="30%" style="display: block; margin: auto;" /> <style> .panel1-anova_versiongraphique_proba_M0-user { color: black; width: 99%; hight: 32%; float: left; padding-left: 1%; font-size: 80% } .panel2-anova_versiongraphique_proba_M0-user { color: black; width: NA%; hight: 32%; float: left; padding-left: 1%; font-size: 80% } .panel3-anova_versiongraphique_proba_M0-user { color: black; width: NA%; hight: 33%; float: left; padding-left: 1%; font-size: 80% } </style> --- count: false <img src="anova_files/figure-html/anova_versiongraphique_proba2_M0-1.png" width="60%" height="30%" style="display: block; margin: auto;" /> --- template: model count: false <img src="anova_files/figure-html/anova_versiongraphique_save-1.png" width="60%" height="30%" style="display: block; margin: auto;" /> <p class="question"> Au vu de nos données, le modèle M1 est-il plus pertinent que le modèle M0 ?</p> --- template: model ## Version régulière du modèle M1 `$$Y_{ik} \overset{ind}{\sim}\mathcal{N}(\mu_i, \sigma^2),$$` avec - `\(i=1,\ldots,I\)` le numéro du groupe, - `\(k= 1,\ldots, n_i\)` le numéro de l'individu dans le groupe `\(i\)`, - `\(n_i\)` le nombre d'individus dans le groupe `\(i\)` et `\(n=\sum_i n_i\)` le nombre total d'individus, - `\(\mu_i\)` le comportement moyen du groupe `\(i\)`, - `\(\sigma^2\)` la variance commune à tous les groupes. ### Une écriture équivalente `$$Y_{ik} = \mu_{i} + E_{ik}, \quad E_{ik}\overset{ind}{\sim}\mathcal{N}(0, \sigma^2).$$` ### Nombre de paramètres du modèle - `\(I\)` paramètres de moyenne `\((\mu_1, \mu_2, \ldots, \mu_I)\)`; - 1 paramètre de variance `\(\sigma^2\)` --- template: model ## Version régulière du modèle M1 sur l'exemple 1 `$$Y_{ik} \overset{ind}{\sim}\mathcal{N}(\mu_i, \sigma^2),$$` avec `\(I=2\)` et la convention `\(i=1\)` pour les femmes et `\(i=2\)` pour les hommes. ```r freqdata %>%group_by(Sexe) %>% summarise(n= n()) ``` ``` # A tibble: 2 x 2 Sexe n <chr> <int> 1 F 20 2 M 20 ``` Ainsi - `\(k=1, \ldots, n_i\)`, avec `\(n_1=20\)` et `\(n_2=20\)` et `\(n=40\)`. - `\(\mu_1\)` la fréquence cardiaque moyenne des femmes et `\(\mu_2\)` celle des hommes. - `\(\sigma^2\)` la variance commune à tous les groupes. ### Nombre de paramètres - 2 paramètres de moyenne - 1 paramètre de variance --- template: model ## Version singulière du modèle du modèle M1 `$$Y_{ik} \overset{ind}{\sim}\mathcal{N}(\mu + \alpha_i, \sigma^2),$$` avec - `\(i=1,\ldots,I\)` le numéro du groupe, - `\(k= 1,\ldots, n_i\)` le numéro de l'individu dans le groupe `\(i\)`, ( `\(\sum_i n_i=n\)` ) - `\(\mu\)` un comportement moyen de référence, - `\(\alpha_i\)` un effet différentiel du groupe `\(i\)`par rapport à la référence, - `\(\sigma^2\)` la variance commune à tous les groupes. ### Une écriture équivalente `$$Y_{ik} = \mu + \alpha_{i} + E_{ik}, \quad E_{ik}\overset{ind}{\sim}\mathcal{N}(0, \sigma^2).$$` ### Nombre de paramètres du modèle - `\(I+1\)` paramètres de moyenne `\((\mu, \alpha_1, \alpha_2, \ldots, \alpha_I)\)`, - 1 paramètre de variance `\(\sigma^2.\)` -- #### La version dans les logiciels et celle qui se généralise à plusieurs facteurs. --- template: model ## Version singulière du modèle du modèle M1 sur l'exemple 1 `$$Y_{ik} \overset{ind}{\sim}\mathcal{N}(\mu + \alpha_i, \sigma^2),$$` avec - `\(I=2\)` et la convention `\(i=1\)` pour les femmes et `\(i=2\)` pour les hommes. - `\(k=1, \ldots, n_i\)`, avec `\(n_1=20\)` et `\(n_2=20\)` - `\(\mu\)` la fréquence cardiaque moyenne de référence <a class="care"> Référence à définir </a> - `\(\alpha_1\)`, l'effet différentiel d'être une femme par rapport à la différence et `\(\alpha_2\)` l'effet différentiel d'être un homme. - `\(\sigma^2\)` la variance commune à tous les groupes. ### Nombre de paramètres - 3 paramètres de moyenne - 1 paramètre de variance --- template: model ## Lien entre les deux versions du même modèle <table style="width:100%"> <tr> <th>Groupe</th> <th>V. régulière</th> <th>V. singulière</th> </tr> <tr> <td>1</td> <td> `\(\mu_1\)` </td> <td> `\(\mu +\alpha_1\)` </td> </tr> <tr> <td>2</td> <td> `\(\mu_2\)` </td> <td> `\(\mu +\alpha_2\)` </td> </tr> <tr> <td> </td> <td> </td> <td> </td> </tr> </tr> <tr> <td> </td> <td> </td> <td> </td> </tr> </tr> <tr> <td> </td> <td> </td> <td> </td> </tr> <tr> <td>I</td> <td> `\(\mu_I\)` </td> <td> `\(\mu +\alpha_I\)` </td> </tr> </table> -- <a class=care> Problème </a> : Version régulière mal définie. Le modèle dans cette version est dit <a style="font-weight:400;"> indéterminé</a>. -- ####Exemple Si `\(\mu_1 =10,\ \mu_2=12,\)` dans la forme singulière peut correspondre à - `\(\mu =10,\ \alpha_1=0, \ \alpha_2=2,\)` - ou `\(\mu =0,\ \alpha_1=10, \ \alpha_2=12,\)` - ou `\(\mu =11,\ \alpha_1=-1, \ \alpha_2=1,\)` - ou `\(\mu =15,\ \alpha_1=-5, \ \alpha_2=-3,\)` - `\(\ldots\)` -- <a class=care> Solution </a> : Choisir une contrainte. Par défaut dans R, `\(\alpha_1=0\)`. La référence est le comportement du groupe 1. --- template: model ## Version singulière du modèle du modèle M1 en intégrant la contrainte par défaut `$$Y_{ik} = \mu + \alpha_{i} + E_{ik}, \quad E_{ik}\overset{ind}{\sim}\mathcal{N}(0, \sigma^2).$$` avec - `\(i=1,\ldots,I\)` le numéro du groupe, - `\(k= 1,\ldots, n_i\)` le numéro de l'individu dans le groupe `\(i\)`, ($\sum_i n_i = n$ nombre total d'individus) - `\(\mu\)` un comportement moyen de référence <a class=care> c'est celui du groupe 1</a> - `\(\alpha_1=0\)` la contrainte choisie, `\(\alpha_1\)` n'est plus un paramètre d'intérêt. - `\(\alpha_i, i\geq 2\)` un effet différentiel du groupe `\(i\)`par rapport à la référence(i.e. le groupe 1) - `\(\sigma^2\)` la variance commune à tous les groupes. ### Nombre de paramètres du modèle - `\(I\)` paramètres de moyenne `\((\mu, \alpha_2, \ldots, \alpha_I)\)`, - 1 paramètre de variance `\(\sigma^2.\)` --- template: model ## Version singulière du modèle du modèle M1 sur l'exemple 1 en intégrant la contrainte par défaut `$$Y_{ik} \overset{ind}{\sim}\mathcal{N}(\mu + \alpha_i, \sigma^2),$$` avec - `\(I=2\)` et la convention `\(i=1\)` pour les femmes et `\(i=2\)` pour les hommes. - `\(k=1, \ldots, n_i\)`, avec `\(n_1=20\)` et `\(n_2=20\)` - `\(\mu\)` la fréquence cardiaque moyenne des femmesei - `\(\alpha_1\)`, l'effet différentiel d'être une femme par rapport à la différence et `\(\alpha_2\)` l'effet différentiel d'être un homme. - `\(\sigma^2\)` la variance commune à tous les groupes. ### Nombre de paramètres - 3 paramètres de moyenne - 1 paramètre de variance --- template: model ## Sous forme matricielle `$$\bf{Y = X\theta + E}$$` ### Forme régulière `$${\bf{Y}} = \overset{}{\begin{pmatrix} Y_{11}\\ Y_{12}\\ Y_{13}\\ \vdots\\ Y_{1n_1}\\ Y_{21}\\ Y_{22}\\ \vdots\\ Y_{2n_2}\\ \vdots\\ Y_{In_I}\end{pmatrix}}, \quad {\bf{X}} =\overset{\color{gray}{\begin{matrix}\mu_1 & \mu_2 & \ldots & \ldots &\mu_I\end{matrix}}}{\begin{pmatrix} 1 & 0 & 0 & \ldots 0\\ 1 & 0 & 0 & \ldots 0\\ 1 & 0 & 0 & \ldots 0\\ \vdots\\ 1 & 0 & 0 & \ldots 0\\ 0 & 1 & 0 & \ldots 0 \\ 0 & 1 & 0 & \ldots 0 \\\vdots\\ 0 & 1 & 0 & \ldots 0 \\\vdots\\ 0 & 0 & 0 & \ldots 1 \end{pmatrix}}, \quad {\bf{\theta}} =\begin{pmatrix} \mu_{1}\\ \mu_{2}\\ \vdots\\ \mu_I\end{pmatrix}, \quad{\bf{E}} =\begin{pmatrix} E_{11}\\ E_{12}\\ E_{13}\\ \vdots\\ E_{1n_1}\\ E_{21}\\ E_{22}\\ \vdots\\ E_{2n_2}\\ \vdots\\ E_{In_I}\end{pmatrix}. \quad$$` --- template: model ## Sous forme matricielle `$$\bf{Y = X\theta + E}$$` ### Forme singulière `$${\bf{Y}} = \overset{}{\begin{pmatrix} Y_{11}\\ Y_{12}\\ Y_{13}\\ \vdots\\ Y_{1n_1}\\ Y_{21}\\ Y_{22}\\ \vdots\\ Y_{2n_2}\\ \vdots\\ Y_{In_I}\end{pmatrix}}, \quad {\bf{X}} =\overset{\color{gray}{\begin{matrix}\mu & \alpha_2 & \ldots & \ldots &\alpha_I\end{matrix}}}{\begin{pmatrix} 1 & 0 & 0 & \ldots 0\\ 1 & 0 & 0 & \ldots 0\\ 1 & 0 & 0 & \ldots 0\\ \vdots\\ 1 & 0 & 0 & \ldots 0\\ 1 & 1 & 0 & \ldots 0 \\ 1 & 1 & 0 & \ldots 0 \\\vdots\\ 1 & 1 & 0 & \ldots 0 \\\vdots\\ 1 & 0 & 0 & \ldots 1 \end{pmatrix}}, \quad {\bf{\theta}} =\begin{pmatrix} \mu\\ \alpha\\ \vdots\\ \alpha_I\end{pmatrix}, \quad{\bf{E}} =\begin{pmatrix} E_{11}\\ E_{12}\\ E_{13}\\ \vdots\\ E_{1n_1}\\ E_{21}\\ E_{22}\\ \vdots\\ E_{2n_2}\\ \vdots\\ E_{In_I}\end{pmatrix}. \quad$$` --- count: false template: model ## Déclinaisons sur l'exemple 1 (fréquence cardiaque) #### Donner les dimensions de `\(\bf{Y,\ X,\ \theta}\)` et `\(\bf{E}\)` (nombre de lignes et de colonnes) #### Ecrire `\(\theta\)` #### Expliquer comment construire `\(\bf{X}\)` .footnote[ Pour un rappel sur le produit matriciel : [Wkipedia](https://fr.wikipedia.org/wiki/Produit_matriciel) ] --- class: inverse name: pause # Pause <br><br><br><br> <p style="color:#B40F20;font-size:35px;text-align:center;">Prenons une petite pause !!!</p> --- name: parametre # Etude des paramètres du modèle --- template: parametre ## Quelques précisions de notations et de vocabulaires - Les données observées (les valeurs prises par la variable `\(Y\)` ) : `\(\bf{y}=(y_{11}, y_{12}, \ldots, y_{I n_I}).\)` - En refaisant la même expérience, on obtiendrait d'autres valeurs (liées àaux choix d'individus différents par exemple, ou mesuré un autre jour, ...), on va noter `\(Y_{ik}\)` la variable aléatoire qui décrit la loi des valeurs possibles pour l'individu k du groupe i. <br> <a class=care> les minuscules notent des valeurs, les majuscules des variables aléatoires. </a> <br> -- Les paramètres du modèle sont inconnus. Ils sont notés par des lettres grecques `\(\bf{\theta}\)`, `\(\mu, \alpha, \dots\)`. On veut en donner une estimation à partir des données observées ( `\(\bf{y}\)`). Les estimations des paramètres sont notées par les mêmes lettres décorées d'un chapeau `\(\bf{\hat{\theta}}, \hat{\mu}, \hat{\alpha}, \dots\)`. L'estimateur d'un paramètre est la variable aléatoire correspondante. Il sera noté en majuscule avec une lettre latine. Par exemple, l'etimateur de `\(\theta\)` sera noté `\(T\)`, l'estimateur de `\(\mu\)` sera noté `\(M\)` et l'estimateur de `\(\alpha_1\)` sera noté `\(A_1\)`. --- template: parametre ## Estimation des paramètres du modèle version régulière `$$Y_{ik} = \mu_i + E_{ik}, \quad E_{ik}\overset{ind}{\sim}\mathcal{N}(0,\sigma^2).$$` ### Estimation `\(\mu_i\)` représente le comportement moyen de l'ensemble des individus du groupe `\(i\)`. On peut l'estimer par `\(\hat{\mu}_i = \frac{1}{n_i}\sum_{k=1}^{n_i} y_{ik}\)` -- ### Estimateur L'estimateur de `\(\mu_i\)` est donc défini par `\(M_i= \frac{1}{n_i}\sum_{k=1}^{n_i} Y_{ik},\)` c'est une variable aléatoire -- - de loi normale (somme de variables normales) -- - d'espérance `\(\mathbb{E}(M_i) = \mathbb{E}\left( \frac{1}{n_i}\sum_{k=1}^{n_i} Y_{ik}\right) = \frac{1}{n_i} \sum_{k=1}^{n_i} \mathbb{E}(Y_{ik}) =\mu_i.\)` -- <a class=care> C'est un estimateur sans biais</a> -- - de variance `\(\mathbb{V}(M_i) = \mathbb{V}\left( \frac{1}{n_i}\sum_{k=1}^{n_i} Y_{ik}\right) = \frac{1}{n_i^2} \sum_{k=1}^{n_i} \mathbb{V}(Y_{ik}) = \frac{\sigma^2}{n_i}\)` -- <a class=care> la variance de l'estimateur diminue quand le nombre de personnes dans le groupe augmente.</a> -- `$$M_i \sim\mathcal{N}\left(\mu_i, \frac{\sigma^2}{n_i}\right).$$` --- template: parametre ## Estimation des paramètres du modèle version singulière avec la contrainte par défaut `$$Y_{ik} = \mu + \alpha_i + E_{ik}, \quad E_{ik}\overset{ind}{\sim}\mathcal{N}(0,\sigma^2).$$` ### Estimation - `\(\mu\)` représente le comportement moyen du groupe 1 (groupe de référence) : `\(\hat{\mu} = \frac{1}{n_1}\sum_{k=1}^{n_1} y_{1k}\)` -- - `\(\mu + \alpha_i = \mu_i\)`, donc `\(\alpha_i = \mu_i -\mu\)` ,représente l'effet différentiel du groupe i par rapport au groupe de référence. `\(\hat{\alpha_i} = \frac{1}{n_i}\sum_{k=1}^{n_i} y_{1k} - \hat{\mu}\)` -- ### Estimateur L'estimateur de `\(\mu\)` est donc défini par `\(M= \frac{1}{n_1}\sum_{k=1}^{n_1} Y_{1k}.\)` `$$M \sim\mathcal{N}\left(\mu, \frac{\sigma^2}{n_1}\right).$$` -- L'estimateur de `\(\alpha_i\)` est donc défini par `\(A_i= \frac{1}{n_i}\sum_{k=1}^{n_i} Y_{ik} - \frac{1}{n_1}\sum_{k=1}^{n_1} Y_{1k}.\)` `$$A_i \sim\mathcal{N}\left(\alpha_i, \sigma^2\left(\frac{1}{n_i} + \frac{1}{n_1}\right) \right).$$` --- template: parametre ## Estimation des paramètres pour l'exemple 1. ### Ce qu'on doit trouver `$$\hat{\mu} =\frac{1}{20}\sum_{k=1}^{20} y_{1k}, \quad \hat{\alpha}_2 =\frac{1}{20}\sum_{k=1}^{20} y_{2k} - \frac{1}{20}\sum_{k=1}^{20} y_{1k}$$` ```r freqdata %>% group_by(Sexe) %>% summarise(m = mean(freqC), n= n()) ``` ``` # A tibble: 2 x 3 Sexe m n <chr> <dbl> <int> 1 F 84.3 20 2 M 84.6 20 ``` -- `\(\hat{\mu} =\)` 84.3 et `\(\hat{\alpha}_2=\)` 0.25. --- count: false template: parametre ## Estimation des paramètres pour l'exemple 1. ### Ce qu'on doit trouver `\(\hat{\mu} =\)` 84.3 et `\(\hat{\alpha}_2=\)` 0.25. -- ### Estimer avec R ```r M1 <- lm(freqC ~ Sexe, data = freqdata) summary(M1)$coefficients ``` ``` Estimate Std. Error t value Pr(>|t|) (Intercept) 84.30 0.9025913 93.3977539 1.649393e-46 SexeM 0.25 1.2764569 0.1958546 8.457675e-01 ``` --- count: false template: parametre ## Estimation des paramètres pour l'exemple 1. ```r M1 <- lm(freqC ~ Sexe, data = freqdata) summary(M1) ``` ``` Call: lm(formula = freqC ~ Sexe, data = freqdata) Residuals: Min 1Q Median 3Q Max -8.550 -2.737 -0.425 2.513 8.700 Coefficients: Estimate Std. Error t value Pr(>|t|) (Intercept) 84.3000 0.9026 93.398 <2e-16 *** SexeM 0.2500 1.2765 0.196 0.846 --- Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 Residual standard error: 4.037 on 38 degrees of freedom Multiple R-squared: 0.001008, Adjusted R-squared: -0.02528 F-statistic: 0.03836 on 1 and 38 DF, p-value: 0.8458 ``` --- template: parametre ## Retour sur la méthode d'estimation - Somme des carrés résiduel (RSS) Naturellement, on a choisi d'estimer `\(\mu_i\)` par `\(\frac{1}{n_i}\sum_{k=1}^{n_1} y_{ik}.\)` -- En fait, `\(\hat{\mu}_i\)` est choisi pour minimiser `\(RSS_{obs}\)`, la somme observée des erreurs au carré donnée par `$$RSS_{obs} = \sum_{i=1}^I \sum_{k=1}^{n_i} (y_{ik} - \hat{\mu}_i)^2.$$` -- Le modèle d'analyse de la variance `$$Y_{ik} =\mu_i +E_{ik}.$$` Pour un nouvel individu `\(k_0\)` dans le groupe `\(i\)`, le modèle prédit que sa fréquence cardiaque sera `\(\hat{y}_{ik_0}=\hat{\mu}_i\)`. `\(RSS_{obs}\)` se réécrit dans un cadre général comme `$$RSS_{obs} = \sum_{i=1}^I \sum_{k=1}^{n_i} (y_{ik} - \hat{y}_{ik})^2.$$` `$$RSS = \sum_{i=1}^I \sum_{k=1}^{n_i} (Y_{ik} - \hat{Y}_{ik})^2.$$` --- template: parametre ## Loi de RSS `$$\frac{RSS}{\sigma^2} \sim \chi^2(n-I).$$` -- ### D'où vient ce `\(n-I\)` ? La variabilité totale des erreurs est donnée par `$$\sum_{i=1}^I \sum_{k=1}^{n_i} (Y_{ik} - \mu_i)^2= \sum_{i=1}^I \sum_{k=1}^{n_i} (E_{ik})^2,$$` C'est la somme de n variables aléaoires normales centrées de variance `\(\sigma^2\)`, donc `$$\sum_{i=1}^I \sum_{k=1}^{n_i} \left( \frac{E_{ik}}{\sigma}\right)^2 \sim\chi^2(n).$$` -- Mais les `\(\mu_i\)` sont inconnus, on les remplace par leur estimateurs `\(M_i.\)` Chaque fois que l'on doit remplacer un paramètre de moyenne par son estimateur, on perd un degré de liberté. Ici on a estimé `\(I\)` paramètres de moyenne, d'où le `\(n-I\)`. --- template: parametre ## Le paramètre de variance Rappel: Si une variable `\(U\sim\chi^2(l)\)` alors `\(\mathbb{E}(U)=l\)`. Alors `\(\mathbb{E}\left( \frac{RSS}{\sigma^2} \right) = n-I,\)` donc `\(\mathbb{E}\left( \frac{RSS}{n-I} \right) = \sigma^2.\)` -- ## Estimateur de la variance $$S^2 =\frac{1}{n-I} RSS, $$ est un <a class=care> estimateur sans bias de `\(\sigma^2\)` </a> . -- ## Estimation de `\(\sigma^2\)` `$$\hat{\sigma}^2 =\frac{1}{n-I} RSS_{obs}.$$` --- count: false .panel1-var_est-user[ ```r *freqdata %>% group_by(Sexe) ``` ] .panel2-var_est-user[ ``` # A tibble: 40 x 3 # Groups: Sexe [2] freqC Sport Sexe <dbl> <int> <chr> 1 82 1 M 2 82 1 F 3 77 1 M 4 79 1 F # … with 36 more rows ``` ] --- count: false .panel1-var_est-user[ ```r freqdata %>% group_by(Sexe) %>% * mutate(yhat = mean(freqC)) ``` ] .panel2-var_est-user[ ``` # A tibble: 40 x 4 # Groups: Sexe [2] freqC Sport Sexe yhat <dbl> <int> <chr> <dbl> 1 82 1 M 84.6 2 82 1 F 84.3 3 77 1 M 84.6 4 79 1 F 84.3 # … with 36 more rows ``` ] --- count: false .panel1-var_est-user[ ```r freqdata %>% group_by(Sexe) %>% mutate(yhat = mean(freqC)) %>% * mutate( Ehat = freqC-yhat,Ehat_2 = Ehat^2) ``` ] .panel2-var_est-user[ ``` # A tibble: 40 x 6 # Groups: Sexe [2] freqC Sport Sexe yhat Ehat Ehat_2 <dbl> <int> <chr> <dbl> <dbl> <dbl> 1 82 1 M 84.6 -2.55 6.50 2 82 1 F 84.3 -2.30 5.29 3 77 1 M 84.6 -7.55 57.0 4 79 1 F 84.3 -5.30 28.1 # … with 36 more rows ``` ] --- count: false .panel1-var_est-user[ ```r freqdata %>% group_by(Sexe) %>% mutate(yhat = mean(freqC)) %>% mutate( Ehat = freqC-yhat,Ehat_2 = Ehat^2) %>% * ungroup %>% summarise(RSSobs=sum(Ehat_2)) %>% as.numeric() -> RSSobs *RSSobs ``` ] .panel2-var_est-user[ ``` [1] 619.15 ``` ] --- count: false .panel1-var_est-user[ ```r freqdata %>% group_by(Sexe) %>% mutate(yhat = mean(freqC)) %>% mutate( Ehat = freqC-yhat,Ehat_2 = Ehat^2) %>% ungroup %>% summarise(RSSobs=sum(Ehat_2)) %>% as.numeric() -> RSSobs RSSobs *sigma2_hat <- RSSobs / (nrow(freqdata) - 2) *sigma2_hat ``` ] .panel2-var_est-user[ ``` [1] 619.15 ``` ``` [1] 16.29342 ``` ] --- count: false .panel1-var_est-user[ ```r freqdata %>% group_by(Sexe) %>% mutate(yhat = mean(freqC)) %>% mutate( Ehat = freqC-yhat,Ehat_2 = Ehat^2) %>% ungroup %>% summarise(RSSobs=sum(Ehat_2)) %>% as.numeric() -> RSSobs RSSobs sigma2_hat <- RSSobs / (nrow(freqdata) - 2) sigma2_hat *sigma_hat <- sqrt(sigma2_hat) *sigma_hat ``` ] .panel2-var_est-user[ ``` [1] 619.15 ``` ``` [1] 16.29342 ``` ``` [1] 4.036511 ``` ] <style> .panel1-var_est-user { color: black; width: 38.6060606060606%; hight: 32%; float: left; padding-left: 1%; font-size: 80% } .panel2-var_est-user { color: black; width: 59.3939393939394%; hight: 32%; float: left; padding-left: 1%; font-size: 80% } .panel3-var_est-user { color: black; width: NA%; hight: 33%; float: left; padding-left: 1%; font-size: 80% } </style> --- template: parametre ## Estimation du paramètre de variance sur l'exemple 1 ### On doit trouver `\(\hat{\sigma}=\)` 4.036511. -- ### Avec R ```r M1 <- lm(freqC ~ Sexe, data = freqdata) ``` -- ```r summary(M1)$sigma ``` ``` [1] 4.036511 ``` --- count: false template: parametre ## Estimation du paramètre de variance sur l'exemple 1 ### On doit trouver `\(\hat{\sigma}=\)` 4.036511. ```r summary(M1) ``` ``` Call: lm(formula = freqC ~ Sexe, data = freqdata) Residuals: Min 1Q Median 3Q Max -8.550 -2.737 -0.425 2.513 8.700 Coefficients: Estimate Std. Error t value Pr(>|t|) (Intercept) 84.3000 0.9026 93.398 <2e-16 *** SexeM 0.2500 1.2765 0.196 0.846 --- Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 Residual standard error: 4.037 on 38 degrees of freedom Multiple R-squared: 0.001008, Adjusted R-squared: -0.02528 F-statistic: 0.03836 on 1 and 38 DF, p-value: 0.8458 ``` --- template: parametre ## Visualisation graphique des paramètres estimés --- count: false <img src="anova_files/figure-html/anova_visu_par_user_01_output-1.png" width="60%" height="30%" style="display: block; margin: auto;" /> --- count: false <img src="anova_files/figure-html/anova_visu_par_user_02_output-1.png" width="60%" height="30%" style="display: block; margin: auto;" /> --- count: false <img src="anova_files/figure-html/anova_visu_par_user_03_output-1.png" width="60%" height="30%" style="display: block; margin: auto;" /> <style> .panel1-anova_visu_par-user { color: black; width: 99%; hight: 32%; float: left; padding-left: 1%; font-size: 80% } .panel2-anova_visu_par-user { color: black; width: NA%; hight: 32%; float: left; padding-left: 1%; font-size: 80% } .panel3-anova_visu_par-user { color: black; width: NA%; hight: 33%; float: left; padding-left: 1%; font-size: 80% } </style> --- template: parametre ## Estimation des paramètres du modèle version matricielle Le modèle sous forme matricielle s'écrit `$$\bf{Y = X\theta + E}.$$` -- ### Estimation de `\(\theta\)` `$$\hat{\theta} = (X^\intercal X )^{-1} X^\intercal Y_{obs}.$$` -- ### Estimateur de `\(\theta\)` `$$\hat{\theta} = (X^\intercal X )^{-1} X^\intercal Y.$$` -- ### Loi de l'estimateur de `\(\theta\)` `$$T = (X^\intercal X )^{-1} X^\intercal Y \sim \mathcal{N}_{I}\left(\theta, \sigma^2 (X^\intercal X )^{-1}\right).$$` -- Cette approche très mathématique est utile pour la généralisation, on aura l'occasion d'y revenir !! --- template: parametre ### Déclinaison sur les exemples A partir des données de chauve souris, ajuster un modèle permettant d'expliquer le volume de la partie Auditive (AUD) en fonction du régime. Il ne s'agit pas de refaire les calculs à la main, mais uniquement d'utiliser la fonction `lm`. ### Méfiez vous - vérifier les degrés de liberté et le nom des paramètres - Si quelque chose cloche, vérifier la nature de la variable Diet - On peut transformer une variable en facteur à l'aide de la fonction `as.factor`. --- template: pause --- name: modcomp # Test du modèle complet --- template: modcomp ## Rappel exemple fréquence cardiaque (exemple 1) On a mesuré la fréquence cardiaque de 20 femmes et 20 hommes. <img src="anova_files/figure-html/freqdata2-1.png" width="60%" height="30%" style="display: block; margin: auto;" /> -- <p class="question"> Les hommes et les femmes ont-ils la même fréquence cardiaque au repos ?</p> --- template: modcomp ## Rappel exemple fréquence cardiaque (exemple 1) <p class="question"> Les hommes et les femmes ont-ils la même fréquence cardiaque au repos ?</p> Autrement dit <img src="anova_files/figure-html/freqdata_graphia_anova-1.png" width="60%" height="30%" style="display: block; margin: auto;" /> --- template: modcomp <img src="anova_files/figure-html/rappel_anova_versiongraphique_save-1.png" width="60%" height="30%" style="display: block; margin: auto;" /> --- template: modcomp ## Test de l'existence d'un effet <p class="question"> Le comportement moyen de la variable `\(Y\)` est il différent selon les différentes modalités de la variable explicative ?</p> -- Deux modèles possibles `$$M1 : Y_{ik} = \mu + \alpha_i + E_{ik},\quad M0: Y_{ik} = \mu + E_{ik}$$` <p class="question"> Le modèle M1 est il plus pertinent que le modèle M0?</p> --- template: modcomp ## Mesurer la variabilité expliquée par le modèle M1 -- ### Variabilité totale dans les données `$$RSS_{0, obs} = \sum_{i=1}^{I} \sum_{k=1}^{n_i} (y_{ik} - \bar{y})^2 = \sum_{i=1}^{I} \sum_{k=1}^{n_i} (y_{ik} - \hat{y}_{ik}^{(0)})^2.$$` -- ### Variabilité résiduelle dans le modèle M1 `$$RSS_{1, obs} = \sum_{i=1}^{I} \sum_{k=1}^{n_i} ( y_{ik} - (\hat{\mu} +\hat{\alpha}_i))^2 = \sum_{i=1}^{I} \sum_{k=1}^{n_i} ( y_{ik} - \hat{y}_{ik}^{(1)})^2.$$` -- ### Variabilité expliquée par le modèle M1 `$$SCM = SS_{M1,obs} = RSS_{0, obs} - RSS_{1, obs}.$$` C'est la quantité de variabilité expliquée par les différence entre les I populations. -- <p class=care> Si la variabilité expliquée par le modèle `\(M1\)` est grande, on gagne à considérer des ppopulations différentes <p> On a mis en évidence des différences entre les populations. --- template: modcomp ## Calcul de RSS sur l'exemple 1 A la main : --- count: false .panel1-rss-user[ ```r *freqdata %>% group_by(Sexe) %>% * mutate(m= mean(freqC)) ``` ] .panel2-rss-user[ ``` # A tibble: 40 x 4 # Groups: Sexe [2] freqC Sport Sexe m <dbl> <int> <chr> <dbl> 1 82 1 M 84.6 2 82 1 F 84.3 3 77 1 M 84.6 4 79 1 F 84.3 # … with 36 more rows ``` ] --- count: false .panel1-rss-user[ ```r freqdata %>% group_by(Sexe) %>% mutate(m= mean(freqC)) %>% * mutate( Ehat = freqC - m) ``` ] .panel2-rss-user[ ``` # A tibble: 40 x 5 # Groups: Sexe [2] freqC Sport Sexe m Ehat <dbl> <int> <chr> <dbl> <dbl> 1 82 1 M 84.6 -2.55 2 82 1 F 84.3 -2.30 3 77 1 M 84.6 -7.55 4 79 1 F 84.3 -5.30 # … with 36 more rows ``` ] --- count: false .panel1-rss-user[ ```r freqdata %>% group_by(Sexe) %>% mutate(m= mean(freqC)) %>% mutate( Ehat = freqC - m) %>% * mutate( E2hat = Ehat^2) ``` ] .panel2-rss-user[ ``` # A tibble: 40 x 6 # Groups: Sexe [2] freqC Sport Sexe m Ehat E2hat <dbl> <int> <chr> <dbl> <dbl> <dbl> 1 82 1 M 84.6 -2.55 6.50 2 82 1 F 84.3 -2.30 5.29 3 77 1 M 84.6 -7.55 57.0 4 79 1 F 84.3 -5.30 28.1 # … with 36 more rows ``` ] --- count: false .panel1-rss-user[ ```r freqdata %>% group_by(Sexe) %>% mutate(m= mean(freqC)) %>% mutate( Ehat = freqC - m) %>% mutate( E2hat = Ehat^2) %>% * ungroup() ``` ] .panel2-rss-user[ ``` # A tibble: 40 x 6 freqC Sport Sexe m Ehat E2hat <dbl> <int> <chr> <dbl> <dbl> <dbl> 1 82 1 M 84.6 -2.55 6.50 2 82 1 F 84.3 -2.30 5.29 3 77 1 M 84.6 -7.55 57.0 4 79 1 F 84.3 -5.30 28.1 # … with 36 more rows ``` ] --- count: false .panel1-rss-user[ ```r freqdata %>% group_by(Sexe) %>% mutate(m= mean(freqC)) %>% mutate( Ehat = freqC - m) %>% mutate( E2hat = Ehat^2) %>% ungroup() %>% * summarise(RSSM1 =sum(E2hat)) %>% as.numeric() ``` ] .panel2-rss-user[ ``` [1] 619.15 ``` ] --- count: false .panel1-rss-user[ ```r freqdata %>% group_by(Sexe) %>% mutate(m= mean(freqC)) %>% mutate( Ehat = freqC - m) %>% mutate( E2hat = Ehat^2) %>% ungroup() %>% summarise(RSSM1 =sum(E2hat)) %>% as.numeric()-> * RSSM1 ``` ] .panel2-rss-user[ ] --- count: false .panel1-rss-user[ ```r freqdata %>% group_by(Sexe) %>% mutate(m= mean(freqC)) %>% mutate( Ehat = freqC - m) %>% mutate( E2hat = Ehat^2) %>% ungroup() %>% summarise(RSSM1 =sum(E2hat)) %>% as.numeric()-> RSSM1 *freqdata %>% mutate(m= mean(freqC)) ``` ] .panel2-rss-user[ ``` freqC Sport Sexe m 1 82 1 M 84.425 2 82 1 F 84.425 3 77 1 M 84.425 4 79 1 F 84.425 5 81 1 M 84.425 6 83 1 F 84.425 7 76 1 M 84.425 8 80 1 F 84.425 9 80 2 M 84.425 10 83 2 F 84.425 11 83 2 M 84.425 12 81 2 F 84.425 13 81 2 M 84.425 14 84 2 F 84.425 15 80 2 M 84.425 16 82 2 F 84.425 17 88 3 M 84.425 18 81 3 F 84.425 19 87 3 M 84.425 20 83 3 F 84.425 21 86 3 M 84.425 22 83 3 F 84.425 23 87 3 M 84.425 24 83 3 F 84.425 25 85 4 M 84.425 26 85 4 F 84.425 27 84 4 M 84.425 28 86 4 F 84.425 29 87 4 M 84.425 30 87 4 F 84.425 31 85 4 M 84.425 32 85 4 F 84.425 33 92 5 M 84.425 34 88 5 F 84.425 35 91 5 M 84.425 36 93 5 F 84.425 37 90 5 M 84.425 38 88 5 F 84.425 39 89 5 M 84.425 40 90 5 F 84.425 ``` ] --- count: false .panel1-rss-user[ ```r freqdata %>% group_by(Sexe) %>% mutate(m= mean(freqC)) %>% mutate( Ehat = freqC - m) %>% mutate( E2hat = Ehat^2) %>% ungroup() %>% summarise(RSSM1 =sum(E2hat)) %>% as.numeric()-> RSSM1 freqdata %>% mutate(m= mean(freqC)) %>% * mutate( Ehat = freqC - m) ``` ] .panel2-rss-user[ ``` freqC Sport Sexe m Ehat 1 82 1 M 84.425 -2.425 2 82 1 F 84.425 -2.425 3 77 1 M 84.425 -7.425 4 79 1 F 84.425 -5.425 5 81 1 M 84.425 -3.425 6 83 1 F 84.425 -1.425 7 76 1 M 84.425 -8.425 8 80 1 F 84.425 -4.425 9 80 2 M 84.425 -4.425 10 83 2 F 84.425 -1.425 11 83 2 M 84.425 -1.425 12 81 2 F 84.425 -3.425 13 81 2 M 84.425 -3.425 14 84 2 F 84.425 -0.425 15 80 2 M 84.425 -4.425 16 82 2 F 84.425 -2.425 17 88 3 M 84.425 3.575 18 81 3 F 84.425 -3.425 19 87 3 M 84.425 2.575 20 83 3 F 84.425 -1.425 21 86 3 M 84.425 1.575 22 83 3 F 84.425 -1.425 23 87 3 M 84.425 2.575 24 83 3 F 84.425 -1.425 25 85 4 M 84.425 0.575 26 85 4 F 84.425 0.575 27 84 4 M 84.425 -0.425 28 86 4 F 84.425 1.575 29 87 4 M 84.425 2.575 30 87 4 F 84.425 2.575 31 85 4 M 84.425 0.575 32 85 4 F 84.425 0.575 33 92 5 M 84.425 7.575 34 88 5 F 84.425 3.575 35 91 5 M 84.425 6.575 36 93 5 F 84.425 8.575 37 90 5 M 84.425 5.575 38 88 5 F 84.425 3.575 39 89 5 M 84.425 4.575 40 90 5 F 84.425 5.575 ``` ] --- count: false .panel1-rss-user[ ```r freqdata %>% group_by(Sexe) %>% mutate(m= mean(freqC)) %>% mutate( Ehat = freqC - m) %>% mutate( E2hat = Ehat^2) %>% ungroup() %>% summarise(RSSM1 =sum(E2hat)) %>% as.numeric()-> RSSM1 freqdata %>% mutate(m= mean(freqC)) %>% mutate( Ehat = freqC - m) %>% * mutate( E2hat = Ehat^2) ``` ] .panel2-rss-user[ ``` freqC Sport Sexe m Ehat E2hat 1 82 1 M 84.425 -2.425 5.880625 2 82 1 F 84.425 -2.425 5.880625 3 77 1 M 84.425 -7.425 55.130625 4 79 1 F 84.425 -5.425 29.430625 5 81 1 M 84.425 -3.425 11.730625 6 83 1 F 84.425 -1.425 2.030625 7 76 1 M 84.425 -8.425 70.980625 8 80 1 F 84.425 -4.425 19.580625 9 80 2 M 84.425 -4.425 19.580625 10 83 2 F 84.425 -1.425 2.030625 11 83 2 M 84.425 -1.425 2.030625 12 81 2 F 84.425 -3.425 11.730625 13 81 2 M 84.425 -3.425 11.730625 14 84 2 F 84.425 -0.425 0.180625 15 80 2 M 84.425 -4.425 19.580625 16 82 2 F 84.425 -2.425 5.880625 17 88 3 M 84.425 3.575 12.780625 18 81 3 F 84.425 -3.425 11.730625 19 87 3 M 84.425 2.575 6.630625 20 83 3 F 84.425 -1.425 2.030625 21 86 3 M 84.425 1.575 2.480625 22 83 3 F 84.425 -1.425 2.030625 23 87 3 M 84.425 2.575 6.630625 24 83 3 F 84.425 -1.425 2.030625 25 85 4 M 84.425 0.575 0.330625 26 85 4 F 84.425 0.575 0.330625 27 84 4 M 84.425 -0.425 0.180625 28 86 4 F 84.425 1.575 2.480625 29 87 4 M 84.425 2.575 6.630625 30 87 4 F 84.425 2.575 6.630625 31 85 4 M 84.425 0.575 0.330625 32 85 4 F 84.425 0.575 0.330625 33 92 5 M 84.425 7.575 57.380625 34 88 5 F 84.425 3.575 12.780625 35 91 5 M 84.425 6.575 43.230625 36 93 5 F 84.425 8.575 73.530625 37 90 5 M 84.425 5.575 31.080625 38 88 5 F 84.425 3.575 12.780625 39 89 5 M 84.425 4.575 20.930625 40 90 5 F 84.425 5.575 31.080625 ``` ] --- count: false .panel1-rss-user[ ```r freqdata %>% group_by(Sexe) %>% mutate(m= mean(freqC)) %>% mutate( Ehat = freqC - m) %>% mutate( E2hat = Ehat^2) %>% ungroup() %>% summarise(RSSM1 =sum(E2hat)) %>% as.numeric()-> RSSM1 freqdata %>% mutate(m= mean(freqC)) %>% mutate( Ehat = freqC - m) %>% mutate( E2hat = Ehat^2) %>% * summarise(RSSM1 =sum(E2hat)) %>% as.numeric() ``` ] .panel2-rss-user[ ``` [1] 619.775 ``` ] --- count: false .panel1-rss-user[ ```r freqdata %>% group_by(Sexe) %>% mutate(m= mean(freqC)) %>% mutate( Ehat = freqC - m) %>% mutate( E2hat = Ehat^2) %>% ungroup() %>% summarise(RSSM1 =sum(E2hat)) %>% as.numeric()-> RSSM1 freqdata %>% mutate(m= mean(freqC)) %>% mutate( Ehat = freqC - m) %>% mutate( E2hat = Ehat^2) %>% summarise(RSSM1 =sum(E2hat)) %>% as.numeric()-> * RSSM0 *SSM <- RSSM0 - RSSM1 ``` ] .panel2-rss-user[ ] --- count: false .panel1-rss-user[ ```r freqdata %>% group_by(Sexe) %>% mutate(m= mean(freqC)) %>% mutate( Ehat = freqC - m) %>% mutate( E2hat = Ehat^2) %>% ungroup() %>% summarise(RSSM1 =sum(E2hat)) %>% as.numeric()-> RSSM1 freqdata %>% mutate(m= mean(freqC)) %>% mutate( Ehat = freqC - m) %>% mutate( E2hat = Ehat^2) %>% summarise(RSSM1 =sum(E2hat)) %>% as.numeric()-> RSSM0 SSM <- RSSM0 - RSSM1 *SSM ``` ] .panel2-rss-user[ ``` [1] 0.625 ``` ] <style> .panel1-rss-user { color: black; width: 38.6060606060606%; hight: 32%; float: left; padding-left: 1%; font-size: 80% } .panel2-rss-user { color: black; width: 59.3939393939394%; hight: 32%; float: left; padding-left: 1%; font-size: 80% } .panel3-rss-user { color: black; width: NA%; hight: 33%; float: left; padding-left: 1%; font-size: 80% } </style> ``` [1] 0.625 ``` --- template: modcomp ## Calcul de RSS sur l'exemple 1 ```r M1 <- lm(freqC ~ Sexe, data= freqdata) M0 <- lm(freqC ~ 1, data= freqdata) anova(M0, M1) ``` ``` Analysis of Variance Table Model 1: freqC ~ 1 Model 2: freqC ~ Sexe Res.Df RSS Df Sum of Sq F Pr(>F) 1 39 619.77 2 38 619.15 1 0.625 0.0384 0.8458 ``` --- template: modcomp ## Quand décider si `\(SS_{M1, obs}\)` est grande ? -- C'est le rôle du test statistique. -- Idée de démarche: - Décrire quelle gamme de valeurs pourrait prendre SSM dans le cas où il n'y pas de différence entre les groupes - Comparer avec ce qu'on constate sur nos données - - Si c'est comparable, pas de raison de penser qu'il y a des différences entre les groupes, - Si c'est surprenant, les groupes sont vraisemblablement différentes. -- On veut décrire comment varie `\(SS_{M1, obs}\)` dans la situation où il n"y a pas de différence entre les groupes. On travaille donc sous l'hypothèse `$$H_0 =\left \lbrace \mbox{Pas de différence entre les groupes }\right\rbrace$$` -- `$$H_0 =\left \lbrace \mbox{pour tout }i, \alpha_i =0 \right\rbrace$$` -- `$$H_0 =\left \lbrace M1 \mbox{ est équivalent à } M0 \right\rbrace.$$` --- template: modcomp ## Hypothèses du test On va donc opposer une hypothèse de travail `\(H_0\)` contre une hypothèse alternative `\(H_1\)`. `\(H_0\)` peut donc prendre différentes formes: `$$\begin{align} H_0 & =\left \lbrace \mbox{Pas de différence entre les groupes }\right\rbrace\\ & =\left \lbrace \mbox{pour tout }i, \alpha_i =0 \right\rbrace\\ & =\left \lbrace M1 \mbox{ est équivalent à } M0 \right\rbrace. \end{align}$$` `\(H_1\)` prend les formes équivalentes suivantes `$$\begin{align} H_1 & =\left \lbrace \mbox{Au moins 1 groupe est différent des autres}\right\rbrace\\ & =\left \lbrace \mbox{Il existe un }i, \alpha_i \ne 0 \right\rbrace\\ & =\left \lbrace M1 \mbox{ est préférable à } M0 \right\rbrace. \end{align}$$` --- template: modcomp ## Loi de la statistique de test sous `\(H_0\)` Il faut être capable de décrire quelles sont les valeurs possibles de `\(SS_{M1, obs}\)`, pour ceci il faut connaitre la loi de la variable aléatoire `\(SS_{M1}\)`. - On peut montrer que sous `\(H_0\)`, `$$\frac{SS_{M1}}{\sigma^2} \underset{H_0}{\sim}\chi^2(I-1)$$` -- Mais `\(\sigma^2\)` est inconnu, on a envie de le remplacer par son estimateur `\(RSS / (n-I).\)` -- <p class=question> Sous `\(H_0\)`, `$$F= \frac{\frac{SS_{M1}}{I-1}}{\frac{RSS}{n-I}} \underset{H_0}{\sim}\mathcal{F}(I-1, n-I)$$` </p> --- template: modcomp ## Loi de la statistique de test sous `\(H_0\)` - graphiquement Sous `\(H_0\)` la loi de distribution de `\(F\)` est --- count: false <img src="anova_files/figure-html/pvalue_graphique_user_01_output-1.png" width="60%" height="30%" style="display: block; margin: auto;" /> --- count: false <img src="anova_files/figure-html/pvalue_graphique_user_02_output-1.png" width="60%" height="30%" style="display: block; margin: auto;" /> --- count: false <img src="anova_files/figure-html/pvalue_graphique_user_03_output-1.png" width="60%" height="30%" style="display: block; margin: auto;" /> <style> .panel1-pvalue_graphique-user { color: black; width: 99%; hight: 32%; float: left; padding-left: 1%; font-size: 80% } .panel2-pvalue_graphique-user { color: black; width: NA%; hight: 32%; float: left; padding-left: 1%; font-size: 80% } .panel3-pvalue_graphique-user { color: black; width: NA%; hight: 33%; float: left; padding-left: 1%; font-size: 80% } </style> --- template: modcomp ## Proabilité critique La probabilité critique ( p-value en anglais) est définie par $$ \mathbb{P}(F> F_{obs} \vert H_0)$$ -- Grossièrement dit, c'est la,probabilité d'observer Fobs ou des valeurs encore plus extrèmes sous `\(H_0\)`. -- On va rejeter `\(H_0\)` lorsque la probabilité critique est faible (typiquement inférieure à 5%). La valeur de la statistique de test observée est peu compatible avec l'hypothèse `\(H_0\)`. On ne croit pas à `\(H_0\)`. --- template: modcomp ## Déclinaison sur l'exemple Fréquence cardiaque ```r anova(M0,M1) ``` ``` Analysis of Variance Table Model 1: freqC ~ 1 Model 2: freqC ~ Sexe Res.Df RSS Df Sum of Sq F Pr(>F) 1 39 619.77 2 38 619.15 1 0.625 0.0384 0.8458 ``` -- <img src="anova_files/figure-html/pvalue_graphique-ex_FC-1.png" width="60%" height="30%" style="display: block; margin: auto;" /> --- template: modcomp ## Sur l'exemple chauve souris ### Pouvez vous répondre à la question <a class=question> Y a-t-il un effet du régime alimentaire sur le volume de la partie auditive du cerveau ? </a> --- template: pause --- name: test_param # Test sur un paramètre --- template: test_param ## Réflexion sur le sens de ce test `$$Y_{ik} = \mu +\alpha_i + E_{ik}, \quad i=1,\ldots I,\ k=1,\ldots, n_i.$$` Par défaut, R propose pour chaque coefficient le test de l'hypothèse `\(H_0\ :\ \left\lbrace\mbox{ le coefficient est nul } \right\rbrace\)`. -- Que signifie ce test ? - pour `\(\mu\)` - pour `\(\alpha_i\)` -- <a class=care> Attention, le sens de ce test dépend de la contrainte choisie </p> --- template: test_param ## Loi de la statistique de test ### Sur le cas particulier de `\(\mu\)` On a vu que l'estimateur `\(M\)` de `\(\mu\)` avait pour loi $$ M\sim \mathcal{N}(\mu, \sigma^2 \frac{1}{n_1})$$ -- Sous l'hypothèse `\(H_0:\left\lbrace \mu = 0\right\rbrace,\)` $$ M\sim \mathcal{N}(0, \sigma^2 \frac{1}{n_1}), $$ -- et donc $$ \sqrt{n_1}\, \frac{M}{\sigma}\sim \mathcal{N}(0, 1), $$ - On a donc envie de vérifier si la valeur `\(\hat{\mu}\)` (renormalisée par l'écart type et la taille du groupe) observé sur l'échantillon est compatible avec une loi normale centrée réduite. Malheureusemet `\(\sigma\)` est inconnu. --- template: test_param ## Loi de la statistique de test ### Sur le cas particulier de `\(\mu\)` On a vu que l'estimateur `\(M\)` de `\(\mu\)` avait pour loi $$ M\sim \mathcal{N}(\mu, \sigma^2 \frac{1}{n_1})$$ Sous l'hypothèse `\(H_0:\left\lbrace \mu = 0\right\rbrace,\)` $$ M\sim \mathcal{N}(0, \sigma^2 \frac{1}{n_1}), $$ et donc $$ \sqrt{n_1}\, \frac{M}{S}\sim \mathcal{T}(n-I). $$ --- template: test_param ## Loi de la statistique de test $$ Y = X\theta +E$$ ### Plus généralement On a vu que l'estimateur `\(T\)` de `\(\theta\)` avait pour loi $$ T\sim \mathcal{N}(\theta, \sigma^2 (X X^\intercal)^{-1})$$ Si on s'intéresse au `\(\mbox{j}^\mbox{eme}\)` terme du vecteur `\(\theta\)` ( `\(\theta_j\)` ): sous l'hypothèse `\(H_0:\left\lbrace \theta_j = 0\right\rbrace,\)` $$ T_j\sim \mathcal{N}(0, \sigma^2 c_j), $$ où `\(c_j\)` est une constante connue qui dépend de la matrice `\(X\)` (cette constante valait `\(1/n_1\)` dans le cas particulier de `\(\mu\)`.) $$ \frac{T_j}{\sqrt{c_j} S}\sim \mathcal{T}(n-I). $$ --- template: test_param ## Loi de la statistique de test ### Hypothèses de test `$$H_0 = \left \lbrace \theta_j = 0 \right\rbrace\quad \mbox{contre} \quad H_1 = \left \lbrace \theta_j \ne 0 \right\rbrace.$$` ### Loi de la statistique de test sous `\(H_0\)` $$ \frac{T_j}{\sqrt{c_j} S}\sim \mathcal{T}(n-I). $$ ### Définition de la p-value --- count: false <img src="anova_files/figure-html/fig_pvalue_stu_ex_user_01_output-1.png" width="60%" height="30%" style="display: block; margin: auto;" /> --- count: false <img src="anova_files/figure-html/fig_pvalue_stu_ex_user_02_output-1.png" width="60%" height="30%" style="display: block; margin: auto;" /> --- count: false <img src="anova_files/figure-html/fig_pvalue_stu_ex_user_03_output-1.png" width="60%" height="30%" style="display: block; margin: auto;" /> --- count: false <img src="anova_files/figure-html/fig_pvalue_stu_ex_user_04_output-1.png" width="60%" height="30%" style="display: block; margin: auto;" /> --- count: false <img src="anova_files/figure-html/fig_pvalue_stu_ex_user_05_output-1.png" width="60%" height="30%" style="display: block; margin: auto;" /> --- count: false <img src="anova_files/figure-html/fig_pvalue_stu_ex_user_06_output-1.png" width="60%" height="30%" style="display: block; margin: auto;" /> --- count: false <img src="anova_files/figure-html/fig_pvalue_stu_ex_user_07_output-1.png" width="60%" height="30%" style="display: block; margin: auto;" /> --- count: false <img src="anova_files/figure-html/fig_pvalue_stu_ex_user_08_output-1.png" width="60%" height="30%" style="display: block; margin: auto;" /> --- count: false <img src="anova_files/figure-html/fig_pvalue_stu_ex_user_09_output-1.png" width="60%" height="30%" style="display: block; margin: auto;" /> <style> .panel1-fig_pvalue_stu_ex-user { color: black; width: 99%; hight: 32%; float: left; padding-left: 1%; font-size: 80% } .panel2-fig_pvalue_stu_ex-user { color: black; width: NA%; hight: 32%; float: left; padding-left: 1%; font-size: 80% } .panel3-fig_pvalue_stu_ex-user { color: black; width: NA%; hight: 33%; float: left; padding-left: 1%; font-size: 80% } </style> --- template: test_param ## Déclinaison sur les exemples ### test `\(\mu = 0\)` . -- - `\(\hat{\sigma}=\)` 4.037. - `\(\sqrt{c_j}\hat{\sigma}=\)` 0.903, - `\(t_{j,obs}=\)` 93.398, - p-value= 0, -- ```r summary(M1) ``` ``` Call: lm(formula = freqC ~ Sexe, data = freqdata) Residuals: Min 1Q Median 3Q Max -8.550 -2.737 -0.425 2.513 8.700 Coefficients: Estimate Std. Error t value Pr(>|t|) (Intercept) 84.3000 0.9026 93.398 <2e-16 *** SexeM 0.2500 1.2765 0.196 0.846 --- Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 Residual standard error: 4.037 on 38 degrees of freedom Multiple R-squared: 0.001008, Adjusted R-squared: -0.02528 F-statistic: 0.03836 on 1 and 38 DF, p-value: 0.8458 ``` --- name: diagnostic # Diagnostic du modèle --- template: dignostic ## Le coefficient de détermination `$$R^2 = 1 - \frac{ RSS}{RSS_0} = \frac{SS_{M1}}{RSS_0}$$` Le pourcentage de variablité capturé par le modèle. -- Ce coefficient augmente systématiquement avec le nombre de paramètres dans le modèle. -- ## Le coefficient de détermination ajusté `$$R^2_{adj} = 1 - \frac{ \frac{RSS}{n-I}}{\frac{RSS_0}{n-1}}$$` est un indicateur du degré d'ajustement du modèle en pénalisant par le nombre de variables. --- template: diagnostic ## Vérification graphique des hypothèses de modélisation ```r library(ggfortify) autoplot(M1) ``` <img src="anova_files/figure-html/diagn_grap-1.png" width="60%" height="30%" style="display: block; margin: auto;" /> --- # Démarche complète d'analyse à partir de l'exemple des chauves souris Une question initiale : Le volume auditif dépend il de régime alimentaire. - Représenter les données en fonction des questions qu'on se pose. - Ecrire le modèle - Traduire la question en 1 ou plusieurs tests statistiques - Apporter une réponse concrète --- # Bilan sur le modèle d'analyse de la variance à 1 facteur ### But Etudier le lien entre une variable quantitative (la fréquence cardiaque) et un facteur (le Sexe). ## Le modèle `$$Y_{ik} = \mu + \alpha_i + E_{ik}$$` avec `\(\mu\)` le comportement de référence et `\(\alpha_i\)` l'effet différentiel du groupe `\(i\)` par rapport à la référence. La référence est définie par la contrainte choisie. R par défaut choisit la contrainte `\(\alpha_1=0\)`, ce qui place le groupe 1 comme groupe de référence. Le modèle d'analyse de la variance à un facteur est un modèle linéaire et peut se mettre sous la forme générique `$$Y = X\theta +E$$` ## Tests Pour comparer des modèles ( pour tester un potentiel effet du facteur), Sur un paramètre pvaut une valeur donnée (par défaut R teste systématiquement si un paramètre vaut 0) - on doit vérifier que les hypothèses de modélisation ne sont pas trop fausses. --- template: pause Avant de passer à l'analyse de variance à deux facteurs ... ---