Le script a pour objectif le test de nouvelles fonctions pour gérer les combinaisons linéaires dans RGeostats.
Les fonctions et options disponibles sont :
la fonction model.join permet de concaténer des modèles
la fonction model.CL permet de construire le modèle d'une combinaison linéaire
la fonction dd.add.CL permet de calculer une combinaison linéaire
l'option mat.CL de la fonction kriging
Il s'agit de simplifier le cokrigeage de combinaisons linéaires de variables.
Exemple : Estimer \(Z = A \times Y\) où
\(Z\) est un vecteur de dimension \(n\)
\(Y\) est un vecteur de dimension \(p\)
\(A\) est une matrice de dimension \((n,\,p)\)
Les valeurs de \(Y\) sont connues en homotopique ou hétérotopique et le variogramme (ou la covariance) est donné par un modèle de corégionalisation linéaire. L'appel de la fonction kriging avec l'option mat.CL = A permet ce calcul.
Le krigeage étant un opérateur linéaire, on peut calculer le krigeage des composante puis en calculer la combinaison linéaire des krigeages :
\[ A \times (Y^{*}) = (A \times Y)^{*} \]
Mais cette option ne permet pas le calcul de l'écart-type de krigeage sauf dans le cas particulier où les composantes sont non corrélées.
Création d'un échantillon pour une combinaison linéaire de deux variables indépendante : \[Z = a \times X_1 + b \times X_2\] avec \(X_1\) et \(X_2\) deux FAST-2 Gaussiennes non corrélées.
Le jeux de données est constitué de 500 points:
333 points sont utilisés comme données en entrée du krigeage
167 points sont utilisés pour valider le calcul.
Pour chaque point, les valeurs de deux composantes \(X_1\) et \(X_2\) sont simulées selon le modèle initial et \(Z\) est calculé. Ceci défini le cas homotopique.
Pour définir le cas hétérotopique, les valeurs de \(X_1\) et \(X_2\) sont effacées avec la probabilité 1/2. Les valeurs observées sont alors préfixées par obs .
Un voisinage unique est utilisé pour tous les tests:
neigh <- neigh.create(ndim = 2, type = 0)
Deux fonctions internes sont définies:
Pour des raisons de lisibilité, les codes de ces deux fonctions n'apparaissent pas dans ce papier.
Cet échantillon est divisé en une sélection de donnée et une sélection de contrôle.
Dans le cas homotopique les variables \(X_1\), \(X_2\) et \(Z\) sont connues pour tous les points de la sélection des données sel_data .
Les statistiques sont données ci-dessous :
Number | Minimum | Maximum | Mean | Std. Deviation | |
---|---|---|---|---|---|
V1 | 333 | -2.946333 | 3.332358 | -0.1903874 | 1.056573 |
V2 | 333 | -3.148913 | 2.077230 | -0.3922627 | 1.316560 |
Z | 333 | -14.460768 | 11.533287 | -1.9498256 | 5.316892 |
V1 | 167 | -3.104438 | 1.930590 | -0.1913323 | 0.960426 |
V2 | 167 | -3.032186 | 1.578381 | -0.5269282 | 1.156925 |
Z | 167 | -13.423037 | 7.156977 | -2.4903773 | 4.691309 |
Les étapes du calculs sont :
Estimation par cokrigeage des deux composantes à partir des valeurs composantes. Comme ces composantes sont non corrélées, ceci est équivalent à un krigeage séparé de chacune des composantes. L'estimation de la combinaison linéaire est calculée.
Estimation directe par cokrigeage de la combinaison linéaire des composantes.
Sur les graphiques ci-dessous on vérifie bien:
que l'estimateur de la combinaison linéaire est égale à la combinaison linéaire des estimateurs.
que l'écart-type de krigeage est supérieur à l'écart-type du cokrigeage
l'absence de biais conditionnel des estimateur \(E\{Z \mid Z^{*}\} = Z^{*}\)
Les scores d'estimation du cokrigeage sont bien supérieurs à ceux du krigeage.
est.k <- ""
data <- db.delete(data, names = c("ok*", "ck*"))
data <- QC_LC_V12(cas = est.k)
# Score des estimations
Z.nm <- paste0("Z", est.k)
kable(db.score(data,
var.name = "Z",
est.names = paste(c("ck", "ok"), Z.nm, "estim",sep ="."),
std.names = paste(c("ck", "ok"), Z.nm, "stdev",sep ="."),
flag.na = TRUE),
caption = "Scores d'estimation pour le cas homotopique sans corrélation")
ck.Z.estim | ok.Z.estim | |
---|---|---|
ME | -0.0226839 | -0.0197529 |
MAE | 0.9179569 | 0.9936210 |
RMSE | 1.1548630 | 1.2295723 |
NMSE | 0.8824006 | 0.9168662 |
LogS | 2.3200703 | 2.3198332 |
Cet échantillon est divisé en une sélection de données et une sélection de contrôle.
Dans le cas hétérotopique les variables \(X_1\) ou \(X_2\) sont connues avec une probabilité 1/2 pour tous les points de la sélection "sel_data".
Les statistiques sont données ci-dessous:
Number | Minimum | Maximum | Mean | Std. Deviation | |
---|---|---|---|---|---|
V1_obs | 160 | -2.548602 | 3.332358 | -0.1223211 | 1.028075 |
V2_obs | 158 | -3.120806 | 2.077230 | -0.3806468 | 1.319473 |
Z_obs | 84 | -14.038006 | 11.533287 | -1.2305693 | 5.408387 |
V1 | 167 | -3.104438 | 1.930590 | -0.1913323 | 0.960426 |
V2 | 167 | -3.032186 | 1.578381 | -0.5269282 | 1.156925 |
Z | 167 | -13.423037 | 7.156977 | -2.4903773 | 4.691309 |
Les étapes du calculs sont :
Estimation par cokrigeage des deux composantes à partir des valeurs composantes. L'estimation du la combinaison linéaire est calculée.
Estimation directe par cokrigeage de la combinaison linéaire des composantes.
Sur les graphiques ci-dessous on vérifie bien que :
l'estimateur de la combinaison linéaire est égale à la combinaison linéaire des estimateurs.
l'écart-type de krigeage est supérieur à l'écart-type du cokrigeage
l'absence de biais conditionnel des estimateur \(E\{Z \mid Z^{*}\} = Z^{*}\)
Les scores d'estimation du cokrigeage sont bien supérieurs à ceux du krigeage.
ck.Z_obs.estim | ok.Z_obs.estim | |
---|---|---|
ME | 0.2063402 | 0.1867625 |
MAE | 1.0648923 | 1.2482826 |
RMSE | 1.3403018 | 1.5572556 |
NMSE | 0.8262644 | 0.7439325 |
LogS | 2.1786554 | 2.0595551 |
C'est donc cohérent... Passons à des combinaisons linéaires de variables corrélées.
On reprend l'échantillon utilisé pour le test sans corrélation mais on ajoute une corrélation \(rho = 0.7\) entre les deux composantes initiales. Pour simplifier les variables initiales sont écrasées et le même code est utilisé...
\[V_2 = \rho V_1 + \sqrt{1 - \rho ^ 2} V_2\]
Les composantes et leur modèle sont modifiés :
la fonction db.add.CL est utilisée pour le calcul de \(Y \leftarrow L \times Y\)
la fonction model.CL est utilisée pour le calcul de \(\gamma_{Y} \leftarrow L \times \gamma_{Y} \times L'\)
Dans le cas homotopique, les variables \(X_1\) et \(X_2\) sont toutes deux connues pour tous les points de la sélection "sel_data".
Les statistiques sur les données utilisées pour tester le cas homotopique sont données dans le tableau ci-dessous.
Number | Minimum | Maximum | Mean | Std. Deviation | |
---|---|---|---|---|---|
V1 | 333 | -2.946333 | 3.332358 | -0.1903874 | 1.0565728 |
V2 | 333 | -3.170327 | 3.201864 | -0.4134028 | 1.0887950 |
Z | 333 | -16.625143 | 19.472173 | -2.0343860 | 5.7558629 |
V1 | 167 | -3.104438 | 1.930590 | -0.1913323 | 0.9604260 |
V2 | 167 | -2.618416 | 1.731840 | -0.5102346 | 0.9700979 |
Z | 167 | -13.970749 | 10.599121 | -2.4236030 | 5.1832969 |
Les étapes du calculs sont :
Estimation par cokrigeage des deux composantes à partir des valeurs composantes. L'estimation du la combinaison linéaire est calculée.
Estimation directe par cokrigeage de la combinaison linéaire des composantes.
Sur les graphiques ci-dessous on vérifie bien que :
l'estimateur de la combinaison linéaire est égale à la combinaison linéaire des estimateurs.
l'écart-type de krigeage est supérieur à l'écart-type du cokrigeage
l'absence de biais conditionnel des estimateur \(E\{Z \mid Z^{*}\} = Z^{*}\)
Les scores d'estimation du cokrigeage sont bien supérieurs à ceux du krigeage.
ck.Z_obs.estim | ok.Z_obs.estim | |
---|---|---|
ME | 0.0358476 | 0.0833285 |
MAE | 2.2982585 | 2.8289869 |
RMSE | 2.9213754 | 3.6124724 |
NMSE | 0.8441701 | 0.8730278 |
LogS | 2.4586872 | 2.3525149 |
Dans le cas hétérotopique, les variables \(X_1\) ou \(X_2\) sont connues avec une probabilité 1/2 pour tous les points de la sélection "sel_data".
Les statistiques sur les données utilisées pour tester le cas hétérotopique sont données dans le tableau ci-dessous.
Number | Minimum | Maximum | Mean | Std. Deviation | |
---|---|---|---|---|---|
V1_obs | 152 | -2.667093 | 2.364478 | -0.2037557 | 1.0422310 |
V2_obs | 157 | -2.985877 | 2.740662 | -0.3561641 | 1.0251179 |
Z_obs | 77 | -13.232212 | 13.380904 | -2.0972860 | 5.7063962 |
V1 | 167 | -3.104438 | 1.930590 | -0.1913323 | 0.9604260 |
V2 | 167 | -2.618416 | 1.731840 | -0.5102346 | 0.9700979 |
Z | 167 | -13.970749 | 10.599121 | -2.4236030 | 5.1832969 |
Les étapes du calculs sont :
Estimation par cokrigeage des deux composantes à partir des valeurs composantes. L'estimation du la combinaison linéaire est calculée.
Estimation directe par cokrigeage de la combinaison linéaire des composantes.
Sur les graphiques ci-dessous on vérifie bien que :
l'estimateur de la combinaison linéaire est égale à la combinaison linéaire des estimateurs.
l'écart-type de krigeage est supérieur à l'écart-type du cokrigeage
l'absence de biais conditionnel des estimateur \(E\{Z \mid Z^{*}\} = Z^{*}\)
Les scores d'estimation du cokrigeage sont bien supérieurs à ceux du krigeage.
ck.Z_obs.estim | ok.Z_obs.estim | |
---|---|---|
ME | 0.0358476 | 0.0833285 |
MAE | 2.2982585 | 2.8289869 |
RMSE | 2.9213754 | 3.6124724 |
NMSE | 0.8441701 | 0.8730278 |
LogS | 2.4586872 | 2.3525149 |
On pourrait appliquer ces méthodes pour la mise en oeuvre du modèle d'écrêtage.