1 ACP 2 Modèle linéaire

Transcription

1 ACP 2 Modèle linéaire
Formation
R
pour les statistiques
Statistiques avancées avec R
1
ACP
Pour eectuer une Analyse en Composantes Principales, on peut utiliser une librairie :
FactoMineR à installer et à charger dans la session. Pour charger une librairie particulière,
on utilise la commande library :
R
> library(FactoMineR)
Si la bibliothèque appelée n'est pas chargée sur votre machine, retourne un message d'erreur.
Pour installer un nouveau package, taper :
R
> install.packages("FactoMineR")
ou via l'interface de RStudio : Tools->Install Packages....
Ensuite une ACP se lance via la fonction PCA :
>
>
>
>
data(decathlon) # les données decathlon sont disponibles dans le package FactoMineR
resultatsACP = PCA(decathlon[,-13])
names(resultatsACP) # pour voir les différents résultats sauvegardés
resultatsACP$eig
2
2.1
Modèle linéaire
Introduction et commandes
La fonction de base pour le modèle linéaire est lm(formula, ...) (pour Linear Model). Mais
il en existe d'autres telles que glm() pour Generalized Linear Model, lme() (package nlme)
pour les modèles à eets aléatoires, nls() pour les modèles non linéaires. formula décrit le
modèle sous la forme
variable expliquée ∼ variables explicatives
avec les conventions suivantes :
V 1 + V 2 : pas d'interaction,
V 1 : V 2 interaction de V1 et V2,
V 1 ∗ V 2 = V 1 + V 2 + V 1 : V 2.
A l'aide des commandes ci-dessous, vous pourrez ajuster un modèle de régression linéaire simple,
mutiple et faire une analyse de la variance.
# Regression Poids sur Taille
#---------------------------regressionF = lm(Poids ~Taille,subset = Sexe=='F',data=AGRO)
summary(regressionF)
opar = par(mfrow = c(2,2), oma = c(0, 0, 1.1, 0))
plot(regressionF)
par(opar)
1
Formation
R
pour les statistiques
newTaille = data.frame(Taille=seq(140,185,5))
predicF = predict(regressionF,newTaille,interval='prediction')
plot(Taille[Sexe=='F'],Poids[Sexe=='F'],pch=19,
main='Intervalles de prediction',xlab='Taille (cm)',ylab='Poids (Kg)')
matplot(newTaille$Taille,predicF,add=TRUE,lty=c(1,2,2),type='l')
# Regression multiple
#-------------------cor(AGRO[Sexe=='F',3:6])
regMultF = lm(Poids ~ Taille + Pointure + Age, subset=Sexe=='F',data = AGRO)
summary(regMultF)
# Analyse de la variance
#----------------------ClAge = Age
ClAge[Age>=25]=25
ClAge = as.factor(ClAge)
table(Sexe,ClAge)
AnovaF = lm(Poids ~ Sexe*ClAge, data = AGRO)
summary(AnovaF)
anova(AnovaF)
# Analyse de la covariance
#------------------------Anaco = lm(Poids ~ Sexe*Taille, data = AGRO)
summary(Anaco)
anova(Anaco)
3
Exemple : pollution de l'air
La pollution de l'air constitue actuellement une des préoccupations majeures de santé publique.
De nombreuses études épidémiologiques ont permis de mettre en évidence l'inuence sur la santé
de certains composés chimiques comme le dioxyde de soufre (SO ), le dioxyde d'azote (NO ),
l'ozone (O ) ou des particules sous forme de poussière contenues dans l'air.
Des associations de surveillance de la qualité de l'air existent sur tout le territoire français et
mesurent la concentration des polluants. Elles enregistrent également les conditions météorologiques telles que la température, la nébulosité, le vent, etc. Nous disposons de 112 données
regroupées dans le chier ozone_fiche.txt.
2
2
3
3.1
Régression linéaire
Nous souhaitons ici analyser la relation entre le maximum journalier de la concentration en
ozone en µg/m (maxO3) et la température à diérentes heures de la journée (T9, T12, T15), la
nébulosité à diérentes heures de la journée (Ne9, Ne12, Ne15), la projection du vent sur l'axe
Est-Ouest à diérentes heures de la journée (Vx9, Vx12, Vx15) et la concentration maximale de
la veille du jour considéré (maxO3v).
1. Importer dans le logiciel R les données contenues dans le chier ozone_fiche.txt à l'aide
de la fonction read.table.
3
2
Formation
R
pour les statistiques
2. Extraire de ce chier les 11 premières colonnes et nommer les données correspondantes
ozone.m.
3. En utilisant la fonction lm, estimer les coecients de la régression linéaire multiple consistant à expliquer maxO3 en fonction de T9, T12, T15, Ne9, Ne12, Ne15, Vx9, Vx12, Vx15 et
maxO3v.
4. Sélectionner les variables les plus pertinentes en utilisant par exemple la fonction step.
Quel modèle retenez-vous? Analyser les résidus du modèle ainsi construit.
5. On pourra également faire de la prédiction en utilisant la fonction predict.
ANOVA à un facteur
3.2
Nous souhaitons à présent analyser la relation entre le maximum journalier de la concentration
en ozone (en µg/m ) et la direction du vent classée en secteurs (Nord, Sud, Est, Ouest) toujours
à partir des données du chier ozone_fiche.txt.
1. Ecrire le modèle statistique correspondant à une analyse de la variance à un facteur en
précisant son nombre de modalités.
2. Représenter sous forme de boxplot maxO3 en fonction de la direction du vent.
3. Estimer les paramètres du modèle.
Utiliser la fonction lm en faisant attention aux contraintes sur les coefcients pour rendre le modèle identiable. Vous pourrez utiliser par exemple l'option
contrasts=list(vent="contr.sum").
4. Le vent a-t-il un eet signicatif sur la concentration en ozone?
Utiliser la fonction anova.
5. Analyser le graphe des résidus.
6. Faire des tests de comparaison de moyennes deux à deux et conclure.
Utiliser la fonction pairwise.t.test.
3
Indication :
Indication :
Indication :
ANOVA à deux facteurs
3.3
Nous souhaitons à présent analyser le maximum journalier de la concentration en ozone (en
µg/m ) en fonction de la direction du vent classée en secteurs (Nord, Sud, Est, Ouest) stockée
dans la variable vent et de la précipitation représentée par la variable pluie toujours à partir
des données du chier ozone_fiche.txt.
Pour connaître les eectifs des combinaisons des diérentes modalités, vous pouvez utiliser la
fonction table.
1. Représenter les données en utilisant la fonction boxplot et la fonction interaction.plot.
2. Ecrire le modèle statistique correspondant à une analyse de la variance à deux facteurs
avec interaction.
3. Estimer les paramètres du modèle.
Utiliser lm(maxO3~vent*pluie) ou lm(maxO3~vent+pluie+vent:pluie).
4. Tester si le terme d'interaction est signicatif.
Utiliser la fonction anova.
5. Tester les diérents sous-modèles possibles. Lequel retenez-vous?
Utiliser la fonction anova(mod2,mod1) où mod2 et mod1 sont les résultats
respectivement de la fonction lm appliquée au petit et au grand modèle.
3
3
Indication :
Indication :
Indication :
Formation
R
pour les statistiques
ANCOVA
3.4
Nous souhaitons à présent analyser le maximum journalier de la concentration en ozone (en
µg/m ) en fonction de la direction du vent classée en secteurs (Nord, Sud, Est, Ouest) stockée
dans la variable vent et de la température T12.
En suivant la même démarche que celle proposée dans les deux paragraphes précédents proposer
une analyse de la covariance pour les données ozone_fiche.txt.
3
4

Documents pareils