Vous êtes sur la page 1sur 59

Geoestadstica con R

Jorge Gaspar Sanz Salinas


Septiembre de 2005
Resumen: A lo largo de la asignatura de doctorado Predicci on y an alisis de modelos
superciales mediante sistemas de informaci on geogr aca se ha cubierto el desarrollo
del estudio de la distribuci on espacial de una o varias variables, as como su modeli-
zaci on mediante m etodos geoestadsiticos (krigeado). En este trabajo se presenta un
resumen de dicho desarrollo utilizando los mismos datos de partida pero empleando
para el mismo herramientas de Software Libre, principalmente una herramienta es-
tadstica R y un Sistema de Informaci on Geogr aca, GRASS, ambos funcionando bajo
el Sistema Operativo Linux.

Indice
0. Introducci on 4
0.1. R . . . . . . . . . . . . . . . . 4
0.2. gstat . . . . . . . . . . . . . . 4
0.3. GRASS . . . . . . . . . . . . . 5
0.4. Datos de trabajo . . . . . . . 5
1. Descripci on univariada 6
1.1. Carga y visualizaci on de los
datos . . . . . . . . . . . . . . 6
1.2. M etodos gr acos para la
descripci on univariada . . . 6
1.3. M etodos num ericos . . . . . 9
1.4. Scripts . . . . . . . . . . . . . 10
2. Descripci on bivariada 12
2.1. M etodos gr acos . . . . . . . 12
2.2. M etodos num ericos . . . . . 13
2.3. Scripts . . . . . . . . . . . . . 14
3. Descripci on espacial 15
3.1. Visualizaci on espacial de
datos . . . . . . . . . . . . . . 15
3.2. Ventanas m oviles y el efecto
proporcional . . . . . . . . . 18
3.3. Continuidad espacial . . . . 18
3.4. Variograma . . . . . . . . . . 20
3.5. Diagramas de dispersi on
cruzados . . . . . . . . . . . 20
3.6. Scripts . . . . . . . . . . . . . 20
4. Estimaci on. M etodos determi-
nistas 24
4.1. Scripts . . . . . . . . . . . . . 27
5. Continuidad espacial de V 30
5.1. Variograma omnidireccional 30
5.2. Variograma supercial . . . 30
5.3. Variogramas direccionales . 30
5.4. Variogramas cruzados . . . . 33
5.5. Scripts . . . . . . . . . . . . . 36
6. Modelizaci on del variograma ex-
perimental 39
6.1. Estimaci on automatizada
del modelo . . . . . . . . . . 41
6.2. Scripts . . . . . . . . . . . . . 44
8. Kriging 45
8.1. wlc . . . . . . . . . . . . . . . 45
8.2. Krigeado Ordinario (KO) . . . 45
8.3. Krigeado Universal (KU) . . . 46
8.4. Krigeado por bloques (KUB) 46
8.5. Krigeado Local (KUL) . . . . 46
8.6. Cokrigeado (CKO) . . . . . . 48
8.7. Resultados . . . . . . . . . . 51
8.8. Scripts . . . . . . . . . . . . . 56
Modelizaci on geoestadstica con R 2

Indice de guras
1. Distribuci on de U y V . . . . 6
2. Histograma de V . . . . . . . 7
3. Histograma acumulado de V 7
4. Gr aco de probabilidad
uniforme de V . . . . . . . . 7
5. Gr aco de probabilidad
normal . . . . . . . . . . . . . 8
6. Gr aco de probabilidad log-
normal . . . . . . . . . . . . . 8
7. Gr aco de caja y bigotes de V 9
8. Gr aco de caja y bigotes de
V y U . . . . . . . . . . . . . . 12
9. Gr aco de cuantiles de V y U 12
10. Gr aco de dispersi on . . . . 13
11. Distribuci on de V . . . . . . 15
12. Mapa graduado de color de V 16
13. Mapa graduado de tama no
de V . . . . . . . . . . . . . . 16
14. Mapas de indicadores . . . . 17
15. Mapa de supercie interpo-
lada . . . . . . . . . . . . . . 18
16. Media y varianza en venta-
na de 3x3 . . . . . . . . . . . 19
17. Gr aco de dispersi on de
media y varianza . . . . . . . 19
18. h-Scatterplots de direcci on
N-S . . . . . . . . . . . . . . . 20
19. h-Scatterplots de direcci on
E-W . . . . . . . . . . . . . . 21
20. h-Scatterplots cruzado de U
y V en direcci on N-S . . . . . 21
21. Distribuci on de wlm . . . . . 24
22. Mapas generados por GRASS 25
23. Histogramas de los conjun-
tos de datos . . . . . . . . . . 26
24. Variogramas omnidireccio-
nales (i)) . . . . . . . . . . . . 31
25. Mapa del variograma su-
percial . . . . . . . . . . . . 31
26. Isolneas del variograma
supercial . . . . . . . . . . . 32
27. Variogramas direccionales . 32
28. Detecci on de ejes de aniso-
tropa . . . . . . . . . . . . . 33
29. Variogramas por toleran-
cias (i) . . . . . . . . . . . . . 34
30. Variogramas por toleran-
cias (ii) . . . . . . . . . . . . . 35
31. Variogramas cruzados . . . . 35
32. Modelos de variogramas
disponibles . . . . . . . . . . 39
33. Modelos esf erico de ran-
go 30 y meseta parcial de
92000ppm . . . . . . . . . . 40
34. Modelos de variograma
combinados . . . . . . . . . . 40
35. Modelo de variograma de V
ajustado . . . . . . . . . . . . 41
36. Modelado interactivo del va-
riograma . . . . . . . . . . . . 42
37. Descripci on de geoR del
conjunto de datos . . . . . . 43
38. Modelo ajustado por geoR . 43
39. Conjunto de datos wlc . . . . 45
40. Error del Krigeado ordinario 46
41. Error del Krigeado universal 47
42. Error del Krigeado univer-
sal por bloques . . . . . . . . 47
43. Error del Krigeado local
universal . . . . . . . . . . . 48
44. Diferencias con wlc de la
modelizaci on de U . . . . . . 50
45. Predicci on en la modeliza-
ci on de V (wlm) . . . . . . . . 51
46. Desviaci on tpica en la mo-
delizaci on de V (wlm) . . . . . 52
47. Diagramas de caja y bigote
de las diferencias . . . . . . . 53
48. Predicci on en la modeliza-
ci on de U (wlm) . . . . . . . . 54
49. Desviaci on tpica en la mo-
delizaci on de U (wlm) . . . . . 54

Indice de cuadros
1. Resumen de estadsticos de
datos de validaci on y esti-
mados . . . . . . . . . . . . . 26
2. Estadsticos de los errores
en los m etodos de krigeado
de V . . . . . . . . . . . . . . 52
3. Estadsticos de los errores
en los m etodos de krigeado
de U . . . . . . . . . . . . . . 55
Modelizaci on geoestadstica con R 3

Indice de listados
1. R-Script del tema 1 . . . . . . 10
2. R-Script del tema 2 . . . . . . 14
3. R-Script en Linux del tema 3 . 22
4. R-Script en Windows del te-
ma 3 . . . . . . . . . . . . . . 23
5. R-Script del tema 4 . . . . . . 27
6. Script para GRASS . . . . . . 27
7. Script para ps.map del
m etodo IDW . . . . . . . . . 28
8. Script para ps.map del
m etodo RST . . . . . . . . . . 28
9. Script para ps.map del
m etodo Polgonos de in-
uencia . . . . . . . . . . . . 29
10. Funciones para imprimir
variogramas . . . . . . . . . . 36
11. R-Script del tema 5 . . . . . . 36
12. R-Script del tema 6 . . . . . . 44
13. R-Script del tema 8 . . . . . . 56
Modelizaci on geoestadstica con R 4
Tema 0 Introducci on
0.1. R
R [5] es un conjunto integrado de herramientas para manipular datos, realizar todo
tipo de c alculos con los mismos y tambi en es capaz de realizar toda clase de gr acos
estadsticos.
En [4] se citan las siguientes caractersticas:
es multiplataforma,
almacenamiento y manipulaci on efectiva de datos,
operadores para c alculo sobre variables indexadas (Arrays), en particular matri-
ces,
una amplia, coherente e integrada colecci on de herramientas para an alisis de
datos,
posibilidades gr acas para an alisis de datos, que funcionan directamente sobre
pantalla o impresora,
y un lenguaje de programaci on bien desarrollado, simple y efectivo, que incluye
condicionales, ciclos, funciones recursivas y posibilidad de entradas y salidas.
(Debe destacarse que muchas de las funciones suministradas con el sistema
est an escritas en el lenguaje R).
R puede extenderse mediante paquetes. En Linux, basta con ejecutar el comando
install.packages(paquete) para conectar a la red de servidores CRAN (Comprehen-
sive R Archive Network) descarga el c odigo fuente y si se dispone de los compiladores
pertinentes (C++, Fortran, ...) genera los binarios adaptados perfectamente a la m aqui-
na. En Windows, al ejecutar dicho comando se descargan directamente los binarios.
En esta ultima plataforma se dispone de una interfaz gr aca un poco m as elaborada
y permite adem as exportar al formato Windows MetaFile.
Los paquetes empleados en el trabajo, adem as de los que se incluyen por defecto en
R son los paquetes de geoestadstica gstat [3], y geoR [6], y el paquete para presentaci on
de gr acos lattice [7].
En denitiva, se dispone de un sistema ampliable que se maneja como una consola
de entrada de comandos que permite adquirir datos desde cheros, manipularlos,
crear nuevos datos y por ultimo o bien ver las gr acas por pantalla o mandarlas a
cheros PostScript o raster. Otra caracterstica importante es la posibilidad de ejecutar
secuencias de comandos en forma de scripts.
0.2. gstat
gstat [2] es un software para llevar a cabo modelizaci on, predicci on y simulaci on de
datos geoestadsticos. Al igual que el anterior, es Software Libre bajo licencia (GNU
1
).
Puede usarse de muy diversas formas, directamente tanto de forma no interactiva
(mediante cheros de par ametros) como interactiva mostrando los resultados utili-
zando el programa para presentaci on de gr acos gnuplot. Pero su uso m as interesante
es integrado con otras herramientas. En este sentido se ha conseguido que gstat fun-
cione con GRASS, Idrisi, PCRaster y con R.
1
http://www.gnu.org
Modelizaci on geoestadstica con R 5
En este trabajo se ha usado con R porque este ultimo ofrece caractersticas muy
interesantes para la manipulaci on de datos, presentaci on de todo tipo de gr acas y
repetici on de tareas mediante sentencias de control (bucles, condicionales, etc). Por
otro lado, no ha sido posible compilar gstat para que trabaje conjuntamente con GRASS
en su versi on 6.
0.3. GRASS
Este ya veterano software para la gesti on de informaci on geogr aca dispone de
herramientas para la modelizaci on de variables espaciales mediante m etodos deter-
minsticos. Se ha usado en este trabajo para la obtenci on de la modelizaci on por
polgonos de inuencia (Voronoi), Splines de tensi on y por el m etodo de pesos inver-
sos a la distancia.
Adem as se ha utilizado para la presentaci on de la cartografa, maquetando senci-
llos mapas con salida PostScript.
0.4. Datos de trabajo
Los datos con los que se va a trabajar durante todo el proyecto son los utilizados
en el libro Applied Geostatistics de Issaks y Srivastava. El conjunto de datos walker
est a a su vez dividido en tres grupos, wlc que es una malla de 78000 puntos que
sirven para validaci on, wlm es la malla irregular de 470 puntos y wle una malla de 100
puntos para algunos c alculos estadsticos.
gstat dispone del conjunto wlm, los otros dos ser an cargados desde cheros de texto
separados por comas (CSV) para poder operar con ellos.
Modelizaci on geoestadstica con R 6
Tema 1 Descripci on univariada
1.1. Carga y visualizaci on de los datos
En este captulo se van a usar los datos wle redondeados a valores enteros. El
primer paso ser a por tanto cargar el chero walker10.asc, que es un chero de
texto separado por tabuladores que se puede importar directamente con la orden
read.delim2 para a continuaci on redondearlo.
En la gura 1 se muestra la distribuci on de los datos, as como los valores que
toman las variables U y V.
12 14 16 18 20
2
4
2
2
4
4
2
4
6
2
4
8
2
5
0
X
Y
22 28 4 32 38 20 0 14 31 34
16 17 11 29 37 55 11 3 34 35
14 15 15 15 16 17 13 2 40 38
14 15 15 16 17 18 14 6 28 25
15 16 16 23 24 25 7 15 21 20
21 18 20 27 29 19 7 16 19 22
21 8 27 27 32 4 10 15 17 19
16 9 22 24 25 10 7 19 19 22
16 7 34 36 29 7 4 18 18 20
15 12 24 27 30 0 2 18 18 18
87 100 47 111 124 109 0 98 134 144
77 84 74 108 121 143 91 52 136 144
75 80 83 87 94 99 95 48 139 145
74 80 85 90 97 101 96 72 128 130
77 82 86 101 109 113 79 102 120 121
89 88 94 110 116 108 73 107 118 127
88 70 103 111 122 64 84 105 113 123
82 74 97 105 112 91 73 115 118 129
82 61 110 121 119 77 52 111 117 124
81 77 103 112 123 19 40 111 114 120
Figura 1: Distribuci on de U y V
1.2. M etodos gr acos para la descripci on univariada
El m etodo gr aco m as utilizado es el histograma, en el que debemos integrar la
variable en clases. La variable V se vara entre 0ppm y 145ppm por lo que dividirla en
clases de 10 unidades es conveniente (g. 2 en la p agina siguiente).
Otro gr aco interesante es el histograma acumulado en el que a partir de las
mismas clases del histograma anterior se muestra la suma acumulada (g 3 en la
p agina siguiente).
El gr aco de probabilidad acumulada muestra la proporci on de datos para cada
punto que son menores que el (g 4 en la p agina siguiente)
Las guras 5 en la p agina 8 y 6 en la p agina 8 muestran la similitud de nuestra
muestra con la distribuci on normal y lognormal. Las lneas trazadas pasan por el
primer y tercer cuartil.
Modelizaci on geoestadstica con R 7
V
F
r
e
q
u
e
n
c
y
1 1
0
1
2 2
3
14
15
11
14
17
12
3
4
0
2
4
6
8
1
0
1
2
1
4
1
6
0 50 100 150
Figura 2: Histograma de V
0 10 20 30 40 50 60 70 80 90 100 120 140
Variable
F
r
e
c
u
e
n
c
i
a

