Vous êtes sur la page 1sur 11

Salif KONE, ENI-ABT, Géostatistique

MODELISATION SPATIALE

AVRIL 2021

SUPPORT DE TRAVAUX PRATIQUES


TABLE DES MATIERES

INTRODUCTION AUX TRAVAUX PRATIQUES.......................................................................... 3


1. Objectifs, données, outils et méthode.............................................................................................. 3
2. Guide sur l’utilisation des fiches de travaux pratiques.................................................................. 4
3. Fiches de travaux pratiques............................................................................................................. 5
FICHE N°1: Importer et mettre en forme un jeu de données........................................................... 5
FICHE N°2: Cartographie et distribution des points échantillonnés............................................... 6
FICHE N°3 : Variogrammes expérimentaux et anisotropies............................................................ 7
FICHE N°4 : Ajustement d’un variogramme théorique au variogramme expérimental .............11

-2-
INTRODUCTION AUX TRAVAUX PRATIQUES

1. Objectifs, données, outils et méthode

Objectifs:
Explorer à l’aide du logiciel de traitement statistique R, la structure spatiale de propriétés de sol du
jura suisse. En partant d’un tableau de points échantillonnés dans l’espace, dérouler l’exploration des
données et l’analyse variographique. Modéliser les estimateurs calculés à partir de ces points de
données.

Données :
Le fichier jura.txt contient 259 mesures de concentration en métaux lourds mesurés dans une région
du jura Suisse. Le fichier contient 11 colonnes. Ce jeu de données est un jeu de données exploités dans
l’ouvrage : Goovaerts P. 1997. Geostatistics for Natural Resources Evaluation. Oxford Univ. Press,
New-York, 483p. Ce jeu de données est également en accès libre téléchargeable sur : http://www.ai-
geostats.org/, puis Resources/Well known Geostatistical datasets.

Les deux premières colonnes contiennent les coordonnées dans l’espace, x et y (exprimées en km).

Les deux suivantes contiennent deux variables qualitatives:


- lu = "land use" est l'utilisation du sol (forêt, prairie et terre cultivé). Cette variable ne sera pas
utilisée ici.
- rt = "rock type" désigne la couche géologique du site considéré. Les modalités sont :
rt = 1 : Argovien
rt = 2 : Sequanien
rt = 3 : Kimmeridgien
rt = 4 : Portlandien
rt = 5 : Lehm

Les 7 dernières sont les concentrations dans le sol (en mg / kg) des métaux suivants : Cadmium,
Cobalt, Chrome, Cuivre, Nickel, Plomb, Zinc.
La variable étudiée sera le Nickel, Ni.

Un second fichier de 100 mesures est joint (validation.txt). Il contient des points de validation. Ils ne
doivent pas servir aux calculs des estimateurs et à l'ajustement des modèles, mais permettront de
valider les modèles choisis, en estimant en ces points des valeurs, puis en comparant ces valeurs aux
valeurs mesurées.

-3-
Méthodologie générale

Etapes Diagramme méthodologique Fiche N°


Configuration du - Création d’un espace de travail 1
logiciel R - Importer er les données
Cartographie des - Cartographie du plan d’échantillonnage 2
points - Cartographie et représentation de la distribution
échantillonnés
Variogrammes - Nuées variographiques 3
expérimentaux et - Semi-variogrammes expérimentaux directionnels et omni-
anisotropies directionnels
Ajustement d’un - Ajustement automatique par moindre carrés 4
modèle de - Ajustement manuel par palier, portée et pépite.
variogramme au
variogramme
expérimental

2. Guide sur l’utilisation des fiches de travaux pratiques

Chaque fiche concerne une partie de la démarche méthodologique. Elle spécifie l’objectif et les items
des commandes R à utiliser.

-4-
3. Fiches de travaux pratiques

FICHE N°1: Importer et mettre en forme un jeu de données

 Objectif: Préparer un échantillonnage ponctuel dans l’espace à l’analyse variographique

DÉMARCHE OPERATIONS SOUS R


