[SOLVED] documentation Cokrigeage

Here you can suggest new features to be added to RGeostats package.

[SOLVED] documentation Cokrigeage

Postby Maxime Beauchamp » Tue Feb 05, 2013 1:49 pm

Bonjour,

Je suis utilisateur de RGeoS pour la construction de cartographies dans le domaine de la Qualité de l'Air.
Il me semblerait utile de disposer d'un peu plus de documentation sur la manière de mettre en oeuvre le cokrigeage en "ligne de commande", un peu à l'instar de ce qui a été fait pour la dérive externe il y a quelques mois.

Merci encore pour votre package, très intuitif dans son utilisation!

Maxime Beauchamp
Maxime Beauchamp
 
Posts: 29
Joined: Thu Jan 17, 2013 2:48 pm

Re: documentation Cokrigeage

Postby Didier Renard » Tue Feb 05, 2013 8:53 pm

L'utilisation du Cokrigeage est (ou devrait etre) aussi intuitive que celle du krigeage.
Autrement dit, pour faire un cokrigeage, il suffit d'avoir une Db de donnees (avec les variables d'interet), une Db cible, un modele (defini pour les variables d'interet) et un voisinage.
Les particularites sont les suivantes:
- la Db de donnees doit contenir plusieurs variables d'interet, dont les locators doivent etre mis a "z1", "z2"... Le CoKrigeage les utilisera toutes dans son traitement multivariable (soit N leur nombre).
- le modele doit egalement fait allusion a l'ensemble des variables d'interet (c.a.d N variables). Remarque: pour definir le modele multi-variable, on peut proceder a l'ajustement d'un variogramme experimental calcule sur les N variables. Sinon on peut initialiser le modele interactivement par model.input (ne pas oublier de specifier l'argument nvar=N).
- la cible. Lors du cokrigeage, chacune des N variables sera estimee et la variance de cokrigeage sera calcule pour chacune des N variables. Autrement dit, un cokrigeage de N variables produit 2*N variables en sortie dans le Db de sortie.
- le voisinage est standard ... meme si des options particulieres peuvent etre chosies dans le cas multivariable (surtout lorsque le jeu de donnees est heterotopique).

Bon courage.
Didier Renard
 
Posts: 251
Joined: Thu Sep 20, 2012 4:22 pm

Re: documentation Cokrigeage

Postby Maxime Beauchamp » Fri Feb 08, 2013 11:02 am

Bonjour,

Concernant le voisinage justement, la variable secondaire comporte énormément de données (grille à 10km de résolution sur la France) et la variable principale beaucoup moins (500 points de mesure).
Comment puis-je, dans la définition du voisinage, sélectionner un nombre de points maximum différent pour la variable principale et la variable secondaire?

Merci d'avance

Maxime Beauchamp
Maxime Beauchamp
 
Posts: 29
Joined: Thu Jan 17, 2013 2:48 pm

Re: documentation Cokrigeage

Postby Didier Renard » Mon Feb 11, 2013 8:23 pm

Bonjour

Lorsqu'on utilise un cokrigeage, c'est pourprendre en compte une variable auxiliaire afin de renforcer la connaissance d'une variable primaire.
En general, ces deux variables sont informees sur les memes points d'information. Les deux variables peuvent etre mesurees au meme point (cas isotopique) ou bien la seconde variable peut etre plus informee que la variable premiere (cas heterotopique) (l'inverse etant peu interessant).
Il peut arriver egalement que la variable secondaire soit tres sur-representee: par exemple, elle est definie sur une grille reguliere alors que la variable premiere nést connue que sur un nombre limite de points d'echantillonnage.

La meilleure technique s'est revelee etre l'option "Collocated Cokrigeage (etendu)": on utilise la variable premiere connue au points d'echantillonnage, en la completant par la valeur de la variable secondaire lue (ou interpolee) aux points d'echantillonnage ainsi qu'une valeur supplementaire au point cible. Ce compromis s'avere la plus efficace des methodes de cokrigeage. De surcroit, J. Rivoirard a demontre qu'elle correspondait a un voisinage optimal dans le cas d'un modele a residu: autrement dit, le resultat est analogue a celui qu'on obtiendrait en utilisant la totalite de l'information sur la variable secondaire.

Enfin, un dernier avantage: les deux variables ne sont pas obligatoirement presentes dans le meme fichier.
Didier Renard
 
Posts: 251
Joined: Thu Sep 20, 2012 4:22 pm

Re: documentation Cokrigeage

Postby Maxime Beauchamp » Tue Feb 12, 2013 10:53 am

Bonjour,

Oui j'utilise en effet le cokrigeage collocalisé lorsque je travaille sous Isatis.
Je me demande en fait comment transcrire cette méthode en ligne de commande avec RGeoS.
Dois-je simplement remplir une table qui informe les points de mesure pour la variable z1 et les valeurs de la variable secondaire aux points de mesure et sur les points cibles pour la variable z2, puis procéder de manière classique : création de la grille et ajustement des variogrammes puis cokrigeage?

Merci d'avance

Maxime Beauchamp
Maxime Beauchamp
 
Posts: 29
Joined: Thu Jan 17, 2013 2:48 pm

Re: documentation Cokrigeage

Postby Didier Renard » Tue Feb 12, 2013 9:39 pm

En ce qui concerne le fonctionnement du Collocated CoKriging, il faut distinguer:
- l'inference statistique du modele
- l'estimation multivariable avec cette option particuliere
En effet, a la difference d'ISATIS, le Collocated CoKriging consiste simplement a exprimer les faits suivants:
- on souhaite effectuer une estimation conjointe des variables (dites principales) Z1, Z2, ..., Zn (definies sur des points de donnees)
- on possede d'une information exhaustive de certaines de ces variables (qu'on applera auxiliarires) sur la Db utilisee comme cible (disons une grille). Le nombre de ces variables completement informees est quelconque (de 1 [comme dans ISATIS] a N (la on se demande bien a quoi servirait le cokrigeage!). Le locator de chacune de variables auxiliaires doit correspondre a celui de la variable principale a laquelle elle correspond.

Malheureusement, les locators sont obligatoirement consecutifs: il faut donc, dans le cas de plusieurs variables auxiliaires exhaustives (disons P), qu'elles correspondent aux P premieres variables principales.

Le modele utilise doit etre un modele multivariable (N variables). Il necessite donc la connaissance des structures simples et croisees pour toute paire parmi ces N variables. Il ne peut etre determine que a partir du fichier de donnees ... meme si les variogrammes simples des P variables auxiliaires gagneraient a etre determines depuis la fichier grille.

Ensuite, il suffit de faire tourner le krigeage selon:
kriging(data,grid,model,neigh,flag.colk=T)

Le principe est alors le suivant:
Pour tout noeud cible de la grille, le voisinage "normal" est constitué. Un echantillon est systematiquement ajoute (localise exactement a l'emplacement du noeud cible, d'ou le nom de "colocalise". Chacune de ses N valeurs est lue a partir de l'information disponible dans le fichier cible: si une variable est locatorisee "Z1", la premiere valeur de l'echantillon colocalise est mise a la valeur de cette variable au noeud cible.
Ainsi, si seule la variable auxiliaire Z1 est definie sur le fichier cible, l'echantillon supplementaire n'est informe qu'en Z1. Si les variables Z1 et Z2 sont definies, les valeurs de Z1 et de Z2 sont connues au point supplementaire. Si les N variables auxiliaires sont definies, alors toutes les valeurs de l'echantillon supplementaire sont connues. Or, si on se souvient que le (co)krigeage est un interpolateur exact, on trouve que l'estimation coincide avec la valeur de l'echantillon colocalise.

J'espere que ce mini-descriptif vous aura aider a comprendre toutes les possibilites de cette option.
Didier Renard
 
Posts: 251
Joined: Thu Sep 20, 2012 4:22 pm

Re: documentation Cokrigeage

Postby Maxime Beauchamp » Wed Feb 27, 2013 9:33 am

Bonjour,

Je reviens d'un long déplacement et je peux enfin me remettre à ces travaux.
Premièrement, merci pour ce descriptif et pour votre réactivité.
J'ai essayé de coder ce que vous m'avez expliqué mais j'ai dû faire une erreur car au moment de lancer le krigeage j'ai un message d'erreur : Error in R_Kriging.

Je vous fournis mes quelques lignes de code :

Code: Select all
data.db=db.create(res,flag.grid=F,ndim=2,autoname=F)
  data.db=db.locate(data.db,"pct_mod","z",1)
  data.db=db.locate(data.db,"pct_obs","z",2)

  # création du grid.db
  grid=read.csv(paste(rep_res_analyse,"/",date[1],".resAnalyse.csv",sep=""))[,c(1,2)]
  grid$pct_mod=interpp(lon_Chim,lat_Chim,pct_mod,grid$Lon,grid$Lat)$z
  grid.db=db.create(grid,flag.grid=F,ndim=2,autoname=F)

  # création du data.model
  data.vario=vario.calc(data.db,lag=0.5,nlag=20)
  struct_=c('Spherical','Exponential','Linear','Nugget Effect')
  data.model=model.auto(data.vario,nvar=2,struct=struct_)
  data.u.neigh=neigh.init(ndim=2,type=0)

  # krigeage
  grid.db=kriging(data.db,grid.db,data.model,data.u.neigh,radix="CK.Part",flag.colk=T)


Voyez-vous une erreur flagrante dans ce que j'ai développé ci-dessus?

Bien Cordialement,

Maxime Beauchamp
Maxime Beauchamp
 
Posts: 29
Joined: Thu Jan 17, 2013 2:48 pm

Re: documentation Cokrigeage

Postby Didier Renard » Thu Sep 19, 2013 6:24 pm

Bonjour Maxime

Fabien me demande de repondre a ce vieux mail. Malheureusement je n'ai pas reussi a le reproduire sur un jeu de donnees que je me suis construit a dessein.
Mais il peut s'agir d'une erreur plus sournoise.

Le mieux serait de m'envoyer le .RData (en prenant soin de le renommer auparavant afin qu'il ne se fasse pas arreter par la protection anti-spam.
Didier Renard
 
Posts: 251
Joined: Thu Sep 20, 2012 4:22 pm

Re: documentation Cokrigeage

Postby Maxime Beauchamp » Wed Oct 16, 2013 5:12 pm

Bonjour,

Je reviens sur le forum après une longue absence et je dois vous avouer que les données qui avaient généré cette erreur ne sont plus disponibles actuellement (on a du faire du ménage sur nos machines de calcul...)

Néanmoins, je ne pense pas qu'il faille passer trop de temps sur ce problème car dans mes souvenirs j'avais réussi finalement à faire tourner mon code assez facilement. Il devait y avoir un petit problème dans mes données.

Merci encore d'être attentif à mes demandes et à bientôt,

Maxime
Maxime Beauchamp
 
Posts: 29
Joined: Thu Jan 17, 2013 2:48 pm


Return to Global suggestions

Who is online

Users browsing this forum: No registered users and 1 guest

cron