a
c
u
m
u
l
a
d
a
0
2
0
4
0
6
0
8
0
1
0
0
Figura 3: Histograma acumulado de V
0 50 100 150
0
.
0
0
.
2
0
.
4
0
.
6
0
.
8
1
.
0
V
P
r
o
b
a
b
i
l
i
d
a
d

a
c
u
m
u
l
a
d
a
Figura 4: Gr aco de probabilidad uniforme de V
Modelizaci on geoestadstica con R 8
0 50 100 150

1
0
1
2
Sample Quantiles
T
h
e
o
r
e
t
i
c
a
l

Q
u
a
n
t
i
l
e
s
Figura 5: Gr aco de probabilidad normal
3.0 3.5 4.0 4.5 5.0

1
0
1
2
Sample Quantiles
T
h
e
o
r
e
t
i
c
a
l

Q
u
a
n
t
i
l
e
s
Figura 6: Gr aco de probabilidad lognormal
Modelizaci on geoestadstica con R 9
1.3. M etodos num ericos
1.3.1. Medidas de localizaci on
Se puede solicitar una descripci on sencilla de nuestros datos con el comando
summary(V) que devuelve tanto los valores m aximos y mnimos, la media, la me-
diana y el segundo y tercer cuartil. En cualquier caso est an disponibles comandos
como min, max, mean y median.
Para calcular la moda no hay un comando denido, pero a partir de la tabla de-
nida del corte de V (tcutV) donde se almacenan las frecuencias relativas en las clases
denidas previamente (secV), podemos solicitar aquella clase que almacene el valor
m aximo con el comando tcutV[tcutV==max(tcutV)].
En resumen:
Mnimo 0
M aximo 145
Media 100.5
Mediana 97.55
Moda 110-120
Rango 145
R puede calcular cualquier cuantil de una muestra, por ejemplo los cuartiles con
el comando quantile y pasando un vector con los valores de los cuantiles a obtener,
en este caso una secuencia de 0 a 1 cada 0.25 unidades:
> print(cuantiles<-quantile(V,seq(0,1,.25)))
0% 25% 50% 75% 100%
0.00 81.75 100.50 116.25 145.00
Una forma gr aca de ver tanto los cuantiles como la distribuci on de la muestra y
si existen valores alejados de la media (outliers) es el diagrama de caja y bigotes (box
and whisker). La gura 7 muestra el de la variable V.
0 50 100 150
V
Figura 7: Gr aco de caja y bigotes de V
1.3.2. Medidas de dispersi on
Las medidas de dispersi on como la varianza, la desviaci on tpica y el rango inter-
cuantil son sencillos de calcular:
> dt<-sqrt(var(V))
> dt2;dt;as.numeric(cuantiles["75%"]-cuantiles["25%"])
Modelizaci on geoestadstica con R 10
[1] 695.3409
[1] 26.36932
[1] 34.5
1.3.3. Medidas de forma
El coeciente de sesgo o asimetra (skewness) se calcula a partir de la f ormula
CS =
1
n

n
i=1
(x
i
m)
3

3
(1)
El coeciente de curtosis o apuntalamiento se calcula como
K =

n
i=1
(x
i
m)
4
n

4
3 (2)
El coeciente de variaci on no es m as que el cociente entre la desviaci on tpica y la
media, siendo trivial su c alculo.
En R estos tres coecientes se calculan como:
> media<-mean(V);
> print(CS<-sum((V-media)3)/(length(V)
*
dt3))
[1] -0.7665234
> print(K<-sum((V-media)4/length(V))/dt4-3)
[1] 1.187891
> print(CV<-dt/media)
[1] 0.2703159
1.4. Scripts
Listado 1: R-Script del tema 1
1 #TEMA 1 - DESCRIPCI

