59
Geoestad´ ıstica 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 superficiales mediante sistemas de informaci´ on geogr ´ afica 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 geoestad´ ısiticos (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- tad´ ıstica R y un Sistema de Informaci´ on Geogr ´ afica, 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´ aficos 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 ´ aficos ....... 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. etodos determi- nistas 24 4.1. Scripts ............. 27 5. Continuidad espacial de V 30 5.1. Variograma omnidireccional 30 5.2. Variograma superficial ... 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

Geoestadistica Con R

Embed Size (px)

Citation preview

Page 1: Geoestadistica Con R

Geoestadıstica con RJorge Gaspar Sanz Salinas

Septiembre de 2005

Resumen: – A lo largo de la asignatura de doctorado Prediccion y analisis de modelos

superficiales mediante sistemas de informacion geografica se ha cubierto el desarrollo

del estudio de la distribucion espacial de una o varias variables, ası como su modeli-

zacion mediante metodos geoestadısiticos (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-

tadıstica R y un Sistema de Informacion Geografica, GRASS, ambos funcionando bajo

el Sistema Operativo Linux.

Indice

0. Introduccion 4

0.1. R . . . . . . . . . . . . . . . . 4

0.2. gstat . . . . . . . . . . . . . . 4

0.3. GRASS . . . . . . . . . . . . . 5

0.4. Datos de trabajo . . . . . . . 5

1. Descripcion univariada 6

1.1. Carga y visualizacion de los

datos . . . . . . . . . . . . . . 6

1.2. Metodos graficos para la

descripcion univariada . . . 6

1.3. Metodos numericos . . . . . 9

1.4. Scripts . . . . . . . . . . . . . 10

2. Descripcion bivariada 12

2.1. Metodos graficos . . . . . . . 12

2.2. Metodos numericos . . . . . 13

2.3. Scripts . . . . . . . . . . . . . 14

3. Descripcion espacial 15

3.1. Visualizacion espacial de

datos . . . . . . . . . . . . . . 15

3.2. Ventanas moviles y el efecto

proporcional . . . . . . . . . 18

3.3. Continuidad espacial . . . . 18

3.4. Variograma . . . . . . . . . . 20

3.5. Diagramas de dispersion

cruzados . . . . . . . . . . . 20

3.6. Scripts . . . . . . . . . . . . . 20

4. Estimacion. Metodos determi-

nistas 24

4.1. Scripts . . . . . . . . . . . . . 27

5. Continuidad espacial de V 30

5.1. Variograma omnidireccional 30

5.2. Variograma superficial . . . 30

5.3. Variogramas direccionales . 30

5.4. Variogramas cruzados . . . . 33

5.5. Scripts . . . . . . . . . . . . . 36

6. Modelizacion del variograma ex-

perimental 39

6.1. Estimacion 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

Page 2: Geoestadistica Con R

Modelizacion geoestadıstica con R 2

Indice de figuras

1. Distribucion de U y V . . . . 6

2. Histograma de V . . . . . . . 7

3. Histograma acumulado de V 7

4. Grafico de probabilidad

uniforme de V . . . . . . . . 7

5. Grafico de probabilidad

normal . . . . . . . . . . . . . 8

6. Grafico de probabilidad log-

normal . . . . . . . . . . . . . 8

7. Grafico de caja y bigotes de V 9

8. Grafico de caja y bigotes de

V y U . . . . . . . . . . . . . . 12

9. Grafico de cuantiles de V y U 12

10. Grafico de dispersion . . . . 13

11. Distribucion de V . . . . . . 15

12. Mapa graduado de color de V 16

13. Mapa graduado de tamano

de V . . . . . . . . . . . . . . 16

14. Mapas de indicadores . . . . 17

15. Mapa de superficie interpo-

lada . . . . . . . . . . . . . . 18

16. Media y varianza en venta-

na de 3x3 . . . . . . . . . . . 19

17. Grafico de dispersion de

media y varianza . . . . . . . 19

18. h-Scatterplots de direccion

N-S . . . . . . . . . . . . . . . 20

19. h-Scatterplots de direccion

E-W . . . . . . . . . . . . . . 21

20. h-Scatterplots cruzado de U

y V en direccion N-S . . . . . 21

21. Distribucion 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-

perficial . . . . . . . . . . . . 31

26. Isolıneas del variograma

superficial . . . . . . . . . . . 32

27. Variogramas direccionales . 32

28. Deteccion de ejes de aniso-

tropıa . . . . . . . . . . . . . 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 esferico 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. Descripcion 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

modelizacion de U . . . . . . 50

45. Prediccion en la modeliza-

cion de V (wlm) . . . . . . . . 51

46. Desviacion tıpica en la mo-

delizacion de V (wlm) . . . . . 52

47. Diagramas de caja y bigote

de las diferencias . . . . . . . 53

48. Prediccion en la modeliza-

cion de U (wlm) . . . . . . . . 54

49. Desviacion tıpica en la mo-

delizacion de U (wlm) . . . . . 54

Indice de cuadros

1. Resumen de estadısticos de

datos de validacion y esti-

mados . . . . . . . . . . . . . 26

2. Estadısticos de los errores

en los metodos de krigeado

de V . . . . . . . . . . . . . . 52

3. Estadısticos de los errores

en los metodos de krigeado

de U . . . . . . . . . . . . . . 55

Page 3: Geoestadistica Con R

Modelizacion geoestadıstica 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

metodo IDW . . . . . . . . . 28

8. Script para ps.map del

metodo RST . . . . . . . . . . 28

9. Script para ps.map del

metodo Polıgonos de in-

fluencia . . . . . . . . . . . . 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

Page 4: Geoestadistica Con R

Modelizacion geoestadıstica con R 4

Tema 0 Introduccion

0.1. R

R [5] es un conjunto integrado de herramientas para manipular datos, realizar todo

tipo de calculos con los mismos y tambien es capaz de realizar toda clase de graficos

estadısticos.

En [4] se citan las siguientes caracterısticas:

es multiplataforma,

almacenamiento y manipulacion efectiva de datos,

operadores para calculo sobre variables indexadas (Arrays), en particular matri-

ces,

una amplia, coherente e integrada coleccion de herramientas para analisis de

datos,

posibilidades graficas para analisis de datos, que funcionan directamente sobre

pantalla o impresora,

y un lenguaje de programacion 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

estan 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 codigo fuente y si se dispone de los compiladores

pertinentes (C++, Fortran, ...) genera los binarios adaptados perfectamente a la maqui-

na. En Windows, al ejecutar dicho comando se descargan directamente los binarios.

En esta ultima plataforma se dispone de una interfaz grafica un poco mas elaborada

y permite ademas exportar al formato Windows MetaFile.

Los paquetes empleados en el trabajo, ademas de los que se incluyen por defecto en

R son los paquetes de geoestadıstica gstat [3], y geoR [6], y el paquete para presentacion

de graficos lattice [7].

En definitiva, se dispone de un sistema ampliable que se maneja como una consola

de entrada de comandos que permite adquirir datos desde ficheros, manipularlos,

crear nuevos datos y por ultimo o bien ver las graficas por pantalla o mandarlas a

ficheros PostScript o raster. Otra caracterıstica 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 modelizacion, prediccion y simulacion de

datos geoestadısticos. Al igual que el anterior, es Software Libre bajo licencia (GNU1).

Puede usarse de muy diversas formas, directamente tanto de forma no interactiva

(mediante ficheros de parametros) como interactiva mostrando los resultados utili-

zando el programa para presentacion de graficos gnuplot. Pero su uso mas interesante

es integrado con otras herramientas. En este sentido se ha conseguido que gstat fun-

cione con GRASS, Idrisi, PCRaster y con R.

1http://www.gnu.org

Page 5: Geoestadistica Con R

Modelizacion geoestadıstica con R 5

En este trabajo se ha usado con R porque este ultimo ofrece caracterısticas muy

interesantes para la manipulacion de datos, presentacion de todo tipo de graficas y

repeticion de tareas mediante sentencias de control (bucles, condicionales, etc). Por

otro lado, no ha sido posible compilar gstat para que trabaje conjuntamente con GRASSen su version 6.

0.3. GRASS

Este ya veterano software para la gestion de informacion geografica dispone de

herramientas para la modelizacion de variables espaciales mediante metodos deter-

minısticos. Se ha usado en este trabajo para la obtencion de la modelizacion por

polıgonos de influencia (Voronoi), Splines de tension y por el metodo de pesos inver-

sos a la distancia.

Ademas se ha utilizado para la presentacion de la cartografıa, 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 walkeresta a su vez dividido en tres grupos, wlc que es una malla de 78000 puntos que

sirven para validacion, wlm es la malla irregular de 470 puntos y wle una malla de 100

puntos para algunos calculos estadısticos.

gstat dispone del conjunto wlm, los otros dos seran cargados desde ficheros de texto

separados por comas (CSV) para poder operar con ellos.

Page 6: Geoestadistica Con R

Modelizacion geoestadıstica con R 6

Tema 1 Descripcion univariada

1.1. Carga y visualizacion de los datos

En este capıtulo se van a usar los datos wle redondeados a valores enteros. El

primer paso sera por tanto cargar el fichero walker10.asc , que es un fichero de

texto separado por tabuladores que se puede importar directamente con la orden

read.delim2 para a continuacion redondearlo.

En la figura 1 se muestra la distribucion de los datos, ası como los valores que

toman las variables U y V.

12 14 16 18 20

242

244

246

248

250

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: Distribucion de U y V

1.2. Metodos graficos para la descripcion univariada

El metodo grafico mas utilizado es el histograma, en el que debemos integrar la

variable en clases. La variable V se varıa entre 0ppm y 145ppm por lo que dividirla en

clases de 10 unidades es conveniente (fig. 2 en la pagina siguiente).

Otro grafico interesante es el histograma acumulado en el que a partir de las

mismas clases del histograma anterior se muestra la suma acumulada (fig 3 en la

pagina siguiente).

El grafico de probabilidad acumulada muestra la proporcion de datos para cada

punto que son menores que el (fig 4 en la pagina siguiente)

Las figuras 5 en la pagina 8 y 6 en la pagina 8 muestran la similitud de nuestra

muestra con la distribucion normal y lognormal. Las lıneas trazadas pasan por el

primer y tercer cuartil.

Page 7: Geoestadistica Con R

Modelizacion geoestadıstica con R 7

V

Fre

qu

en

cy

1 1

0

1

2 2

3

14

15

11

14

17

12

3

40

24

68

10

12

14

16

0 50 100 150

Figura 2: Histograma de V

0 10 20 30 40 50 60 70 80 90 100 120 140

Variable

Fre

cu

en

cia

acu

mu

lada

020

40

60

80

100

Figura 3: Histograma acumulado de V

0 50 100 150

0.0

0.2

0.4

0.6

0.8

1.0

V

Pro

babilid

ad a

cu

mu

lada

Figura 4: Grafico de probabilidad uniforme de V

Page 8: Geoestadistica Con R

Modelizacion geoestadıstica con R 8

0 50 100 150

−2

−1

01

2

Sample Quantiles

Th

eore

tical Q

uan

tile

s

Figura 5: Grafico de probabilidad normal

3.0 3.5 4.0 4.5 5.0

−2

−1

01

2

Sample Quantiles

Th

eore

tical Q

uan

tile

s

Figura 6: Grafico de probabilidad lognormal

Page 9: Geoestadistica Con R

Modelizacion geoestadıstica con R 9

1.3. Metodos numericos

1.3.1. Medidas de localizacion

Se puede solicitar una descripcion sencilla de nuestros datos con el comando

summary(V) que devuelve tanto los valores maximos y mınimos, la media, la me-

diana y el segundo y tercer cuartil. En cualquier caso estan disponibles comandos

como min , max, mean y median .

Para calcular la moda no hay un comando definido, pero a partir de la tabla defi-

nida del corte de V (tcutV ) donde se almacenan las frecuencias relativas en las clases

definidas previamente (secV ), podemos solicitar aquella clase que almacene el valor

maximo con el comando tcutV[tcutV==max(tcutV)] .

En resumen:

Mınimo 0

Maximo 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 grafica de ver tanto los cuantiles como la distribucion de la muestra y

si existen valores alejados de la media (outliers) es el diagrama de caja y bigotes (box

and whisker). La figura 7 muestra el de la variable V.

0 50 100 150

V

Figura 7: Grafico de caja y bigotes de V

1.3.2. Medidas de dispersion

Las medidas de dispersion como la varianza, la desviacion tıpica y el rango inter-

cuantil son sencillos de calcular:

> dt<-sqrt ( var (V))> dt ˆ2; dt ; as . numeric (cuantiles["75 %"]-cuantiles["25 %"])

Page 10: Geoestadistica Con R

Modelizacion geoestadıstica con R 10

[1] 695.3409[1] 26.36932[1] 34.5

1.3.3. Medidas de forma

El coeficiente de sesgo o asimetrıa (skewness) se calcula a partir de la formula

CS =1n

∑ni=1 (xi − m)3

σ3(1)

El coeficiente de curtosis o apuntalamiento se calcula como

K =

∑ni=1

(xi−m)4

n

σ4− 3 (2)

El coeficiente de variacion no es mas que el cociente entre la desviacion tıpica y la

media, siendo trivial su calculo.

En R estos tres coeficientes se calculan como:

> media <-mean (V);> print (CS<-sum ((V-media)ˆ3) / ( length (V) * dt ˆ3))[1] -0.7665234> print (K <-sum ((V-media)ˆ4 /length (V)) /dt ˆ4-3)[1] 1.187891> print (CV<-dt/ media)[1] 0.2703159

1.4. Scripts

Listado 1: R-Script del tema 1

1 #TEMA 1 - DESCRIPCION UNIVARIADA2 ps . options ( family ="Bookman",pointsize

=15)3 rm( list =ls ())4

5 #Cargar wle y redondearlo6 wle <-read .delim2("walker10.asc")7 wle <-round (wle,0)8

9 #Adjuntar los datos de wle para accederdirectamente

10 attach (wle)11

12 #Ver los datos U y V13 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 V20 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 frecuencias28 lsecV <-length (secV)29 cutV <-cut (V,secV)30 tcutV <-table (cutV)31 #Obtener las frecuencias acumuladas32 sumfreq <-rep (0, length (secV))33 for (i in 1:lsecV){ sumfreq[i] <-length (V

[V<secV[i]])}34 #Imprimir el histograma35 postscript ("imgs / 01 / histAcumV.ps")36 barplot (sumfreq,xlab="Variable",ylab="

