L’interpolation spatiale est une méthode géostatistique permettant d’estimer les valeurs d’une variable à des emplacements non mesurés en utilisant des données ponctuelles existantes. Cette technique repose sur l’hypothèse fondamentale selon laquelle les valeurs proches dans l’espace sont plus similaires que les valeurs éloignées (principe de Tobler).
L’interpolation spatiale a de nombreuses applications, notamment dans la modélisation de phénomènes environnementaux tels que les précipitations, les températures, ou encore la pollution de l’air. Elle permet de générer une surface continue à partir de points discrets. Le choix de la méthode d’interpolation dépend des caractéristiques de la donnée et des objectifs de l’analyse.
Différentes méthodes
Méthodes disponibles :
Pondération par distance inverse (IDW)
Polygones de Thiessen
Kriging
Analyse de régression
Modèles linéaires
Modèles bayésiens
Chargement des données
L’objectif de cette étape est de préparer l’environnement pour l’analyse. Les bibliothèques utilisées incluent des outils pour :
tmap : Création de cartes interactives ou statiques.
terra : Gestion et visualisation des rasters et vecteurs. Ce package possède également des méthodes d’interpolation faciles à utiliser.
gstat : pour les outils d’interpolations spatiales.
Vous êtes habitués !
# Charger les bibliothèques nécessaireslibrary(tmap) # Pour la cartographielibrary(tidyverse) # Pour le traitement des données library(terra) # Pour les rasters et les vecteurslibrary(gstat) # Pour les méthodes d'interpolationlibrary(sf) # Pour faire communiquer terra et gstatlibrary(yardstick) # Pour les métriques de cross-validation
Et pour les données
# Charger les données de précipitationsdta_precip <-vect(x ="Data/TP/precipitation_texas.gpkg")projected_precip <-project(x = dta_precip, y ="EPSG:3081")# Ajouter deux colonnes avec les coordonées des points projected_precip_coords <-cbind(projected_precip, crds(projected_precip))# Charger la carte des limites du Texastexas_admin <-vect(x ="Data/TP/texas_admin.gpkg")projected_texas <-project(x = texas_admin, y ="EPSG:3081")
Késako ?
Les données importées comprennent :
Un jeu de données de précipitations au Texas (valeurs ponctuelles).
Les limites administratives du Texas (polygones).
Visualisation des données
Cette étape permet de visualiser les données de base pour vérifier leur contenu et leur distribution spatiale.
Les points représentent les précipitations mesurées à des emplacements spécifiques.
Le fond polygonal délimite le Texas, qui constitue notre zone d’étude.
La carte nous aide à comprendre les relations spatiales et la couverture des données échantillonnées.
Une bonne visualisation initiale est essentielle pour identifier les éventuels biais spatiaux ou lacunes dans les données.
Méthode 1 : Polygones de Thiessen / Voronoi
Principe : Les polygones de Thiessen (ou diagrammes de Voronoï) attribuent à chaque point un espace où il est considéré comme le plus proche. Cette méthode crée des zones homogènes autour des points d’échantillonnage.
Théorie sous-jacente :
Chaque polygone est une zone d’influence unique où tout point intérieur est plus proche de son point d’échantillonnage que de tout autre. Cette méthode repose sur l’idée que chaque point représente une zone homogène, sans variation spatiale interne.
Exemple concret :
Considérez un réseau de stations météorologiques. Chaque station “représente” la zone qui l’entoure. Si vous avez une station mesurant les précipitations, les zones environnantes qui lui sont les plus proches auront des valeurs similaires.
Polygones de Thiessen (2)
Étapes principales :
Création des polygones à partir des points de précipitations.
Découpage des polygones selon les limites du Texas pour éliminer les parties inutiles.
Avantages :
Simplicité conceptuelle et computationnelle.
Pas de paramètre à ajuster.
Limite principale : L’hypothèse implicite est que la variable reste constante à l’intérieur de chaque polygone, ce qui n’est pas adapté pour des phénomènes ayant des variations continues. Par exemple, dans le cas des précipitations, il peut y avoir de fortes variations spatiales non capturées par cette méthode.
Implémentation
Cette méthode, aussi appelée interpolation par proximité, peut être réalisée avec la fonction voronoi du package terra.
# Create a tessellated surfacetesselated_surf <-voronoi(x = projected_precip_coords)# Clip to the extent of Texas tesselated_texas <-intersect(x = tesselated_surf, y = projected_texas)
La cartographie les résultats !
Méthode 2 : Pondération par distance inverse (IDW)
Principe : L’IDW (Inverse Distance Weighting) applique un modèle où les valeurs estimées dépendent directement de la distance aux points mesurés : plus un point est proche, plus il contribue à l’estimation.
Théorie sous-jacente :
L’effet de distance est modulé par un paramètre de puissance (power). Une valeur power = 2 indique que l’influence d’un point sur son voisinage décroît avec le carré de la distance. Plus un point est éloigné, moins il influence l’estimation.
Exemple concret :
Dans l’estimation des précipitations, les stations proches auront une plus grande influence sur l’estimation des valeurs à des points non échantillonnés que celles situées à des centaines de kilomètres. Ce modèle suppose que la variabilité dans les données est fortement influencée par la proximité géographique.
IDW (2)
Étapes principales :
Création d’une grille raster couvrant le Texas.
Interpolation en utilisant une formule qui attribue un poids inversement proportionnel à la distance au carré (idp= 2.0).
Découpage du raster aux limites du Texas.
Avantages :
Prend en compte la continuité spatiale.
Facile à implémenter et rapide à calculer.
Limites :
Nécessité de choisir un paramètre idp (exponentielle de la distance).
Peut produire des artefacts dans les zones avec peu de points.
La méthode ne capture pas les relations spatiales complexes, comme les corrélations directionnelles dues au vent ou à l’altitude, qui peuvent affecter les précipitations par exemple.
Création d’une grille
# Create an empty grid where resolution is the size of the cellsgrd <-rast(crs ="EPSG:3081",resolution =c(1e04, 1e04),vals =NA,extent = projected_texas)
Faire communiquer gstat et terra
Pour faire communiquer ces deux packages, nous devons d’abord créer un objet gstat qui contient les différentes informations pour notre modèle.
# Mask to TexasP.idw <-crop(x = P.idw$Precip_in.pred, y = projected_texas, mask = T, touches = T)
Cartographie
Le lien avec la régression linéaire
Principe : Cette méthode utilise un modèle statistique pour estimer les valeurs inconnues en fonction des coordonnées spatiales et, éventuellement, d’autres variables explicatives.
Théorie sous-jacente :
La régression linéaire suppose que la variable étudiée suit une relation fonctionnelle simple avec les prédicteurs. Elle utilise une équation de la forme : \(P = \alpha + \beta_{1} \cdot X + \beta_{2} \cdot Y\) où X et Y sont les coordonnées spatiales.
Exemple concret :
Modéliser les précipitations en fonction de l’altitude ou de la latitude, qui sont connues pour influencer ce phénomène.
Régression linéaire (2)
Étapes principales :
Ajout des coordonnées x et y comme variables indépendantes.
Ajustement d’un modèle linéaire simple : \(P = \alpha + \beta_{1} \cdot x + \beta_{2} \cdot y\)
Utilisation du modèle pour prédire les précipitations sur une grille raster.
Découpage du raster aux limites du Texas.
Avantages :
Facilité d’interprétation.
Possibilité d’ajouter des variables explicatives supplémentaires.
Limites :
Hypothèse de linéarité entre les précipitations et les coordonnées, souvent irréaliste.
Moins adapté aux variations non linéaires des données spatiales.
# Add X and Y to Pdta_reg_lin <-data.frame(Precip_in = projected_precip_coords$Precip_in,Elev = projected_precip_coords$elevation_texas, x = projected_precip_coords$x, y = projected_precip_coords$y)# Run the regression modelreg_lin_interpolation <-lm(formula = Precip_in ~ x + y + Elev, data = dta_reg_lin)# Use the regression model output to interpolate the surfaceinterpolation_lm <-interpolate(object =c(grd, projected_elev),model = reg_lin_interpolation,xyNames =c("x", "y"), fun = predict)
Et les cartes !
Juste avec l’élévation
# Run the regression modelreg_lin_interpolation <-lm(formula = Precip_in ~ Elev, data = dta_reg_lin)# Use the regression model output to interpolate the surfaceinterpolation_lm <-interpolate(object =c(grd, projected_elev),model = reg_lin_interpolation,# xyNames = c("x", "y"), fun = predict)
En carte !
Validation
La validation des modèles d’interpolation est cruciale pour évaluer leur performance. Une méthode courante est le leave-one-out cross-validation (LOOCV) :
On retire un point du jeu de données.
On prédit la valeur manquante en utilisant les points restants.
On compare la prédiction avec la valeur réelle.
Cette méthode permet de tester le modèle sur des données qui n’ont pas été utilisées pour l’apprentissage, ce qui offre une mesure plus objective de la précision du modèle.
Et le code
# Leave-One-Out Cross-Validation LoopIDW.out <-map(.x =1:nrow(projected_precip_coords),.f =function(i) {# Creation of a gstat object with i - 1 observation tmp_gstat_idw <-gstat(id ="Precip_in",formula = Precip_in ~1,data =st_as_sf(projected_precip_coords)[-i, ],set =list(idp =2) )# IDW interpolation excluding the i-th observation tmp_idw_result <-interpolate(object = grd,model = tmp_gstat_idw,fun = interpolate_gstat,crs =crs(grd),debug.level =0 )# Extract the interpolated value at the i-th location tmp_extracted <-extract(x = tmp_idw_result, y = projected_precip_coords[i, ], raw =FALSE) %>%mutate(observed = projected_precip_coords$Precip_in[i]) # Store observed valuereturn(tmp_extracted) },.progress = T)
Calcul des métriques
# Convert list to a data framevalidation.df <-bind_rows(IDW.out)# Compute RMSErmse <-rmse(data = validation.df, truth = observed, estimate = Precip_in.pred)# Compute R²r_squared <-rsq_trad(data = validation.df, truth = observed, estimate = Precip_in.pred)cat("LOOCV RMSE:", round(rmse$.estimate, 2), "\n")
Nous avons également confirmation que nous utilisons bien du kriging ordinaire.
Vous pourriez également cross-valider votre résultat sur la même méthode que décrite plus haut. Faites bien attention à changer les données pour le variogramme empirique ! Ma RMSE = 5.53
La carte
Et sa déviation standard !
Question 1
L’ensemble de données sur lequel nous travaillons est un ensemble de données sur la qualité de l’air obtenu auprès de l’Agence Européenne pour l’Environnement (AEE) en Allemagne.
Votre travail est de comparer les méthodes d’interpolation vues lors de ce TP grâce aux données de concentration \(NO_2\). Pour l’interpolation par IDW, vous comparerez également deux valeurs différentes du paramètre idp. Pour la régression linéaire, j’ai ajouté la pente et l’élévation comme prédicteurs.
En guise d’exercice de dépassement, vous réaliserez une validation croisée sur le modèle de régression linéaire et l’interpréterez.
Si vous souhaitez, vous pouvez utiliser du kriging universel, c’est à dire utiliser également les valeurs de pente et d’élévation dans votre modèle ! Le kriging ne sera pas matière d’examen ;).
Comment faire ?