class: center, middle, inverse, title-slide # Analyse de la variance ## à 1 facteur ### Marie-Pierre Etienne ###
https://github.com/marieetienne
### 2020/09/11 (updated: 2023-10-02) --- 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. Hutcheon, Kirsch, and Garland [HKG02] 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 × 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 × 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 × 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 × 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 × 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.3 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 × 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 × 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.3 # … 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 × 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.3 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 × 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.3 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 ... ---