Frecuencia acumulada", names.arg=secV)

37 dev . off ()38

39 #Gr afico de probabilidad acumulada40 postscript ("imgs / 01 / probUnif.ps")41 plot .ecdf(V,pch=1,xlab="V",ylab="

Probabilidad acumulada",main="")42 dev . off ()43

44 #Gr afico de probabilidad normal ylognormal

45 postscript ("imgs / 01 / probNormal.ps")46 qqnorm (V,datax=TRUE,pch=3,main="");

qqline (V,datax=TRUE)47 dev . off ()

Page 11: Geoestadistica Con R

Modelizacion geoestadıstica 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 localizaci on, dispersi on,etc

55 media <-mean (V)56 dt<-var (V)57 print ("Cuartiles")58 print (cuantiles <-quantile (V, seq (0,1,.25)

))59 print ("Varianza, desviaci on t ıpica y

rango intercuart ılico")60 print ( dt ˆ2)61 print ( dt )

62 print ( as . numeric (cuantiles["75 %"]-cuantiles["25 %"]))

63

64 #Diagrama de caja y bigotes de V65 postscript ("imgs / 01 / cajaybig.ps")66 boxplot (V,horizontal=TRUE, col ="lightgray

",ylab="V")67 dev . off ()68

69 #Medidas de forma: sesgo, apuntalamientoy variaci on

70 print ("Sesgo, apuntalamiento y variaci on")

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)

Page 12: Geoestadistica Con R

Modelizacion geoestadıstica con R 12

Tema 2 Descripcion bivariada

2.1. Metodos graficos

La visualizacion de pares de histogramas y sobre todo de graficos de caja y bigotes

( 8)pueden aportar informacion de como son dos variables.

VU

0 50 100 150

Vari

able

s

Figura 8: Grafico 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 grafico de puntos. Si estos puntos adoptan la forma de

una lınea significa que ambas variables son similares pero su localizacion y dispersion

son diferentes.

0 50 100 150

0

10

20

30

40

50

V

U

0%

25%

50%

75%

100%

U=V

Cuartiles

