library(FNN)
library(KernSmooth)
library(splines)
library(mgcv)
air <- read.csv("qualite_air.csv", fileEncoding = "UTF-8-BOM")
air$heure <- as.integer(substr(air$Date_Heure, 12, 13))
air$mois <- as.integer(substr(air$Date_Heure, 6, 7))
air$jour <- as.integer(format(as.Date(substr(air$Date_Heure, 1, 10)), "%j"))
quebec <- subset(air, Station == "03006 - Québec - Vieux-Limoilou")
ete <- subset(quebec, mois %in% 6:8 & !is.na(O3))STT-4300 — Régression II
Labo 4
Date1er avril 2026
SujetSynthèse : kNN, noyau, splines et GAM en compétition
Objectifs
- Comparer, sur un même jeu de données, l’ensemble des méthodes non paramétriques et non linéaires vues jusqu’ici (kNN, noyau, splines, GAM).
- Estimer et comparer l’erreur de prédiction test de chaque méthode par validation croisée.
- Développer un jugement critique sur le choix d’une méthode selon le contexte (nombre de variables, interprétabilité recherchée, taille de l’échantillon).
Mise en contexte
On reprend le jeu de données qualite_air (télécharger), mais à une autre station : Québec – Vieux-Limoilou. Comme aux labos 2 et 3, la réponse \(Y\) est la concentration d’ozone (O3) et la variable explicative \(X\) est l’heure de la journée ; on retient les mois de juin, juillet et août. Pour la partie multivariée, on utilisera l’année entière et les autres contaminants mesurés à la station : le monoxyde de carbone (CO), les particules fines (PM2.5-T640) et le carbone suie (BC_880nm).
Consignes
- Partitionner les données en un ensemble d’entraînement (70 %) et un ensemble test (30 %), ou prévoir une procédure de validation croisée à \(K=10\) plis réutilisable pour toutes les méthodes suivantes. Réfléchir aux conséquences d’un tirage au hasard parmi des heures consécutives.
- Ajuster, sur l’ensemble d’entraînement, chacun des modèles suivants pour prédire
O3en fonction deheure:- un modèle linéaire simple (référence) ;
- un estimateur kNN (
knn.reg), avec \(k\) choisi par validation croisée ; - un estimateur de noyau (
locpolyou la formule des poids), avec \(h\) choisi par validation croisée ; - une spline de lissage (
smooth.spline, en justifiant le choix entre GCV etcv = TRUE) ; - un GAM univarié (
gam(O3 ~ s(heure))).
- Pour chaque méthode, calculer l’erreur quadratique moyenne sur l’ensemble test (ou moyenne des erreurs de validation croisée). Présenter les résultats dans un tableau.
- Superposer, sur un même graphique, les cinq courbes ajustées par rapport au nuage de points. Commenter les ressemblances et différences.
- Extension multivariée. Sur l’année entière, ajuster un GAM avec plusieurs prédicteurs, par exemple
gam(O3 ~ s(heure) + s(jour) + s(CO) + s(PM25) + s(BC)), après avoir renommé les colonnesPM2.5-T640etBC_880nmet retiré les heures où une mesure manque. Comparer son erreur de prédiction test à celle du modèle linéaire multiple correspondant et à celle du GAM à deux cycles du labo 3. Quelles variables semblent avoir un effet non linéaire marqué? Comment ces effets s’interprètent-ils chimiquement? - Rédiger une conclusion (15-20 lignes) qui répond à la question : dans quelles circonstances choisiriez-vous kNN, le noyau, les splines, ou un GAM? Appuyez votre réponse sur vos résultats numériques et sur des arguments de flexibilité, de fléau de la dimension, et d’interprétabilité.
Matériel
- Notes de cours : kNN et noyau, Splines, GAM
- Données :
qualite_air.csv - Librairies R :
FNN,KernSmooth,splines,mgcv