Krigeage/Kriging

Postez ici vos questions, réponses, commentaires ou suggestions - Les sujets seront ultérieurement répartis dans les archives par les modérateurs

Modérateur : Groupe des modérateurs

Arnaud PRUVOST
Messages : 29
Enregistré le : 18 Déc 2013, 08:48

Krigeage/Kriging

Messagepar Arnaud PRUVOST » 29 Jan 2014, 16:27

Bonjour,

Je souhaite, à partir d'un data.frame contenant un numéro de point, des longitudes, latitudes, altitudes et une valeur de temps, faire une carte à l'aide d'un krigeage ou kriging avec une résolution de 0.5°.

Code : Tout sélectionner

      num_release        lon      lat     alt       OOO      ABL time
63001           1    1.59446 47.51109 8914.40 ********* 100.0000 3600
63002           1    3.43381 61.40421 7361.67 ********* 474.6748 3600
63003           1  122.14857 72.32694  651.72 ********* 625.9570 3600
63004           1  107.28859 60.14078 3032.63 ********* 424.1977 3600
63005           1 -171.78970 62.30163 7666.68 ********* 442.3242 3600
63006           1   14.25800 44.75780 3335.01 ********* 171.9894 3600


J'ai vu quelques sujets et pages web consacré à celà mais c'est difficilement compréhensible pour moi. ça pourra éventuellement servir à d'autres.

Il existe deux package apparemment pour cela : gstat et geo R

1ere étape :
Il faut définir une grille spatiale correspondant au domaine souhaité. Dans mon cas, il s'agirait du domaine lon=c(-180,180), lat=c(0,85)

Code : Tout sélectionner

grille<-expand.grid(seq(-180,180,0.5),seq(0,851,0.5))



2ème étape :
"Kriger" tous les points de la grille à partir des points connus contenus dans mon data.frame (avec une résolution de 0.5°, i.e = toute particule supérieure à une distance de 0.5° n'influence pas le point que je suis en train de calculer).

C'est là ou je ne comprends les fonction de krigeage (krige() ) de gstat.
Quelqu'un peut-il m'expliquer le processus ? Ce n'est pas évident de comprendre.

Arnaud

PS : la troisième étape sera de dessiner tout ça :)

Serge Rapenne
Messages : 1426
Enregistré le : 20 Aoû 2007, 15:17
Contact :

Messagepar Serge Rapenne » 29 Jan 2014, 17:02

Bonjour,

As tu des connaissances et déjà pratiqué les géostatistiques ?

Le krigeage est très différent des technique d’interpolation comme les moindres carré ou les splines et relativement gourmande en temps.

Les étapes pour réaliser un krigeage sont globalement les suivantes :
1-Etablir un variogramme expérimentale (fonction variogram)
2-Corréler ce variogramme à un modèle (fonction fit.variogram)
3-Vérifier la qualité du modèle par une validation croisé et on recommence en 2 jusqu'à être satisfait du modèle.
La partie 1 n'est pas toujours trivial mais la seconde peut être un vrai casse-tête.
4-Réaliser le krigeage (c'est la partie la plus facile).

Serge

Arnaud PRUVOST
Messages : 29
Enregistré le : 18 Déc 2013, 08:48

Messagepar Arnaud PRUVOST » 29 Jan 2014, 17:11

Bonjour Serge,

J'ai des souvenir de celà et j'ai reregardé avant.

Toutefois, pour une interpolation spatiale, je pense que le krigeage est ce qu'il faut bien que ce soit plus complexe. Peut être as tu une idée que je connais pas ?

Peux_tu expliciter les fonctions que tu as cité (variogram et fit.variogram) stp ?

Serge Rapenne
Messages : 1426
Enregistré le : 20 Aoû 2007, 15:17
Contact :

Messagepar Serge Rapenne » 29 Jan 2014, 17:53

Je ne suis pas géostatiticien, et ce que je vais dire va certainement en faire hurler plus d'un.
Le krigeage est une technique d’interpolation précise et son grand avantage est de permettre de connaitre l'erreur d'estimation mais si ta variable a une faible variabilité spatiale sur ton champ d'étude, c'est utiliser un marteau pilon pour écraser une mouche. Son utilisation ou non, va dépendre de la qualité d’interpolation dont tu as besoin et donc de l'objectif de cette interpolation.

Je travaille dans le domaine de la surveillance de la qualité de l'air et j'ai eu besoin d'estimer un indice de qualité de l'air sur l'ensemble des communes de Lorraine à partir de sorties de modèle sur une grille de 3km. L'indice étant une valeur entière comprise entre 1 à 10 et peu variable. Je me suis contenté d'utiliser la fonction interpp du package Akima, c’était réglé en 10 minutes. Par contre, si je dois évaluer la concentration d'un polluant à partir de résultats de mesure à l’échelle d'une agglomération (forte variabilité spatiale, par exemples les concentrations en NO2 peuvent baisser d'un facteur 10 de manière non linéaire en 200m de part et d'autre d'une route, les vents modifient fortement la dispersion) alors là je vais utiliser le krigeage mais je sais que mon temps passé risque de se compter en heures selon le temps qu'il me faudra pour déterminer variogramme, modèle de variogramme et voisinage de calcul.