Figura 9: Grafico de cuantiles de V y U

Por ultimo, el diagrama de dispersion ( 10 en la pagina siguiente)puede mostrar

informacion sobre las tendencias de ambas variables y la existencia de outliers que

Page 13: Geoestadistica Con R

Modelizacion geoestadıstica con R 13

pueden ser susceptibles de ser eliminados.

0 50 100 150

010

20

30

40

50

V

U

Figura 10: Grafico de dispersion

2.2. Metodos numericos

El coeficiente de correlacion o de Pearson es el indicador mas utilizado para com-

probar la relacion entre variables, en R se corresponde con el comando cor(U,V) .

ρ =1n

∑ni=1 (xi − mx) (yi − my)

σx · σy

(3)

El numerador de esta ultima ecuacion es otro indicador, la covarianza, que se

obtiene con el comando cov(U,V) .

El coeficiente de correlacion de orden utiliza el orden en que aparece un valor

determinado en lugar de su propio valor. Por esta razon este coeficiente es menos

sensible a valores extremos y por tanto, si difiere mucho del coeficiente de Pearson

indica la existencia de estos valores extremos. En R se obtiene con el mismo comando

que el de correlacion, pero cambiando el metodo.

ρOrden =1n

∑ni=1 (Rxi − mRx) (Ryi − mRy)

σ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

Page 14: Geoestadistica Con R

Modelizacion geoestadıstica con R 14

2.3. Scripts

Listado 2: R-Script del tema 2

1 #TEMA 2 - DESCRIPCION BIVARIADA2 ps . options ( family ="Bookman",pointsize

=15)3 rm( list =ls ())4

5 #Cargar wle y redondearlo6 wle <-read .delim2("walker10.asc")7 wle <-round (wle,0)8

9 #Adjuntar los datos de wle para accederdirectamente

10 attach (wle)11

12 #Diagrama de caja y bigotes de V y U13 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 qqplot18 postscript ("imgs / 02/ qqnorm.ps")19 # Dibuja s olo los ejes20 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 cuartiles22 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 cuartiles25 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 texto27 lines ( c (0,150), c (0,150),type="l")28 text (60,50,"U=V")29 # Leyenda30 legend (100,8, c ("Cuartiles"),bg="white",

pch=21)31 dev . off ()32

33 #Diagramas de dispersi on34 postscript ("imgs / 02 / dispers.ps")35 plot (V,U,pch=21,bg="lightgray")36 dev . off ()37

38 #Covarianza y coeficientes decorrelaci on

39 print ("Covarianza y coeficiente decorrelaci on 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"))

Page 15: Geoestadistica Con R

Modelizacion geoestadıstica con R 15

Tema 3 Descripcion espacial

3.1. Visualizacion espacial de datos

3.1.1. Mapas de localizacion

Se trata de trazar un mapa de puntos e indicar por ejemplo los 10 valores maximos

y los 10 valores mınimos. En R se trata de obtener los conjuntos de datos de wle con

los valores maximos y mınimos y pintarlos sobre un mapa de localizacion de V.

12 14 16 18 20

240

242

244

246

248

250

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

MáximosMínimos

Figura 11: Distribucion de V

3.1.2. Mapas de sımbolos graduados

Utilizando la biblioteca lattice , se pueden generar mapas de sımbolos graduados

por color con el comando levelplot . R dispone de diferentes paletas de color, pero

en este caso se usara una escala de grises.

Otro tipo de mapa es el de gradacion de sımbolos por tamano. 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 solo 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 distribucion espacial de la variable y la ubicacion

de maximos y mınimos. Las figuras 14(c) y 14(d) muestran la alineacion norte-sur de

los datos.

Page 16: Geoestadistica Con R

Modelizacion geoestadıstica 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

081.75100.5116.25145

Figura 13: Mapa graduado de tamano de V

Page 17: Geoestadistica Con R

Modelizacion geoestadıstica 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

Page 18: Geoestadistica Con R

Modelizacion geoestadıstica con R 18

3.1.4. Mapas de superficies interpoladas

Es posible interpolar polinomios de un orden determinado, que pasen por todos

los puntos de la muestra. Estos polinomios suelen ofrecer superficies suavizadas pero

que muestran las tendencias y la distribucion de la variable.

Para poder obtener estos polinomios en R, se ha de cargar el paquete spatial que

dispone de la funcion surf.ls que obtiene el mejor polinomio de hasta grado 6 que se

ajusta a los datos mediante mınimos cuadrados (fig. 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 grafico esta separado del resto del tema.

12 14 16 18 20

242

244

246

248

250

Figura 15: Mapa de superficie interpolada

3.2. Ventanas moviles 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 movil de tamano impar que va

recorriendo los valores. En R esta operacion requiere algo de programacion que se

incluye en el script del tema y que se presenta en la figura 16 en la pagina siguiente.

Un grafico de dispersion entre las medias y las varianzas demuestra la existencia

de una relacion entre ambas. En este caso, en la figura 17 en la pagina siguiente, se

puede ver que ambas medidas no estan correladas, siendo el coeficiente de correlacion

(ρ) bastante bajo.

3.3. Continuidad espacial

3.3.1. Diagramas de dispersion de tipo h

Este tipo de diagramas muestran contrapuestas la variable contra esta a una dis-

tancia determinada. Cuando los datos estan en forma de malla, se pueden obtener

de forma sencilla los mapas de dispersion en las direcciones norte-sur y este-oeste a

diferentes distancias.

Obtener estos diagramas en R es relativamente sencillo debido a la flexibilidad en

la manipulacion de variables indexadas (arrays). Se han obtenido los diagramas con

Page 19: Geoestadistica Con R

Modelizacion geoestadıstica con R 19

12 14 16 18 20

242

244

246

248

250

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

0500

1000

1500

2000

media

vari

an

za

ρ = −0.11

Figura 17: Grafico de dispersion de media y varianza

Page 20: Geoestadistica Con R

Modelizacion geoestadıstica con R 20

distancia (h) variando de 1 a 4 puntos y en las direcciones norte-sur (fig. 18) y este-

oeste (fig:03:vew). Se aprecia la alta correlacion en las direcciones N-S (0,5 < ρ < 0,7) y

la baja correlacion en direccion E-W (−0,4 < ρ < 0,3).

0 50 100 150

20

40

60

80

100

120

140

V(t+h)

V(t

)

x=y

ρ = 0.74

h = 1

0 50 100 150

20

40

60

80

100

120

140

V(t+h)

V(t

)

x=y

ρ = 0.59

h = 2

0 50 100 150

20

40

60

80

100

120

V(t+h)

V(t

)

x=y

ρ = 0.56

h = 3

0 50 100 150

20

40

60

80

100

120

V(t+h)

V(t

)

x=y

ρ = 0.48

h = 4

Figura 18: h-Scatterplots de direccion N-S

3.4. Variograma

La funcion del variograma muestra la variacion de la variable agrupando los datos

segun sus distancias relativas. Ha de establecerse por tanto el numero 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 direccion determinada o en todas

direcciones (variograma omnidireccional). Formalmente la funcion del variograma se

expresa como:

γ(h) =1

2N(h)

N(h)∑

i=1

(vi − vi+h)2 (5)

En R existen diversos paquetes que calculan el variograma pero probablemente el

mas completo es el paquete gstat . El uso de esta funcion se hara en el tema 5.

3.5. Diagramas de dispersion cruzados

El ultimo grafico que se va a mostrar en este tema es el de dispersion 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 solo la variacion en la direccion

N-S de las variables U y V.

3.6. Scripts

Page 21: Geoestadistica Con R

Modelizacion geoestadıstica con R 21

0 50 100 150

020

40

60

80

100

120

140

V(t+h)

V(t

)

x=y

ρ = 0.21

h = 1

0 50 100 150

020

40

60

80

100

120

140

V(t+h)

V(t

)

x=y

ρ = −0.41

h = 2

0 50 100 150

020

40

60

80

100

120

140

V(t+h)

V(t

)

x=y

ρ = −0.35

h = 3

0 50 100 150

20

40

60

80

100

120

140

V(t+h)

V(t

)

x=y

ρ = 0.3

h = 4

Figura 19: h-Scatterplots de direccion E-W

0 50 100 150

010

20

30

40

50

V(t+h)

U(t

) x=y

ρ = 0.6

h = 1

0 50 100 150

010

20

30

40

V(t+h)

U(t

)

x=y

ρ = 0.45

h = 2

0 50 100 150

05

10

15

20

25

30

35

V(t+h)

U(t

)

x=y

ρ = 0.36

h = 3

0 50 100 150

05

10

15

20

25

30

35

V(t+h)

U(t

)

x=y

ρ = 0.28

h = 4

Figura 20: h-Scatterplots cruzado de U y V en direccion N-S

Page 22: Geoestadistica Con R

Modelizacion geoestadıstica con R 22

Listado 3: R-Script en Linux del tema 3

1 #TEMA 3 : DESCRIPCION ESPACIAL2 ps . options ( family ="Bookman",pointsize

=15)3 rm( list =ls ())4

