TP Ozone1 Ancova Logit
TP Ozone1 Ancova Logit
TP Ozone1 Ancova Logit
pour répondre au problème de prévision. Ceci passe par la mise en place d’un
TP ozone : Modèle linéaire gaussien, protocole très strict afin de s’assurer d’un minimum d’objectivité pour cette
comparaison.
binomial, courbe ROC
Penser à conserver dans des fichiers les commandes successives utilisées
ainsi que les principaux résultats tableaux et graphes.
Résumé Toutes les opérations sont réalisées dans R avec l’appui de bibliothèques
complémentaires éventuellement à télécharger (mlbench, MASS, boot,
Comparaison sur le même jeu de données des qualités de prévision
class, e1071, rpart, nnet, ipred, gbm, randomForest).
de plusieurs modèles obtenus par analyse de la covariance et régres-
D’autres logiciels sont bien évidemment utilisables (Splus, SAS, SPSS...).
sion logistique. Utilisation d’un échantillon test et courbe ROC.
Néanmoins, dans le cas de SAS, cela nécessiterait l’accès au module Enter-
prise Miner pour certaines méthodes (arbres, neurones) encore peu diffusé
1 Introduction car très cher. De plus certaines procédures du module classique SAS/Stat ne
comportent pas d’option de sélection automatique de variables quantitatives et
1.1 Objectif qualitatives.
L’objectif, sur ces données, est d’améliorer la prévision déterministe
1.2 Rappel : protocole de comparaison
(MOCAGE), calculée par les services de MétéoFrance, de la concentration
d’ozone dans certaines stations de prélèvement. Il s’agit d’un problème dit La démarche mise en œuvre enchaîne les étapes suivantes :
d’adaptation statistique d’une prévision locale de modèles à trop grande 1. Après une éventuelle première étape descriptive uni ou multidimension-
échelle en s’aidant d’autres variables également prévues par MétéoFrance, nelle visant à repérer les incohérences, les variables non significatives
mais à plus petite échelle (température, force du vent...). Plus précisé- ou de distribution exotique, les individus non concernés. . . et à étudier les
ment, deux variables peuvent être prévues : soit la concentration quantitative structures des données, procéder à un tirage aléatoire d’un échantillon test
d’ozone, soit le dépassement (qualitatif) d’un certain seuil fixé à 150µg 1 . Dans qui ne sera utilisé que lors de la dernière étape.
chaque cas, deux approches sont considérées : soit prévoir la concentration
quantitative puis en déduire l’éventuel dépassement ou bien prévoir directe- 2. Sur la partie restante qui sera découpée en échantillon d’apprentissage
ment le dépassement. Dans le premier cas, il s’agit d’abord d’une régression (des paramètres du modèle) et échantillon de validation (pour estimation
tandis que dans le deuxième il s’agit d’un problème de discrimination ou de sans biais du taux de mauvais classés), optimiser les choix afférents à
régression logistique. Question : quelles sont les meilleures méthodes et stra- chacune des méthodes de régression et/ou discrimination :
tégies pour prévoir la concentration d’ozone du lendemain d’une part et l’oc- • variables et interactions à prendre en compte dans la régression linéaire
curence d’un pic de pollution d’autre part ? ou logistique,
• variables et méthode pour l’analyse discriminante,
On se propose de tester différentes méthodes : régression logistique, ana- • nombre de nœuds dans l’arbre de régression ou de classification,
lyse discriminante, réseau de neurones, arbre de décision, agrégation d’arbres • architecture (nombre de couches, de neurones par couche, fonctions de
(bagging, boosting, random forest), SVM. L’objectif final, à ne pas perdre de transferts, nombre de cycles. . . ) du perceptron,
vue, est la comparaison de ces méthodes afin de déterminer la plus efficace • algorithme d’agrégation,
• noyau et complexité des SVMs.
1. Le seuil légal a été porté à 180µg mais celui-ci est bien trop rarement dépassé par les
observations et serait trop difficile à prévoir par estimation d’un modèle.
2 TP ozone : Modèle linéaire gaussien, binomial, courbe ROC
Puisque la pénalité est plus forte, on constate qu’effectivement le modèle sé- # du critère BIC par méthode descendante
lectionné par BIC est plus parcimonieux que celui sélectionné par AIC. reg.glm.stepBIC_D=step(reg.glm,
direction="backward",k=log(npop))
2.4 Calcul de l’erreur d’apprentissage anova(reg.glm.stepBIC_D,test="F")
Avant de vérifier la qualité de prédiciton de chacun des modèles construits, # Extraction des valeurs ajustées et des résidus
il faut vérifier leur qualité d’apprentissage. Les différents graphes sont donc à fit.glmBIC_D=reg.glm.stepBIC_D$fitted.values
tracer et les erreurs quadratiques moyennes d’apprentissage sont à comparer. res.glmBIC_D=reg.glm.stepBIC_D$residuals
# Graphe des résidus
#Modèle stepwise AIC plot.res(fit.glmBIC_D,res.glmBIC_D,"Residus
mean((predict(modlinAIC_S)-datappr$O3obs)^2) modele quadratique BIC_D")
#Modèle stepwise BIC On remarque que la présence de certains interactions ou variables sont perti-
mean((predict(modlinBIC_S)-datappr$O3obs)^2) nentes au sens du critère d’Akaïke mais pas significatives au sens du test de Fi-
sher. Cette présence dans le modèle peut être plus finement analysée en consi-
2.5 Modèle quadratique dérant une estimation de l’erreur par validation croisée. L’idée est de retirer
une à une les variables ou interactions les moins significatives et de voir com-
Le modèle de régression quadratique est estimé avec la fonction glm qui ment se comporte la validation croisée. D’autre part, si la procédure pas-à-pas
permet aussi une sélection automatique de modèle. Les méthodes descendante, conduit à un modèle différent, l’estimation de l’erreur par validation croisée
ascendante et stepwise des critères AIC et BIC sont à mettre en oeuvre. Afin de permet également d’optimiser le choix.
ne pas faire trop de répétitions dans l’énoncé de ce TP, la méthode descendante
pour AIC et BIC sont présentées à l’aide de la commande step du package stats. L’estimation des erreurs par validation croisée est calculée en utilisant une
fonction proposée dans la bibliothèque boot.
# Estimation du modèle avec interactions d’ordre 2
reg.glm=glm(O3obs~(.)^2,data=datappr) library(boot) # chargement de la bibliothèque
# validation croisée 10-plis
# Recherche du meilleur modèle au sens # modèle complet
# du critère d’Akaïke par méthode descendante cv.glm(datappr, reg.glm, K=10)$delta[1]
reg.glm.stepAIC_D=step(reg.glm, # modèle "Akaïke" méthode descendante
direction="backward") cv.glm(datappr, reg.glm.stepAIC_D, K=10)$delta[1]
anova(reg.glm.stepAIC_D,test="F")
La première commande suivante permet de récupérer le modèle optimal avant
# Extraction des valeurs ajustées et des résidus
de redéfinir celui-ci en retirant l’interaction la moins significative avant de ré-
fit.glmAIC_D=reg.glm.stepAIC_D$fitted.values
estimer l’erreur par validation croisée dans le cas du modèle sélectionné par
res.glmAIC_D=reg.glm.stepAIC_D$residuals
Akaike méthode descendante.
# Graphe des résidus
plot.res(fit.glmAIC_D,res.glmAIC_D,"Residus #la liste des effets du modèle optimal
modele quadratique AIC_D") reg.glm.stepAIC_D$formula
cv.glm(datappr, glm(O3obs ~JOUR + MOCAGE + TEMPE +
# Recherche du meilleur modèle au sens STATION + VentMOD + SRMH2O + LNO2 + LNO+
6 TP ozone : Modèle linéaire gaussien, binomial, courbe ROC
pred.log=predict(log.qm.step1,newdata=datestq, DepSeuilObs=datestq[,"DepSeuil"]
type="response") DepSeuilObsF=as.integer(DepSeuilObs)-1
# Matrice de confusion pour la prévision du plot.fiabilite(10,pred.log,DepSeuilObsF,
# dépassement de seuil "Diagramme de fiabilité - Régression Logistique")
table(pred.log>0.5,datestq[,"DepSeuil"])
La commande suivante fournit exactement le même graphique mais avec des
#Calcul des scores de Pierce et de Brier commandes plus synthétiques.
pss(datestq[,"DepSeuil"],pred.log>0.5) A<- verify(DepSeuilObs, pred.log,
9 TP ozone : Modèle linéaire gaussien, binomial, courbe ROC
plot.prob=function(pred,obs,mod){ rocglm=pred.glmAIC_D/300
predglm=prediction(rocglm,datestq[,"DepSeuil"])
rg=sort(pred,index.return=TRUE) perfglm=performance(predglm, "tpr","fpr")
plot(rg$x,type="l",col="orange",lwd=3, plot(perfglm,col=2,add=TRUE)
xlab="Observations",ylab="Probabilités", aire2=performance(predglm,"auc")
main=mod) aire2@y.values
points(obs[rg$ix],col="red",cex=0.3,pch=1)
Les résultats obtenus dépendent évidemment en plus de l’échantillonnage
legend(x="topleft",legend=c("Probabilités
initial entre apprentissage et test. Dans le cas où les courbes se croisent, cela
prédites","Dépassement de seuil de
signifie qu’il n’y a pas de prévision uniformément meilleure de l’occurrence
pollution"),lty=c(1,0),
de dépassement. Cela dépend de la sensibilité ou de la spécificité retenue pour
pch=c(-1,1),col=c("orange","red"),
le modèle. Ceci souligne l’importance de la bonne définition du critère à utili-
cex=0.8)
ser pour le choix d’une "meilleure" méthode. Ce choix dépend directement de
abline(h=0.5)
celui , "politique" ou "économique" de sensibilité et / ou spécificité du modèle
abline(v=150)
retenu. En d’autres termes, quel taux de fausse alerte, avec des imputations
}
économiques évidentes, est supportable au regard des dépassements non dé-
plot.prob(pred.log,DepSeuilObs,
tectés et donc de la dégradation sanitaire de la population à risque ?
"Régression Logistique")
C’est une fois ce choix arrêté que le statisticien peut opérer une comparaison
3.3.4 Courbe ROC et aire AUC des méthodes en présence.
Pour finir, la courbe ROC et l’aire AUC peuvent être utilisés afin de compa-
rer l’ensemble des modèles construits.
library(ROCR)
roclogit=predict(log.qm.step2,newdata=datestq,
type="response")
predlogit=prediction(roclogit,datestq[,"DepSeuil"])