0- Copier-Coller le jeu de Depuis le réseau, Copier/Coller le répertoire de données (tpgeostat ?):
données sur un lecteur ou vous avez les droits d’écriture
1-Choisir le répertoire de Ouvrir R (depuis le bureau), puis pointer depuis le menu vers votre
travail et installer les modules répertoire de travail où se trouvent les données de base :
ad-hoc sous R File/ Change dir … :

Charger les modules geoR  et Sgeostat : Package\Load


package, 2 modules de géostatistiques usuels que nous utiliserons
alternativement suivant les fonctions appelées.
Si ces modules ne sont pas installés (i.d. s’ils n’apparaissent pas dans
Package\Load package), installez-depuis le web
Package/install package from CRAN

Ces deux modules sont des modules de géostatistiques : Sgeostat est


un module de premier niveau approprié en phase exploratoire, et geoR
est un module plus complet, adapté également au cas multivarié.
Pour information R et les différents modules utilisés sont des freeware
téléchargeables depuis, http://cran.r-project.org/

2- Importer un tableau de Le jeu de données correspond à une table sous forme d’un fichier texte ou
données contenant les chaque ligne correspond à un site ponctuel avec ses coordonnées et les
coordonnées dans l’espace de variables de teneur en métaux mesurées dans le sol.
chaque point d’échantillonnage
jura<-read.table(‘jura.txt’, header=T)
jura$x
jura$y
jura$Ni
dim(jura) donne le nombre de lignes puis colonnes du tableau jura
Quel est le nombre d’individus (échantillons) ?
names(jura)
Et le nombre de variables (autres que x et y)  ?

3- Elimination des données On limitera cette étude aux données "non Argovienne" (rt=1), afin de ne
« argoviennes » pas être trop éloigné de l'hypothèse de stationnarité de Z(s).
jura<-jura[jura$rt!=1,]
Quel est alors le nombre d’individus (échantillons) ?

4- Ajouter un numéro unique nom<-1:length(jura[,1])


d’échantillon au tableau de jura<-cbind(jura,nom)
données

-5-
FICHE N°2: Cartographie et distribution des points de données

Objectif: Afficher les points de données liés à la variable régionalisée z(s) étudiée et visualiser ses
distributions « aspatiales » et spatiales.

Rappel : L’aide sur les commandes et fonctions R est accessible par : help(nom de la
commande) ou ?nom de la commande

DÉMARCHE OPERATIONS SOUS R


Cartographie du plan geojura<-as.geodata(jura,coords.col=1:2,
d’échantillonnage et des data.col=9) (geoR)
quartiles help(as.geodata) pour visualiser le contenu de la syntaxe
(geoR)

plot.geodata(geojura) (geoR)
bleu : premier quartile
rouge : dernier quartile
De quel type d’échantillonnage dispose-t-on ?
Que dire de l’hypothèse de stationnarité d’ordre 1 à la vue d’une simple
cartographie des quartiles?

Et à la vue des valeurs de Ni projetées par axe de coordonnée ?

-6-
FICHE N°3 : Variogrammes expérimentaux et anisotropies

Objectif : Etudier la dépendance spatiale l’isotropie de la variable étdudiée

Rappels : semi-variogramme gamma(h) = 0.5 * Var[Z(s+h) – Z(s)] = C(h) – C(0)

DÉMARCHE OPERATIONS SOUS R


1- Nuées variographiques par(mfrow=c(1,1))
omnidirectionnelles jura.point<-point(jura, x=’x’, y=’y’) (Sgeostat)
jura.pair<-pair(jura.point, num.lags=15,
type=’isotropic’, maxdist=3) (Sgeostat)
spacecloud(jura.point, jura.pair, ‘Ni’, type=’s’,
query.a=’nom’ )(Sgeostat)

L’intérêt de la nuée variographique ou chaque point du graphique


représente un couple de sites, est de repérer les couples ‘outliers’. Vous
pouvez alors cliquer sur le graphique en pointant un point et le nom d’un
des deux sites apparaît. Appuyer sur (Click droit souris) Stop. Cliquer à
nouveau sur le même ensemble de points pour connaître l’autre site du
couple.
Que penser de la valeur à nom=161 ?