5 #Cargar paquetes6 library (lattice)7 library (gstat)8

9 #Cargar wle y redondearlo10 wle <-read .delim2("walker10.asc")11 wle <-round (wle,0)12

13 #Adjuntar los datos de wle para accederdirectamente

14 attach (wle)15

16 #Gr afico de V con m aximos y m ınimos17 #Obtener los 10 valores m aximos y

mınimos18 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 dibujo23 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 ("M aximos","M ınimos"),

pch=21, pt .bg= c ("black","lightgray"))29 dev . off ()30

31 #Gr afico de s ımbolos graduados32 postscript ("imgs / 03/ simbs.ps")33 lv <- levelplot(V ˜ X* Y,wle, col .regions= gray

( seq (1,0.3,len=18)),aspect=mapasp(wle))

34 print (lv)35 dev . off ()36

37 #Gr afico de burbujas38 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(V ˜ X* 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 isol ıneas y de superficiesinterpoladas en Windows

58

59 #Conseguir una matriz con los valores deV

60 imgV<- xyz2img(wle,"V",2,1)61 matVtemp <- imgV$z62 matV<- matVtemp * 063 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 3x371 media3 <- matV* 072 var3 <- media373 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 resultados91 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

Page 23: Geoestadistica Con R

Modelizacion geoestadıstica con R 23

-1])97 }98 }99 dev . off ()

100

101 #Gr afico de media contra varianza 3x3102 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 V111 #NS112 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 #EW129 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 U146 imgU<- xyz2img(wle,"U",2,1)147 matUtemp <- imgU$z148 matU<- matUtemp * 0149 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 #NS154 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 <- 62 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 ()

Page 24: Geoestadistica Con R

Modelizacion geoestadıstica con R 24

Tema 4 Estimacion. Metodos deterministas

En esta seccion se va a estimar el valor de la variable V en toda la extension de

trabajo a partir de los valores en el conjunto de datos wlm (fig. 21).

Este conjunto de datos se obtiene facilmente al estar presente en el paquete gstaty cargandose con ejecutar el comando data(walker) .

X

Y

50 100 150 200 250

50

100

150

200

250

Figura 21: Distribucion de wlm

La estimacion de estos datos se ha realizado desde GRASS, para ello primero se ha

exportado este conjunto de datos a un fichero csv para a continuacion 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.rstque implementan el metodo de polıgonos de influencia, el de pesos inversos a la dis-

tancia y el de splines de tension respectivamente. Ademas 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 metodos.

Al final del tema se presenta el script en GRASS que genera los mapas y exporta a

ficheros csv los valores de los tres mapas para poder estudiarlos en R. Igualmente se

presentan los tres ficheros que indican la maquetacion de los mapas.

A continuacion se importa el conjunto de datos wlc que consiste en 78000 puntos

de validacion y que se entiende como valores correctos..

En el cuadro 1 se muestran los estadısticos de estos cuatro conjunto de datos y

en la figura 23 en la pagina 26 se pueden ver los histogramas. Se pueden observar

las siguientes caracterısticas:

Se observa como el metodo de Polıgonos de influencia es el que mejor mantiene

las caracterısticas estadısticas.

Page 25: Geoestadistica Con R

Modelizacion geoestadıstica con R 25

200

100

100

200

Polígonos de influencia de V

Leyenda

Escala0 50

0

200

400

600

800

1000

1200

1400

200

100

100

200

Inverso a la distancia de V

Leyenda

Equidistancia de curvas = 250ppm

Escala0 50

200

400

600

800

1000

1200

1400

200

100

100

200

Splines de Tensión de V (T=100)

Leyenda

Equidistancia de curvas = 250ppm

Escala0 50

0

200

400

600

800

1000

1200

1400

Figura 22: Mapas generados por GRASS

Page 26: Geoestadistica Con R

Modelizacion geoestadıstica con R 26

Cuadro 1: Resumen de estadısticos de datos de validacion y estimados

wlc Voronoi IDW RST

Mın. 0.00 0.00 0.46 -47.51Q1 67.79 70.70 163.00 121.20Median. 221.30 224.40 297.20 277.90Media 278.00 275.10 316.80 277.90Q3 428.30 425.90 428.50 379.50Max. 1631.00 1528.00 1498.00 1530.00σ2 62423.16 60039.41 39458.06 44820.41σ 249.84 245.03 198.64 211.71Simetr. 0.90 0.89 0.63 0.76Apunt. 0.77 1.25 1.39 2.44CV 0.90 0.89 0.63 0.76

El metodo de Splines de tension ofrece resultados negativos pese a calcularse

con un valor de tension alto (100).

Cabe destacar la diferencia entre los metodos estadısticos y wlc en el apuntala-

miento, claramente observable en los histogramas.

WLC

V

Fre

cu

en

cia

0 500 1000 1500

05000

10000

15000

20000

25000

Vor

V

Fre

cu

en

cia

0 500 1000 1500

05000

10000

15000

20000

IDW

V

Fre

cu

en

cia

0 500 1000 1500

05000

10000

15000

RST

V

Fre

cu

en

cia

0 500 1000 1500

05000

10000

15000

Figura 23: Histogramas de los conjuntos de datos

Page 27: Geoestadistica Con R

Modelizacion geoestadıstica con R 27

4.1. Scripts

Listado 5: R-Script del tema 4

1 #TEMA 4 - ESTIMACION2 ps . options ( family ="Bookman",pointsize

=15)3 rm( list =ls ())4

5 #Cargar los datos wlm6 library (lattice)7 library (gstat)8 data (walker)9 wlm<- walker

10 attach (wlm)11

12 #Ver wlm13 postscript ("imgs / 04/ wlm.ps")14 xy<- xyplot(Y ˜ X,wlm,pch=3,aspect=mapasp(

wlm))15 print ( xy )16 dev . off ()17

18 #Importar valores reales wlc19 wlc <-read . csv ("wlc.csv",sep=";",dec=".",

header=TRUE)20

21 #Importar los valores estimados en GRASS22 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 ("Desviaci on Tıpica")38 print ( lapply (datos,Desv))39 print ("Simetr ıa")40 print ( lapply (datos,CS))41 print ("Apuntalamiento")42 print ( lapply (datos,K))43 print ("Coeficiente de Variaci on")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 SPLINES2 g.remove rast=splines vect=spcontour3 v.surf.rst input=wle elev=splines

zcolumn=u tension=1004 r.contour input=splines output=spcontour

step=2505 r.colors map=splines rules=grey6

7

8 # CREAR MAPA DE VORONOI9 g.remove rast=rvorwle vect=clvorwle,

vorwle10 v.voronoi input=wle ouput=vorwle11 v.clean input=vorwle output=clvorwle

type=boundary,line,centroid,areatool=break,rmdupl,snap

12 g.region vect=clvorwle13 r.colors map=rvorwle rast=splines14

15 # CREAR MAPA IDW16 g.remove rast=idw vect=idwcontour17 v.surf.idw input=wle output=idw col=u18 r.colors map=idw rast=splines19 r.contour input=idw output=idwcontour

step=25020

21 # GENERAR MAPAS PS22 ps.map input=splines.psmap output=

splines.ps23 ps.map input=voronoi.psmap output=

voronoi.ps24 ps.map input=idw.psmap output=idw.ps25

26 # EXPORTAR A CSV27 r.to.vect input=idw output=idw feature=

point #convertir a puntos28 r.to.vect input=splines output=splines

feature=point #convertir a puntos29 r.to.vect input=rvorwle output=voronoi

feature=point #convertir a puntos30

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

Page 28: Geoestadistica Con R

Modelizacion geoestadıstica con R 28

coordenadas

