remi.mahmoud@agrocampus-ouest.fr
https://demarche-stat-lesson.netlify.app
On attend:
Attention
Réflexion
Participation
Evaluation:
2 CC (50%) + 1 projet (50%)
LA statistique: discipline qui étudie les phénomènes à travers la collecte de données, leur traitement, leur analyse, l’interprétation et la présentation des résultats […]. Domaine des mathématiques + boîte à outils. Fait partie de la science des données
LES statistiques: type d’information obtenu en soumettant les valeurs à des opérations mathématiques.
L’analyse des données: Famille de méthodes statistiques dont les principales caractéristiques sont d’être multidimensionnelles et descriptives.
: en anglais, data analysis \(\Leftrightarrow\) Statistique
En résumé
La statistique s’intéresse à des jeux de données de taille raisonnable, fréquents dans vos domaines.
Ex. où renforcer l’avion ?
Les résumer, les visualiser
Se poser des questions:
Ex. paradoxe de Simpson (Vidéo complète sur le sujet de Science Etonnante)
Installation:
On peut aussi dessiner avec R (mais c’est une autre histoire)
Population: ensemble d’entités objet de l’investigation statistique
Individu: élément de la population d’étude
Echantillon: ensemble des individus pour lesquels des valeurs ont été observées pour les variables de l’étude
Variable: descripteur ou caractère des individus de la population d’étude
Inférence: décider pour une population à partir des données observées de l’échantillon
Nature des variables:
Soit \(x_1, x_2, ..., x_n\) une série de \(n\) valeurs d’une variable X. On peut les décrire en utilisant des indicateurs de position et de dispersion (que vous connaissez probablement)
L’association Air Breizh surveille la qualité de l’air et mesure la concentration de polluants comme l’ozone (O3) ainsi que les conditions météorologiques comme la température, la nébulosité, le vent, etc. Durant l’été 2001, 112 données ont été relevées à Rennes.
ozone <- read.table("https://r-stat-sc-donnees.github.io/ozone.txt",header=TRUE, stringsAsFactors = TRUE)
head(ozone)
maxO3 T9 T12 T15 Ne9 Ne12 Ne15 Vx9 Vx12 Vx15 maxO3v
20010601 87 15.6 18.5 18.4 4 4 8 0.6946 -1.7101 -0.6946 84
20010602 82 17.0 18.4 17.7 5 5 7 -4.3301 -4.0000 -3.0000 87
20010603 92 15.3 17.6 19.5 2 5 4 2.9544 1.8794 0.5209 82
20010604 114 16.2 19.7 22.5 1 1 0 0.9848 0.3473 -0.1736 92
20010605 94 17.4 20.5 20.4 8 8 7 -0.5000 -2.9544 -4.3301 114
20010606 80 17.7 19.8 18.3 6 6 7 -5.6382 -5.0000 -6.0000 94
vent pluie
20010601 Nord Sec
20010602 Nord Sec
20010603 Est Sec
20010604 Nord Sec
20010605 Ouest Sec
20010606 Ouest Pluie
Une question:
La nature des données (nature des variables, nb d’individus)
La problématique: qu’est-ce que je veux montrer ?
le site data-to-viz.com permet de trouver de bonnes idées
Les graphiques sont ce qu’on retient de nombreux rapports / analyses / articles scientifiques.
Sur , le package ggplot2
permet de faire des visualisations allant du plus simple au plus compliqué.
Moche ? Pensez à theme_bw()
(black & white)
Le camembert c’est bon, mais seulement en fromage. SINON CA PUE TROP.
Quelle classe est la plus représentée ?
Alternative: graphiques en barre
library(dplyr)
ozone %>%
summarise(prop_vent = n()/nrow(ozone), .by = vent) %>% # On résume le jeu de donnée par direction de vent, on calcule le nb de chaque catégorie sur la longueur totale du jeu de données
mutate(vent = reorder(vent, prop_vent)) %>% # trier le facteur pour ordonner les catégories
ggplot(aes(x = vent, y= prop_vent)) +
labs(y = "%") +
geom_col(alpha = .5)+ # 50% de transparence
scale_y_continuous(labels=scales::percent) +
geom_text(aes(label=scales::percent(prop_vent)), vjust = -1.5)+
theme_bw()
ggplot(ozone, aes(x = vent,
y= maxO3,
fill=vent,
col=vent)) + # dans aes: ce qui DEPEND du jeu de données
geom_boxplot(outlier.shape=NA,alpha=0.4) + # alpha : transparence
geom_point(position = position_jitter(width = 0.05, height= 0)) + # ajout
# points, avec perturbation horizontale pour faciliter visu
theme_bw() +
labs(title ="Effet du vent sur le max d'ozone")
Quid d’une interaction potentielle vent pluie ?
library(dplyr)
ozone %>%
summarise(moy_O3 = mean(maxO3), .by = c(vent, pluie)) %>%
# MOYENNER LES VALEURS DE MAXO3 PAR VENT ET PLUIE
#ET PASSER LE RESULTAT DANS GGPLOT VIA %>%
ggplot(aes(x = vent, y= moy_O3, group = pluie, color =pluie)) +
geom_line() +
geom_point() +
theme_bw() +
labs(title ="Interaction pluie:vent sur le max03",
y = "Moyenne de maxO3", x = "Direction du vent")
Les visus précédentes nous ont permis d’intuiter certaines tendances.
Peut-on les généraliser ? Rappel:
C’est toute la question des tests statistiques.
[1] "maxO3" "T9" "T12" "T15" "Ne9" "Ne12" "Ne15" "Vx9"
[9] "Vx12" "Vx15" "maxO3v" "vent" "pluie"
On peut se poser plusieurs questions:
Objectif : Généraliser (inférer) au-delà des données de l’échantillon
Problème : Comment gérer l’incertitude liée au fait qu’on a observé qu’une petite partie des données
Définition :
Une distribution statistique décrit comment les valeurs d’une variable se répartissent dans un ensemble de données.
Types de variables :
Quelques paramètres descriptifs d’une distribution
En termes mathématiques:
\(X\) variable aléatoire continue ayant pour densité \(f\).
On a \(\mathbb{P}(a \leq X \leq b) = \int_a^b f(t)dt\).
Loi normale et règle des 68-95-99
Illustration de la règle 68-95-99
La moyenne \(\bar X\) de \(n\) valeurs issues d’une variable \(X\) de loi quelconque, de moyenne \(\mu\) et de variance \(\sigma^2\), suit la loi (si \(n > 30\) ou \(X \sim \mathcal{N}\))
\[\bar X \sim {\cal N} (\mu, \sigma^2/n) \quad \mbox{et donc} \quad \frac{\bar X - \mu}{\sqrt{\sigma^2/n}} \sim {\cal N} (0, 1)\]
D’où l’intervalle de confiance de \(\mu\) au niveau de confiance 95%:
\(\left[~\bar x - \frac{s}{\sqrt{n}}t_{1-\alpha/2}(n-1)~;~ \bar x + \frac{s}{\sqrt{n}}t_{1-\alpha/2}(n-1)~\right]\)
One Sample t-test
data: ozone$maxO3
t = 33.905, df = 111, p-value < 2.2e-16
alternative hypothesis: true mean is not equal to 0
95 percent confidence interval:
85.02578 95.58136
sample estimates:
mean of x
90.30357
[1] 85.02578
[1] 95.58136
Une simulation rapide pour visualiser les choses
Mais dans la vraie vie, on aurait accès qu’à un échantillon de cette loi, par ex. de taille \(n = 50\). Regardons comment évolue la distribution des moyennes empiriques en fonction de la taille de l’échantillon.
A partir d’un échantillon \(x\), on peut calculer \(\bar{x}\) et \(s^2\) et se demander si la valeur est typique d’une loi de Student à n-1 ddl.
Quelques définitions
p-value: “Dans un monde où \(H_0\) est vraie, la probabilité d’obtenir une valeur au moins aussi extrême pour la statistique de test est de p”
Si p < 0.05, on rejette l’hypothèse \(H_0\) au seuil de 5%
Dans notre cas, n = 112, donc \(T\) est censée suivre une loi de Student à 111 ddl, sous \(H_0\):
One Sample t-test
data: ozone$maxO3
t = -3.6406, df = 111, p-value = 0.0004148
alternative hypothesis: true mean is not equal to 100
95 percent confidence interval:
85.02578 95.58136
sample estimates:
mean of x
90.30357
[1] 0.0004147533
Pour une loi de Student à n-1 ddl, -3.64 est une valeur peu probable donc on rejette \(H_0\), au seuil de 5%.
Ici, on a testé \(H_0\) vs H1 : \(\mu \neq 100\) (alternative = “two.sided”) mais on aurait pu testeer H1: \(\mu < 100\) (alternative = “less”) ou H1: \(\mu > 100\) (alternative = “greater”)
Question: le temps (sec/pluvieux) a-t-il un effet sur le max d’ozone ?
Réflexe: visu !
Passer de l’échantillon à n’importe quel jour induit de l’incertitude. Mais, il est plus facile de conclure qu’il y a une différence entre les deux moyennes dans la population si:
On considère que les données de la sous-population 1 sont telles que \((X_{i1})_{1\leq i\leq n_1} \sim {\cal N}(\mu_1,\sigma^2)\) et que les données de la sous-population 2 sont telles que \((X_{i2})_{1\leq i\leq n_2} \sim {\cal N}(\mu_2,\sigma^2)\) \(\Rightarrow\) (pour l’instant) seules les moyennes peuvent être différentes
Si les variances sont inégales, le test est différent \(\Longrightarrow\) tester l’égalité des variances avant de faire le test de comparaison de moyennes
\(\Longleftrightarrow~~H_0:\frac{\sigma_1^2}{\sigma_2^2}=1\) contre \(H_1:\frac{\sigma_1^2}{\sigma_2^2}\ne 1\)
F test to compare two variances
data: maxO3 by pluie
F = 0.35906, num df = 42, denom df = 68, p-value = 0.0005659
alternative hypothesis: true ratio of variances is not equal to 1
95 percent confidence interval:
0.2108847 0.6338374
sample estimates:
ratio of variances
0.3590605
Ici on rejet \(H_0\) au seuil de 5%, les variances sont différentes
# NOTEZ LE VAR.EQUAL
t.test(maxO3 ~pluie, data = ozone, alternative = "two.sided", var.equal = FALSE)
Welch Two Sample t-test
data: maxO3 by pluie
t = -6.3362, df = 109.88, p-value = 5.321e-09
alternative hypothesis: true difference in means between group Pluie and group Sec is not equal to 0
95 percent confidence interval:
-36.02936 -18.86110
sample estimates:
mean in group Pluie mean in group Sec
73.39535 100.84058
Two Sample t-test
data: maxO3 by pluie
t = -5.6715, df = 110, p-value = 1.157e-07
alternative hypothesis: true difference in means between group Pluie and group Sec is not equal to 0
95 percent confidence interval:
-37.03521 -17.85525
sample estimates:
mean in group Pluie mean in group Sec
73.39535 100.84058
On rejette \(H_0\), on affirme que les moyennes sont significativement différentes
Décision d’un test prise pour la population (“il y a plus d’ozone les jours sec”) alors qu’on n’observe qu’un échantillon
\(\Rightarrow\) Décision incertaine, et deux erreur possibles
En image ( qu’est-ce que H0 ici ?):
un test est dit puissant si son erreur de 2ème espèce est petite. La puissance d’un test est la probabilité de rejeter \(H_0\) et d’avoir raison
Question souvent posée Combien de données faut-il pour tester une différence entre 2 moyennes ?
Par ex.: combien de patients pour tester s’il y a une diff entre 2 médicaments pour faire baisser le taux de cholestérol ?
Rappel: de quoi est-ce que ça dépend ?
Reformuler la question
Combien faut-il de patients pour mettre en évidence une différence d’au moins 0.2g/l entre les 2 médicaments ?
Toujours pas possible
MAAAAAIS
MAAAAAIS si;
sd
)delta
)power
)alors c’est possible
Par ex. la direction du vent a-t-elle un effet sur le maximum d’ozone ?
Variable réponse quantitative, notée Y: maxO3
Variable explicative qualitative à I modalités (groupes): direction du vent
C’est le cadre de l’ANOVA (ANalysis Of VAriance)
maxO3 T9 T12 T15 Ne9 Ne12 Ne15 Vx9 Vx12 Vx15 maxO3v vent pluie
87 15.6 18.5 18.4 4 4 8 0.6946 -1.7101 -0.6946 84 Nord Sec
82 17.0 18.4 17.7 5 5 7 -4.3301 -4.0000 -3.0000 87 Nord Sec
92 15.3 17.6 19.5 2 5 4 2.9544 1.8794 0.5209 82 Est Sec
114 16.2 19.7 22.5 1 1 0 0.9848 0.3473 -0.1736 92 Nord Sec
94 17.4 20.5 20.4 8 8 7 -0.5000 -2.9544 -4.3301 114 Ouest Sec
80 17.7 19.8 18.3 6 6 7 -5.6382 -5.0000 -6.0000 94 Ouest Pluie
Réflexe …
Visu!
Question de base modifiée en : la moyenne du maximum d’ozone est-elle la même pour chaque direction du vent ?
Y a-t-il un effet de la variété sur le rendement du blé dans telle expérimentation ?
etc. etc. etc.
De manière générale, l’ANOVA est le cadre d’analyse de l’effet d’une variable qualitative à I modalités (par ex. sol nu / moutarde / phacélie) sur une variable quantitative
Mais alors pourquoi parler d’Analyse de Variance si on veut comparer des moyennes ?
La réponse viendra avec les explications (et les mains dans le cambouis)
Données & notations
vent | maxO3 | Notation |
---|---|---|
Est | 92 | \(y_{11}\) |
Est | 121 | \(y_{12}\) |
Nord | 87 | \(y_{21}\) |
Nord | 82 | \(y_{22}\) |
Ouest | 94 | \(y_{31}\) |
Ouest | 80 | \(y_{32}\) |
Sud | 90 | \(y_{41}\) |
… | … | … |
\(y_{ij}\) valeur de \(Y\) pour l’individu \(j\) du groupe \(i\)
Moyenne du groupe \(i\): \(y_{i\bullet}=\frac{1}{n_i}\sum_{j=1}^{n_i} y_{ij}\)
Moyenne générale : \(y_{\bullet\bullet}=\frac{1}{n}\sum_{i=1}^I\sum_{j=1}^{n_i} y_{ij}\)
On considère le MEME \(\sigma^2\).
\(Y_{1j} \sim {\cal N}(\mu_1,\sigma^2)\) peut s’érire \(Y_{1j} = \mu_1 + \varepsilon_{1j}\mbox{ avec }\varepsilon_{1j}\sim {\cal N}(0,\sigma^2)\)
\(Y_{2j} \sim {\cal N}(\mu_2,\sigma^2)\) peut s’écrire \(Y_{2j} = \mu_2 + \varepsilon_{2j}\mbox{ avec }\varepsilon_{2j}\sim {\cal N}(0,\sigma^2)\)
… …
\(Y_{Ij} \sim {\cal N}(\mu_I,\sigma^2)\) peut s’écrire \(Y_{Ij} = \mu_I + \varepsilon_{Ij}\mbox{ avec }\varepsilon_{Ij}\sim {\cal N}(0,\sigma^2)\)
\(\Rightarrow\) On peut résumer tout ça dans un seul modèle:
\[\left\{ \begin{array}{l} \forall i,j~~~~Y_{ij}=\mu_i+ \varepsilon_{ij}\\ \forall i,j~~~~{\cal L}(\varepsilon_{ij})={\cal N}(0,\sigma^2)\\ \forall (i,j)\neq (i',j')~~cov(\varepsilon_{ij},\varepsilon_{i'j'})=0\\ \end{array}\right.\]
Si \(Y_{ij}\) est la valeur de la réponse du j\(^{eme}\) individu (\(j = 1, . . . , n_i\)) du i\(^{eme}\) groupe (\(i = 1, . . . , I\)):
\[\left\{ \begin{array}{l} \forall i,j~~~~Y_{ij}=\mu_i+ \varepsilon_{ij}\\ \forall i,j~~~~{\cal L}(\varepsilon_{ij})={\cal N}(0,\sigma^2)\\ \forall (i,j)\neq (i',j')~~cov(\varepsilon_{ij},\varepsilon_{i'j'})=0\\ \end{array}\right.\]
\(I\) paramètres: les \(\mu_i\)
\[\left\{ \begin{array}{l} \forall i,j~~~~Y_{ij}=\mu+\alpha_i+ \varepsilon_{ij}\\ \forall i,j~~~~{\cal L}(\varepsilon_{ij})={\cal N}(0,\sigma^2)\\ \forall (i,j)\neq (i',j')~~cov(\varepsilon_{ij},\varepsilon_{i'j'})=0\\ \end{array}\right.\]
\(I + 1\) paramètres: l’effet moyen \(\mu\) et les \(I\) coefficients \(\alpha_i\) (effet du niveau i)
On doit avoir \(\forall~i,~~\mu+\alpha_i=\mu_i\) besoin de contraintes
On minimise les écarts entre observations (\(Y_{ij}\)) et prédictions par le modèle \(\hat{Y}_{ij}\).
On minimise le critère des moindres carrés ordinaires (: pourquoi carré \(^2\))
\[SCER = \sum_{i=1}^{I}\sum_{j=1}^{n_i}\left( Y_{ij} - \hat Y_{ij} \right)^{2}=\sum_{i=1}^{I}\sum_{j=1}^{n_i} \left( Y_{ij} - (\hat\mu +\hat\alpha_i) \right)^{2}\]
\[\mbox{SCER minimal quand }\forall~i,~\hat\mu +\hat\alpha_i=\frac{1}{n_i}\sum_{j=1}^{n_i}Y_{ij}=Y_{i\bullet}\]
Contraintes classiques:
Un niveau particulier comme référence: \(\alpha_1 = 0 \ \Rightarrow \hat\mu=Y_{1\bullet}\) et \(\forall i, \hat{\alpha}_i=Y_{i\bullet}-Y_{1\bullet}\)
la moyenne des moyennes par groupe comme référence: \(\sum_{i=1}^I\alpha_i=0 \ \Rightarrow \hat\mu=\frac{1}{I}\sum_{i=1}^I Y_{i\bullet}, ~~ \forall \,i,\,\hat\alpha_i=Y_{i\bullet}-\hat\mu\)
groupe 1 | groupe 2 | groupe3 | |
---|---|---|---|
\(y_{11}=6\) | \(y_{21}=2\) | \(y_{31}=3\) | |
\(y_{12}=9\) | \(y_{22}=4\) | \(y_{32}=1\) | |
\(y_{13}=6\) | \(y_{22}=3\) | ||
\(y_{1\bullet}=7\) | \(y_{2\bullet}=3\) | \(y_{3\bullet}=2\) | \(y_{\bullet\bullet}=4.25\) |
Avec traitement 1 comme référence : \(\hat\mu= 7\); \(\hat\alpha_1=0\); \(\hat\alpha_2=-4\) et \(\hat\alpha_3=-5\)
\(\sum_{i=1}^I \alpha_i=0\) : \(\hat\mu= \frac{1}{3}(7+3+2)=4\) ; \(\hat\alpha_1=3\) ; \(\hat\alpha_2=-1\) et \(\hat\alpha_3 = -2\)
L’interprétation d’un coefficient \(\alpha_i\) dépend de la contrainte choisie !
Valeurs prédites: \(\hat y_{ij} = \hat{\mu} + \hat{\alpha}_i = y_{i\bullet}\)
Erreurs d’ajustement ou résidus : \(\hat\varepsilon_{ij}=y_{ij}-\hat y_{ij}=y_{ij}-y_{i\bullet}\)
Estimateur de la variabilité résiduelle \(\sigma^2\):
\[\hat \sigma^2=\frac{\sum_{ij}(Y_{ij}-Y_{i\bullet})^2}{n-I}=\frac{\sum_{ij}\hat\varepsilon_{ij}^2}{n-I}~~~~~~~~~~\mathbb{E}(\hat\sigma^2)=\sigma^2\]
\(n-I\) degrés de liberté sont associés à la somme des carrés des résidus du modèle.
Equation d’analyse de la variance
\(\displaystyle{\underbrace{\sum_{i,j}(Y_{ij}-Y_{\bullet \bullet})^2}_{SC_T}}\) | \(= \displaystyle{\underbrace{\sum_{i}(Y_{i\bullet}-Y_{\bullet \bullet})^2}_{SC_F}}\) | \(+ \displaystyle{\underbrace{\sum_{i,j}(Y_{ij}-Y_{i\bullet})^2}_{SC_R}}\) | |
Variabilité | totale | modèle | résiduelle |
ddl | \(n-1\) | \(I-1\) | \(n-I\) |
\(\eta^2 = \frac{SC_{\mbox{modèle}}}{SC_{\mbox{total}}} = 1-\frac{SC_{\mbox{résiduelle}}}{SC_{\mbox{total}}}\)
Expliqué à mon grand-père (ou presque): la proportion de variabilité du phénomène que mon modèle explique
Propriétés:
Deux rapports de corrélation différents pour des \(Y_{i\bullet}\) identiques.
Rappel de l’objectif: y a-t-il un effet du facteur sur Y ?
\(\rightarrow\) La variabilité de Y est-elle expliquée par le facteur groupe ? Ou bien peut-on considérer que les données proviennt d’une même loi \(\mathcal{N}(\mu, \sigma^2)\) ?
Hypothèses:
\[H_0 :~\forall i,\ \mu_i=\mu\] \[H_1 :~\exists i\ /\ \mu_i\ne \mu\]
\(\Leftrightarrow\)
\[H_0 :~\forall i,\ \alpha_i=0\] \[H_1 :~\exists i\ /\ \alpha_i\ne 0\]
\[\mbox{On a : }\mathbb{E}\left(\frac{SC_{mod}}{I-1}\right)=\sigma^2+\frac{1}{I-1}\displaystyle{\sum_{i=1}^I n_i\alpha_i^2} \ \ \ \mathbb{E}\left(\frac{SC_{R}}{n-I}\right)=\sigma^2\]
Statistique de test : \(F_{obs}=\displaystyle{\frac{SC_{mod}/(I-1)}{SC_{R}/(n-I)}}\)
Loi de \(F_{obs}\) sous \(H_0\) : \({\mathcal L}(F_{obs})={\mathcal F}_{n-I}^{I-1}\)
Variabilité | Somme Carrés | ddl | Carré moyen | \(F_{obs}\) |
---|---|---|---|---|
Facteur | \(\displaystyle{\sum_in_i(Y_{i\bullet}-Y_{\bullet\bullet})^2}\) | \(I-1\) | \(\displaystyle{\frac{SC_F}{I-1}}\) | \(\displaystyle{\frac{CM_F}{CM_R}}\) |
Résiduelle | \(\displaystyle{\sum_{i,j}(Y_{ij}-Y_{i\bullet})^2}\) | \(n-I\) | \(\displaystyle{\frac{SC_R}{n-I}}\) | |
Totale | \(\displaystyle{\sum_{i,j}(Y_{ij}-Y_{\bullet \bullet})^2}\) | \(n-1\) |
Call:
LinearModel(formula = maxO3 ~ vent, data = ozone)
Residual standard error: 27.32 on 108 degrees of freedom
Multiple R-squared: 0.08602
F-statistic: 3.388 on 3 and 108 DF, p-value: 0.02074
AIC = 744.8 BIC = 755.7
Ftest
SS df MS F value Pr(>F)
vent 7586 3 2528.69 3.3881 0.02074
Residuals 80606 108 746.35
Ttest
Estimate Std. Error t value Pr(>|t|)
(Intercept) 94.7382 3.0535 31.0265 < 2e-16
vent - Est 10.8618 6.8294 1.5904 0.11466
vent - Nord -8.6092 4.6219 -1.8627 0.06522
vent - Ouest -10.0382 4.0972 -2.4500 0.01589
vent - Sud 7.7856 5.2052 1.4957 0.13764
Si on rejette l’hypothèse \(H_0: \forall i, \alpha_i=0\), on veut savoir quels \(\alpha_i\) sont différents de 0
La valeur de \(\hat\alpha_i\) dépend de l’échantillon de données et donc l’estimateur \(\hat\alpha_i\) est une variable aléatoire \[{\cal L}(\hat\alpha_i)={\cal N}\left(\alpha_i,\sigma_{\hat\alpha_i}^2\right)~~\Longleftrightarrow~~{\cal L}\left(\frac{\hat\alpha_i-\alpha_i}{\sigma_{\hat\alpha_i}}\right)={\cal N}(0,1)\]
\[{\cal L}\left(\frac{\hat\alpha_i-\alpha_i}{\hat\sigma_{\hat\alpha_i}}\right)={\cal T}_{n-I}\]
On peut donc construire le test de nullité d’un coefficient (\(\alpha_1\) par exemple):
Hypothèses : \(H_0 : \alpha_1=0\) contre \(H_1 : \alpha_1 \ne 0\)
Statistique de test \(\displaystyle\frac{\hat\alpha_1}{\hat\sigma_{\hat\alpha_1}}\)
Loi de la statistique de test sous \(H_0\) \({\cal L}\left(T_{obs}=\frac{\hat\alpha_1}{\hat\sigma_{\hat\alpha_1}}\right)={\cal T}_{\nu=n-I}\)
Décision par la p-value
Rq : connaissant la loi de \(\hat\alpha_1\), on peut construire un intervalle de confiance: \[\alpha_1 \in \left[\hat\alpha_1-\hat\sigma_{\hat\alpha_1}\times t_{0.975}(n-I)~;~\hat\alpha_1+\hat\sigma_{\hat\alpha_1}\times t_{0.975}(n-I) \right]\]
Estimate Std. Error t value Pr(>|t|)
(Intercept) 94.738210 3.053461 31.026504 1.290980e-55
vent - Est 10.861790 6.829425 1.590440 1.146587e-01
vent - Nord -8.609178 4.621850 -1.862713 6.522029e-02
vent - Ouest -10.038210 4.097207 -2.450013 1.589160e-02
vent - Sud 7.785599 5.205173 1.495743 1.376372e-01
Estimate Std. Error t value Pr(>|t|)
(Intercept) 94.738210 3.053461 31.026504 1.290980e-55
vent - Est 10.861790 6.829425 1.590440 1.146587e-01
vent - Nord -8.609178 4.621850 -1.862713 6.522029e-02
vent - Ouest -10.038210 4.097207 -2.450013 1.589160e-02
vent - Sud 7.785599 5.205173 1.495743 1.376372e-01
Autre stratégie : comparer toutes les paires de moyennes
Pb : on effectue beaucoup de tests \(\Rightarrow\) risque de multiplier les erreurs en rejetant des hypothèses \(H_0\).
\(\Rightarrow\) correction des tests: modifier le seuil \(\alpha =5\%\) et prendre \(\alpha=\frac{5\%}{(\mbox{nb tests)}}\)
\(\Rightarrow\) les tests sont peu puissants
library(FactoMineR)
res <- LinearModel(maxO3 ~vent, data = ozone)
meansComp(res, ~vent, adjust ="Bonferroni", graph = FALSE)
$adjMean
vent emmean SE df lower.CL upper.CL
Est 105.6 8.64 108 83.7 127.5
Nord 86.1 4.91 108 73.7 98.6
Ouest 84.7 3.86 108 74.9 94.5
Sud 102.5 5.96 108 87.4 117.7
Confidence level used: 0.95
Conf-level adjustment: bonferroni method for 4 estimates
$groupComp
$groupComp$Letters
Ouest Nord Sud Est
"a" "a" "a" "a"
$groupComp$LetterMatrix
a
Ouest TRUE
Nord TRUE
Sud TRUE
Est TRUE
attr(,"class")
[1] "meansComp"
Rappel du modèle:
\[\left\{ \begin{array}{l} \forall i,j~~~~Y_{ij}=\mu_i+ \varepsilon_{ij}\\ \forall i,j~~~~{\cal L}(\varepsilon_{ij})={\cal N}(0,\sigma^2)\\ \forall (i,j)\neq (i',j')~~cov(\varepsilon_{ij},\varepsilon_{i'j'})=0\\ \end{array}\right.\]
On a des hypothèses sur les résidus du modèle
Les résidus, c’est ce qui n’est pas expliqué par le modèle. Donc pour les estimer, il faut ajuster le modèle
On peut ensuite vérifier les hypothèses du modèle
Questions
Objectifs
Etudier qualitativement et quantitativement la dépendance d’une variable réponse quantitative Y en fonction d’une variable quantitative x
La variable x permet elle d’expliquer la variabilité de la variable Y?
Prédire Y à partir de x
\[r_{xy}=\frac{\sum_{i=1}^n(x_i-\bar x)(y_i-\bar y)}{\sqrt{\sum_{i=1}^n\left(x_i-\bar x\right)^2}\sqrt{\sum_{i=1}^n(y_i-\bar y)^2}}\]
Pearson's product-moment correlation
data: ozone$maxO3 and ozone$T9
t = 10.263, df = 110, p-value < 2.2e-16
alternative hypothesis: true correlation is not equal to 0
95 percent confidence interval:
0.5904575 0.7832906
sample estimates:
cor
0.6993865
“Corrélation n’implique pas causalité”
Oui, mais… la présence d’une corrélation suppose généralement un lien
A \(\Rightarrow\) B (ex. \(\Rightarrow\) cancer )
B \(\Rightarrow\) A (idem)
A \(\Rightarrow\) B et ET B \(\Rightarrow\) A (ex. et \(CO_2\) )
Une variable C a été omise, et influence A et B. (ex. (C) \(\Rightarrow\) (A), (C) \(\Rightarrow\) (B), \(\Leftrightarrow\) )
Corrélation purement fortuite (site spurious correlations)
Ex. pour rigoler:
“Corrélation n’implique pas causalité”
Ok, mais cette affirmation ne doit pas servir à réfuter toute association constatée dans des données.
Le modèle de régression linéaire simple s’écrit ainsi:
\[Y_{i} = \beta_0 +\beta_1 x_{i} +\varepsilon_{i},\quad \varepsilon_{i}\overset{ind}{\sim}\mathcal{N}(0, \sigma^2),\] avec
\[SCER = \sum_{i=1}^n (y_i - \hat{y}_i)^2 = \sum_{i=1}^n (y_i - \beta_0 - \beta_1 x_i)^2\]
Paramètres d’espérance:
Variance résiduelle:
\[ \hat{\sigma}^2 = \frac{1}{n-2} \sum_{i=1}^n (Y_i-\hat{Y}_i)^2 ~~~~~~ddl_{\mbox{résiduelle}}=n-2~~~~~~\mathbb{E}(\hat\sigma^2)=\sigma^2 \]
\[{\mathcal L}\left(\hat{\beta}_1\right) = {\mathcal N}\left( \beta_1,\sigma_{\beta_1}^2\right) \mbox{ avec } \sigma_{\beta_1}^2= \frac{\sigma^2}{\sum_{i=1}^{n} ( x_{i} - \bar{x} )^{2}} \]
\[\Longrightarrow \ {\mathcal L}\left(\frac{\hat\beta_1-\beta_1}{\sigma_{\hat\beta_1}}\right)={\mathcal N}(0,1) \ \Longrightarrow~~{\mathcal L}\left(\frac{\hat\beta_1-\beta_1}{\hat\sigma_{\hat\beta_1}}\right)={\mathcal T}_{n-2}\]
On peut donc construire le test de nullité de \(\beta_1\):
Hypothèses :\(\ H_0 : \mbox{"} \beta_1=0\mbox{"}\) contre \(H_1 : \mbox{"} \beta_1 \ne 0\mbox{"}\)
Statistique de test : \(\displaystyle\frac{\hat\beta_1}{\hat\sigma_{\hat\beta_1}}\) Loi de la statistique de test sous \(H_0\): \({\mathcal L}\left(T_{obs}=\frac{\hat\beta_1}{\hat\sigma_{\hat\beta_1}}\right)={\mathcal T}_{\nu=n-2}\)
Rq 1. : comme dans l’ANOVA, connaissant la loi de \(\hat\beta_1\), on peut construire un intervalle de confiance: \[\beta_1 \in \left[\hat\beta_1-\hat\sigma_{\hat\beta_1}\times t_{0.975}(n-2) \ ; \ \hat\beta_1+\hat\sigma_{\hat\beta_1}\times t_{0.975}(n-2) \right]\]
Rq 2. : on peut aussi tester \(\beta_0\) mais cela a moins d’importance en pratique
\[\begin{array}{ccccc} \sum_{i=1}^{n} ( Y_{i} - \bar{Y} )^{2} & = & \sum_{i=1}^{n} ( \hat{Y}_{i} - \bar{Y} )^{2} & + & \sum_{i=1}^{n} ( Y_{i} - \hat{Y}_{i} )^{2} \\ SCT & = & SCM & + & SCR \\ n - 1 & = & 1 & + & n - 2 \end{array}\]
Source | Somme de | Degrés de | Carré | F |
variation | carrés | liberté | moyen | |
Modèle | SCM | 1 | \(\frac{SCM}{1}\) | \(\frac{CMM}{CMR}\) |
Erreur | SCR | n-2 | \(\frac{SCR}{n-2}\) | |
Total | SCT | n-1 |
Comparaison de \(SCM\) et \(SCT\) par le critère \(\displaystyle{R^{2} = \frac{ SCM }{ SCT } }\)
Propriétés :
Explication claire du concept sur le site de Science Etonnante
Hypothèses
Stat de Fisher
\(F = \frac{SCM/1}{SCR/(n-2)}\)
Loi de F sous \(H_0: \mathcal{L}(F) = \mathcal{F}^1_{n-2}\)
Pour une valeur de \(x_0\) particulière, on peut maintenant prédire \(Y\):
\[\hat{Y}_0 = \hat{\beta}_0 + \hat{\beta}_1 x_0\]
Prédiction de la valeur moyenne de Y pour un \(x_0\) particulier
\(\mathbb{E}(\hat{Y}_0|x_0) \sim \mathcal{N}(Y_0, \sigma \sqrt{\frac{1}{n} + \frac{(x_0 - \bar{x})^2}{\sum_{i=1}^n (x_i - \bar{x})^2)}})\)
Différent de:
Prédiction d’une nouvelle valeur de Y pour un \(x_0\) donné (notez le 1 supplémentaire dans la variance).
\(\hat{Y}_0 \sim \mathcal{N}(Y_0, \sigma \sqrt{1+\frac{1}{n} + \frac{(x_0 - \bar{x})^2}{\sum_{i=1}^n (x_i - \bar{x})^2)}})\)
data_predict <- bind_cols(data.frame(T9 = ozone$T9), predict(lm(maxO3 ~ T9, data= ozone), interval = "predict"))
ozone %>%
ggplot(aes(x = T9, y = maxO3)) +
geom_point() +
geom_smooth(method ="lm") +# affiche intervalle de confiance par défaut
geom_ribbon(data = data_predict, aes(x = T9, ymax = upr, ymin = lwr, y = fit), alpha = .2, fill = "lightblue3") +
theme_bw()+
labs(title = "Intervalle de confiance du comportement moyen") +
theme(text = element_text(size = 15))
Vérification des hypothèses de départ:
Des exemples de modélisation que vous effectuez tous les jours ?
Comment faites-vous ?
Vous listez les variables ( etc.)
Vous éliminez celles qui sont négligeables (ex. )
Vous quantifiez l’effet des variables restantes
Les statistiques permettent de faire cela avec des phénomènes complexes, en partant de données collectées.
Prévoir la sévérité d’une maladie fongique en fonction de la météo (P/ETP/T°) et de l’itk (gestion des résidus, sensibilité variétale etc;)
Prédire les potentiels de rendements futurs du soja en France
Potentiel de production éolien en fonction des conditions météorologiques
Objectifs:
Comprendre quelles variables ont une influence sur une variable quanti
Prévoir les valeurs de la variable réponse dans de nouvelles conditions
\[\mbox{Réponse} = f(var1, \color{red}{var_2, ..., var_p}) =\underbrace{var1 + \color{red}{var_2 + ...+ var_p}}_{\mbox{régression linéaire}}\]
\[\left\{ \begin{array}{l} \forall i=1,...,n~~~~\varepsilon_i ~~\mbox{i.i.d.}~~,~~\mathbb{E}(\varepsilon_i)=0,~~\mathbb{V}(\varepsilon_i)=\sigma^2\\ \forall i\neq k~~~~cov(\varepsilon_i,\varepsilon_{k})=0\\ \end{array}\right.\]
Cela s’écrit ainsi:
\[MaxO3 \sim vent + T9 + \mbox{vent:T9}\]
\[MaxO3_{ij} \sim \mu+\left\{ \begin{array}{l}
\alpha_{1} ~\mbox{si vent d'est} \\
\alpha_{2} ~\mbox{si vent du nord} \\
\alpha_{3} ~\mbox{si vent d'ouest} \\
\alpha_{4} ~\mbox{si vent du sud} \\
\end{array}
\right\} ~~+~~ \left(\beta+\left\{ \begin{array}{l}
\gamma_{1} ~\mbox{si vent d'est} \\
\gamma_{2} ~\mbox{si vent du nord} \\
\gamma_{3} ~\mbox{si vent d'ouest} \\
\gamma_{4} ~\mbox{si vent du sud} \\
\end{array}
\right\}\right)\times T9{ij}+ alea_{ij}\] \[\left\{
\begin{array}{l}
\forall i,j~~~~Y_{ij}=\mu+\alpha_i+(\beta+\gamma_i)\times x_{ij} + \varepsilon_{ij}\\
\forall i,j~~~~\varepsilon_{ij} ~~\mbox{i.i.d.}~~,~~\mathbb{E}(\varepsilon_{ij})=0,~~\mathbb{V}(\varepsilon_{ij})=\sigma^2\\
\forall i,j~~~~cov(\varepsilon_{ij},\varepsilon_{i'j'})=0\\
\end{array}\right.\]
Définition courante: réaction réciproque de deux phénomènes l’un sur l’autre
Définition statistique : l’effet d’un facteur sur Y diffère selon les modalités de l’autre facteur
library(dplyr)
ozone %>%
group_by(vent, pluie) %>%
summarize(MOY = mean(maxO3)) %>%
ggplot(aes(x=vent, y=MOY, col=pluie, group=pluie)) +
geom_line() +
geom_point() +
labs("Interaction pluie:vent sur maxO3", x = "Direction du vent", y = "Maximum d'ozone") +
theme_bw()+
theme(text = element_text(size = 15))
Cela s’écrit ainsi:
\[MaxO3 \sim vent + pluie + \mbox{vent:pluie}\] \[MaxO3_{ijk} \sim \mu+\left\{ \begin{array}{l}
\alpha_{1} ~\mbox{si vent d'est} \\
\alpha_{2} ~\mbox{si vent du nord} \\
\alpha_{3} ~\mbox{si vent d'ouest} \\
\alpha_{4} ~\mbox{si vent du sud} \\
\end{array}
\right\} + \left\{ \begin{array}{l}
\beta_{1} ~\mbox{si pluie} \\
\beta_{2} ~\mbox{si sec} \\
\end{array}
\right\} +
\left\{ \begin{array}{l}
\alpha\beta_{11} ~\mbox{si vent d'est ET pluie} \\
\alpha\beta_{12} ~\mbox{si vent d'est ET sec} \\
\alpha\beta_{21} ~\mbox{si vent du nord ET pluie} \\
\cdots
\alpha\beta_{42} ~\mbox{si vent du sud ET sec} \\
\end{array}
\right\} + alea_{ijk}\] \[\left\{
\begin{array}{l}
\forall i,j,k~~~~Y_{ijk}=\mu+\alpha_i+\beta_j +\alpha\beta_{ij} +\varepsilon_{ijk}\\
\forall i,j,k~~~~\varepsilon_{ijk} ~~\mbox{i.i.d.}~~,~~\mathbb{E}(\varepsilon_{ijk})=0,~~\mathbb{V}(\varepsilon_{ijk})=\sigma^2\\
\forall i,j,k~~~~cov(\varepsilon_{ijk},\varepsilon_{i'j'k'})=0\\
\end{array}\right.\]
Quatres types d’effet possibles
theme_set(theme_bw())
ozone %>%
ggplot(aes(x = T9, y = maxO3)) +
geom_point() +
geom_smooth(method ="lm", se= FALSE) +
labs(title = "Quanti sur quanti")
ozone %>%
ggplot(aes(x = vent, y = maxO3, color = vent)) +
geom_point(position= position_jitter(width =.05, height= 0)) +
geom_boxplot(alpha= .3, outlier.shape = NA) +
labs(title = "Quali sur quanti") +
theme_bw()
ozone %>%
ggplot(aes(x = T9, y = maxO3, color = vent))+
geom_point() +
geom_smooth(method = "lm", se = FALSE) +
labs(title = "Quali / quanti sur quanti") +
theme_bw()
ozone %>%
group_by(vent, pluie) %>%
summarize(MOY = mean(maxO3)) %>%
ggplot(aes(x=vent, y=MOY, col=pluie, group=pluie)) +
geom_line() +
geom_point() +
labs(title = "Quali / quali sur quanti") +
theme_bw()
Le modèle linéaire peut souvent être adapté à des problèmes issu du vivant, modulo quelques points de vigilance
Réponse | Variable(s) explicative(s) | Méthode |
Var. quantitative | 1 var. quantitative | régression linéaire simple |
Var. quantitative | 1 var. qualitative à \(I\) modalités | analyse de variance à 1 facteur (rq: si \(I=2\) équivaut à comparaison de 2 moyennes) |
Var. quantitative | \(p\) var. quantitatives | régression linéaire multiple |
Var. quantitative | \(K\) var. qualitatives | analyse de variance à \(K\) facteurs |
Var. quantitative | var. quantitatives et qualitatives | analyse de covariance |
Var. qualitative (2 catégories) | var. quantitatives et qualitatives | régression logistique |
Var. qualitative (K catégories) | var. quantitatives et qualitatives | régression multinomiale |
\[\left\{
\begin{array}{l}
\forall i=1,...,n~~~~Y_i=\color{red}{\beta_0}+\color{red}{\beta_1}x_{i1}+\color{red}{\beta_2}x_{i2}+\color{red}{\beta_3}x_{i3}+...+\color{red}{\beta_p}x_{ip} + \varepsilon_{i}\\
\forall i=1,...,n~~~~\varepsilon_i ~~\mbox{i.i.d.}~~,~~\mathbb{E}(\varepsilon_i)=0,~~\mathbb{V}(\varepsilon_i)=\sigma^2\\
\forall i\neq k~~~~cov(\varepsilon_i,\varepsilon_{k})=0\\
\end{array}\right.\]
(p+1) paramètres à estimer + 1 paramètre de variance \(\sigma^2\)
Matriciellement : \(\displaystyle{Y=X\beta+E~~~~\mbox{avec}~~\mathbb{E}(E)=0,~~\mathbb{V}(E)=\sigma^2 Id}\)
\[\left( \begin{array}{c} Y_1\\ \vdots \\ Y_i \\ \vdots \\ Y_n \\ \end{array} \right) = \overset{{\color{gray}{\begin{matrix}{\beta_0} & {\beta_1}& \beta_2&\ldots &\beta_p\end{matrix}}}}{ \left( \begin{array}{cccccc} 1 & x_{11} & x_{12}& \cdots & x_{1p}\\ \vdots & & \vdots& & \vdots \\ 1 & x_{i1} & x_{i2}& & x_{ip} \\ \vdots & \vdots & \vdots& & \vdots \\ 1 & x_{n1} & x_{n2}& \cdots & x_{np}\\ \end{array} \right)} \left( \begin{array}{c} \color{red}{\beta_0}\\ \color{red}{\beta_1}\\ \color{red}{\beta_2} \\ \vdots \\ \color{red}{\beta_p} \\ \end{array} \right) + \left( \begin{array}{c} \varepsilon_1\\ \vdots \\ \varepsilon_i \\ \vdots \\ \varepsilon_n \\ \end{array} \right)\]
Rq: ANOVA et ANCOVA peuvent aussi s’écrire sous cette forme.
\[\left\{ \begin{array}{l} \forall i,j,k~~~~Y_{ijk}=\color{red}{\mu}+\color{red}{\alpha_i}+\color{red}{\beta_j} +\color{red}{\alpha\beta_{ij}} +\varepsilon_{ijk}\\ \forall i,j,k~~~~\varepsilon_{ijk} ~~\mbox{i.i.d.}~~,~~\mathbb{E}(\varepsilon_{ijk})=0,~~\mathbb{V}(\varepsilon_{ijk})=\sigma^2\\ \forall i,j,k~~~~cov(\varepsilon_{ijk},\varepsilon_{i'j'k'})=0\\ \end{array}\right.\]
\[\left\{ \begin{array}{l} \forall i,j~~~~Y_{ij}=\color{red}{\mu}+\color{red}{\alpha_i}+(\color{red}{\beta}+\color{red}{\gamma_i})\times x_{ij} + \varepsilon_{ij}\\ \forall i,j~~~~\varepsilon_{ij} ~~\mbox{i.i.d.}~~,~~\mathbb{E}(\varepsilon_{ij})=0,~~\mathbb{V}(\varepsilon_{ij})=\sigma^2\\ \forall i,j~~~~cov(\varepsilon_{ij},\varepsilon_{i'j'})=0\\ \end{array}\right.\]
Critère des moindres carrés: estimer les paramétres en minimisant la somme des carrés des écarts entre observations et prévisions par le modéle
\[Y\approx X\beta\] \[X'Y\approx X'X\beta\] \[\color{red}{\hat\beta = (X^{\prime}X)^{-1}X^{\prime}Y} ~~\mbox{si }X^{\prime}X\mbox{ est inversible}\]
Propriétés \(\mathbb{E}(\hat\beta)=\beta; \ \mathbb{V}(\hat\beta)=(X^{\prime}X)^{-1}\sigma^2\)
La variance des résidus \(\sigma^2\) est estimée par: \[\hat \sigma^2=\frac{\sum_{i}(Y_{i}-\hat Y_{i})^2}{\mbox{nb données} - \mbox{nb paramétres estimés é partir des données}}~~~~~~~~~~\mathbb{E}(\hat\sigma^2)=\sigma^2\]
\(\displaystyle{\sum_{i=1}^n(y_i-\bar y)^2}\) | \(= \displaystyle{\sum_{i=1}^n(\hat y_i-\bar y)^2}\) | \(+ \displaystyle{\sum_{i=1}^n(y_i-\hat y_i)^2}\) | |
Variabilité | totale | modèle | résiduelle |
Pourcentage de variabilité de \(Y\) expliquée par le modèle: \(R^2 = \frac{SC_{modele}}{SC_{totale}}\)
Propriétés: \(R^2 \in [0,1]\).
La variabilité du modèle peut être décomposée par variable de 2 façons:
en calculant la variabilité expliquée par chaque variable les unes aprés les autres (pb : la variabilité d’une variable dépend de l’ordre d’introduction des variables)
en calculant la variabilité expliquée exclusivement par une variable (pb : la somme des variabilités de toutes les variables n’est pas égale à la variabilité du modèle)
Dans certains cas (données équilibrées), la variabilité du modéle se décompose parfaitement et ces 2 calculs donnent les mêmes résultats.
library(FactoMineR)
LinearModel(maxO3~T9+T12+T15+Ne9+Ne12+Ne15+Vx9+Vx12+Vx15+maxO3v+vent+pluie, data =ozone)
Call:
LinearModel(formula = maxO3 ~ T9 + T12 + T15 + Ne9 + Ne12 + Ne15 +
Vx9 + Vx12 + Vx15 + maxO3v + vent + pluie, data = ozone)
Residual standard error: 14.51 on 97 degrees of freedom
Multiple R-squared: 0.7686
F-statistic: 23.01 on 14 and 97 DF, p-value: 8.744e-25
AIC = 613 BIC = 653.8
Ftest
SS df MS F value Pr(>F)
T9 0.2 1 0.2 0.0011 0.97325
T12 376.0 1 376.0 1.7868 0.18445
T15 30.3 1 30.3 0.1439 0.70526
Ne9 1016.5 1 1016.5 4.8312 0.03033
Ne12 37.9 1 37.9 0.1803 0.67208
Ne15 0.1 1 0.1 0.0003 0.98680
Vx9 50.2 1 50.2 0.2388 0.62619
Vx12 35.7 1 35.7 0.1697 0.68127
Vx15 122.6 1 122.6 0.5826 0.44715
maxO3v 5560.4 1 5560.4 26.4261 1.421e-06
vent 297.8 3 99.3 0.4718 0.70267
pluie 182.9 1 182.9 0.8694 0.35344
Residuals 20410.2 97 210.4
Ttest
Estimate Std. Error t value Pr(>|t|)
(Intercept) 20.762962 15.461879 1.3428 0.18245
T9 0.039170 1.164957 0.0336 0.97325
T12 1.972574 1.475705 1.3367 0.18445
T15 0.450308 1.187073 0.3793 0.70526
Ne9 -2.109755 0.959855 -2.1980 0.03033
Ne12 -0.605592 1.426338 -0.4246 0.67208
Ne15 -0.017178 1.035894 -0.0166 0.98680
Vx9 0.482609 0.987624 0.4887 0.62619
Vx12 0.513795 1.247167 0.4120 0.68127
Vx15 0.726623 0.951976 0.7633 0.44715
maxO3v 0.344378 0.066991 5.1406 1.421e-06
vent - Est -2.874041 5.157999 -0.5572 0.57867
vent - Nord -2.334477 2.890844 -0.8075 0.42133
vent - Ouest 2.662276 3.658288 0.7277 0.46853
vent - Sud 2.546243 3.061435 0.8317 0.40761
pluie - Pluie -1.623565 1.741257 -0.9324 0.35344
pluie - Sec 1.623565 1.741257 0.9324 0.35344
L’ensemble de variables \({\mathcal V}\) apporte-t-il des informations complémentaires intéressantes sachant que les autres variables sont déjé dans le modèle ?
Hypothèses : \(H_0\):“tous les coefficients associés aux variables de \({\mathcal V}\) sont égaux à 0” contre \(H_1\) : “au moins un coefficient des variables \({\mathcal V} \neq\) 0
Statistique de test: \(\displaystyle{F_{obs}=\frac{SC_{\mathcal V}/ddl_{\mathcal V}}{SC_R/ddl_R}=\frac{CM_{\mathcal V}}{CM_R} }\)
Loi de la statistique de test: Sous \(H_0\), \({\mathcal L}(F_{obs}) = {\mathcal F}_{ddl_R}^{ddl_{\mathcal V}}\)
Décision : \(\mathbb{P}({\mathcal F}_{ddl_{\mathcal V}}^{ddl_R}>F_{obs}) < 0.05\ \ \Longrightarrow\) Rejet de \(H_0\)
Revient à choisir entre le sous-modèle sans les variables \({\mathcal V}\) ou le modèle complet
Si \({\mathcal V}\) contient tous les effets : revient à tester si \(R^2\) est significativement différent de 0, i.e. si toutes les variables sont inutiles (versus au moins une utile)
On somme les degrés de liberté associés é l’ensemble \({\mathcal V}\) sachant qu’1 variable quanti à 1 ddl, 1 variable quali à \(I-1\) ddl et une interaction a comme ddl le produit des ddl de chaque facteur
Sélection de modèle = trouver un compromis entre un modèle qui s’ajuste bien aux données et qui n’a pas “trop” de paramètres (Rappel: )
\(AIC = 2p - 2ln(\hat{L})\)
\(BIC = pln(n) - 2ln(\hat{L})\)
A votre avis, quelle est la différence entre les 2 critères ( !)
Plusieurs stratégies
Results for the complete model:
==============================
Call:
LinearModel(formula = maxO3 ~ ., data = ozone, selection = "bic")
Residual standard error: 14.51 on 97 degrees of freedom
Multiple R-squared: 0.7686
F-statistic: 23.01 on 14 and 97 DF, p-value: 8.744e-25
AIC = 613 BIC = 653.8
Results for the model selected by BIC criterion:
===============================================
Call:
LinearModel(formula = maxO3 ~ T12 + Ne9 + Vx9 + maxO3v, data = ozone,
selection = "bic")
Residual standard error: 14 on 107 degrees of freedom
Multiple R-squared: 0.7622
F-statistic: 85.75 on 4 and 107 DF, p-value: 1.763e-32
AIC = 596 BIC = 609.6
Ftest
SS df MS F value Pr(>F)
T12 6650.4 1 6650.4 33.9334 6.073e-08
Ne9 2714.8 1 2714.8 13.8522 0.0003172
Vx9 903.4 1 903.4 4.6094 0.0340547
maxO3v 7363.5 1 7363.5 37.5721 1.499e-08
Residuals 20970.2 107 196.0
Ttest
Estimate Std. Error t value Pr(>|t|)
(Intercept) 12.631310 11.000877 1.1482 0.2534427
T12 2.764090 0.474502 5.8252 6.073e-08
Ne9 -2.515402 0.675845 -3.7219 0.0003172
Vx9 1.292857 0.602180 2.1470 0.0340547
maxO3v 0.354832 0.057888 6.1296 1.499e-08
Lister les variables potentiellement explicatives / prédictives
Visualiser
Selectionner le sous-modèle (minimisation de l’AIC ou du BIC)
Interpréter les résultats (quelles variables ressortent ? Est-ce surprenant ? Est-ce en accord avec les connaissances sur le sujet ? Des confusions possibles ?)
Interpréter les coefficients (signe, valeur etc.)
(Prédire pour de nouvelles valeurs)
La matrice de design \(X\) (dans \(Y = X\beta + E\)) a autant de lignes que d’individus. Pour les colonnes, c’est variable…
Constante (\(\mu\) ou \(\beta_0\)) | Variable quanti | Variable Quali | Interaction quali -quali | |
---|---|---|---|---|
Représentation dans X | Une colonne de 1 | Valeur de la variable | (I-1) colonnes par modalités de chaque variable à I modalités | (I-1)*(J-1) colonnes |
Degrés de libertés (ddl) | 1 | 1 | I-1 | (I-1)*(J-1) |
Commentaires | Contrainte à poser sur les paramètres (le mieux est \(\sum_{i=1}^n \alpha_i = 0\)) | Contrainte à poser sur les paramètres (le mieux est \(\forall i, \sum_j \alpha \beta_{ij} =0\) et \(\forall j, \sum_i \alpha \beta_{ij} =0\)) |
Important
Le choix de la contrainte impacte FORTEMENT l’interprétation
Certaines fonctions de R par défaut utilisent la contrainte 2. !
Comparez les sorties de ces différentes lignes de code…
2 situations
Remarques:
Quand les données sont équilibrées, la décomposition de la variabilité est parfaite:
\[\begin{array}{ccl} \displaystyle{\sum_{i,j,k}(y_{ijk}-y_{\bullet\bullet\bullet})^2}&=& \displaystyle{\sum_{i,j,k}\underbrace{(y_{i\bullet\bullet}-y_{\bullet\bullet\bullet})^2}_{\hat\alpha_i^2}} + \displaystyle{\sum_{i,j,k}\underbrace{(y_{\bullet j \bullet }-y_{\bullet \bullet \bullet})^2}_{\hat\beta_j^2}}\\ &&+ \displaystyle{\sum_{i,j,k}\underbrace{(y_{ij\bullet }-y_{i\bullet \bullet}-y_{\bullet j\bullet}+y_{\bullet \bullet\bullet})^2}_{\widehat{\alpha\beta}_{ij}^2}}+ \displaystyle{\sum_{i,j,k}\underbrace{(y_{ijk}-y_{ij\bullet})^2}_{\varepsilon_{ijk}^2}}\\ \end{array}\]
Quand les données sont équilibrées, les coefficients s’estiment simplement:
\[\begin{array}{c} \hat\mu=y_{\bullet \bullet \bullet}~~~~~~~~~~~~~~~~~~~~ \forall i,~\hat\alpha_i=y_{i \bullet \bullet}-y_{\bullet \bullet \bullet}\\ \forall j,~\hat\beta_j=y_{\bullet j \bullet}-y_{\bullet \bullet \bullet}~~~~~~~~~~~~ \forall i,j~\widehat{\alpha\beta}_{ij}=y_{ij \bullet}-y_{i\bullet \bullet}-y_{\bullet j\bullet}+y_{\bullet \bullet \bullet} \end{array}\]
\(\Longrightarrow\) On quantifie parfaitement ce qui est expliqué par chaque variable ou interaction
Moyennes ajustées = \(\hat{\mu} + \hat{\alpha}_i\): Permet de s’affranchir de l’effet des autres variables
Comparaisons possibles 2 à 2, moyennant une correction de Bonferroni par ex.
$adjMean
Produit emmean SE df lower.CL upper.CL
CoteOr_bio70 4.50 0.264 118 3.75 5.25
CoteOr_bio85 2.42 0.275 118 1.63 3.20
Equador72 3.88 0.264 118 3.12 4.63
Lindt70 4.79 0.264 118 4.04 5.55
Lindt78 4.29 0.264 118 3.54 5.05
Lindt85 2.58 0.264 118 1.83 3.34
Repere_bio74 3.88 0.275 118 3.09 4.66
Repere_bio85 2.46 0.264 118 1.70 3.21
Villars72 5.54 0.264 118 4.79 6.30
Villars85 3.17 0.264 118 2.41 3.92
Results are averaged over the levels of: Juge
Confidence level used: 0.95
Conf-level adjustment: bonferroni method for 10 estimates
$groupComp
CoteOr_bio85 Repere_bio85 Lindt85 Villars85 Equador72 Repere_bio74
"a" "a" "a" "ab" "bc" "bc"
Lindt78 CoteOr_bio70 Lindt70 Villars72
"bc" "cd" "cd" "d"
attr(,"class")
[1] "meansComp"
\(\hat{Y} = \hat{\beta_0} + \hat{\beta_1}x_{i1} + \hat{\beta_2}x_{i2} + ... + \hat{\beta_p}x_{ip}\)
Prédire Y pour : (T12=19, Ne9=8, Vx9=1.2, maxO3v=70) et (T12=23, Ne9=10, Vx9=0.9, maxO3v=95)
Sur PC:
model <- LinearModel(maxO3 ~ ., data = ozone, selection = "bic")
xnew <- data.frame(T12=c(19,23), Ne9=c(8,10), Vx9=c(1.2,0.9), maxO3v=c(70,95))
predict(model,xnew,interval="pred")
fit lwr upr
1 71.41544 42.90026 99.93063
2 85.92393 56.76803 115.07983
fit lwr upr
1 71.41544 64.86327 77.96761
2 85.92393 76.98627 94.86159
Les résidus sont la part du phénomène non-expliquée par le modèle
On peut vérifier les hypothèses initiales du modèle
Levene's Test for Homogeneity of Variance (center = median)
Df F value Pr(>F)
group 3 1.5589 0.2036
108
Shapiro-Wilk normality test
data: res
W = 0.97117, p-value = 0.01587
LinearModel(maxO3 ~ (T9 + T12 + T15 + Ne9 + Ne12 + Ne15 + Vx9 + Vx12 + Vx15 + maxO3v + pluie + vent) * (pluie + vent), data=ozone, selection="bic")
Ce qui revient à écrire :
maxO3 ~ T9 + T12 + T15 + Ne9 + Ne12 + Ne15 + Vx9 + Vx12 + Vx15 + maxO3v + pluie + vent + T9:pluie + T12:pluie + T15:pluie + Ne9:pluie + Ne12:pluie + Ne15:pluie + Vx9:pluie + Vx12:pluie + Vx15:pluie + maxO3v:pluie + vent:pluie + T9:vent + T12:vent + T15:vent + Ne9:vent + Ne12:vent + Ne15:vent + Vx9:vent + Vx12:vent + Vx15:vent + maxO3v:vent
Results for the complete model:
Call: LinearModel(formula = maxO3 ~ (T9 + T12 + T15 + Ne9 + Ne12 + Ne15 + Vx9 + Vx12 + Vx15 + maxO3v + pluie + vent) * (pluie + vent), data = ozone, selection = "bic")
Residual standard error: 14.54 on 56 degrees of freedom
Multiple R-squared: 0.8658
F-statistic: 6.569 on 55 and 56 DF, p-value: 2.585e-11
AIC = 634 BIC = 786.2
Results for the model selected by BIC criterion:
Call:
LinearModel(formula = maxO3 ~ T9 + T15 + Ne12 + Vx9 + maxO3v + vent + T9:vent + T15:vent, data = ozone, selection = "bic")
Residual standard error: 13.8 on 97 degrees of freedom
Multiple R-squared: 0.7906
F-statistic: 26.16 on 14 and 97 DF, p-value: 8.082e-27
AIC = 601.8 BIC = 642.6
SS df MS F value Pr(>F)
T9 606.2 1 606.2 3.1841 0.0774866 .
T15 252.8 1 252.8 1.3278 0.2520220
Ne12 2107.0 1 2107.0 11.0664 0.0012425 **
Vx9 1657.3 1 1657.3 8.7046 0.0039790 **
maxO3v 5160.8 1 5160.8 27.1060 1.078e-06 ***
vent 12.5 3 4.2 0.0218 0.9956079
T9:vent 2587.1 3 862.4 4.5294 0.0051335 **
T15:vent 3722.1 3 1240.7 6.5165 0.0004613 ***
Residuals 18468.3 97 190.4
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
On peut dire (à partir des effets significatifs) qu’il y a, sur le max d’O3:
On peut aussi dire (à partir des absences d’effets significatifs):
Estimate Std. Error t value Pr(>|t|)
(Intercept) 18.2063080 13.70594596 1.32835107 1.871790e-01
T9 1.8269164 1.02383156 1.78439159 7.748658e-02
T15 1.0200174 0.88518659 1.15231903 2.520220e-01
Ne12 -3.0131694 0.90577505 -3.32661998 1.242541e-03
Vx9 2.2212608 0.75287821 2.95035871 3.978950e-03
maxO3v 0.3466961 0.06659106 5.20634637 1.078363e-06
vent - Est 0.4734242 17.01021918 0.02783175 9.778535e-01
vent - Nord 3.2973579 15.03561957 0.21930310 8.268748e-01
vent - Ouest -1.1250216 14.00661570 -0.08032073 9.361477e-01
vent - Sud -2.6457606 15.14886158 -0.17465079 8.617181e-01
vent - Est : T9 -4.7442269 2.14177382 -2.21509241 2.909369e-02
vent - Nord : T9 6.1407678 1.70138426 3.60927739 4.879524e-04
vent - Ouest : T9 -0.9505390 1.34553370 -0.70644010 4.816079e-01
vent - Sud : T9 -0.4460019 1.52215003 -0.29300782 7.701421e-01
vent - Est : T15 3.6809644 1.79674431 2.04868573 4.319389e-02
vent - Nord : T15 -5.2279430 1.21533621 -4.30164338 4.045444e-05
vent - Ouest : T15 0.9796886 0.93082643 1.05249333 2.951881e-01
vent - Sud : T15 0.5672899 1.11114058 0.51054741 6.108279e-01
Lister les variables potentiellement explicatives / prédictives
Visualiser
Selectionner le sous-modèle (minimisation de l’AIC ou du BIC)
Interpréter les résultats (quelles variables ressortent ? Est-ce surprenant ? Est-ce en accord avec les connaissances sur le sujet ? Des confusions possibles ?
Interpréter les coefficients (signe, valeur etc.)
Prédire pour de nouvelles valeurs
Erreur dans file(file, “rt”) : impossible d’ouvrir la connexion vers ‘https://r-stat-sc-donnees.github.io/ozone.tx’
Error in LinearModel(maxO3 ~ pluie, data = ozone): impossible de trouver la fonction "LinearModel"
Error in Linearmodel(maxO3 ~ pluie, data = ozone): impossible de trouver la fonction "Linearmodel"