Pour visualiser cette valeur relativement à ses voisins :


palette(terrain.colors(24))
plagecouleurs<-as.numeric(cut(jura$Ni,24))
plot(jura$x, jura$y, type='n')
points(jura$x, jura$y, pch=20, col=plagecouleurs)
text(jura$x[jura$nom==161],
jura$y[jura$nom==161], '161', pch=20, col="blue")
2- Variogrammes expérimentaux Construire les variogrammes expérimentaux par méthode « classique »
omni-directionnels (Classique : Matheron = moyenne par classe sinon on prend la médiane)
suivant des classes de distances (lags) différentes ; vérifier le nombre de
couples de points de données par classe (n) , Observer la structure des
variogrammes obtenus.
var.Ni<-est.variogram(jura.point, jura.pair, ‘Ni’)
(Sgeostat)
Le contrôle de la distance maximale, des classes de distances se fait en
amont lors de la création de jura.pair

var.Ni
n indique le nombre de paires de points de données.
plot(var.Ni$bins, var.Ni$classic)

ou si vous souhaitez superposer deux  estimateurs :


points(var.Ni$bins, var.Ni$med, col=’red’)

Retrouver-vous l’effet du 161 ?


Changer éventuellement les classes de distances (lags) et distances
maximales d’analyse (en amont au niveau de la fonction pairs) et observer
l’allure du variogramme expérimental.

-7-
3- Faire sa propre fonction de A partir des vecteurs de coordonnées et de la variable, calculer le
varoigramme expérimental variogramme expérimental :
On fait d’abord une matrice des distances

X<-jura$x
Y<-jura$y
X<-outer(X,X,"-")
X<-X^2
Y<-outer(Y,Y,"-")
Y<-Y^2
XY<-X+Y
matdist<-sqrt(XY)
(On pourrait faire la même chose en 3D)

puis une matrice de semi-variances


Z<-jura$Ni
Z<- outer(Z,Z,"-")
Z<-0.5*Z^2

Ces deux matrices ont même dimension.


LAGS<-Cut(XY, seq(0,3, length=15))
BINS<-tapply(XY, LAGS, ‘mean’)
VARIO<-tapply(Z, LAGS, ‘mean’)
Ou
VARIO<-tapply(Z, LAGS, ‘median’)

plot(BINS, VARIO, pch=20, col=’red’, axes=F,


main=’’, xlab=’distance (km)’, ylab=’semi-
variance’)
axis(1)
axis(2)

Faire maintenant un script qui vous permette de créer une fonction qui
vous représente le variogramme expérimental en fonction d’une distance
maximale, d’un nombre de lags et des vecteurs de coordonnées et de la
variable.
La compiler et l’appliquer.
Attention ! : il peut y avoir des télescopages entre packages : la
commande plot.variogram existe aussi bien sur Sgeotat que
geoR.. Il peut donc y avoir conflit et dans ce cas, c’est la fonction du
‘dernier package chargé’ qui l’emporte. Un moyen de s’en sortir et de
fermer votre projet, et surtout de l’enregistrer en quittant R : à la question
‘Save work space image ?’, répondez par ‘oui’. Un fichier de
données et d’historique se crée alors sur C:\tpgeostat.
Réouvrir le projet depuis l’explorateur en double-cliquant sur .

Charger alors uniquement le package pour la fonction qui vous intéresse


(Sgeostat).

-8-
4- Enveloppe de confiance Par test de permutation (test de Monte-Carlo) des variables sur chaque
empirique du variogramme par site, on peut construire des distributions empiriques de variogrammes
test de permutation : expérimentaux sous H0 et visualiser une enveloppe de confiance bi-
H0 = absence de corrélation latérale à 100-95, … % qui nous permet de tester le significativité de la
spatiale structure spatiale (H0 = permutations = il n’y a pas de structure spatiale).
bin1<-variog(geojura, uvec=seq(0,3,length=15)) (geoR)
bin1 permet de comprendre les résultats
help(variog) permet de comprendre les arguments
help(seq) si vous le souhaitez
bin1.env<-variog.mc.env(geojura,obj.var=bin1,nsim=99)
(geoR)
plot(bin1, envelope = bin1.env) (geoR)
Si cette fonction ne fonctionne pas correctement, fermer en sauvegardant
votre projet R et ré-ouvrez le. Ne charger alors que le module geoR

