library(mgcv)
air <- read.csv("qualite_air.csv", fileEncoding = "UTF-8-BOM")
air$heure <- as.integer(substr(air$Date_Heure, 12, 13))
air$jour <- as.integer(format(as.Date(substr(air$Date_Heure, 1, 10)), "%j"))
longueuil <- subset(air, Station == "06600 - Longueuil" & !is.na(O3))STT-4300 — Régression II
Labo 3
Date25 mars 2026
SujetModèles additifs généralisés (GAM)
Objectifs
- Ajuster un modèle additif avec la librairie
mgcvet interpréter les effets lissés de chaque variable. - Comprendre le rôle du paramètre de lissage et des degrés de liberté effectifs dans le compromis biais-variance.
- Vérifier l’hypothèse d’additivité et étendre les GAM au cas d’une réponse non gaussienne (GAM logistique).
Mise en contexte
On reprend le jeu de données qualite_air (télécharger) du labo 2, mais sur l’année entière : les mesures horaires d’ozone de 2025 à la station de Longueuil, soit environ 8 700 observations. La réponse \(Y\) est la concentration d’ozone (O3) et il y a deux variables explicatives, l’heure de la journée (heure) et le jour de l’année (jour, de 1 à 365). Pour le GAM logistique, on utilisera le jeu de données arbres (télécharger) du labo 1.
Consignes
- Ajuster le modèle additif
mod1 <- gam(O3 ~ s(heure) + s(jour), data = longueuil). Afficher les effets partiels estimés (plot(mod1, pages = 1)) et commenter leur forme : sont-ils linéaires? Que représente chacun des deux cycles? Justifient-ils l’usage d’un GAM plutôt que d’un modèle linéaire? - Examiner
summary(mod1): rapporter les degrés de liberté effectifs de chaque terme lissé et la déviance expliquée. Tester \(H_0 : f_j \equiv 0\) pour chacune des deux variables. L’un des deux termes utilise presque tous ses degrés de liberté disponibles : lequel, et qu’est-ce que cela suggère? - Comparer le modèle additif à un modèle linéaire usuel (
lm(O3 ~ heure + jour)) et à un modèle polynomial (par exemple degré 5 pour chaque variable) à l’aide de l’AIC et d’une estimation de l’erreur de prédiction par validation croisée. Réfléchir à ce que vaut une validation croisée par blocs tirés au hasard quand les observations sont des heures consécutives. - Faire varier artificiellement le paramètre de lissage du terme
s(jour)(argumentsp, en donnant au terme une base plus riche aveck = 30) pour illustrer l’effet de \(\lambda \to 0\) et \(\lambda \to \infty\) sur la courbe ajustée. Que choisit le GCV avec cette base plus riche, et pourquoi? - Le modèle additif suppose que le cycle journalier a la même forme toute l’année. Ajuster une surface
te(heure, jour), puis un modèle avec effets principaux et interaction pure,s(heure) + s(jour) + ti(heure, jour). L’hypothèse d’additivité tient-elle? Discuter de ce que l’interaction apporte, et de ce qu’elle coûte. - GAM logistique. Sur
arbres, poser \(Y = 1\) si l’arbre est dans la strate inférieure du couvert (canopy_stratumégal àIntermédiaireouOpprimé) et ajustergam(Y ~ s(diameter_cm) + espece, family = binomial). Représenter la probabilité ajustée en fonction du diamètre et comparer à une régression logistique usuelle. Que valent les degrés de liberté effectifs, et qu’en conclure?
Matériel
- Notes de cours : Modèles additifs et modèles additifs généralisés (GAM)
- Données :
qualite_air.csv,arbres.csv - Librairies R :
mgcv