ON UNIVARIADA
2 ps.options(family="Bookman",pointsize
=15)
3 rm(list=ls())
4
5 #Cargar wle y redondearlo
6 wle<-read.delim2("walker10.asc")
7 wle<-round(wle,0)
8
9 #Adjuntar los datos de wle para acceder
directamente
10 attach(wle)
11
12 #Ver los datos U y V
13 postscript("imgs/01/UyV.ps")
14 plot(X,Y,xlim=c(min(X),max(X)
*
1.01),ylim
=c(min(Y)
*
.999,max(Y)
*
1.001),pch=3)
15 text(X+.3,Y+.2,U)
16 text(X+.3,Y-.2,V)
17 dev.off()
18
19 #Mostrar el histograma de V
20 secV<-seq(0,150,10)
21 postscript("imgs/01/histV.ps")
22 hist(V,breaks=secV, labels=TRUE, col="
lightgray", axes=FALSE,main="")
23 axis(2,at=seq(0,18,2))
24 axis(1,at=seq(0,150,50))
25 dev.off()
26
27 #Discretizar V para hallar frecuencias
28 lsecV<-length(secV)
29 cutV<-cut(V,secV)
30 tcutV<-table(cutV)
31 #Obtener las frecuencias acumuladas
32 sumfreq<-rep(0,length(secV))
33 for (i in 1:lsecV){ sumfreq[i]<-length(V
[V<secV[i]])}
34 #Imprimir el histograma
35 postscript("imgs/01/histAcumV.ps")
36 barplot(sumfreq,xlab="Variable",ylab="
Frecuencia acumulada",names.arg=secV
)
37 dev.off()
38
39 #Grafico de probabilidad acumulada
40 postscript("imgs/01/probUnif.ps")
41 plot.ecdf(V,pch=1,xlab="V",ylab="
Probabilidad acumulada",main="")
42 dev.off()
43
44 #Grafico de probabilidad normal y
lognormal
45 postscript("imgs/01/probNormal.ps")
46 qqnorm(V,datax=TRUE,pch=3,main="");
qqline(V,datax=TRUE)
47 dev.off()
Modelizaci on geoestadstica con R 11
48
49 logV<-log(V)[is.finite(log(V))]
50 postscript("imgs/01/probLogNormal.ps")
51 qqnorm(logV,datax=TRUE,pch=3,main="");
qqline(logV,datax=TRUE)
52 dev.off()
53
54 #Medidas de localizacion, dispersion,
etc
55 media<-mean(V)
56 dt<-var(V)
57 print("Cuartiles")
58 print(cuantiles<-quantile(V,seq(0,1,.25)
))
59 print("Varianza, desviacion tpica y
rango intercuartlico")
60 print(dt2)
61 print(dt)
62 print(as.numeric(cuantiles["75%"]-
cuantiles["25%"]))
63
64 #Diagrama de caja y bigotes de V
65 postscript("imgs/01/cajaybig.ps")
66 boxplot(V,horizontal=TRUE,col="lightgray
",ylab="V")
67 dev.off()
68
69 #Medidas de forma: sesgo, apuntalamiento
y variacion
70 print("Sesgo, apuntalamiento y variacion
")
71 print(CS<-sum((V-media)3)/(length(V)
*
dt
3))
72 print(K<-sum((V-media)4/length(V))/dt
4-3)
73 print(CV<-dt/media)
Modelizaci on geoestadstica con R 12
Tema 2 Descripci on bivariada
2.1. M etodos gr acos
La visualizaci on de pares de histogramas y sobre todo de gr acos de caja y bigotes
( 8)pueden aportar informaci on de c omo son dos variables.
V
U
0 50 100 150
V
a
r
i
a
b
l
e
s
Figura 8: Gr aco de caja y bigotes de V y U
El diagrama de cuantiles muestra cada cuantil de una variable contra el mismo
cuantil de la otra formando un gr aco de puntos. Si estos puntos adoptan la forma de
una lnea signica que ambas variables son similares pero su localizaci on y dispersi on
son diferentes.
0 50 100 150
0
10
20
30
40
50
V
U
0%
25%
50%
75%
100%
U=V
Cuartiles
Figura 9: Gr aco de cuantiles de V y U
Por ultimo, el diagrama de dispersi on ( 10 en la p agina siguiente)puede mostrar
informaci on sobre las tendencias de ambas variables y la existencia de outliers que
Modelizaci on geoestadstica con R 13
pueden ser susceptibles de ser eliminados.
0 50 100 150
0
1
0
2
0
3
0
4
0
5
0
V
U
Figura 10: Gr aco de dispersi on
2.2. M etodos num ericos
El coeciente de correlaci on o de Pearson es el indicador m as utilizado para com-
probar la relaci on entre variables, en R se corresponde con el comando cor(U,V).
=
1
n

n
i=1
(x
i
m
x
) (y
i
m
y
)

x

y
(3)
El numerador de esta ultima ecuaci on es otro indicador, la covarianza, que se
obtiene con el comando cov(U,V).
El coeciente de correlaci on de orden utiliza el orden en que aparece un valor
determinado en lugar de su propio valor. Por esta raz on este coeciente es menos
sensible a valores extremos y por tanto, si diere mucho del coeciente de Pearson
indica la existencia de estos valores extremos. En R se obtiene con el mismo comando
que el de correlaci on, pero cambiando el m etodo.

Orden
=
1
n

n
i=1
(Rx
i
m
Rx
) (Ry
i
m
Ry
)

Rx

Ry
(4)
> cov(U,V);cor(U,V,method="pearson");cor(U,V,method="spearman")
[1] 218.2778
[1] 0.8393395
[1] 0.8576604
Modelizaci on geoestadstica con R 14
2.3. Scripts
Listado 2: R-Script del tema 2
1 #TEMA 2 - DESCRIPCI

ON BIVARIADA
2 ps.options(family="Bookman",pointsize
=15)
3 rm(list=ls())
4
5 #Cargar wle y redondearlo
6 wle<-read.delim2("walker10.asc")
7 wle<-round(wle,0)
8
9 #Adjuntar los datos de wle para acceder
directamente
10 attach(wle)
11
12 #Diagrama de caja y bigotes de V y U
13 postscript("imgs/02/cajaybig.ps")
14 boxplot(data.frame(V,U),horizontal=TRUE,
col="lightgray",ylab="Variables",
boxwex=0.5)
15 dev.off()
16
17 # Diagrama qqplot
18 postscript("imgs/02/qqnorm.ps")
19 # Dibuja solo los ejes
20 qqplot(V,U,xlab="V",ylab="U",las=1,xlim=
c(-1,148),ylim=c(0,57),type="n")
21 # Dibuja los puntos por cuantiles del 5%
y los cuartiles
22 points(quantile(V,seq(0,1,.05)),quantile
(U,seq(0,1,.05)),pch=21,bg="
lightgray")
23 points(quantile(V,seq(0,1,.25)),quantile
(U,seq(0,1,.25)),pch=21,bg="white")
24 # Texto en los cuartiles
25 text(quantile(V,seq(0,1,.25))-2,quantile
(U,seq(0,1,.25))+2,c("0%","25%","50%
","75%","100%"))
26 # Linea con U=V y su texto
27 lines(c(0,150),c(0,150),type="l")
28 text(60,50,"U=V")
29 # Leyenda
30 legend(100,8,c("Cuartiles"),bg="white",
pch=21)
31 dev.off()
32
33 #Diagramas de dispersion
34 postscript("imgs/02/dispers.ps")
35 plot(V,U,pch=21,bg="lightgray")
36 dev.off()
37
38 #Covarianza y coeficientes de
correlacion
39 print("Covarianza y coeficiente de
correlacion de Pearson y de Spearman
")
40 print(covar<-cov(U,V))
41 print(rho<-cor(U,V,method="pearson"))
42 print(spear<-cor(U,V,method="spearman"))
Modelizaci on geoestadstica con R 15
Tema 3 Descripci on espacial
3.1. Visualizaci on espacial de datos
3.1.1. Mapas de localizaci on
Se trata de trazar un mapa de puntos e indicar por ejemplo los 10 valores m aximos
y los 10 valores mnimos. En R se trata de obtener los conjuntos de datos de wle con
los valores m aximos y mnimos y pintarlos sobre un mapa de localizaci on de V.
12 14 16 18 20
2
4
0
2
4
2
2
4
4
2
4
6
2
4
8
2
5
0
X
Y
87 100 47 111 124 109 0 98 134 144
77 84 74 108 121 143 91 52 136 144
75 80 83 87 94 99 95 48 139 145
74 80 85 90 97 101 96 72 128 130
77 82 86 101 109 113 79 102 120 121
89 88 94 110 116 108 73 107 118 127
88 70 103 111 122 64 84 105 113 123
82 74 97 105 112 91 73 115 118 129
82 61 110 121 119 77 52 111 117 124
81 77 103 112 123 19 40 111 114 120
Mximos
Mnimos
Figura 11: Distribuci on de V
3.1.2. Mapas de smbolos graduados
Utilizando la biblioteca lattice, se pueden generar mapas de smbolos graduados
por color con el comando levelplot. R dispone de diferentes paletas de color, pero
en este caso se usar a una escala de grises.
Otro tipo de mapa es el de gradaci on de smbolos por tama no. En este caso el
paquete gstat proporciona el comando bubble. El resultado es mejorable, pero sirve
a modo de ejemplo.
3.1.3. Mapas de indicadores
Se trata de mapas graduados de color con s olo dos niveles. El umbral entre ambos
niveles se va variando y se observa el conjunto de mapas generados. Estos mapas
pueden mostrar alineaciones en la distribuci on espacial de la variable y la ubicaci on
de m aximos y mnimos. Las guras 14(c) y 14(d) muestran la alineaci on norte-sur de
los datos.
Modelizaci on geoestadstica con R 16
X
Y
12 14 16 18
242
244
246
248
0
20
40
60
80
100
120
140
Figura 12: Mapa graduado de color de V
V
x
y
12 14 16 18 20
242
244
246
248
250
0
81.75
100.5
116.25
145
Figura 13: Mapa graduado de tama no de V
Modelizaci on geoestadstica con R 17
Umbral = 73.375
X
Y
12 14 16 18
242
244
246
248
0
20
40
60
80
100
120
140
(a) Cuantil 12.5%
Umbral = 81.75
X
Y
12 14 16 18
242
244
246
248
0
20
40
60
80
100
120
140
(b) Cuantil 25%
Umbral = 89.125
X
Y
12 14 16 18
242
244
246
248
0
20
40
60
80
100
120
140
(c) Cuantil 37.5%
Umbral = 100.5
X
Y
12 14 16 18
242
244
246
248
0
20
40
60
80
100
120
140
(d) Cuantil 50%
Umbral = 109.875
X
Y
12 14 16 18
242
244
246
248
0
20
40
60
80
100
120
140
(e) Cuantil 62.5%
Umbral = 116.25
X
Y
12 14 16 18
242
244
246
248
0
20
40
60
80
100
120
140
(f) Cuantil 75%
Figura 14: Mapas de indicadores
Modelizaci on geoestadstica con R 18
3.1.4. Mapas de supercies interpoladas
Es posible interpolar polinomios de un orden determinado, que pasen por todos
los puntos de la muestra. Estos polinomios suelen ofrecer supercies suavizadas pero
que muestran las tendencias y la distribuci on de la variable.
Para poder obtener estos polinomios en R, se ha de cargar el paquete spatial que
dispone de la funci on surf.ls que obtiene el mejor polinomio de hasta grado 6 que se
ajusta a los datos mediante mnimos cuadrados (g. 15). Este mapa ha sido generado
en Windows ya que el paquete spatial no ha sido posible instalarlo en Linux, por lo
que el script que genera este gr aco est a separado del resto del tema.
12 14 16 18 20
2
4
2
2
4
4
2
4
6
2
4
8
2
5
0
Figura 15: Mapa de supercie interpolada
3.2. Ventanas m oviles y el efecto proporcional
Se pueden trazar mapas en las que el valor de cada punto es la media o la varianza
de sus vecinos. Por lo tanto se crea una ventana m ovil de tama no impar que va
recorriendo los valores. En R esta operaci on requiere algo de programaci on que se
incluye en el script del tema y que se presenta en la gura 16 en la p agina siguiente.
Un gr aco de dispersi on entre las medias y las varianzas demuestra la existencia
de una relaci on entre ambas. En este caso, en la gura 17 en la p agina siguiente, se
puede ver que ambas medidas no est an correladas, siendo el coeciente de correlaci on
() bastante bajo.
3.3. Continuidad espacial
3.3.1. Diagramas de dispersi on de tipo h
Este tipo de diagramas muestran contrapuestas la variable contra esta a una dis-
tancia determinada. Cuando los datos est an en forma de malla, se pueden obtener
de forma sencilla los mapas de dispersi on en las direcciones norte-sur y este-oeste a
diferentes distancias.
Obtener estos diagramas en R es relativamente sencillo debido a la exibilidad en
la manipulaci on de variables indexadas (arrays). Se han obtenido los diagramas con
Modelizaci on geoestadstica con R 19
12 14 16 18 20
2
4
2
2
4
4
2
4
6
2
4
8
2
5
0
X
Y
85.22
235.94
85.22
255.19
87.22
111.69
86.33
90.25
83.89
39.36
80.22
17.94
79.11
18.61
78.56
201.78
95.56
409.53
94.67
443.25
94.67
220.5
93.89
186.86
90.67
92.75
86
42.5
85.67
91.25
86
377.5
111.33
75.75
111.11
72.86
107.78
79.94
105.78
122.94
98.67
123.5
92.44
74.03
93.22
199.44
94.33
611.5
97.67
1095.75
102.44
428.53
104.33
300.25
106
281
105
69.5
99
69.75
104.44
311.53
110.67
289.25
78.44
1332.03
88.22
616.94
93.67
459.75
96.44
457.78
99.11
219.86
98.11
93.36
104.11
288.36
97.33
1628.25
76.56
1165.53
85.78
468.19
91.11
342.86
92.78
320.44
94.56
248.78
89.44
392.78
88.56
823.28
81.67
1753
94.56
955.28
98.67
553.25
100.67
353.25
100.11
299.61
99.44
441.03
97.67
828.75
95.22
1163.69
88.11
2227.36
117.67
35.5
117.22
53.69
117.22
68.19
115.11
76.86
113.89
334.86
111.67
1042.25
110.44
1659.03
115.56
1588.03
Figura 16: Media y varianza en ventana de 3x3
80 90 100 110
0
5
0
0
1
0
0
0
1
5
0
0
2
0
0
0
media
v
a
r
i
a
n
z
a
= 0.11
Figura 17: Gr aco de dispersi on de media y varianza
Modelizaci on geoestadstica con R 20
distancia (h) variando de 1 a 4 puntos y en las direcciones norte-sur (g. 18) y este-
oeste (g:03:vew). Se aprecia la alta correlaci on en las direcciones N-S (0,5 < < 0,7) y
la baja correlaci on en direcci on E-W (0,4 < < 0,3).
0 50 100 150
2
0
4
0
6
0
8
0
1
0
0
1
2
0
1
4
0
V(t+h)
V
(
t
)
x=y
= 0.74
h = 1
0 50 100 150
2
0
4
0
6
0
8
0
1
0
0
1
2
0
1
4
0
V(t+h)
V
(
t
)
x=y
= 0.59
h = 2
0 50 100 150
2
0
4
0
6
0
8
0
1
0
0
1
2
0
V(t+h)
V
(
t
)
x=y
= 0.56
h = 3
0 50 100 150
2
0
4
0
6
0
8
0
1
0
0
1
2
0
V(t+h)
V
(
t
)
x=y
= 0.48
h = 4
Figura 18: h-Scatterplots de direcci on N-S
3.4. Variograma
La funci on del variograma muestra la variaci on de la variable agrupando los datos
seg un sus distancias relativas. Ha de establecerse por tanto el n umero de ((cajas))
o lags en los que queremos dividir los datos. Por otro lado, como en el apartado
anterior, podemos obtener el variograma en una direcci on determinada o en todas
direcciones (variograma omnidireccional). Formalmente la funci on del variograma se
expresa como:
(h) =
1
2N(h)
N(h)

i=1
(v
i
v
i+h
)
2
(5)
En R existen diversos paquetes que calculan el variograma pero probablemente el
m as completo es el paquete gstat. El uso de esta funci on se har a en el tema 5.
3.5. Diagramas de dispersi on cruzados
El ultimo gr aco que se va a mostrar en este tema es el de dispersi on cruzada
entre dos variables. Es un h-Scatterplot en el que en lugar de ccontrastarla misma
variable se utiliza el valor de otra. Se ha calculado s olo la variaci on en la direcci on
N-S de las variables U y V.
3.6. Scripts
Modelizaci on geoestadstica con R 21
0 50 100 150
0
2
0
4
0
6
0
8
0
1
0
0
1
2
0
1
4
0
V(t+h)
V
(
t
)
x=y
= 0.21
h = 1
0 50 100 150
0
2
0
4
0
6
0
8
0
1
0
0
1
2
0
1
4
0
V(t+h)
V
(
t
)
x=y
= 0.41
h = 2
0 50 100 150
0
2
0
4
0
6
0
8
0
1
0
0
1
2
0
1
4
0
V(t+h)
V
(
t
)
x=y
= 0.35
h = 3
0 50 100 150
2
0
4
0
6
0
8
0
1
0
0
1
2
0
1
4
0
V(t+h)
V
(
t
)
x=y
= 0.3
h = 4
Figura 19: h-Scatterplots de direcci on E-W
0 50 100 150
0
1
0
2
0
3
0
4
0
5
0
V(t+h)
U
(
t
)
x=y
= 0.6
h = 1
0 50 100 150
0
1
0
2
0
3
0
4
0
V(t+h)
U
(
t
)
x=y
= 0.45
h = 2
0 50 100 150
0
5
1
0
1
5
2
0
2
5
3
0
3
5
V(t+h)
U
(
t
)
x=y
= 0.36
h = 3
0 50 100 150
0
5
1
0
1
5
2
0
2
5
3
0
3
5
V(t+h)
U
(
t
)
x=y
= 0.28
h = 4
Figura 20: h-Scatterplots cruzado de U y V en direcci on N-S
Modelizaci on geoestadstica con R 22
Listado 3: R-Script en Linux del tema 3
1 #TEMA 3 : DESCRIPCI

ON ESPACIAL
2 ps.options(family="Bookman",pointsize
=15)
3 rm(list=ls())
4
5 #Cargar paquetes
6 library(lattice)
7 library(gstat)
8
9 #Cargar wle y redondearlo
10 wle<-read.delim2("walker10.asc")
11 wle<-round(wle,0)
12
13 #Adjuntar los datos de wle para acceder
directamente
14 attach(wle)
15
16 #Grafico de V con maximos y mnimos
17 #Obtener los 10 valores maximos y
mnimos
18 Vmax=sort(V)[90:100][1]
19 Vmin=sort(V)[1:10][10]
20 dfVmax= subset(wle,V>=Vmax)
21 dfVmin= subset(wle,V<=Vmin)
22 #Ya se puede hacer el dibujo
23 postscript("imgs/03/maxmin.ps")
24 plot(X,Y,pch=3,xlim=c(11,20.2),ylim=c
(239.5,250.5))
25 text(X+0.2,Y+0.2,V)
26 points(dfVmax$X,dfVmax$Y,bg="black",pch
=21)
27 points(dfVmin$X,dfVmin$Y,bg="lightgray",
pch=21)
28 legend(11,240.8,c("Maximos","Mnimos"),
pch=21,pt.bg=c("black","lightgray"))
29 dev.off()
30
31 #Grafico de smbolos graduados
32 postscript("imgs/03/simbs.ps")
33 lv<-levelplot(VX
*
Y,wle,col.regions=gray
(seq(1,0.3,len=18)),aspect=mapasp(
wle))
34 print(lv)
35 dev.off()
36
37 #Grafico de burbujas
38 postscript("imgs/03/bubbles.ps")
39 # bub<-bubble(wle,1,2,"V",key.entries=
quantile(V,seq(0,1,.25)))
40 bub<-bubble(wle,1,2,"V",fill=TRUE,pch
=21,key.entries=quantile(V,seq
(0,1,.25)))
41 print(bub)
42 dev.off()
43
44 #Mapas de indicadores (por 12.5%, 25%,
37.5%, 50%, 62.5%, 75%)
45 # sec2<-quantile(V,c
(12.5,25,37.5,50,62.5,75)/100)
46 sec1<-seq(0.125,.75,.125)
47 sec2<-quantile(V,sec1)
48 postscript("imgs/03/indics%02d.ps",
onefile=FALSE)
49 for (i in 1:length(sec2)){
50 tit<-as.expression(substitute(
Umbral==p,list(p=sec2[i])))
51 lv<-levelplot(VX
*
Y,wle,col.
regions=c("lightgray","white
"),at=c(min(V),sec2[i],max(V
)),main=tit);
52 print(lv)
53 }
54 dev.off()
55
56
57 # Mapas de isolneas y de superficies
interpoladas en Windows
58
59 #Conseguir una matriz con los valores de
V
60 imgV<-xyz2img(wle,"V",2,1)
61 matVtemp<-imgV$z
62 matV<-matVtemp
*
0
63 m<-dim(matVtemp)[1]
64 n<-dim(matVtemp)[2]
65 for(i in 1:m){for(j in 1:n){matV[i,j]<-
matVtemp[m+1-i,j] }}
66
67 imgV2<-list(sort(imgV$y),sort(imgV$x,
decreasing=TRUE),matV)
68 names(imgV2)<-c("x","y","z")
69
70 #Calcular una media y varianza 3x3
71 media3<-matV
*
0
72 var3<-media3
73 seqm<-seq(2,m-1)
74 seqn<-seq(2,n-1)
75
76 for(i in seqm){
77 for(j in seqn){
78 i1<-i-1;
79 i2<-i+1;
80 j1<-j-1;
81 j2<-j+1;
82 matVtemp<-array(matV[i1:
i2,j1:j2]);
83 media3[i,j]<-mean(
matVtemp);
84 var3[i,j]<-var(matVtemp)
85 }
86 }
87 media3<-round(media3[seqm,seqn],2)
88 var3<-round(var3[seqm,seqn],2)
89
90 #Mostrar resultados
91 postscript("imgs/03/mediavar.ps")
92 plot(X,Y,pch=3)
93 for(i in seqm){
94 for(j in seqn){
95 text(imgV2$x[i],imgV2$y[
j]+0.25,media3[j-1,i
-1]);
96 text(imgV2$x[i],imgV2$y[
j]-0.25,var3[j-1,i
Modelizaci on geoestadstica con R 23
-1])
97 }
98 }
99 dev.off()
100
101 #Grafico de media contra varianza 3x3
102 postscript("imgs/03/mediavar2.ps")
103 media<-array(media3,dim=64)
104 varianza<-array(var3,dim=64)
105 plot(media,varianza,pch=21,bg="lightgray
",xlab="media",ylab="varianza")
106 text(105,2000,as.expression(substitute(
rho==ro,list(ro=round(cor(media,
varianza),2)))))
107 dev.off()
108
109
110 #Continuidad espacial en V
111 #NS
112 postscript("imgs/03/V-NS%02d.ps",onefile
=FALSE)
113 for(i in 1:4){
114 h<-i;
115 fil1<-seq(1+h,m);
116 col1<-seq(1,n);
117 matV1<-array(matV[fil1,col1],dim
=length(fil1)
*
length(col1));
118 fil2<-seq(1,m-h);
119 col2<-seq(1,n);
120 matV2<-array(matV[fil2,col2],dim
=length(fil2)
*
length(col2));
121 plot(matV1,matV2,xlab="V(t+h)",
ylab="V(t)");
122 lines(c(0,150),c(0,150));text
(40,30,"x=y");
123 text(40,120,as.expression(
substitute(rho==ro,list(ro=
round(cor(matV1,matV2),2))))
)
124 title(as.expression(substitute(h
==hh,list(hh=h))))
125 }
126 dev.off()
127
128 #EW
129 postscript("imgs/03/V-EW%02d.ps",onefile
=FALSE)
130 for(i in 1:4){
131 h<-i;
132 fil1<-seq(1,m);
133 col1<-seq(1+h,n);
134 matV1<-array(matV[fil1,col1],dim
=length(fil1)
*
length(col1));
135 fil2<-seq(1,m);
136 col2<-seq(1,n-h);
137 matV2<-array(matV[fil2,col2],dim
=length(fil2)
*
length(col2));
138 plot(matV1,matV2,xlab="V(t+h)",
ylab="V(t)");
139 lines(c(0,150),c(0,150));text
(40,30,"x=y");
140 text(10,90,as.expression(
substitute(rho==ro,list(ro=
round(cor(matV1,matV2),2))))
)
141 title(as.expression(substitute(h
==hh,list(hh=h))))
142 }
143 dev.off()
144
145 #Continuidad espacial en V cruzado con U
146 imgU<-xyz2img(wle,"U",2,1)
147 matUtemp<-imgU$z
148 matU<-matUtemp
*
0
149 m<-dim(matUtemp)[1]
150 n<-dim(matUtemp)[2]
151 for(i in 1:m){for(j in 1:n){matU[i,j]<-
matUtemp[m+1-i,j] }}
152
153 #NS
154 postscript("imgs/03/VU-NS%02d.ps",
onefile=FALSE)
155 for(i in 1:4){
156 h<-i;
157 fil1<-seq(1+h,m);
158 col1<-seq(1,n);
159 matV1<-array(matV[fil1,col1],dim
=length(fil1)
*
length(col1));
160 fil2<-seq(1,m-h);
161 col2<-seq(1,n);
162 matU2<-array(matU[fil2,col2],dim
=length(fil2)
*
length(col2));
163 plot(matV1,matU2,xlab="V(t+h)",
ylab="U(t)");
164 lines(c(0,150),c(0,150));text
(40,30,"x=y");
165 text(10,20,as.expression(
substitute(rho==ro,list(ro=
round(cor(matV1,matU2),2))))
)
166 title(as.expression(substitute(h
==hh,list(hh=h))))
167 }
168 dev.off()
Listado 4: R-Script en Windows del tema 3
1 orden<-6
2 V.ls<-surf.ls(orden,wle$X,wle$Y,wle$V)
3 V.tr<-trmat(V.ls,11,20,241,250,150)
4
5 ps.options(family="Bookman",pointsize
=15)
6 postscript("imgs/03/interp.ps")
7 image(V.tr,col=gray(seq(0.93,0.3,l=50)))
8 contour(V.tr,add=TRUE,labcex=.8)
9 dev.off()
Modelizaci on geoestadstica con R 24
Tema 4 Estimaci on. M etodos deterministas
En esta secci on se va a estimar el valor de la variable V en toda la extensi on de
trabajo a partir de los valores en el conjunto de datos wlm (g. 21).
Este conjunto de datos se obtiene f acilmente al estar presente en el paquete gstat
y carg andose con ejecutar el comando data(walker).
X
Y
50 100 150 200 250
50
100
150
200
250
Figura 21: Distribuci on de wlm
La estimaci on de estos datos se ha realizado desde GRASS, para ello primero se ha
exportado este conjunto de datos a un chero csv para a continuaci on importarlo en
GRASS como una cobertura vectorial (GRASS ya no utiliza sites).
En GRASS se han utilizado las funciones v.voronoi, v.surf.idw y v.surf.rst
que implementan el m etodo de polgonos de inuencia, el de pesos inversos a la dis-
tancia y el de splines de tensi on respectivamente. Adem as de las coberturas raster con
los valores estimados se han obtenido las curvas de nivel cada 250ppm. Finalmente
se han maquetado tres sencillos mapas con los resultados de estos tres m etodos.
Al nal del tema se presenta el script en GRASS que genera los mapas y exporta a
cheros csv los valores de los tres mapas para poder estudiarlos en R. Igualmente se
presentan los tres cheros que indican la maquetaci on de los mapas.
A continuaci on se importa el conjunto de datos wlc que consiste en 78000 puntos
de validaci on y que se entiende como valores correctos..
En el cuadro 1 se muestran los estadsticos de estos cuatro conjunto de datos y
en la gura 23 en la p agina 26 se pueden ver los histogramas. Se pueden observar
las siguientes caractersticas:
Se observa como el m etodo de Polgonos de inuencia es el que mejor mantiene
las caractersticas estadsticas.
Modelizaci on geoestadstica con R 25
200
100
1
0
0
2
0
0
Polgonos de influencia de V
Leyenda
Escala
0 50
0
200
400
600
800
1000
1200
1400
200
100
1
0
0
2
0
0
Inverso a la distancia de V
Leyenda
Equidistancia de curvas = 250ppm
Escala
0 50
200
400
600
800
1000
1200
1400
200
100
1
0
0
2
0
0
Splines de Tensin de V (T=100)
Leyenda
Equidistancia de curvas = 250ppm
Escala
0 50
0
200
400
600
800
1000
1200
1400
Figura 22: Mapas generados por GRASS
Modelizaci on geoestadstica con R 26
Cuadro 1: Resumen de estadsticos de datos de validaci on y estimados
wlc Voronoi IDW RST
Mn. 0.00 0.00 0.46 -47.51
Q
1
67.79 70.70 163.00 121.20
Median. 221.30 224.40 297.20 277.90
Media 278.00 275.10 316.80 277.90
Q
3
428.30 425.90 428.50 379.50
M ax. 1631.00 1528.00 1498.00 1530.00

2
62423.16 60039.41 39458.06 44820.41
249.84 245.03 198.64 211.71
Simetr. 0.90 0.89 0.63 0.76
Apunt. 0.77 1.25 1.39 2.44
CV 0.90 0.89 0.63 0.76
El m etodo de Splines de tensi on ofrece resultados negativos pese a calcularse
con un valor de tensi on alto (100).
Cabe destacar la diferencia entre los m etodos estadsticos y wlc en el apuntala-
miento, claramente observable en los histogramas.
WLC
V
F
r
e
c
u
e
n
c
i
a
0 500 1000 1500
0
5
0
0
0
1
0
0
0
0
1
5
0
0
0
2
0
0
0
0
2
5
0
0
0
Vor
V
F
r
e
c
u
e
n
c
i
a
0 500 1000 1500
0
5
0
0
0
1
0
0
0
0
1
5
0
0
0
2
0
0
0
0
IDW
V
F
r
e
c
u
e
n
c
i
a
0 500 1000 1500
0
5
0
0
0
1
0
0
0
0
1
5
0
0
0
RST
V
F
r
e
c
u
e
n
c
i
a
0 500 1000 1500
0
5
0
0
0
1
0
0
0
0
1
5
0
0
0
Figura 23: Histogramas de los conjuntos de datos
Modelizaci on geoestadstica con R 27
4.1. Scripts
Listado 5: R-Script del tema 4
1 #TEMA 4 - ESTIMACI

ON
2 ps.options(family="Bookman",pointsize
=15)
3 rm(list=ls())
4
5 #Cargar los datos wlm
6 library(lattice)
7 library(gstat)
8 data(walker)
9 wlm<-walker
10 attach(wlm)
11
12 #Ver wlm
13 postscript("imgs/04/wlm.ps")
14 xy<-xyplot(YX,wlm,pch=3,aspect=mapasp(
wlm))
15 print(xy)
16 dev.off()
17
18 #Importar valores reales wlc
19 wlc<-read.csv("wlc.csv",sep=";",dec=".",
header=TRUE)
20
21 #Importar los valores estimados en GRASS
22 idw<-read.csv(file="/geo/r/mapasgrass/
idw.values.asc",sep="|")
23 vor<-read.csv(file="/geo/r/mapasgrass/
voronoi.values.asc",sep="|")
24 splines<-read.csv(file="/geo/r/
mapasgrass/splines.values.asc",sep="
|")
25
26 # #Mostrar medias, varianzas y demas....
27 Desv<-function(datos){sqrt(var(datos))}
28 CS<-function(V){sum((V-mean(V))3)/(
length(V)
*
Desv(V)3)}
29 K<-function(V){sum((V-mean(V))4/length(
V))/Desv(V)4-3}
30 CV<-function(V){Desv(V)/mean(V)}
31
32 datos<-list(wlc$V,vor$value,idw$value,
splines$value)
33 print("Resumen")
34 print(lapply(datos,summary))
35 print("Varianza")
36 print(lapply(datos,var))
37 print("Desviacion Tpica")
38 print(lapply(datos,Desv))
39 print("Simetra")
40 print(lapply(datos,CS))
41 print("Apuntalamiento")
42 print(lapply(datos,K))
43 print("Coeficiente de Variacion")
44 print(lapply(datos,CV))
45
46 postscript("imgs/04/hist%01d.ps",onefile
=FALSE)
47 # layout(matrix(1:4,2,2,byrow=TRUE))
48 hist(datos[[1]],main="WLC",xlab="V",ylab
="Frecuencia")
49 hist(datos[[2]],main="Vor",xlab="V",ylab
="Frecuencia")
50 hist(datos[[3]],main="IDW",xlab="V",ylab
="Frecuencia")
51 hist(datos[[4]],main="RST",xlab="V",ylab
="Frecuencia")
52 dev.off()
Listado 6: Script para GRASS
1 # CREAR MAPA DE SPLINES
2 g.remove rast=splines vect=spcontour
3 v.surf.rst input=wle elev=splines
zcolumn=u tension=100
4 r.contour input=splines output=spcontour
step=250
5 r.colors map=splines rules=grey
6
7
8 # CREAR MAPA DE VORONOI
9 g.remove rast=rvorwle vect=clvorwle,
vorwle
10 v.voronoi input=wle ouput=vorwle
11 v.clean input=vorwle output=clvorwle
type=boundary,line,centroid,area
tool=break,rmdupl,snap
12 g.region vect=clvorwle
13 r.colors map=rvorwle rast=splines
14
15 # CREAR MAPA IDW
16 g.remove rast=idw vect=idwcontour
17 v.surf.idw input=wle output=idw col=u
18 r.colors map=idw rast=splines
19 r.contour input=idw output=idwcontour
step=250
20
21 # GENERAR MAPAS PS
22 ps.map input=splines.psmap output=
splines.ps
23 ps.map input=voronoi.psmap output=
voronoi.ps
24 ps.map input=idw.psmap output=idw.ps
25
26 # EXPORTAR A CSV
27 r.to.vect input=idw output=idw feature=
point #convertir a puntos
28 r.to.vect input=splines output=splines
feature=point #convertir a puntos
29 r.to.vect input=rvorwle output=voronoi
feature=point #convertir a puntos
30
31 echo "SELECT
*
FROM idw" | db.select >
idw.values.asc #valores
32 echo "SELECT
*
FROM splines" | db.select
> splines.values.asc #valores
33 echo "SELECT
*
FROM voronoi" | db.select
> voronoi.values.asc #valores
34
35 #v.out.ascii input=idw output=idw.coor.
asc format=point # si quisieramos
Modelizaci on geoestadstica con R 28
coordenadas
Listado 7: Script para ps.map del m etodo
IDW
1 grid 50
2 color black
3 numbers 2 black
4 end
5 vpoints wle
6 color black
7 fcolor black
8 size 1
9 label u
10 end
11 vlines idwcontour
12 color white
13 width 0.5
14 end
15 raster idw
16 maploc 0.7 3 7 10
17
18
19 rectangle 0 390 260 305
20 color black
21 fcolor white
22 end
23 text 160 365 Inverso a la distancia
de V
24 font Bookman
25 size 10
26 end
27 text 20 385 Leyenda
28 font Bookman
29 size 6
30 end
31 colortable y
32 where 2 0.7
33 raster idw
34 width 0.3
35 height 2
36 cols 6
37 font Bookman
38 fontsize 8
39 color black
40 end
41 text 160 320 Equidistancia de curvas
= 250ppm
42 font Bookman
43 size 6
44 end
45 text 160 345 Escala
46 font Bookman
47 size 6
48 end
49 scalebar f
50 where 5 2.1
51 length 50
52 height 0.05
53 segment 5
54 numbers 5
55 fontsize 8
56 end
57 paper a4
58 left 0.5
59 right 0.5
60 bottom 0.5
61 top 0.5
62 end
63 end
Listado 8: Script para ps.map del m etodo
RST
1 grid 50
2 color black
3 numbers 2 black
4 end
5 vpoints wle
6 color black
7 fcolor black
8 size 1
9 label u
10 end
11 vlines spcontour
12 color white
13 width 0.5
14 end
15 raster splines
16 maploc 0.7 3 7 10
17
18
19 rectangle 0 390 260 305
20 color black
21 fcolor white
22 end
23 text 160 365 Splines de Tension de V
(T=100)
24 font Bookman
25 size 10
26 end
27 text 20 385 Leyenda
28 font Bookman
29 size 6
30 end
31 colortable y
32 where 2 0.7
33 raster splines
34 width 0.3
35 height 2
36 cols 6
37 font Bookman
38 fontsize 8
39 color black
40 end
41 text 160 320 Equidistancia de curvas
= 250ppm
42 font Bookman
43 size 6
44 end
45 text 160 345 Escala
46 font Bookman
47 size 6
48 end
49 scalebar f
50 where 5 2.1
51 length 50
52 height 0.05
Modelizaci on geoestadstica con R 29
53 segment 5
54 numbers 5
55 fontsize 8
56 end
57 paper a4
58 left 0.5
59 right 0.5
60 bottom 0.5
61 top 0.5
62 end
63 end
Listado 9: Script para ps.map del m etodo
Polgonos de inuencia
1 grid 50
2 color black
3 numbers 2 black
4 end
5 vpoints wle
6 color black
7 fcolor black
8 size 1
9 end
10 vareas clvorwle
11 color black
12 fcolor none
13 end
14 raster rvorwle
15 maploc 0.7 3 7 10
16
17
18 rectangle 0 390 260 305
19 color black
20 fcolor white
21 end
22 text 160 365 Polgonos de influencia
de V
23 font Bookman
24 size 10
25 end
26 text 20 385 Leyenda
27 font Bookman
28 size 6
29 end
30 colortable y
31 where 2 0.7
32 raster rvorwle
33 width 0.3
34 height 2
35 cols 6
36 font Bookman
37 fontsize 8
38 color black
39 end
40 text 160 345 Escala
41 font Bookman
42 size 6
43 end
44 scalebar f
45 where 5 2.1
46 length 50
47 height 0.05
48 segment 5
49 numbers 5
50 fontsize 8
51 end
52 paper a4
53 left 0.5
54 right 0.5
55 bottom 0.5
56 top 0.5
57 end
58 end
Modelizaci on geoestadstica con R 30
Tema 5 Continuidad espacial de V
5.1. Variograma omnidireccional
El c alculo del variograma omnidireccional con gstat es sencillo. En primer lugar
se ha de crear un objeto de tipo gstat a nadi endole los datos de trabajo. A continua-
ci on se ejecuta el comando variogram con las opciones pertinentes.
La opci on principal es el tama no de los lags. Ning un paquete de los consultados
permite elegir una tolerancia para incluir pares en cada lag, siendo unicamente GSLIB
el que acepta este par ametro, pero no en R. Otros par ametros permiten obtener el
mapa supercial o la nube de puntos o establecer restricciones de direcci on como se
ver a m as adelante.
En el script del tema se han creado diversas funciones para realizar gr acas de
uno o varios variogramas presentando el n umero de pares y una leyenda.
Si se muestra el variograma en R, aparece el listado con los lags, el n umero de
pares, el valor del variograma, las direcciones horizontales y verticales (si las hubiera)
y la variable utilizada.
> gstatV<-gstat(id="V",formula=V1,locations=X+Y,data=wlm)
> varOmni<-variogram(gstatV,width=10,cutoff=101)
> varOmni
np dist gamma dir.hor dir.ver id
1 565 7.291342 42743.67 0 0 V
2 2072 15.022197 67877.29 0 0 V
3 2948 24.783924 79062.05 0 0 V
4 3210 34.757173 94338.18 0 0 V
5 4044 44.673417 88377.42 0 0 V
6 4265 54.887742 94888.71 0 0 V
7 4926 64.548384 92944.57 0 0 V
8 5196 74.614543 94322.57 0 0 V
9 5533 84.724877 89014.25 0 0 V
10 5167 94.880575 98948.24 0 0 V
11 707 100.470981 86139.86 0 0 V
La gura 24 en la p agina siguiente muestra los variogramas omnidireccionales con
lags de tama no 5, 10, 15 y 20. Se descartan los extremos y entre el de 10 y el de 15
se opta por el de 10 por presentar equilibrio entre el n umero de lags y la continuidad
buscada. El par ametro que habr a que modicar ser a tal vez la distancia m axima
computada, para evitar el salto que aparece, dej andola en 80 metros en sucesivos
c alculos.
5.2. Variograma supercial
Estableciendo la opci on map=TRUE se obtiene el variograma supercial, que puede
ser graado con los comandos levelplot y contourplot (gs. 25 y 26). Estas im age-
nes pueden servir para conocer la existencia de anisotropa geom etrica, mostrando los
ejes de m axima y mnima continuidad. Este m etodo puede ser util para una primera
aproximaci on, pero es difcil de cuanticar. Por esta raz on se usar an los variogramas
direccionales.
5.3. Variogramas direccionales
5.3.1. B usqueda de los ejes de anisotropa
En lugar de tomar todos los pares para calcular el variograma, se puede establecer
una direcci on determinada y una tolerancia angular para que s olo se computen los
Modelizaci on geoestadstica con R 31
0 20 40 60 80 100
0
e
+
0
0
2
e
+
0
4
4
e
+
0
4
6
e
+
0
4
8
e
+
0
4
1
e
+
0
5
Distancia
S
e
m
i
v
a
r
i
o
g
r
a
m
a
t = 5
20 40 60 80 100
0
e
+
0
0
2
e
+
0
4
4
e
+
0
4
6
e
+
0
4
8
e
+
0
4
1
e
+
0
5
Distancia
S
e
m
i
v
a
r
i
o
g
r
a
m
a
t = 10
20 40 60 80 100
0
e
+
0
0
2
e
+
0
4
4
e
+
0
4
6
e
+
0
4
8
e
+
0
4
1
e
+
0
5
Distancia
S
e
m
i
v
a
r
i
o
g
r
a
m
a
t = 15
20 40 60 80 100
0
e
+
0
0
2
e
+
0
4
4
e
+
0
4
6
e
+
0
4
8
e
+
0
4
1
e
+
0
5
Distancia
S
e
m
i
v
a
r
i
o
g
r
a
m
a
t = 20
Figura 24: Variogramas omnidireccionales (i))
map.dx
m
a
p
.
d
y
100 50 0 50 100
100
50
0
50
100
40000
60000
80000
100000
120000
140000
160000
180000
200000
Figura 25: Mapa del variograma supercial
Modelizaci on geoestadstica con R 32
map.dx
m
a
p
.
d
y
100 50 0 50 100
100
50
0
50
100
Figura 26: Isolneas del variograma supercial
pares de vectores en ese rango de direcciones. Comparando diferentes variogramas
direccionales se pueden obtener las direcciones de m axima y mnima continuidad .
En este trabajo se van a graar los variogramas cada 15 grados sexagesimales,
agrupados en dos gr acos para que facilitar la lectura (g 27). Para obtener num eri-
camente las direcciones de los ejes se ha procedido del siguiente modo: se establece
como valor de meseta 90.000ppm, a continuaci on se halla la distancia a la que se
corresponde dicho valor de semivarianza interpolando linealmente los valores alrede-
dor de dicho valor. Por ultimo se ha creado un gr aco donde en el eje de las ordenadas
se presentan las direcciones y en las abscisas la distancia obtenida.
Se comprueba el gran salto entre los grados 135 y 140 debido a que el resalte que
se observa en los variogramas desciende y por tanto la distancia avanza de forma
abrupta. En cualquier caso, los valores obtenidos, unos 160 grados de m aximo y en
torno a los 90 grados de mnimo, se asemejan a los obtenidos en los apuntes de la
asignatura.
20 40 60 80 100
0
2
0
0
0
0
4
0
0
0
0
6
0
0
0
0
8
0
0
0
0
1
0
0
0
0
0
Distancia
S
e
m
i
v
a
r
i
o
g
r
a
m
a
0
30
60
90
120
150
180
20 40 60 80 100
0
e
+
0
0
2
e
+
0
4
4
e
+
0
4
6
e
+
0
4
8
e
+
0
4
1
e
+
0
5
Distancia
S
e
m
i
v
a
r
i
o
g
r
a
m
a
15
45
75
105
135
165
Figura 27: Variogramas direccionales
Modelizaci on geoestadstica con R 33
Direccin
D
i
s
t
a
n
c
i
a

e
n

l
a
g

=

4
0 20 40 60 80 100 120 140 160 180
0 20 40 60 80 100 120 140 160 180
3
0
4
0
5
0
6
0
Figura 28: Detecci on de ejes de anisotropa
5.3.2. Obtenci on de la tolerancia angular
Se pretende en este caso encontrar la tolerancia angular m as peque na posible que
haga el variograma representativo y m as adaptado por tanto a la direcci on elegida. Se
trata en denitiva de un proceso repetitivo como el anterior, pero esta vez variar an las
tolerancias y se buscar an los n umeros de pares en el primer lag (el que menos pares
suele presentar) mayor a 30 que a su vez generen un variograma que sea continuo
(gs 29 y 30).
Se observa que en los primeros variogramas la direcci on de mnima continuidad
presenta un ((efecto hueco)) muy importante en la distancia 60, en cualquier caso
parece que 40 es una tolerancia suciente.
5.4. Variogramas cruzados
Estos variogramas presentan la continuidad espacial entre variables. Se pueden
calcular por tanto los variogramas omnidireccionales y en las direcciones obtenidas
anteriormente. La gura 31 presenta estos tres variogramas y se puede apreciar como
tanto el omnidireccional como el de m axima continuidad no presentan grandes dis-
continuidades, el de mnima continuidad ofrece un aspecto poco claricador debido
seguramente a la existencia de datos an omalos en alguna o ambas variables.
Modelizaci on geoestadstica con R 34
20 40 60 80 100
0
e
+
0
0
2
e
+
0
4
4
e
+
0
4
6
e
+
0
4
8
e
+
0
4
1
e
+
0
5
tol = 15
Distancia
S
e
m
i
v
a
r
i
o
g
r
a
m
a
234
464
396
424
613
608
530
588
754
640
tol = 15
73
303
487
587 829
876
1092
1165 1254
1121
90
160
20 40 60 80 100
0
2
0
0
0
0
4
0
0
0
0
6
0
0
0
0
8
0
0
0
0
1
0
0
0
0
0
tol = 20
Distancia
S
e
m
i
v
a
r
i
o
g
r
a
m
a
280
483
537
729
694
696
982
799
903
902
tol = 20
115
458
704
828 1065
1174
1473
1598
1637
1481
90
160
20 40 60 80 100
0
e
+
0
0
2
e
+
0
4
4
e
+
0
4
6
e
+
0
4
8
e
+
0
4
1
e
+
0
5
tol = 25
Distancia
S
e
m
i
v
a
r
i
o
g
r
a
m
a
305
503
783
822
891
968
1089
1071
1115
1090
tol = 25
118
546
883
985 1284
1473
1771
1889
1940
1806
90
160
20 40 60 80 100
0
2
0
0
0
0
4
0
0
0
0
6
0
0
0
0
8
0
0
0
0
1
2
0
0
0
0
tol = 30
Distancia
S
e
m
i
v
a
r
i
o
g
r
a
m
a
320
585
1006
911
1296
1062
1392
1193
1464
1295
tol = 30
151
723
1094
1151
1562
1773
2052
2258
2302
2100
90
160
Figura 29: Variogramas por tolerancias (i)
Modelizaci on geoestadstica con R 35
20 40 60 80 100
0
e
+
0
0
2
e
+
0
4
4
e
+
0
4
6
e
+
0
4
8
e
+
0
4
1
e
+
0
5
tol = 35
Distancia
S
e
m
i
v
a
r
i
o
g
r
a
m
a
329
744
1076
1171
1383
1368
1513
1624
1624
1539
tol = 35
161
856
1205
1361
1752
1993
2365
2485
2677
2415
90
160
20 40 60 80 100
0
e
+
0
0
2
e
+
0
4
4
e
+
0
4
6
e
+
0
4
8
e
+
0
4
1
e
+
0
5
tol = 40
Distancia
S
e
m
i
v
a
r
i
o
g
r
a
m
a
334
895
1146
1368
1563
1520
1822
1769 1884
1816
tol = 40
179
980
1309
1582
1904
2271
2656
2855
2941
2728
90
160
20 40 60 80 100
0
2
0
0
0
0
4
0
0
0
0
6
0
0
0
0
8
0
0
0
0
1
0
0
0
0
0
tol = 45
Distancia
S
e
m
i
v
a
r
i
o
g
r
a
m
a
343
1072
1362
1502
1847
1812
1998
2072
2181
2011
tol = 45
203
1058
1495
1708
2255
2439
2949
3103
3284
3002
90
160
20 40 60 80 100
0
2
0
0
0
0
4
0
0
0
0
6
0
0
0
0
8
0
0
0
0
1
0
0
0
0
0
tol = 50
Distancia
S
e
m
i
v
a
r
i
o
g
r
a
m
a
359
1209
1627
1626
2050
2146
2228
2284
2476
2293
tol = 50
230
1114
1716
1856
2528
2710
3143 3354
3564
3230
90
160
Figura 30: Variogramas por tolerancias (ii)
20 40 60 80 100 120
0
e
+
0
0
1
e
+
0
5
2
e
+
0
5
3
e
+
0
5
4
e
+
0
5
5
e
+
0
5
Distancia
S
e
m
i
v
a
r
i
o
g
r
a
m
a
Cruzado
85
160
Figura 31: Variogramas cruzados
Modelizaci on geoestadstica con R 36
5.5. Scripts
Listado 10: Funciones para imprimir va-
riogramas
1 #FUNCIONES PARA MOSTRAR VARIOGRAMAS
2 #-------------Plotear el primer
variograma
3 plotvar<-function(var,titulo,color,sepX,
sepY,limY,limX,nps){
4 plot(var$dist,var$gamma,type="b",
ylim=limY,xlim=limX,xlab="
Distancia",ylab="Semivariograma"
,col=color,main=titulo)
5 if (nps) text(var$dist+sepX,var$
gamma-sepY,var$np,col=color)
6 title(titulo)
7 }
8
9 #-------------Anadir nuevos variogramas
10 addvar<-function(var,color,sepX,sepY,nps
){
11 points(var$dist,var$gamma,type="b",
col=color)
12 if (nps) text(var$dist+sepX,var$
gamma-sepY,var$np,col=color)
13 }
14
15 #-------------Funcion principal de
grafiado
16 pintavars<-function(listvars,colores,
etiqs,seps,titulo,posley,nps=FALSE){
17 #Obtener los lmites
18 nvars<-length(listvars)
19 maxtemp<-array(0,nvars)
20 for (i in 1:nvars){
21 maxtemp[i]<-max(listvars[[i]]$
gamma)
22 }
23 limY<-c(0,max(maxtemp)
*
1.1)
24
25 maxtempA<-array(0,nvars)
26 maxtempB<-array(0,nvars)
27 for (i in 1:nvars){
28 maxtempA[i]<-min(listvars[[i]]$
dist);
29 maxtempB[i]<-max(listvars[[i]]$
dist)
30 }
31 limX<-c(min(maxtempA),max(maxtempB)
*
1.1)
32
33 #Generar la matriz de separaciones
34 seps2<-matrix(seps,ncol=2,byrow=TRUE
)
35
36 #Pintar el primer variograma
37 plotvar(listvars[[1]],titulo,colores
[1],seps2[1,1],seps2[1,2],limY,
limX,nps)
38
39 if (nvars>=2){
40 #Anadir el resto
41 for (i in 2:nvars){
42 addvar(listvars[[i]],colores
[i],seps2[i,1],seps2[i
,2],nps)
43 }
44 }
45 #Anadir la leyenda
46 legend(posley[1],posley[2],etiqs,
colores)
47 }
Listado 11: R-Script del tema 5
1 #TEMA 5. CONTINUIDAD ESPACIAL
2 ps.options(family="Bookman",pointsize
=15)
3 rm(list=ls())
4
5 library(lattice)
6 library(gstat)
7
8 #Anadir las funciones programadas
9 source("Variogramas.R")
10
11 #-------------
12
13 #Cargar los datos wlm
14 data(walker)
15 wlm<-walker
16 attach(wlm)
17
18 # Crear el objeto gstat
19 gstatV<-gstat(id="V",formula=V1,
locations=X+Y,data=wlm)
20
21 #Obtener variogramas omni. a varias
distancias
22 secDists<-c(5,10,15,20)
23 colores<-c("red","green","blue")
24 postscript("imgs/05/omni%1d.ps",onefile=
FALSE)
25 for (i in 1:length(secDists)){
26 si<-secDists[i];
27 letra<-as.character(si);
28 varOmni<-variogram(gstatV,width=si,
cutoff=101)
29 pintavars(list(varOmni),"black",as.
expression(substitute(t==sii,
list(sii=si))),c(3,4000),"",c
(40,2e4))
30 }
31 dev.off()
32
33 #Obtener el mapa superficial
34 varOmni.map<-variogram(gstatV,width=10,
cutoff=150,map=TRUE)
35 varOmni.map.df<-as.data.frame(varOmni.
map)
36 postscript("imgs/05/omnimap1.ps")
37 grises<-grey(seq(0.99,0.3,l=30))
Modelizaci on geoestadstica con R 37
38 lp<-levelplot(map.Vmap.dx
*
map.dy,
varOmni.map.df,col.regions=grises,
aspect=mapasp(varOmni.df))
39 print(lp)
40 dev.off()
41 postscript("imgs/05/omnimap2.ps")
42 cp<-contourplot(map.Vmap.dx
*
map.dy,
varOmni.map.df,labels=FALSE,cuts=7,
aspect=mapasp(varOmni.df))
43 print(cp)
44 dev.off()
45
46 #Crear familias de variogramas por
direcciones
47 sec<-seq(0,180,5)
48 separaciones<-rep(c(4,2000),length(sec))
49 posleyenda<-c(60,60000)
50 varsDirs<-list()
51 varsDirsP1<-list();sec1<-list()
52 varsDirsP2<-list();sec2<-list()
53 for (j in 1:length(sec)){
54 sj<-sec[j]
55 letra<-as.character(sj)
56 varsDirs[[letra]]<-variogram(gstatV,
width=10,cutoff=100,alpha=sj,tol
.hor=40)
57 if (!sj%%30) {
58 varsDirsP1[[letra]]<-varsDirs[[
letra]];
59 sec1[[letra]]<-letra
60 }
61 if (!sj%%15 && sj%%30) {
62 varsDirsP2[[letra]]<-varsDirs[[
letra]];
63 sec2[[letra]]<-letra
64 }
65 }
66 postscript("imgs/05/dirs%1d.ps",onefile=
FALSE)
67 pintavars(varsDirsP1,rainbow(length(sec1
)),as.character(sec1),separaciones,"
",posleyenda)
68 pintavars(varsDirsP2,rainbow(length(sec2
)),as.character(sec2),separaciones,"
",posleyenda)
69 dev.off()
70
71 #Buscar direcciones de los ejes de
anisotropa
72 nVars<-length(varsDirs)
73 grad<-sec
74 dist4<-rep(0,nVars)
75 yc<-90000
76 for (i in 1:nVars){
77 j<-1;
78 while(varsDirs[[i]]$gamma[j]<yc){j<-
j+1};
79 y2<-varsDirs[[i]]$gamma[j];
80 y1<-varsDirs[[i]]$gamma[j-1];
81 x2<-varsDirs[[i]]$dist[j];
82 x1<-varsDirs[[i]]$dist[j-1];
83 dist4[i]<-(yc-y1)
*
(x2-x1)/(y2-y1) +
x1
84 }
85 npMat<-cbind(grad,dist4)
86 postscript("imgs/05/ejes.ps")
87 plot(npMat,type="b",pch=21,bg="lightgray
",xlab="Direccion",ylab="Distancia
en lag = 4",axes=FALSE)
88 axis(1,at=seq(0,180,10),labels=FALSE);
axis(1,at=seq(0,180,20))
89 axis(3,at=seq(0,180,10),labels=FALSE);
axis(3,at=seq(0,180,20))
90 axis(2);box()
91 dev.off()
92
93
94 #Crear familias de variogramas por
tolerancias
95 sec<-c(90,160)
96 lsec<-as.character(sec)
97 tols<-seq(15,50,5)
98 colores<-c("red","green")
99 separaciones<-rep(c(4,2000),length(sec))
100 posleyenda<-c(60,40000)
101 postscript("imgs/05/tols%1d.ps",onefile=
FALSE)
102 for (i in 1:length(tols)){
103 vars<-list()
104 #Sengudo bucle por direcciones
105 for (j in 1:length(sec)){
106 sj<-sec[j];letra<-as.character(
sj)
107 vars[[letra]]<-variogram(gstatV,
width=10,cutoff=100,alpha=sj
,tol.hor=tols[i])
108 }
109 letrat<-as.expression(substitute(tol
==t,list(t=tols[i])))
110 pintavars(vars,colores,lsec,
separaciones,letrat,posleyenda,
TRUE)
111 }
112 dev.off()
113
114 #Variogramas cruzados
115 #Para la U hay que eliminar
localizaciones sin dato
116 wlm2<-subset(wlm,!is.na(U))
117 gVU<-gstat(id="V",formula=V1,locations=
X+Y,data=wlm)
118 gVU<-gstat(gVU,id="U",formula=U1,
locations=X+Y,data=wlm2)
119 #Ver los variogramas
120 separaciones<-rep(c(4,2000),3)
121 posleyenda<-c(60,150000)
122 colores<-c("black","red","green")
123 etiqs<-c("Cruzado","85","160")
124 varsCruz<-list()
125 varsCruz[[1]]<-subset(variogram(gVU,
width=10),id=="V.U")
126 varsCruz[[2]]<-subset(variogram(gVU,
width=10,alpha=85,tol.h=40),id=="V.U
")
127 varsCruz[[3]]<-subset(variogram(gVU,
width=10,alpha=160,tol.h=40),id=="V.
Modelizaci on geoestadstica con R 38
U")
128 postscript("imgs/05/cross.ps")
129 pintavars(varsCruz,colores,etiqs,
separaciones,"",posleyenda)
130 dev.off()
Modelizaci on geoestadstica con R 39
Tema 6 Modelizaci on del variograma experimental
Con el paquete gstat se puede modelizar el variograma a partir de los modelos m as
comunes (efecto pepita puro, exponencial, esf erico, gaussiano) y muchos m as. Para
verlos, basta con ejecutar la orden show.vgms()
distance
s
e
m
i
v
a
r
i
a
n
c
e
vgm(1,"Nug",0)
0.0 0.5 1.0 1.5 2.0 2.5 3.0
vgm(1,"Exp",1) vgm(1,"Sph",1)
0.0 0.5 1.0 1.5 2.0 2.5 3.0
vgm(1,"Gau",1)
0
1
2
3
vgm(1,"Exc",1)
0
1
2
3
vgm(1,"Mat",1) vgm(1,"Cir",1) vgm(1,"Lin",0) vgm(1,"Bes",1) vgm(1,"Pen",1)
vgm(1,"Per",1) vgm(1,"Hol",1) vgm(1,"Log",1) vgm(1,"Pow",1)
0
1
2
3
vgm(1,"Spl",1)
0.0 0.5 1.0 1.5 2.0 2.5 3.0
0
1
2
3
vgm(1,"Err",0) vgm(1,"Int",0)
Figura 32: Modelos de variogramas disponibles
Para crear un modelo basta con utilizar la orden v.model. Una vez creado un mo-
delo se puede a nadir al objeto de tipo gstat para incluirlo junto con el variograma
experimental. Por ejemplo si deseamos un modelo esf erico bastara con indicar la me-
seta y el rango. Este modelo y el variograma se presentan gr acamente en la gura 33
en la p agina siguiente.
> vgm(92000,"Sph",30)
model psill range
1 Sph 92000 30
Pero los modelos pueden combinarse y formar ((estructuras imbricadas)) simple-
mente a nadiendo su denici on unos sobre otros. As, podemos a nadir crear un modelo
para el variograma direccional de 160
o
de la Variable V seg un la siguiente denici on:
(h) = 22,000 + 40,000 Esf
30
(h) + 45,000 Esf
150
(h) (6)
Crea el modelo de la gura 34 y su denici on en R es la siguiente:
> vgm(40e3,"Sph",30,add.to=vgm(22000,"Nug",add.to=vgm(45e3,"Sph",150)))
model psill range
1 Sph 45000 150
2 Nug 22000 0
3 Sph 40000 30
Modelizaci on geoestadstica con R 40
Distancia
S
e
m
i
v
a
r
i
o
g
r
a
m
a
20 40 60 80 100
20000
40000
60000
80000
Figura 33: Modelos esf erico de rango 30 y meseta parcial de 92000ppm
Distancia
S
e
m
i
v
a
r
i
o
g
r
a
m
a
20 40 60 80 100
20000
40000
60000
80000
Figura 34: Modelos de variograma combinados
Modelizaci on geoestadstica con R 41
6.1. Estimaci on automatizada del modelo
6.1.1. gstat
Tanto el paquete gstat como el paquete geoR proporcionan funciones para la esti-
maci on automatizada del modelo de variograma. En ambos casos deberemos ajustar
manualmente unos par ametros iniciales para pasarlos como par ametros de entrada,
junto con el variograma.
De este modo, si queremos modelar el variograma omnidireccional de V mediante
un modelo exponencial con efecto pepita, basta con proceder del siguiente modo (g.
35):
> m<-vgm(72e3,"Exp",15,22e3)
> mfit<-fit.variogram(variogram(g["V"],width=10),m)
> g<-gstat(g,id="V",model=mfit)
> print(g)
data:
V : formula = V1 ; locations = X + Y ; data dim = 470 x 6
variograms:
model psill range
V[1] Nug 186.3867 0.00000
V[2] Exp 93809.2943 12.01007
Distancia
S
e
m
i
v
a
r
i
o
g
r
a
m
a
20 40 60 80 100
20000
40000
60000
80000
Figura 35: Modelo de variograma de V ajustado
6.1.2. geoR
El paquete geoR proporciona una herramienta ciertamente interesante. Se trata
de estimar de forma manual el modelo pero haciendo uso de una interfaz gr aca de
usuario escrita en el lenguaje TclTk. Se pasa a la funci on eyefit el variograma a
modelar y aparece un cuadro de di alogo donde es posible elegir el tipo de modelo y
sus par ametros mediante barras deslizantes.
> library(geoR)
-------------------------------------------------------------
Functions for geostatistical data analysis
For an Introduction to geoR go to http://www.est.ufpr.br/geoR
geoR version 1.5-7 (built on 2005/06/07) is now loaded
-------------------------------------------------------------
> geoV<-as.geodata(wlm,2:3,4)
Modelizaci on geoestadstica con R 42
> vario.b<-variog(geoV,max.dist=130,breaks=seq(0,130,10))
variog: computing omnidirectional variogram
> vario.m<-eyefit(vario.b)
Loading required package: tcltk
Figura 36: Modelado interactivo del variograma
GeoR adem as genera un gr aco de resumen de los datos bastante descriptivo don-
de muestra la localizaci on de los mismos, un histograma de la variable y dos gr acos
de dispersi on de la variable contra las coordenadas X e Y respectivamente (g. 37).
Por ultimo, geoR tambi en ajusta por mnimos cuadrados el modelo de variogra-
ma de forma an aloga a gstat aunque algo m as simple, pasando unicamente un
valor de meseta, un rango y un m etodo (g. 38 en la p agina siguiente). En este
sentido gstat es m as potente al pasar a su funci on directamente un objeto de ti-
po variogram.model.
> vario.m2<-variofit(vario.b,c(93809,12),cov.model="exponential")
variofit: weights used: npairs
variofit: minimisation function used: optim
> vario.m2
variofit: model parameters estimated by WLS (weighted least squares):
covariance model is: exponential
parameter estimates:
tausq sigmasq phi
14873.1088 79431.7551 13.4973
variofit: minimised weighted sum of squares = 612531182238
Modelizaci on geoestadstica con R 43
0 50 100 150 200 250
0
5
0
1
0
0
1
5
0
2
0
0
2
5
0
3
0
0
X Coord
Y

C
o
o
r
d

0 500 1000 1500
0
5
0
1
0
0
1
5
0
2
0
0
2
5
0
3
0
0
data
C
o
o
r
d

Y
0 50 100 150 200 250
0
5
0
0
1
0
0
0
1
5
0
0
Coord X
d
a
t
a
data
F
r
e
q
u
e
n
c
y
0 500 1000 1500
0
2
0
4
0
6
0
8
0
1
0
0
Figura 37: Descripci on de geoR del conjunto de datos
0 20 40 60 80 100
0
e
+
0
0
2
e
+
0
4
4
e
+
0
4
6
e
+
0
4
8
e
+
0
4
1
e
+
0
5
Distancia
S
e
m
i
v
a
r
i
o
g
r
a
m
a
Figura 38: Modelo ajustado por geoR
Modelizaci on geoestadstica con R 44
6.2. Scripts
Listado 12: R-Script del tema 6
1 # TEMA 6 MODELIZACI

ON DEL VARIOGRAMA
2 ps.options(family="Bookman",pointsize
=15)
3 rm(list=ls())
4
5 library(lattice)
6 library(gstat)
7
8 #Anadir las funciones programadas
9 source("Variogramas.R")
10
11 #Cargar los datos wlm
12 data(walker)
13 wlm<-walker;rm(walker)
14 attach(wlm)
15 # Crear el objeto gstat
16 g<-gstat(id="V",formula=V1,locations=X
+Y,data=wlm)
17
18 #Ver modelos de variograma
19 postscript("imgs/06/modelos.ps")
20 print(show.vgms())
21 dev.off()
22
23 #Modelo esferico
24 postscript("imgs/06/esferico.ps")
25 print(plot(variogram(g["V"]),model=vgm
(92000,"Sph",30),xlab="Distancia",
ylab="Semivariograma",pch=3,bg="grey
"))
26 dev.off()
27
28 #Anadir diferentes modelos.
29 postscript("imgs/06/imbr.ps")
30 m<-vgm(40e3,"Sph",30,add.to=vgm(22000,"
Nug",add.to=vgm(45e3,"Sph",150)))
31 var<-variogram(g["V"],alpha=160,tol.h
=40,width=10)
32 print(plot(var,model=m,xlab="Distancia",
ylab="Semivariograma",pch=3,bg="grey
"))
33 dev.off()
34
35 #Ajustar al variograma omnidireccional
de V, un modelo ajustado "a ojo"
36 m<-vgm(72e3,"Exp",15,22e3)
37 mfit<-fit.variogram(variogram(g["V"],
width=10),m)
38 g<-gstat(g,id="V",model=mfit)
39 print(g)
40 postscript("imgs/06/mfitV.ps")
41 print(plot(variogram(g["V"]),model=g$
model$V,xlab="Distancia",ylab="
Semivariograma",pch=3,bg="grey"))
42 dev.off()
43
44 # #Usando geoR para estimar y ajustar el
variograma
45 library(geoR)
46 geoV<-as.geodata(wlm,2:3,4)
47 postscript("imgs/06/geoV.ps")
48 plot(geoV)
49 dev.off()
50 vario.b<-variog(geoV,max.dist=100,breaks
=seq(0,130,10))
51 # vario.m<-eyefit(vario.b)
52 vario.m2<-variofit(vario.b,c(93809,12),
cov.model="exponential")
53 postscript("imgs/06/geoVfit.ps")
54 plot(vario.b,pch=21,bg="grey",xlab="
Distancia",ylab="Semivariograma");
lines(vario.m2)
55 dev.off()
Modelizaci on geoestadstica con R 45
Tema 8 Kriging
Denotado en la literatura en espa nol como ((krigeado)), este conjunto de m etodos
desarrollado por Denis Krige en los a nos 50 del sigo XX es el m etodo geoestadstico
m as ampliamente aceptado. El n ultimo del estudio y modelizaci on del variograma
es su aplicaci on en este m etodo para el c alculo del valor de la variable en puntos
arbitrarios (generalmente una malla regular) mediante esta familia de m etodos.
8.1. wlc
Antes de empezar a modelar los datos de wlm, se presentan las distribuciones de U
y V en wlc para poder compararlas con los modelos siguientes.
X
Y
50 100 150 200
50
100
150
200
250
0
200
400
600
800
1000
1200
1400
1600
(a) V
X
Y
50 100 150 200
50
100
150
200
250
0
1000
2000
3000
4000
5000
(b) U
Figura 39: Conjunto de datos wlc
8.2. Krigeado Ordinario (KO)
Para generar el krigeado antes necesitamos un conjunto de puntos sobre el que
calcular el krigeado. Para realizar las pruebas se ha empleado una malla regular de
unas 5000 celdas y para obtener los resultados nales se han empleado las localiza-
ciones del conjunto de datos wlc (78000).
wlmGrid<-makegrid(wlm$X,wlm$Y,10000)
names(wlmGrid)<-c("X","Y")
Ya s olo falta ejecutar el comando krige con la f ormula necesaria para el KO V1,
pasando el conjunto de datos de muestra, el conjunto de datos destino y el modelo
del variograma. El comando genera un data.frame con las coordenadas de las loca-
lizaciones, la predicci on y su error (desviaci on tpica). En las guras 45(a) y 46(a) se
muestran ambos conjuntos de datos.
KO<-krige(V1,X+Y,wlm,wlc,g$model$V)
Si comparamos los datos con el conjunto wlc restando localizaci on a localizaci on
comprobamos que las diferencias en general son peque nas y sim etricas ( 40 en la
p agina siguiente).
Modelizaci on geoestadstica con R 46
Error
F
r
e
c
u
e
n
c
i
a
500 0 500 1000
0
5
0
0
0
1
0
0
0
0
1
5
0
0
0
2
0
0
0
0
2
5
0
0
0
3
0
0
0
0
30 150
610
1900
4409
8762
15587
29491
12274
3190
1128
326
99 29 8 6 2
Figura 40: Error del Krigeado ordinario
8.3. Krigeado Universal (KU)
El krigeado Universal introduce un modelo de tendencia al considerar que la media
local para cada localizaci on no es constante. Basta con cambiar la f ormula de la orden
krige a VX+Y para que se ejecute esta variedad del krigeado.
KU<-krige(VX+Y,X+Y,wlm,wlc,g$model$V)
8.4. Krigeado por bloques (KUB)
Este sistema calcula la media local discretizando una zona (bloque) en puntos in-
dividuales en lugar de utilizar la localizaci on. Se puede utilizar tanto el el krigeado
ordinario como en el krigeado universal y se indica unicamente pasando un nuevo
par ametro con el tama no del bloque en un vector de una a tres dimensiones (depen-
diendo del n umero de variables espaciales de la muestra) o un data.frame con una
a tres columnas indicando los puntos que denir an un bloque de forma irregular.
Se ha realizado el krigeado por bloques universal de la variable V, con bloques de
10x10 metros y se han obtenido igualmente la predicci on y la varianza (guras 45(c)
y 46(c)). Las diferencias son similares a las de los otros dos m etodos (42).
KBU<-krige(VX+Y,X+Y,wlm,wlc,g$model$V,block=c(10,10))
8.5. Krigeado Local (KUL)
Este krigeado utiliza un n umero determinado de puntos para la estimaci on de la
localizaci on:
Se puede especicar n umero m aximo de puntos (nmax).
O una distancia m axima (maxdist).
Si se especica tambi en un n umero mnimo (nmin) y el n umero de puntos loca-
lizados por maxdist es menor, se genera un valor nulo.
Modelizaci on geoestadstica con R 47
Error
F
r
e
c
u
e
n
c
i
a
500 0 500 1000
0
5
0
0
0
1
0
0
0
0
1
5
0
0
0
2
0
0
0
0
2
5
0
0
0
3
0
0
0
0
22 142
618
1919
4405
8874
15624
30154
11348
3206
1160
383
101 29 8 6 2
Figura 41: Error del Krigeado universal
Error
F
r
e
c
u
e
n
c
i
a
500 0 500 1000
0
5
0
0
0
1
0
0
0
0
1
5
0
0
0
2
0
0
0
0
2
5
0
0
0
3
0
0
0
0
16 111
584
1869
4673
9198
15307
29782
11473
3318
1207
335
89 26 6 5 2
Figura 42: Error del Krigeado universal por bloques
Modelizaci on geoestadstica con R 48
Si se utilizan los par ametros nmax y distmax operan ambos criterios
Este m etodo tambi en se puede combinar con el krigeado ordinario o universal y
el krigeado puntual o por bloques. En este trabajo se ha realizado el krigeado local
universal de la variable V indicando una distancia m axima de 15 metros y un n umero
mnimo de 4 puntos (gs 45(d) y 46(d)).
KUL<-krige(VX+Y,X+Y,wlm,wlc,g$model$V,nmin=5,maxdist=30)
Error
F
r
e
c
u
e
n
c
i
a
500 0 500 1000
0
5
0
0
0
1
0
0
0
0
1
5
0
0
0
2
0
0
0
0
2
5
0
0
0
3
0
0
0
0
16 111
584
1869
4673
9198
15307
29782
11473
3318
1207
335
89 26 6 5 2
Figura 43: Error del Krigeado local universal
8.6. Cokrigeado (CKO)
Tal y como se vio en el tema 3, las variables U y V est an correladas (aunque menos
en wlm que en wle), Esto signica que podemos obtener informaci on de una de ellas
teniendo en cuenta tambi en los valores de la otra. Este principio es el que utiliza el
cokrigeado, en el cual para estimar una variable se utilizan tanto los variogramas de
ambas como el cruzado.
gstat utiliza otro comando para realizar este m etodo. Adem as impone algunas res-
tricciones para dar por bueno el modelo de corregionalizaci on:
Las variables deben encontrarse en todas las localizaciones.
El rango en los modelos de los variogramas debe ser el mismo.
El proceso es un poco diferente al de los anteriores, primero se crea el objeto gstat
y se a naden las localizaciones, a continuaci on se a naden los tres modelos iniciales.
Despu es, con el comando fit.lmc se genera el modelo de corregionalizaci on lineal
ajustado. Se obtiene tambi en el variograma experimental del objeto gstat (el cual
incluye las dos variables y el cruzado). Por ultimo ya se puede ejecutar el comando
predict que devuelve el mismo tipo de data.frame que el comando krige pero en
lugar de contener la predicci on y la varianza para una variable contiene las dos pre-
dicciones y varianzas y la covarianza entre U y V. Las guras 48(a) y 49(a) presentan
la predicci on y la varianza de la variable U respectivamente.
Modelizaci on geoestadstica con R 49
#Crear el objeto gstat y anadir las localizaciones
g<-gstat(id="U",formula=U1,locations=X+Y,data=wlm2)
g<-gstat(g,id="V",formula=V1,locations=X+Y,data=wlm2)
#Crear los modelos
mv<-vgm(72e3,"Exp",15,22e3)
mu<-vgm(26e4,"Exp",15,26e4)
muv<-vgm(.6e5,"Exp",15,3e5)
#Anadir los modelos al objeto
g<-gstat(g,id="U",model=mu)
g<-gstat(g,id="V",model=mv)
g<-gstat(g,id=c("U","V"),model=muv)
#Calcular el variograma y el modelo ajustado
x<-variogram(g,cutoff=100)
g.fit=fit.lmc(x,g)
#Calcular el cokrigeado ordinario
CKO<-predict(g.fit, newdata = wlc)
Se ha comprobado de igual forma a los ejemplos anteriores el resultado con wlc y
se ha obtenido el krigeado ordinario de U (UKO) para compararlo tambi en (gs 48(b)
y 49(b)).
Modelizaci on geoestadstica con R 50
Error
F
r
e
c
u
e
n
c
i
a
0 2000 4000 6000 8000
0
1
0
0
0
0
2
0
0
0
0
3
0
0
0
0
4
0
0
0
0
5
0
0
0
0
22
14892
50962
7493
2600
1131
492
195 96 62 27 12 6 0 4 0 3 3 0 0 1
(a) Error del CKO
Error
F
r
e
c
u
e
n
c
i
a
2000 0 2000 4000 6000 8000 10000
0
1
0
0
0
0
2
0
0
0
0
3
0
0
0
0
4
0
0
0
0
3 22 59
294
22081
42942
8044
2657
1077
435
19995 50 23 7 4 1 3 0 2 1 1 0 0 1
(b) Error del UKO
Figura 44: Diferencias con wlc de la modelizaci on de U
Modelizaci on geoestadstica con R 51
8.7. Resultados
8.7.1. Modelizaci on de V
A continuaci on se muestran los resultados de los m etodos de krigeado empleados
para modelar la variable V, as como sus predicciones de error. Por ultimo se compa-
ran se muestran los estadsticos de las diferencias entre los valores estimados y los
valores reales (wlc).
En el diagrama de cajas (g. 47 en la p agina 53) se aprecia como el krigeado
por bloques parece que ofrece el resultado con menos outliers al contrario que el
krigeado local. Adem as el krigeado local no consigue dar valores a todos los puntos,
pese a indicar una distancia m axima de 30 metros. El krigeado por bloques ofrece
diferencias tanto m aximas como mnimas m as peque nas que el resto (cuadro 2 en la
p agina siguiente).
X
Y
50 100 150 200
50
100
150
200
250
0
200
400
600
800
1000
1200
1400
1600
(a) KO
X
Y
50 100 150 200
50
100
150
200
250
0
200
400
600
800
1000
1200
1400
1600
(b) KU
X
Y
50 100 150 200
50
100
150
200
250
0
200
400
600
800
1000
1200
1400
1600
(c) KUB
X
Y
50 100 150 200
50
100
150
200
250
0
200
400
600
800
1000
1200
1400
1600
(d) KUL
Figura 45: Predicci on en la modelizaci on de V (wlm)
8.7.2. Modelizaci on de U
Viendo la predicci on del cokrigeado, se observa que el resultado no es demasia-
do satisfactorio, seguramente porque la modelizaci on del variograma, al restringir al
Modelizaci on geoestadstica con R 52
X
Y
50 100 150 200
50
100
150
200
250
0
50
100
150
200
250
300
350
(a) KO
X
Y
50 100 150 200
50
100
150
200
250
0
50
100
150
200
250
300
350
(b) KU
X
Y
50 100 150 200
50
100
150
200
250
0
50
100
150
200
250
300
350
(c) KUB
X
Y
50 100 150 200
50
100
150
200
250
0
50
100
150
200
250
300
350
(d) KUL
Figura 46: Desviaci on tpica en la modelizaci on de V (wlm)
Cuadro 2: Estadsticos de los errores en los m etodos de krigeado de V
Estadsticos
KO KU KUB KUL
Media 5.77 4.35 4.47 -4.13
Mnimo -686.11 -684.74 -645.48 -928.96
Q1 -71.55 -72.55 -76.87 -80.85
Q2 28.6 25.94 28.71 12.572
Q3 89.31 84.83 86.51 77.19
M ax. 967.39 967.42 913.93 969.61
Var. 21394.29 21344.87 21325.76 22621.25
Desv. 146.27 146.10 146.03 150.40
CS -0.39 -0.34 -0.32 -0.32
K 1.45 1.47 1.23 1.86
CV 25.34 33.56 32.68 -36.42
Modelizaci on geoestadstica con R 53
K
O
K
U
K
U
B
K
U
L
1000 500 0 500 1000
Figura 47: Diagramas de caja y bigote de las diferencias
Modelizaci on geoestadstica con R 54
mismo rango a los modelos tanto de U, como de V y el cruzado, a generado una peor
modelizaci on nal. As y todo, el cokrigeado a dado valores m aximos y mnimos meno-
res al ordinario y el resto de par ametros estadsticos no son muy diferentes (cuadro 3
en la p agina siguiente).
X
Y
50 100 150 200
50
100
150
200
250
0
1000
2000
3000
4000
5000
(a) CKO
X
Y
50 100 150 200
50
100
150
200
250
0
1000
2000
3000
4000
5000
(b) UKO
Figura 48: Predicci on en la modelizaci on de U (wlm)
X
Y
50 100 150 200
50
100
150
200
250
0
100
200
300
400
500
600
700
800
(a) CKO
X
Y
50 100 150 200
50
100
150
200
250
0
100
200
300
400
500
600
700
800
(b) UKO
Figura 49: Desviaci on tpica en la modelizaci on de U (wlm)
Modelizaci on geoestadstica con R 55
Cuadro 3: Estadsticos de los errores en los m etodos de krigeado de U
Estadsticos
CKO UKO
Media -250.44 -255.68
Mnimo -1366.57 -2625.11
Q1 -487.89 -506.54
Q2 -404.07 -418.417
Q3 -196.54 -158.85
M ax. 8973.018 9034.47
Var. 197185.3 197649.9
Desv. 444.05 444.58
CS 3.78 3.30
K 25.17 21.42
CV -1.77 -1.74
Modelizaci on geoestadstica con R 56
8.8. Scripts
Listado 13: R-Script del tema 8
1 # TEMA 8 KRIGING
2 ps.options(family="Bookman",pointsize
=15)
3 # rm(list=ls())
4
5 library(lattice)
6 library(gstat)
7
8 #Funcion que devuelve estadsticas
9 calcestads<-function(datosO){
10 Desv<-function(datos){sqrt(var(datos
))}
11 CS<-function(V){sum((V-mean(V))3)/(
length(V)
*
Desv(V)3)}
12 K<-function(V){sum((V-mean(V))4/
length(V))/Desv(V)4-3}
13 CV<-function(V){Desv(V)/mean(V)}
14 datos<-datosO[!is.na(datosO)]
15 data.frame(media=mean(datos),Q0=min(
datos),
16 Q1=as.double(quantile(datos,0.25,na.
rm=TRUE)),
17 Q2=median(datos),
18 Q3=as.double(quantile(datos,0.75,na.
rm=TRUE)),
19 Q4=max(datos),
20 var=var(datos),desv=Desv(datos),
21 CS=CS(datos),K=K(datos),CV=CV(datos)
)
22 }
23
24 #Niveles y secuencias
25 niv<-seq(0,1600,200)
26 niv2<-seq(0,350,50)
27 nivH<-seq(-700,1000,100)
28 nivH2<-seq(-1000,1000,100)
29 gris1<-gray(seq(0.9,0.3,l=30))
30 gris2<-gray(seq(0.99,0.5,l=7))
31 gris3<-gray(seq(0.9,0.3,l=8))
32
33 #Cargar los datos wlm
34 print("Cargando datos...")
35 data(walker)
36 wlm<-walker;rm(walker)
37 attach(wlm)
38
39 #Importar e imprimir los valores reales
wlc
40 wlc<-read.csv("wlc.csv",sep=";",dec=".",
header=TRUE)
41 postscript("imgs/08/wlc%01d.ps",onefile=
FALSE)
42 print(levelplot(VX+Y,wlc,at=niv,aspect=
mapasp(wlc),col.regions=gris1))
43 print(levelplot(UX+Y,wlc,at=seq
(0,5200,400),aspect=mapasp(wlc),col.
regions=gris1))
44 dev.off()
45
46
47 #Generar el objeto gstat
48 g<-gstat(id="V",formula=V1,locations=X
+Y,data=wlm)
49 #Establecer un modelo inicial de V
50 mv<-vgm(72e3,"Exp",15,22e3)
51 #Ajustar el modelo con el variograma
omnidireccional
52 mvfit<-fit.variogram(variogram(g["V"],
width=10,cutoff=100),mv)
53 #Anadir el ajuste al objeto gstat
54 g<-gstat(g,id="V",model=mvfit)
55
56 #Crear una malla regular de unas 5000
celdas (aprox)
57 wlmGrid<-makegrid(X,Y,5000)
58 names(wlmGrid)<-c("X","Y")
59
60 #KRIGEADO ORDINARIO
61 print("Calculando KO...")
62 KO<-read.csv("KO.csv")
63 # KO<-krige(V1,X+Y,wlm,wlc,g$model$V)
64 # write.table(round(KO,3),file="KO.csv",
sep=",",row.names=FALSE)
65 difKO<-KO$var1.pred-wlc$V
66 postscript("imgs/08/KO%01d.ps",onefile=
FALSE)
67 graf1<-levelplot(var1.predX+Y,KO,at=niv
,aspect=mapasp(KKULO),contour=TRUE,
col.regions=gris1,labels=FALSE)
68 graf2<-levelplot(sqrt(var1.var)X+Y,KO,
at=niv2,aspect=mapasp(KO),col.
regions=gris2)
69 print(graf1);print(graf2)
70 hist(difKO,breaks=nivH,labels=TRUE,main=
"",col="lightgray",xlab="Error",ylab
="Frecuencia")
71 dev.off()
72
73
74 #KRIGEADO UNIVERSAL
75 print("Calculando KU...")
76 KU<-read.csv("KU.csv")
77 # KU<-krige(VX+Y,X+Y,wlm,wlc,g$model$V
)
78 # write.table(round(KU,3),file="KU.csv",
sep=",",row.names=FALSE)
79 difKU<-KU$var1.pred-wlc$V
80 postscript("imgs/08/KU%01d.ps",onefile=
FALSE)
81 graf1<-levelplot(var1.predX+Y,KU,at=niv
,aspect=mapasp(KU),contour=TRUE,col.
regions=gris1,labels=FALSE)
82 graf2<-levelplot(sqrt(var1.var)X+Y,KU,
at=niv2,aspect=mapasp(KU),col.
regions=gris2)
83 print(graf1);print(graf2)
84 hist(difKU,breaks=nivH,labels=TRUE,main=
"",col="lightgray",xlab="Error",ylab
="Frecuencia")
Modelizaci on geoestadstica con R 57
85 dev.off()
86
87
88 #KRIGEADO UNIVERSAL POR BLOQUES
89 print("Calculando KUB...")
90 KUB<-read.csv("KUB.csv")
91 # KUB<-krige(VX+Y,X+Y,wlm,wlc,g$model$
V,block=c(10,10))
92 # write.table(round(KUB,3),file="KUB.csv
",sep=",",row.names=FALSE)
93 difKUB<-KUB$var1.pred-wlc$V
94 postscript("imgs/08/KUB%01d.ps",onefile=
FALSE)
95 graf1<-levelplot(var1.predX+Y,KUB,at=
niv,aspect=mapasp(KUB),contour=TRUE,
col.regions=gris1,labels=FALSE)
96 graf2<-levelplot(sqrt(var1.var)X+Y,KUB,
at=niv2,aspect=mapasp(KUB),col.
regions=gris2)
97 print(graf1);print(graf2)
98 hist(difKUB,breaks=nivH,labels=TRUE,main
="",col="lightgray",xlab="Error",
ylab="Frecuencia")
99 dev.off()
100
101 #KRIGEADO UNIVERSAL LOCAL
102 print("Calculando KUL...")
103 KUL<-read.csv("KUL.csv")
104 # KUL<-krige(VX+Y,X+Y,wlm,wlc,g$model$
V,nmin=5,maxdist=30)
105 # write.table(round(KUL,3),file="KUL.csv
",sep=",",row.names=FALSE)
106 difKUL<-KUL$var1.pred-wlc$V
107 postscript("imgs/08/KUL%01d.ps",onefile=
FALSE)
108 graf1<-levelplot(var1.predX+Y,KUL,at=
niv,aspect=mapasp(KUL),contour=TRUE,
col.regions=gris3,labels=FALSE)
109 graf2<-levelplot(sqrt(var1.var)X+Y,KUL,
at=niv2,aspect=mapasp(KUB),col.
regions=gris2)
110 print(graf1);print(graf2)
111 hist(difKUL,breaks=nivH2,labels=TRUE,
main="",col="lightgray",xlab="Error"
,ylab="Frecuencia")
112 dev.off()
113
114 #RESUMEN DE DIFERENCIAS
115 print("Calculando Resumen...")
116 diff.l<-list(KO=difKO,KU=difKU,KUB=
difKUB,KUL=difKUL)
117 diff.R<-lapply(diff.l,calcestads)
118 diff.Rdf<-data.frame(rbind(diff.R[[1]],
diff.R[[2]],diff.R[[3]],diff.R[[4]])
)
119 row.names(diff.Rdf)<-c("KO","KU","KUB","
KUL")
120
121 postscript("imgs/08/boxplot.ps")
122 boxplot(diff.l,horizontal=TRUE,col="
lightgray")
123 dev.off()
124 print(diff.Rdf)
125
126 # COKRIGEADO
127 print("Iniciando CKO...")
128 #Rehacer el objeto gstat solo con las
localizaciones donde U existe
129 wlm2<-subset(wlm,!is.na(wlm$U))
130 g<-"null"
131 rm(g)
132 g<-gstat(id="U",formula=U1,locations=X
+Y,data=wlm2)
133 g<-gstat(g,id="V",formula=V1,locations=
X+Y,data=wlm2)
134 #Crear los modelos
135 mv<-vgm(72e3,"Exp",15,22e3)
136 mu<-vgm(26e4,"Exp",15,26e4)
137 muv<-vgm(.6e5,"Exp",15,3e5)
138
139 #Anadir los modelos al objeto
140 g<-gstat(g,id="U",model=mu)
141 g<-gstat(g,id="V",model=mv)
142 g<-gstat(g,id=c("U","V"),model=muv)
143 #Calcular el modelo ajustado
144 x<-variogram(g,cutoff=100)
145 g.fit=fit.lmc(x,g)#,fit.ranges=T)
146 #Ver variogramas y modelos
147 postscript("imgs/08/UyV.ps")
148 print(plot(variogram(g),model=g.fit,xlab
="Distancia",ylab="Semivariograma"))
149 dev.off()
150
151 #Ejecutar el cokrigeado
152 print("Calculando CKO...")
153 CKO<-read.csv("CKO.csv")
154 # CKO<-predict(g.fit, newdata = wlc)
155 # write.table(round(CKO,3),file="CKO.csv
",sep=",",row.names=FALSE)
156 difCKO<-wlc$U-CKO$U.pred
157 postscript("imgs/08/CKO%01d.ps",onefile=
FALSE)
158 graf1<-levelplot(U.predX+Y,CKO,at=seq
(0,5200,400),aspect=mapasp(CKO),
contour=TRUE,col.regions=gray(seq
(0.99,0.3,l=30)),labels=F)
159 graf2<-levelplot(sqrt(U.var)X+Y,CKO,at=
seq(0,800,100),aspect=mapasp(CKO),
col.regions=gris1)
160 print(graf1);print(graf2)
161 hist(difCKO,labels=TRUE,main="",col="
lightgray",xlab="Error",ylab="
Frecuencia")
162 dev.off()
163
164 #Calcular el krigeaado ordinario de U
para comparar
165 print("Calculando UKO...")
166 mufit<-fit.variogram(variogram(g["U"],
width=10,cutoff=100),vgm(26e4,"Exp"
,15,26e4))
167 UKO<-read.csv("UKO.csv")
168 # UKO<-krige(U1,X+Y,wlm2,wlc,mufit)
169 # write.table(round(UKO,3),file="UKO.csv
",sep=",",row.names=FALSE)
170 difUKO<-wlc$U-UKO$var1.pred
Modelizaci on geoestadstica con R 58
171 postscript("imgs/08/UKO%01d.ps",onefile=
FALSE)
172 graf1<-levelplot(var1.predX+Y,UKO,at=
seq(0,5200,400),aspect=mapasp(UKO),
contour=TRUE,col.regions=gray(seq
(0.99,0.3,l=30)),labels=F)
173 graf2<-levelplot(sqrt(var1.var)X+Y,UKO,
at=seq(0,800,100),aspect=mapasp(UKO)
,col.regions=gris1)
174 print(graf1);print(graf2)
175 hist(difUKO,labels=TRUE,main="",col="
lightgray",xlab="Error",ylab="
Frecuencia")
176 dev.off()
Modelizaci on geoestadstica con R 59
Referencias
[1] MARTINEZ LLARIO, JOS E CARLOS y COLL ALIAGA, ELOINA, Apuntes de geoestadsti-
ca b asica. Aplicaciones mediante Sistemas de Informaci on Geogr aca, UPV, Valen-
cia, 2005.
[2] PEBESMA, EDZER J., gstats user manual, Dept. of Physical Geography, Utrecht
University, Utretch, Holanda, 2001.
URL http://www.gstat.org
[3] PEBESMA, EDZER J., Multivariable geostatistics in S: the gstat package, Computers
& Geosciences, tomo 30, p ags. 683691, 2004.
[4] R DEVELOPMENT CORE TEAM, Introducci on a R, R Foundation for Statistical Com-
puting, Vienna, Austria, 2000.
[5] R DEVELOPMENT CORE TEAM, R: A language and environment for statistical com-
puting, R Foundation for Statistical Computing, Vienna, Austria, 2004, ISBN 3-
900051-07-0.
URL http://www.R-project.org
[6] RIBEIRO, PAULO J. JR y DIGGLE, PETER J., geoR: a package for geostatistical
analysis, R-NEWS, tomo 1(2), p ags. 1418, 2001, iSSN 1609-3631.
URL CRAN://doc/Rnews/
[7] SARKAR, DEEPAYAN, lattice: Lattice Graphics, 2004, r package version 0.10-16.

Vous aimerez peut-être aussi