title(”variogramme empirique &enveloppe de confiance”)

Peut-on conclure sur un variogramme expérimental significatif ?

-9-
5- Variogrammes expérimentaux Réaliser les variogrammes expérimentaux suivant des directions en points
directionnels de données de 0 , 45, 90 et 135 ° par rapport à l’axe des x (sens trigo)
(avec tolérances angulaires de demi-secteur angulaire :22,5 °) ; Comparer
les structures de variogrammes obtenues.
Dans geoR comme pour les conventions géographiques, l’Azimut
(theta) correspond à un angle dans le sens horaire par rapport au nord :


45°
-45°
N

90°

vario.4<-variog4(geojura, max.dist=2) (geoR)


plot(vario.4, lwd=2)

Si toutefois, vous souhaitez contrôler une direction particulière (theta)


et tolérance associée (dtheta) ainsi que tous les paramètres du
variogramme empirique, utiliser geoR et la fonction variog.
Construisez par exemple le variogramme empirique dans la direction 60°
+- 10 °.
help(variog)
bin2<-variog(geojura,
uvec=seq(0,3,length=15),direction = 60,tolerance = 10,
unit.angle = "degrees")
plot(bin2)
Concluez sur le caractère iso ou anisotrope de la structure spatiale des
données ; Quoiqu’il en soit, on considèrera par la suite le processus de
dépendance spatiale comme isotrope.

- 10 -
FICHE N°4 : Ajustement d’un modèle de variogramme au
variogramme expérimental

Objectif : Ajuster le variogramme expérimental par un modèle semi-défini négatif.

DÉMARCHE OPERATIONS SOUS R


Ajustement au variogramme Help(fit.variogram) (Sgeostat) vous permet de comprendre
expérimental automatique par les paramètres d’ajustement et la méthode employée qui est une méthode
moindres carrés pondérés et de moindres carrés pondérés, avec des poids plus importants aux faibles
manuel distances (c’est surtout aux faibles distances qu’il faut bien ajuster le
par estimation des paramètres variogramme pour interpoler).
du modèle : type de modèle, plot(var.Ni$bins, var.Ni$med)
palier, portée et pépite.
On cherchera à bien ajuster le Par exemple :
modèle de variogramme sur les Model.Ni<-fit.exponential(var.Ni, 5, 60, 0.3,
premiers points proches de type='c', iterations=100, tolerance=1e-03, echo=FALSE,
l’origine. plot.it=T, weighted=T) (Sgeostat)

Si cette fonction ne fonctionne pas correctement, fermer en sauvegardant


votre projet R et ré-ouvrez le. Ne charger alors que le module Sgeostat

tolerance=1e-03 correspond à la différence attendue de rse


(residuals square error) entre deux itérations pour stopper
l’algorithme.

Vous pouvez essayer d’autres modèles avec :


Model.Ni<-fit.spherical(var.Ni, 5, 60, 1, type='m',
iterations=100, tolerance=1e-03, echo=FALSE,
plot.it=T, weighted=T)

Remarque ! : pour visualiser l’allure de vos paramètres initiaux, fixer


0 itérations et le modèle est celiu avec les paramètres d’initialisation :
Model.Ni<-fit.spherical(var.Ni, 5, 60, 1, type='c',
iterations=0, tolerance=1e-06, echo=FALSE, plot.it=T,
weighted=T)

Proposer un modèle qui minimise le critère d’ajustement : rse


(residuals square errors)

Sauvegarder ce modèle et le répertoire de travail.

Si vous souhaiter ajuster votre propre modèle gigogne, utiliser la


fonction d’ajustement non linéaire nls.

- 11 -

Vous aimerez peut-être aussi