Listado 7: Script para ps.map del metodo

IDW

1 grid 502 color black3 numbers 2 black4 end5 vpoints wle6 color black7 fcolor black8 size 19 label u

10 end11 vlines idwcontour12 color white13 width 0.514 end15 raster idw16 maploc 0.7 3 7 1017

18

19 rectangle 0 390 260 30520 color black21 fcolor white22 end23 text 160 365 Inverso a la distancia

de V24 font Bookman25 size 1026 end27 text 20 385 Leyenda28 font Bookman29 size 630 end31 colortable y32 where 2 0.733 raster idw34 width 0.335 height 236 cols 637 font Bookman38 fontsize 839 color black40 end41 text 160 320 Equidistancia de curvas

= 250ppm42 font Bookman43 size 644 end45 text 160 345 Escala46 font Bookman47 size 648 end49 scalebar f50 where 5 2.151 length 5052 height 0.0553 segment 554 numbers 555 fontsize 856 end57 paper a4

58 left 0.559 right 0.560 bottom 0.561 top 0.562 end63 end

Listado 8: Script para ps.map del metodo

RST

1 grid 502 color black3 numbers 2 black4 end5 vpoints wle6 color black7 fcolor black8 size 19 label u

10 end11 vlines spcontour12 color white13 width 0.514 end15 raster splines16 maploc 0.7 3 7 1017

18

19 rectangle 0 390 260 30520 color black21 fcolor white22 end23 text 160 365 Splines de Tensi on de V

(T=100)24 font Bookman25 size 1026 end27 text 20 385 Leyenda28 font Bookman29 size 630 end31 colortable y32 where 2 0.733 raster splines34 width 0.335 height 236 cols 637 font Bookman38 fontsize 839 color black40 end41 text 160 320 Equidistancia de curvas

= 250ppm42 font Bookman43 size 644 end45 text 160 345 Escala46 font Bookman47 size 648 end49 scalebar f50 where 5 2.151 length 5052 height 0.05

Page 29: Geoestadistica Con R

Modelizacion geoestadıstica con R 29

53 segment 554 numbers 555 fontsize 856 end57 paper a458 left 0.559 right 0.560 bottom 0.561 top 0.562 end63 end

Listado 9: Script para ps.map del metodo

Polıgonos de influencia

1 grid 502 color black3 numbers 2 black4 end5 vpoints wle6 color black7 fcolor black8 size 19 end

10 vareas clvorwle11 color black12 fcolor none13 end14 raster rvorwle15 maploc 0.7 3 7 1016

17

18 rectangle 0 390 260 30519 color black20 fcolor white21 end22 text 160 365 Pol ıgonos de influencia

de V

23 font Bookman24 size 1025 end26 text 20 385 Leyenda27 font Bookman28 size 629 end30 colortable y31 where 2 0.732 raster rvorwle33 width 0.334 height 235 cols 636 font Bookman37 fontsize 838 color black39 end40 text 160 345 Escala41 font Bookman42 size 643 end44 scalebar f45 where 5 2.146 length 5047 height 0.0548 segment 549 numbers 550 fontsize 851 end52 paper a453 left 0.554 right 0.555 bottom 0.556 top 0.557 end58 end

Page 30: Geoestadistica Con R

Modelizacion geoestadıstica con R 30

Tema 5 Continuidad espacial de V

5.1. Variograma omnidireccional

El calculo del variograma omnidireccional con gstat es sencillo. En primer lugar

se ha de crear un objeto de tipo gstat anadiendole los datos de trabajo. A continua-

cion se ejecuta el comando variogram con las opciones pertinentes.

La opcion principal es el tamano de los lags. Ningun paquete de los consultados

permite elegir una tolerancia para incluir pares en cada lag, siendo unicamente GSLIBel que acepta este parametro, pero no en R. Otros parametros permiten obtener el

mapa superficial o la nube de puntos o establecer restricciones de direccion como se

vera mas adelante.

En el script del tema se han creado diversas funciones para realizar graficas de

uno o varios variogramas presentando el numero de pares y una leyenda.

Si se muestra el variograma en R, aparece el listado con los lags, el numero de

pares, el valor del variograma, las direcciones horizontales y verticales (si las hubiera)

y la variable utilizada.

> gstatV <- gstat(id="V", formula =V˜ 1,locations= ˜ X+Y, data =wlm)> varOmni <- variogram(gstatV,width=10,cutoff=101)> varOmni

np dist gamma dir .hor dir .ver id1 565 7.291342 42743.67 0 0 V2 2072 15.022197 67877.29 0 0 V3 2948 24.783924 79062.05 0 0 V4 3210 34.757173 94338.18 0 0 V5 4044 44.673417 88377.42 0 0 V6 4265 54.887742 94888.71 0 0 V7 4926 64.548384 92944.57 0 0 V8 5196 74.614543 94322.57 0 0 V9 5533 84.724877 89014.25 0 0 V10 5167 94.880575 98948.24 0 0 V11 707 100.470981 86139.86 0 0 V

La figura 24 en la pagina siguiente muestra los variogramas omnidireccionales con

lags de tamano 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 numero de lags y la continuidad

buscada. El parametro que habra que modificar sera tal vez la distancia maxima

computada, para evitar el salto que aparece, dejandola en 80 metros en sucesivos

calculos.

5.2. Variograma superficial

Estableciendo la opcion map=TRUEse obtiene el variograma superficial, que puede

ser grafiado con los comandos levelplot y contourplot (figs. 25 y 26). Estas image-

nes pueden servir para conocer la existencia de anisotropıa geometrica, mostrando los

ejes de maxima y mınima continuidad. Este metodo puede ser util para una primera

aproximacion, pero es difıcil de cuantificar. Por esta razon se usaran los variogramas

direccionales.

5.3. Variogramas direccionales

5.3.1. Busqueda de los ejes de anisotropıa

En lugar de tomar todos los pares para calcular el variograma, se puede establecer

una direccion determinada y una tolerancia angular para que solo se computen los

Page 31: Geoestadistica Con R

Modelizacion geoestadıstica con R 31

0 20 40 60 80 100

0e+00

2e+04

4e+04

6e+04

8e+04

1e+05

Distancia

Sem

ivari

ogra

ma

t = 5

20 40 60 80 100

0e+00

2e+04

4e+04

6e+04

8e+04

1e+05

Distancia

Sem

ivari

ogra

ma

t = 10

20 40 60 80 100

0e+00

2e+04

4e+04

6e+04

8e+04

1e+05

Distancia

Sem

ivari

ogra

ma

t = 15

20 40 60 80 100

0e+00

2e+04

4e+04

6e+04

8e+04

1e+05

Distancia

Sem

ivari

ogra

ma

t = 20

Figura 24: Variogramas omnidireccionales (i))

map.dx

map.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 superficial

Page 32: Geoestadistica Con R

Modelizacion geoestadıstica con R 32

map.dx

map.d

y

−100 −50 0 50 100

−100

−50

0

50

100

Figura 26: Isolıneas del variograma superficial

pares de vectores en ese rango de direcciones. Comparando diferentes variogramas

direccionales se pueden obtener las direcciones de maxima y mınima continuidad .

En este trabajo se van a grafiar los variogramas cada 15 grados sexagesimales,

agrupados en dos graficos para que facilitar la lectura (fig 27). Para obtener numeri-

camente las direcciones de los ejes se ha procedido del siguiente modo: se establece

como valor de meseta 90.000ppm, a continuacion 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 grafico 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 maximo y en

torno a los 90 grados de mınimo, se asemejan a los obtenidos en los apuntes de la

asignatura.

20 40 60 80 100

020000

40000

60000

80000

100000

Distancia

Sem

ivari

ogra

ma

0306090120150180

20 40 60 80 100

0e+00

2e+04

4e+04

6e+04

8e+04

1e+05

Distancia

Sem

ivari

ogra

ma

154575105135165

Figura 27: Variogramas direccionales

Page 33: Geoestadistica Con R

Modelizacion geoestadıstica con R 33

Dirección

Dis

tan

cia

en

lag =

4

0 20 40 60 80 100 120 140 160 180

0 20 40 60 80 100 120 140 160 180

30

40

50

60

Figura 28: Deteccion de ejes de anisotropıa

5.3.2. Obtencion de la tolerancia angular

Se pretende en este caso encontrar la tolerancia angular mas pequena posible que

