Práctica 2b: KRIGING BAYESIANO CON WINBUGS 1. Formulación

Anuncio
ESTADÍSTICA ESPACIAL EN EPIDEMIOLOGÍA Y MEDIO AMBIENTE
Práctica 2b: KRIGING BAYESIANO CON WINBUGS
La implementación del kriging desde una perspectiva Bayesiana requiere de métodos MCMC
cuando se incorpora el rango o la pepita del variograma. Una alternativa al uso del paquete
geoR es la realización del análisis Bayesiano con el programa de simulación WinBUGS.
En las siguientes secciones se explica como realizar dicho análisis en el WinBUGS, construyendo el equivalente al documento kriging.odc.
1.
Formulación como modelo jerárquico
Utilizaremos una formulación jerárquica del modelo escribiendo como primer nivel la distribución condicional de la respuesta Z dados los parámetros θ y un vector de efectos espaciales
W:
Z | θ, W ∼ N (µ + W, τ 2 I)
donde µ = Xβ recoge la variabilidad a gran escala.
En el segundo nivel, la especificación de W es la de una distribución normal multivariante
con matriz de covarianzas expresada como función paramétrica de la distancia entre pares de
puntos
W | σ 2 , φ ∼ N (0, σ 2 H(φ))
donde H es una matriz de correlaciones indexada por el parámetro φ.
El modelo es equivalente al comentado en teorı́a, pero ofrece ventajas computacionales al
realizar la simulación.
2.
Construcción del modelo en el WinBUGS
El modelo de kriging especificado de forma jerárquica se puede escribir en el WinBUGS como
aparece en el Cuadro 1.
En el puede verse:
la distribución condicional de Z, como normales independientes con precisión error.prec
inversa a la pepita.
la estructura de las medias con la variabilidad a gran escala y los efectos espaciales W .
la distribución de los efectos espaciales como normal multivariante con matriz de covarianzas exponencial, mediante la función spatial.exp().
las distribuciones previas para todos los parámetros.
la predicción en los puntos loci reconstruyendo la estructura a partir de las predicciones
del proceso W .
ESTADÍSTICA ESPACIAL EN EPIDEMIOLOGÍA Y MEDIO AMBIENTE
Cuadro 1: Modelo de Kriging Universal
model
{
for (i in 1:N) {
Z[i] ∼ dnorm(mu[i], error.prec)
mu[i] <- inprod(X[i,],beta[]) + W[i]
muW[i] <- 0
}
error.prec ∼ dgamma(0.1,0.1)
for (i in 1:p) beta[i] ∼ dnorm(0.0, 0.0001)
tausq <- 1/error.prec
W[1:N] ∼ spatial.exp(muW[], obsx[], obsy[], spat.prec, phi, 1)
phi ∼ dgamma(0.1,0.1)
spat.prec ∼ dgamma(0.1, 0.1)
sigmasq <- 1/spat.prec
# Predicción
for(j in 1:M) {
W0[j] ∼ spatial.unipred(muW0[j], locix[j], lociy[j], W[])
muW0[j] <- 0
Zloci[j] <- inprod(X0[j,], beta[]) + W0[j]
}
}
3.
Especificación de los datos
Los datos del acuı́fero se copian desde el R y se escriben en forma de lista, tal y como se ve
en el Cuadro 3.
4.
Valores iniciales de arranque
Para iniciar la simulación con el programa WinBUGS será necesario proporcionar valores
iniciales para todas las variables de las que no hay datos y que no pueden calcularse a partir
de otras. Una posibilidad es la del Cuadro 2.
5.
Ejercicio: Altitud del terreno
Adaptad el modelo y demás elementos para realizar el análisis de los datos de la elevación
del terreno mediante el WinBUGS. Realizad una predicción de la altitud del terreno en el punto
de coordenadas (3,3) y comparad los resultados con los de las prácticas anteriores.
2
Práctica 2b
ESTADÍSTICA ESPACIAL EN EPIDEMIOLOGÍA Y MEDIO AMBIENTE
Cuadro 2: Valores iniciales para el Kriging Universal
list(beta=c(0),phi=1.0,spat.prec=1.0,error.prec=1.0,W=c(0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), W0=c(0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0))
6.
Procedimiento con menus del WinBUGS
Comprobar sintaxis del modelo (Model>Specification>Check Model)
Incorporar los datos (Load data)
Escribir el número de series a simular (si es > 1)
Compilar el modelo (Compile)
Incorporar valores de arranque (Load inits)
Escribir las variables a conservar (Inference>Sample)
Iniciar las simulaciones (Model>Update)
Verificar convergencia (history, etc.)
Recoger más valores simulados si se juzga conveniente (Update)
Describir los resultados (summary, etc)
3
Práctica 2b
ESTADÍSTICA ESPACIAL EN EPIDEMIOLOGÍA Y MEDIO AMBIENTE
Cuadro 3: Datos del acuı́fero para el WinBUGS
list(N=85,p=1,M=100,X = structure(.Data=c(1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1), .Dim = c(85, 1)),
X0 = structure(.Data=c(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1), .Dim = c(100, 1)),
easting = c(42.783, -27.397, -1.163, -18.618, 96.465, 108.562, 88.364,
90.042, 93.173, 97.611, 90.629, 92.553, 99.49, -24.067, -26.063,
56.278, 73.039, 80.267, 80.23, 68.838, 76.399, 64.461, 43.397, 39.078,
112.804, 54.259, 6.132, -3.805, -2.231, -2.362, -2.189, 63.224,
-10.779, -18.989, -38.579, 83.145, -21.802, -23.565, -20.113, -16.627,
29.907, 100.916, 101.295, 103.266, -14.311, -18.134, -18.122, -9.888,
-12.163, 11.658, 61.691, 69.579, 66.722, -36.654, -19.551, -21.298,
-22.362, 21.147, 7.685, -8.332, 56.707, 59.001, 68.969, 70.902,
73.002, 59.662, 61.872, 63.708, 5.627, 18.247, 85.688, 105.076,
-101.643, -145.237, -73.993, -94.482, -88.85, -120.259, -86.025,
-72.791, -100.174, -78.835, -83.691, -95.617, -87.555),
northing = c(127.623, 90.787, 84.896, 76.452, 64.581, 82.923, 56.453,
39.258, 33.059, 56.279, 35.082, 41.752, 59.158, 184.766, 114.075,
26.848, 18.881, 12.616, 14.618, 107.774, 95.994, 110.396, 53.615,
61.998, 45.548, 147.82, 48.328, 40.404, 29.911, 33.82, 33.682, 79.499,
175.113, 171.917, 158.527, 159.116, 15.026, 9.414, 22.093, 17.256,
175.129, 22.978, 22.964, 20.342, 31.265, 30.181, 29.532, 38.145,
39.111, 18.733, 32.949, 33.808, 33.933, 150.915, 137.784, 131.825,
137.137, 139.262, 126.838, 107.777, 171.264, 164.549, 177.248,
161.381, 162.99, 170.105, 174.302, 173.915, 79.087, 77.392, 139.817,
132.032, 10.651, 28.023, 87.973, 86.626, 76.71, 80.765, 54.363,
43.092, 42.899, 40.821, 46.505, 35.822, 29.393),
head = c(1464, 2553, 2158, 2455, 1756, 1702, 1805, 1797, 1714, 1466,
1729, 1638, 1736, 1476, 2200, 1999, 1680, 1806, 1682, 1306, 1722,
1437, 1828, 2118, 1725, 1606, 2648, 2560, 2544, 2386, 2400, 1757,
1402, 1364, 1735, 1376, 2729, 2766, 2736, 2432, 1024, 1611, 1548,
1591, 2540, 2352, 2528, 2575, 2468, 2646, 1739, 1674, 1868, 1865,
1777, 1579, 1771, 1408, 1527, 2003, 1386, 1089, 1384, 1030, 1092,
1161, 1415, 1231, 2300, 2238, 1038, 1332, 3510, 3490, 2594, 2650,
2533, 3571, 2811, 2728, 3136, 2553, 2798, 2691, 2946),
locix=c(-150, -120, -90, -60, -30, 0, 30, 60, 90, 120, -150, -120,
-90, -60, -30, 0, 30, 60, 90, 120, -150, -120, -90, -60, -30, 0, 30,
60, 90, 120, -150, -120, -90, -60, -30, 0, 30, 60, 90, 120, -150,
-120, -90, -60, -30, 0, 30, 60, 90, 120, -150, -120, -90, -60, -30, 0,
30, 60, 90, 120, -150, -120, -90, -60, -30, 0, 30, 60, 90, 120, -150,
-120, -90, -60, -30, 0, 30, 60, 90, 120, -150, -120, -90, -60, -30, 0,
30, 60, 90, 120, -150, -120, -90, -60, -30, 0, 30, 60, 90, 120),
lociy=c(5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 25, 25, 25, 25, 25, 25, 25, 25,
25, 25, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 65, 65, 65, 65, 65,
65, 65, 65, 65, 65, 85, 85, 85, 85, 85, 85,
4 85, 85, 85, 85, 105, 105,
105, 105, 105, 105, 105, 105, 105, 105, 125, 125, 125, 125, 125, 125,
125, 125, 125, 125, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145,
165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 185, 185, 185, 185,
185, 185, 185, 185, 185, 185))
Práctica 2b
Descargar