En ce qui concerne le krigeage dans R, je ne peux malheureusement pas beaucoup t'aider car je n'utilise pas R pour cela. Les info ci-dessus viennent d'une lecture rapide de l'index des fonctions de l'aide du package gstat.

Serge

Arnaud PRUVOST
Messages : 29
Enregistré le : 18 Déc 2013, 08:48

Messagepar Arnaud PRUVOST » 29 Jan 2014, 19:20

Merci Serge pour ces prévisions.

Malheureusement, je pense que je suis dans le deuxième cas. Je cherche à connaitre le temps de résidence de particules atmosphériques pour (l'étape suivante) connaitre leur concentration. ça peut varier de 1h à 240h*3600s. Et Cela est dépendant des vents sur 10 jours donc une variabilité assez forte.

Personne n'utilise le krigeage ?

Serge Rapenne
Messages : 1426
Enregistré le : 20 Aoû 2007, 15:17
Contact :

Messagepar Serge Rapenne » 29 Jan 2014, 20:07

Tu peux télécharger ci joint un document rédiger par mes collègues de PACA détaillant le principe d'une étude géostat pour la pollution par l'ozone :
https://dl.dropboxusercontent.com/u/68618871/AIRMARAIX_-_cartographie_ozone_-_rapport_final_-_juin_2004.pdf
La encore, l'étude n'a pas été mené avec R mais la logique est bien expliqué

Serge

Renaud Lancelot
Messages : 2484
Enregistré le : 16 Déc 2004, 08:01
Contact :

Re: Krigeage/Kriging

Messagepar Renaud Lancelot » 31 Jan 2014, 11:51

Arnaud PRUVOST a écrit :Bonjour,

Je souhaite, à partir d'un data.frame contenant un numéro de point, des longitudes, latitudes, altitudes et une valeur de temps, faire une carte à l'aide d'un krigeage ou kriging avec une résolution de 0.5°.

Code : Tout sélectionner

      num_release        lon      lat     alt       OOO      ABL time
63001           1    1.59446 47.51109 8914.40 ********* 100.0000 3600
63002           1    3.43381 61.40421 7361.67 ********* 474.6748 3600
63003           1  122.14857 72.32694  651.72 ********* 625.9570 3600
63004           1  107.28859 60.14078 3032.63 ********* 424.1977 3600
63005           1 -171.78970 62.30163 7666.68 ********* 442.3242 3600
63006           1   14.25800 44.75780 3335.01 ********* 171.9894 3600


J'ai vu quelques sujets et pages web consacré à celà mais c'est difficilement compréhensible pour moi. ça pourra éventuellement servir à d'autres.

Il existe deux package apparemment pour cela : gstat et geo R

1ere étape :
Il faut définir une grille spatiale correspondant au domaine souhaité. Dans mon cas, il s'agirait du domaine lon=c(-180,180), lat=c(0,85)

Code : Tout sélectionner

grille<-expand.grid(seq(-180,180,0.5),seq(0,851,0.5))



2ème étape :
"Kriger" tous les points de la grille à partir des points connus contenus dans mon data.frame (avec une résolution de 0.5°, i.e = toute particule supérieure à une distance de 0.5° n'influence pas le point que je suis en train de calculer).

C'est là ou je ne comprends les fonction de krigeage (krige() ) de gstat.
Quelqu'un peut-il m'expliquer le processus ? Ce n'est pas évident de comprendre.

Arnaud

PS : la troisième étape sera de dessiner tout ça :)


Voir le package akima pour faire de l'interpolation sans krigeage (ce que je ferais).
Renaud


Retourner vers « Questions en cours »

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 1 invité

cron