haga el variograma representativo y mas adaptado por tanto a la direccion elegida. Se

trata en definitiva de un proceso repetitivo como el anterior, pero esta vez variaran las

tolerancias y se buscaran los numeros 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

(figs 29 y 30).

Se observa que en los primeros variogramas la direccion de mınima continuidad

presenta un ((efecto hueco)) muy importante en la distancia 60, en cualquier caso

parece que 40 es una tolerancia suficiente.

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 figura 31 presenta estos tres variogramas y se puede apreciar como

tanto el omnidireccional como el de maxima continuidad no presentan grandes dis-

continuidades, el de mınima continuidad ofrece un aspecto poco clarificador debido

seguramente a la existencia de datos anomalos en alguna o ambas variables.

Page 34: Geoestadistica Con R

Modelizacion geoestadıstica con R 34

20 40 60 80 100

0e+00

2e+04

4e+04

6e+04

8e+04

1e+05

tol = 15

Distancia

Sem

ivari

ogra

ma

234

464

396

424613 608

530588

754

640

tol = 15

73

303

487

587 829876

1092 1165 1254

1121

90160

20 40 60 80 100

020000

40000

60000

80000

100000

tol = 20

Distancia

Sem

ivari

ogra

ma

280

483

537729 694

696

982

799

903

902

tol = 20

115

458

704

828 1065

1174

1473 15981637

1481

90160

20 40 60 80 100

0e+00

2e+04

4e+04

6e+04

8e+04

1e+05

tol = 25

Distancia

Sem

ivari

ogra

ma

305

503

783822 891

968

1089

10711115

1090

tol = 25

118

546

883

985 1284

14731771 1889

1940

1806

90160

20 40 60 80 100

020000

40000

60000

80000

120000

tol = 30

Distancia

Sem

ivari

ogra

ma

320

585

1006 911

1296

1062

1392

11931464

1295

tol = 30

151

723

1094

11511562

17732052

2258

2302

2100

90160

Figura 29: Variogramas por tolerancias (i)

Page 35: Geoestadistica Con R

Modelizacion geoestadıstica con R 35

20 40 60 80 100

0e+00

2e+04

4e+04

6e+04

8e+04

1e+05

tol = 35

Distancia

Sem

ivari

ogra

ma

329

744

1076

1171

1383

1368

15131624 1624

1539

tol = 35

161

856

1205

13611752

1993

23652485

2677

2415

90160

20 40 60 80 100

0e+00

2e+04

4e+04

6e+04

8e+04

1e+05

tol = 40

Distancia

Sem

ivari

ogra

ma

334

895

1146

1368

1563

1520

1822 1769 1884

1816

tol = 40

179

980

1309

15821904

22712656

28552941

2728

90160

20 40 60 80 100

020000

40000

60000

80000

100000

tol = 45

Distancia

Sem

ivari

ogra

ma

343

1072

1362

1502

1847

1812

1998 20722181

2011

tol = 45

203

1058

1495

1708

2255

24392949

31033284

3002

90160

20 40 60 80 100

020000

40000

60000

80000

100000

tol = 50

Distancia

Sem

ivari

ogra

ma

359

1209

1627

1626

20502146

2228 22842476

2293

tol = 50

230

1114

1716

1856

2528

27103143 3354

3564

3230

90160

Figura 30: Variogramas por tolerancias (ii)

20 40 60 80 100 120

0e+00

1e+05

2e+05

3e+05

4e+05

5e+05

Distancia

Sem

ivari

ogra

ma

Cruzado85160

Figura 31: Variogramas cruzados

Page 36: Geoestadistica Con R

Modelizacion geoestadıstica con R 36

5.5. Scripts

Listado 10: Funciones para imprimir va-

riogramas

1 #FUNCIONES PARA MOSTRAR VARIOGRAMAS2 #-------------Plotear el primer

variograma3 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 #-------------A nadir nuevos variogramas10 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 #-------------Funci on principal degrafiado

16 pintavars <-function (listvars,colores,etiqs,seps,titulo,posley,nps=FALSE){

17 #Obtener los l ımites18 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 separaciones34 seps2 <-matrix (seps, ncol =2,byrow=TRUE

)35

36 #Pintar el primer variograma37 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 leyenda46 legend (posley[1],posley[2],etiqs,

colores)47 }

Listado 11: R-Script del tema 5

1 #TEMA 5. CONTINUIDAD ESPACIAL2 ps . options ( family ="Bookman",pointsize

=15)3 rm( list =ls ())4

5 library (lattice)6 library (gstat)7

8 #Anadir las funciones programadas9 source ("Variogramas.R")

10

11 #-------------12

13 #Cargar los datos wlm14 data (walker)15 wlm<- walker16 attach (wlm)17

18 # Crear el objeto gstat19 gstatV <- gstat(id="V", formula =V˜ 1,

locations= ˜ X+Y, data =wlm)20

21 #Obtener variogramas omni. a variasdistancias

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 superficial34 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))

Page 37: Geoestadistica Con R

Modelizacion geoestadıstica con R 37

38 lp <- levelplot(map.V ˜ map.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.V ˜ map.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 pordirecciones

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]] <- letra60 }61 if ( ! sj % %15 && sj % %30) {62 varsDirsP2[[letra]] <- varsDirs[[

letra]];63 sec2[[letra]] <- letra64 }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 deanisotrop ıa

72 nVars <-length (varsDirs)73 grad <- sec74 dist4 <-rep (0,nVars)75 yc <- 9000076 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="Direcci on",ylab="Distanciaen 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 portolerancias

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 direcciones105 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 cruzados115 #Para la U hay que eliminar

localizaciones sin dato116 wlm2<-subset (wlm, !is . na(U))117 gVU<- gstat(id="V", formula =V˜ 1,locations=

˜ X+Y, data =wlm)118 gVU<- gstat(gVU,id="U", formula =U˜ 1,

locations= ˜ X+Y, data =wlm2)119 #Ver los variogramas120 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.

Page 38: Geoestadistica Con R

Modelizacion geoestadıstica con R 38

U")128 postscript ("imgs / 05/ cross.ps")129 pintavars(varsCruz,colores,etiqs,

separaciones,"",posleyenda)

130 dev . off ()

Page 39: Geoestadistica Con R

Modelizacion geoestadıstica con R 39

Tema 6 Modelizacion del variograma experimental

Con el paquete gstat se puede modelizar el variograma a partir de los modelos mas

comunes (efecto pepita puro, exponencial, esferico, gaussiano) y muchos mas. Para

verlos, basta con ejecutar la orden show.vgms()

distance

sem

ivari

an

ce

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 anadir al objeto de tipo gstat para incluirlo junto con el variograma

experimental. Por ejemplo si deseamos un modelo esferico bastarıa con indicar la me-

seta y el rango. Este modelo y el variograma se presentan graficamente en la figura 33

en la pagina siguiente.

> vgm(92000,"Sph",30)model psill range

1 Sph 92000 30

Pero los modelos pueden combinarse y formar ((estructuras imbricadas)) simple-

mente anadiendo su definicion unos sobre otros. Ası, podemos anadir crear un modelo

para el variograma direccional de 160o de la Variable V segun la siguiente definicion:

γ(h) = 22,000 + 40,000 · Esf30(h) + 45,000 · Esf150(h) (6)

Crea el modelo de la figura 34 y su definicion 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 1502 Nug 22000 03 Sph 40000 30

Page 40: Geoestadistica Con R

Modelizacion geoestadıstica con R 40

Distancia

Sem

ivari

ogra

ma

20 40 60 80 100

20000

40000

60000

80000

Figura 33: Modelos esferico de rango 30 y meseta parcial de 92000ppm

Distancia

Sem

ivari

ogra

ma

20 40 60 80 100

20000

40000

60000

80000

Figura 34: Modelos de variograma combinados

Page 41: Geoestadistica Con R

Modelizacion geoestadıstica con R 41

6.1. Estimacion automatizada del modelo

6.1.1. gstat

Tanto el paquete gstat como el paquete geoR proporcionan funciones para la esti-

macion automatizada del modelo de variograma. En ambos casos deberemos ajustar

manualmente unos parametros iniciales para pasarlos como parametros 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 (fig.

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 = V‘ ˜ ‘1 ; locations = ˜ X + Y ; data dim = 470 x 6variograms:

model psill rangeV[1] Nug 186.3867 0.00000V[2] Exp 93809.2943 12.01007

Distancia

Sem

ivari

ogra

ma

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 grafica de

usuario escrita en el lenguaje TclTk. Se pasa a la funcion eyefit el variograma a

modelar y aparece un cuadro de dialogo donde es posible elegir el tipo de modelo y

sus parametros mediante barras deslizantes.

> library (geoR)

--------------------------------------------------- ----------Functions for geostatistical data analysisFor an Introduction to geoR go to http: // www.est.ufpr.br / geoRgeoR version 1.5-7 (built on 2005 / 06 / 07) is now loaded--------------------------------------------------- ----------

> geoV<-as .geodata(wlm,2:3,4)

Page 42: Geoestadistica Con R

Modelizacion geoestadıstica 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

GeoRademas genera un grafico de resumen de los datos bastante descriptivo don-

de muestra la localizacion de los mismos, un histograma de la variable y dos graficos

de dispersion de la variable contra las coordenadas X e Y respectivamente (fig. 37).

Por ultimo, geoR tambien ajusta por mınimos cuadrados el modelo de variogra-

ma de forma analoga a gstat aunque algo mas simple, pasando unicamente un

valor de meseta, un rango y un metodo (fig. 38 en la pagina siguiente). En este

sentido gstat es mas potente al pasar a su funcion directamente un objeto de ti-

po variogram.model .

> vario.m2 <- variofit(vario.b, c (93809,12), cov . model ="exponential")variofit: weights used: npairsvariofit: minimisation function used: optim> vario.m2variofit: model parameters estimated by WLS (weighted least squares):covariance model is : exponentialparameter estimates:

tausq sigmasq phi14873.1088 79431.7551 13.4973

variofit: minimised weighted sum of squares = 612531182238

Page 43: Geoestadistica Con R

Modelizacion geoestadıstica con R 43

0 50 100 150 200 250

050

100

150

200

250

300

X Coord

Y C

oord

0 500 1000 1500

050

100

150

200

250

300

data

Coord

Y

0 50 100 150 200 250

0500

1000

1500

Coord X

data

data

Fre

qu

en

cy

0 500 1000 1500

020

40

60

80

100

Figura 37: Descripcion de geoR del conjunto de datos

0 20 40 60 80 100

0e+00

2e+04

4e+04

6e+04

8e+04

1e+05

Distancia

Sem

ivari

ogra

ma

Figura 38: Modelo ajustado por geoR

Page 44: Geoestadistica Con R

Modelizacion geoestadıstica con R 44

6.2. Scripts

Listado 12: R-Script del tema 6

1 # TEMA 6 MODELIZACION DEL VARIOGRAMA2 ps . options ( family ="Bookman",pointsize

=15)3 rm( list =ls ())4

5 library (lattice)6 library (gstat)7

8 #Anadir las funciones programadas9 source ("Variogramas.R")

10

11 #Cargar los datos wlm12 data (walker)13 wlm<- walker; rm(walker)14 attach (wlm)15 # Crear el objeto gstat16 g<- gstat(id="V", formula =V˜ 1,locations= ˜ X

+Y, data =wlm)17

18 #Ver modelos de variograma19 postscript ("imgs / 06/ modelos.ps")20 print ( show.vgms())21 dev . off ()22

23 #Modelo esf erico24 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 omnidireccionalde 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 elvariograma

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 ()

Page 45: Geoestadistica Con R

Modelizacion geoestadıstica con R 45

Tema 8 Kriging

Denotado en la literatura en espanol como ((krigeado)), este conjunto de metodos

desarrollado por Denis Krige en los anos 50 del sigo XX es el metodo geoestadıstico

mas ampliamente aceptado. El fin ultimo del estudio y modelizacion del variograma

es su aplicacion en este metodo para el calculo del valor de la variable en puntos

arbitrarios (generalmente una malla regular) mediante esta familia de metodos.

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 finales 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 solo falta ejecutar el comando krige con la formula necesaria para el KO V∼1,

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 prediccion y su error (desviacion tıpica). En las figuras 45(a) y 46(a) se

muestran ambos conjuntos de datos.

KO<- krige(V ˜ 1, ˜ X+Y,wlm,wlc,g $model$ V)

Si comparamos los datos con el conjunto wlc restando localizacion a localizacion

comprobamos que las diferencias en general son pequenas y simetricas ( 40 en la

pagina siguiente).

Page 46: Geoestadistica Con R

Modelizacion geoestadıstica con R 46

Error

Fre

cu

en

cia

−500 0 500 1000

05000

10000

15000

20000

25000

30000

30 150 6101900

4409

8762

15587

29491

12274

3190

1128326 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 localizacion no es constante. Basta con cambiar la formula de la orden

krige a V∼X+Y para que se ejecute esta variedad del krigeado.

KU<- krige(V ˜ X+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 localizacion. Se puede utilizar tanto el el krigeado

ordinario como en el krigeado universal y se indica unicamente pasando un nuevo

parametro con el tamano del bloque en un vector de una a tres dimensiones (depen-

diendo del numero de variables espaciales de la muestra) o un data.frame con una

a tres columnas indicando los puntos que definiran 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 prediccion y la varianza (figuras 45(c)

y 46(c)). Las diferencias son similares a las de los otros dos metodos (42).

KBU<- krige(V ˜ X+Y, ˜ X+Y,wlm,wlc,g $model$ V,block= c (10,10))

8.5. Krigeado Local (KUL)

Este krigeado utiliza un numero determinado de puntos para la estimacion de la

localizacion:

Se puede especificar numero maximo de puntos (nmax).

O una distancia maxima (maxdist ).

Si se especifica tambien un numero mınimo (nmin ) y el numero de puntos loca-

lizados por maxdist es menor, se genera un valor nulo.

Page 47: Geoestadistica Con R

Modelizacion geoestadıstica con R 47

Error

Fre

cu

en

cia

−500 0 500 1000

05000

10000

15000

20000

25000

30000

22 142 6181919

4405

8874

15624

30154

11348

3206

1160383 101 29 8 6 2

Figura 41: Error del Krigeado universal

Error

Fre

cu

en

cia

−500 0 500 1000

05000

10000

15000

20000

25000

30000

16 111 5841869

4673

9198

15307

29782

11473

3318

1207335 89 26 6 5 2

Figura 42: Error del Krigeado universal por bloques

Page 48: Geoestadistica Con R

Modelizacion geoestadıstica con R 48

Si se utilizan los parametros nmax y distmax operan ambos criterios

Este metodo tambien 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 maxima de 15 metros y un numero

mınimo de 4 puntos (figs 45(d) y 46(d)).

KUL<- krige(V ˜ X+Y, ˜ X+Y,wlm,wlc,g $model$ V,nmin=5,maxdist=30)

Error

Fre

cu

en

cia

−500 0 500 1000

05000

10000

15000

20000

25000

30000

16 111 5841869

4673

9198

15307

29782

11473

3318

1207335 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 estan correladas (aunque menos

en wlm que en wle), Esto significa que podemos obtener informacion de una de ellas

teniendo en cuenta tambien 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 metodo. Ademas impone algunas res-

tricciones para dar por bueno el modelo de corregionalizacion:

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 gstaty se anaden las localizaciones, a continuacion se anaden los tres modelos iniciales.

Despues, con el comando fit.lmc se genera el modelo de corregionalizacion lineal

ajustado. Se obtiene tambien 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 prediccion y la varianza para una variable contiene las dos pre-

dicciones y varianzas y la covarianza entre U y V. Las figuras 48(a) y 49(a) presentan

la prediccion y la varianza de la variable U respectivamente.

Page 49: Geoestadistica Con R

Modelizacion geoestadıstica con R 49

#Crear el objeto gstat y a nadir las localizacionesg<- gstat(id="U", formula =U 1,locations= ˜ X+Y, data =wlm2)g<- gstat(g,id="V", formula =V˜ 1,locations= ˜ X+Y, data =wlm2)#Crear los modelosmv<- vgm(72e3,"Exp",15,22e3)mu<- vgm(26e4,"Exp",15,26e4)muv<- vgm(.6e5,"Exp",15,3e5)#Anadir los modelos al objetog<- 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 ajustadox<- variogram(g,cutoff=100)g.fit=fit.lmc(x,g)#Calcular el cokrigeado ordinarioCKO<-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 tambien (figs 48(b)

y 49(b)).

Page 50: Geoestadistica Con R

Modelizacion geoestadıstica con R 50

Error

Fre

cu

en

cia

0 2000 4000 6000 8000

010000

20000

30000

40000

50000

22

14892

50962

7493

26001131492195 96 62 27 12 6 0 4 0 3 3 0 0 1

(a) Error del CKO

Error

Fre

cu

en

cia

−2000 0 2000 4000 6000 8000 10000

010000

20000

30000

40000

3 22 59294

22081

42942

8044

2657107743519995 50 23 7 4 1 3 0 2 1 1 0 0 1

(b) Error del UKO

Figura 44: Diferencias con wlc de la modelizacion de U

Page 51: Geoestadistica Con R

Modelizacion geoestadıstica con R 51

8.7. Resultados

8.7.1. Modelizacion de V

A continuacion se muestran los resultados de los metodos de krigeado empleados

para modelar la variable V, ası como sus predicciones de error. Por ultimo se compa-

ran se muestran los estadısticos de las diferencias entre los valores estimados y los

valores reales (wlc).En el diagrama de cajas (fig. 47 en la pagina 53) se aprecia como el krigeado

por bloques parece que ofrece el resultado con menos outliers al contrario que el

krigeado local. Ademas el krigeado local no consigue dar valores a todos los puntos,

pese a indicar una distancia maxima de 30 metros. El krigeado por bloques ofrece

diferencias tanto maximas como mınimas mas pequenas que el resto (cuadro 2 en la

pagina 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: Prediccion en la modelizacion de V (wlm)

8.7.2. Modelizacion de U

Viendo la prediccion del cokrigeado, se observa que el resultado no es demasia-

do satisfactorio, seguramente porque la modelizacion del variograma, al restringir al

Page 52: Geoestadistica Con R

Modelizacion geoestadıstica 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: Desviacion tıpica en la modelizacion de V (wlm)

Cuadro 2: Estadısticos de los errores en los metodos de krigeado de V

Estadısticos

KO KU KUB KUL

Media 5.77 4.35 4.47 -4.13

Mınimo -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

Max. 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

Page 53: Geoestadistica Con R

Modelizacion geoestadıstica con R 53

KO

KU

KU

BK

UL

−1000 −500 0 500 1000

Figura 47: Diagramas de caja y bigote de las diferencias

Page 54: Geoestadistica Con R

Modelizacion geoestadıstica con R 54

mismo rango a los modelos tanto de U, como de V y el cruzado, a generado una peor

modelizacion final. Ası y todo, el cokrigeado a dado valores maximos y mınimos meno-

res al ordinario y el resto de parametros estadısticos no son muy diferentes (cuadro 3

en la pagina 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: Prediccion en la modelizacion 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: Desviacion tıpica en la modelizacion de U (wlm)

Page 55: Geoestadistica Con R

Modelizacion geoestadıstica con R 55

Cuadro 3: Estadısticos de los errores en los metodos de krigeado de U

Estadısticos

CKO UKO

Media -250.44 -255.68

Mınimo -1366.57 -2625.11

Q1 -487.89 -506.54

Q2 -404.07 -418.417

Q3 -196.54 -158.85

Max. 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

Page 56: Geoestadistica Con R

Modelizacion geoestadıstica con R 56

8.8. Scripts

Listado 13: R-Script del tema 8

1 # TEMA 8 KRIGING2 ps . options ( family ="Bookman",pointsize

=15)3 # rm(list=ls())4

5 library (lattice)6 library (gstat)7

8 #Funci on que devuelve estad ısticas9 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 secuencias25 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 wlm34 print ("Cargando datos...")35 data (walker)36 wlm<- walker; rm(walker)37 attach (wlm)38

39 #Importar e imprimir los valores realeswlc

40 wlc <-read . csv ("wlc.csv",sep=";",dec=".",header=TRUE)

41 postscript ("imgs / 08/ wlc %01d.ps",onefile=FALSE)

42 print (levelplot(V ˜ X+Y,wlc,at=niv,aspect=mapasp(wlc), col .regions=gris1))

43 print (levelplot(U ˜ X+Y,wlc,at= seq(0,5200,400),aspect=mapasp(wlc), col .regions=gris1))

44 dev . off ()45

46

47 #Generar el objeto gstat48 g<- gstat(id="V", formula =V˜ 1,locations= ˜ X

+Y, data =wlm)49 #Establecer un modelo inicial de V50 mv<- vgm(72e3,"Exp",15,22e3)51 #Ajustar el modelo con el variograma

omnidireccional52 mvfit <- fit.variogram(variogram(g["V"],

width=10,cutoff=100),mv)53 #Anadir el ajuste al objeto gstat54 g<- gstat(g,id="V", model =mvfit)55

56 #Crear una malla regular de unas 5000celdas (aprox)

57 wlmGrid <- makegrid(X,Y,5000)58 names(wlmGrid) <-c ("X","Y")59

60 #KRIGEADO ORDINARIO61 print ("Calculando KO...")62 KO<-read . csv ("KO.csv")63 # KO<- krige(V ˜ 1, ˜ 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 $V66 postscript ("imgs / 08 / KO %01d.ps",onefile=

FALSE)67 graf1 <- levelplot(var1.pred ˜ X+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 UNIVERSAL75 print ("Calculando KU...")76 KU<-read . csv ("KU.csv")77 # KU<- krige(V ˜ X+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 $V80 postscript ("imgs / 08 / KU %01d.ps",onefile=

FALSE)81 graf1 <- levelplot(var1.pred ˜ X+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")

Page 57: Geoestadistica Con R

Modelizacion geoestadıstica con R 57

85 dev . off ()86

87

88 #KRIGEADO UNIVERSAL POR BLOQUES89 print ("Calculando KUB...")90 KUB<-read . csv ("KUB.csv")91 # KUB<- krige(V ˜ X+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 $V94 postscript ("imgs / 08/ KUB %01d.ps",onefile=

FALSE)95 graf1 <- levelplot(var1.pred ˜ X+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 LOCAL102 print ("Calculando KUL...")103 KUL<-read . csv ("KUL.csv")104 # KUL<- krige(V ˜ X+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 $V107 postscript ("imgs / 08/ KUL %01d.ps",onefile=

FALSE)108 graf1 <- levelplot(var1.pred ˜ X+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 DIFERENCIAS115 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 # COKRIGEADO127 print ("Iniciando CKO...")128 #Rehacer el objeto gstat s olo con las

localizaciones donde U existe129 wlm2<-subset (wlm, !is . na(wlm $U))130 g<- "null"131 rm(g)132 g<- gstat(id="U", formula =U˜ 1,locations= ˜ X

+Y, data =wlm2)133 g<- gstat(g,id="V", formula =V˜ 1,locations=

˜ X+Y, data =wlm2)134 #Crear los modelos135 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 objeto140 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 ajustado144 x<- variogram(g,cutoff=100)145 g.fit=fit.lmc(x,g) #,fit.ranges=T)146 #Ver variogramas y modelos147 postscript ("imgs / 08 / UyV.ps")148 print ( plot (variogram(g), model =g.fit,xlab

="Distancia",ylab="Semivariograma"))149 dev . off ()150

151 #Ejecutar el cokrigeado152 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.pred157 postscript ("imgs / 08 / CKO %01d.ps",onefile=

FALSE)158 graf1 <- levelplot(U.pred ˜ X+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 Upara 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(U ˜ 1, ˜ 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

Page 58: Geoestadistica Con R

Modelizacion geoestadıstica con R 58

171 postscript ("imgs / 08/ UKO %01d.ps",onefile=FALSE)

172 graf1 <- levelplot(var1.pred ˜ X+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 ()

Page 59: Geoestadistica Con R

Modelizacion geoestadıstica con R 59

Referencias

[1] MARTINEZ LLARIO, JOSE CARLOS y COLL ALIAGA, ELOINA, Apuntes de geoestadısti-

ca basica. Aplicaciones mediante Sistemas de Informacion Geografica, UPV, Valen-

cia, 2005.

[2] PEBESMA, EDZER J., gstat’s 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, pags. 683–691, 2004.

[4] R DEVELOPMENT CORE TEAM, Introduccion 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), pags. 14–18, 2001, iSSN 1609-3631.

URL CRAN://doc/Rnews/

[7] SARKAR, DEEPAYAN, lattice: Lattice Graphics, 2004, r package version 0.10-16.