• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
Geoestadística con R
 

Geoestadística con R

on

  • 5,330 views

Documento que describe una serie de ejercicios de estadística y geoestadística realizados mediante R

Documento que describe una serie de ejercicios de estadística y geoestadística realizados mediante R

Statistics

Views

Total Views
5,330
Views on SlideShare
5,326
Embed Views
4

Actions

Likes
4
Downloads
519
Comments
2

1 Embed 4

http://www.lmodules.com 4

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

CC Attribution-NonCommercial-ShareAlike LicenseCC Attribution-NonCommercial-ShareAlike LicenseCC Attribution-NonCommercial-ShareAlike License

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel

12 of 2 previous next

  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
  • you only need to click the download button :-) anyway is 7 years old.....
    Are you sure you want to
    Your message goes here
    Processing…
  • I wanna copy
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    Geoestadística con R Geoestadística con R Document Transcript

    • Geoestad´stica con R ı Jorge 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 m´ todos geoestad´siticos (krigeado). En este trabajo se presenta un ´ e ı 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. ´ndice I 3.5. Diagramas de dispersion ´ cruzados . . . . . . . . . . . 20 3.6. Scripts . . . . . . . . . . . . . 20 0. Introduccion´ 4 0.1. R . . . . . . . . . . . . . . . . 4 ´ 4. Estimacion. M´ todos determi- e 0.2. gstat . . . . . . . . . . . . . . 4 nistas 24 0.3. GRASS . . . . . . . . . . . . . 5 4.1. Scripts . . . . . . . . . . . . . 27 0.4. Datos de trabajo . . . . . . . 5 5. Continuidad espacial de V 30 ´ 1. Descripcion univariada 6 5.1. Variograma omnidireccional 30 1.1. Carga y visualizacion de los ´ 5.2. Variograma superficial . . . 30 datos . . . . . . . . . . . . . . 6 5.3. Variogramas direccionales . 30 5.4. Variogramas cruzados . . . . 33 1.2. M´ todos graficos para la e ´ 5.5. Scripts . . . . . . . . . . . . . 36 descripcion univariada . . . 6 ´ 1.3. M´ todos num´ ricos . . . . . 9 e e ´ 6. Modelizacion del variograma ex- 1.4. Scripts . . . . . . . . . . . . . 10 perimental 39 6.1. Estimacion automatizada ´ ´ 2. Descripcion bivariada 12 del modelo . . . . . . . . . . 41 2.1. M´ todos graficos . . . . . . . 12 e ´ 6.2. Scripts . . . . . . . . . . . . . 44 2.2. M´ todos num´ ricos . . . . . 13 e e 2.3. Scripts . . . . . . . . . . . . . 14 8. Kriging 45 8.1. wlc . . . . . . . . . . . . . . . 45 ´ 3. Descripcion espacial 15 8.2. Krigeado Ordinario (KO) . . . 45 3.1. Visualizacion espacial de ´ 8.3. Krigeado Universal (KU) . . . 46 datos . . . . . . . . . . . . . . 15 8.4. Krigeado por bloques (KUB) 46 3.2. Ventanas moviles y el efecto ´ 8.5. Krigeado Local (KUL) . . . . 46 proporcional . . . . . . . . . 18 8.6. Cokrigeado (CKO) . . . . . . 48 3.3. Continuidad espacial . . . . 18 8.7. Resultados . . . . . . . . . . 51 3.4. Variograma . . . . . . . . . . 20 8.8. Scripts . . . . . . . . . . . . . 56
    • Modelizacion geoestad´stica con R ´ ı 2 ´ndice de figuras I 27. Variogramas direccionales . 32 28. Deteccion de ejes de aniso- ´ 1. Distribucion de U y V . . . . ´ 6 trop´a . . . . . . . . . . . . . ı 33 2. Histograma de V . . . . . . . 7 29. Variogramas por toleran- 3. Histograma acumulado de V 7 cias (i) . . . . . . . . . . . . . 34 4. Grafico de probabilidad ´ 30. Variogramas por toleran- uniforme de V . . . . . . . . 7 cias (ii) . . . . . . . . . . . . . 35 5. Grafico de probabilidad ´ 31. Variogramas cruzados . . . . 35 normal . . . . . . . . . . . . . 8 32. Modelos de variogramas 6. Grafico de probabilidad log- ´ disponibles . . . . . . . . . . 39 normal . . . . . . . . . . . . . 8 33. Modelos esf´ rico de ran- e 7. Grafico de caja y bigotes de V ´ 9 go 30 y meseta parcial de 8. Grafico de caja y bigotes de ´ 92000ppm . . . . . . . . . . 40 VyU. . . . . . . . . . . . . . 12 9. Grafico de cuantiles de V y U ´ 12 34. Modelos de variograma 10. Grafico de dispersion . . . . ´ ´ 13 combinados . . . . . . . . . . 40 11. Distribucion de V . . . . . . ´ 15 35. Modelo de variograma de V 12. Mapa graduado de color de V 16 ajustado . . . . . . . . . . . . 41 13. Mapa graduado de tamano ˜ 36. Modelado interactivo del va- de V . . . . . . . . . . . . . . 16 riograma . . . . . . . . . . . . 42 14. Mapas de indicadores . . . . 17 37. Descripcion de geoR del ´ 15. Mapa de superficie interpo- conjunto de datos . . . . . . 43 lada . . . . . . . . . . . . . . 18 38. Modelo ajustado por geoR . 43 16. Media y varianza en venta- 39. Conjunto de datos wlc . . . . 45 na de 3x3 . . . . . . . . . . . 19 40. Error del Krigeado ordinario 46 17. Grafico de dispersion de ´ ´ 41. Error del Krigeado universal 47 media y varianza . . . . . . . 19 42. Error del Krigeado univer- 18. h-Scatterplots de direccion ´ sal por bloques . . . . . . . . 47 N-S . . . . . . . . . . . . . . . 20 43. Error del Krigeado local 19. h-Scatterplots de direccion ´ universal . . . . . . . . . . . 48 E-W . . . . . . . . . . . . . . 21 44. Diferencias con wlc de la 20. h-Scatterplots cruzado de U modelizacion de U . . . . . . ´ 50 y V en direccion N-S . . . . . ´ 21 21. Distribucion de wlm . . . . . ´ 24 45. Prediccion en la modeliza- ´ 22. Mapas generados por GRASS 25 cion de V (wlm) . . . . . . . . ´ 51 23. Histogramas de los conjun- 46. Desviacion t´pica en la mo- ´ ı tos de datos . . . . . . . . . . 26 delizacion de V (wlm) . . . . . ´ 52 24. Variogramas omnidireccio- 47. Diagramas de caja y bigote nales (i)) . . . . . . . . . . . . 31 de las diferencias . . . . . . . 53 25. Mapa del variograma su- 48. Prediccion en la modeliza- ´ perficial . . . . . . . . . . . . 31 cion de U (wlm) . . . . . . . . ´ 54 26. Isol´neas del variograma ı 49. Desviacion t´pica en la mo- ´ ı superficial . . . . . . . . . . . 32 delizacion de U (wlm) . . . . . ´ 54 ´ndice de cuadros I 2. Estad´sticos de los errores ı en los m´ todos de krigeado e de V . . . . . . . . . . . . . . 52 1. Resumen de estad´sticos de ı 3. Estad´sticos de los errores ı datos de validacion y esti- ´ en los m´ todos de krigeado e mados . . . . . . . . . . . . . 26 de U . . . . . . . . . . . . . . 55
    • Modelizacion geoestad´stica con R ´ ı 3 ´ndice de listados I 8. Script para ps.map del m´ todo RST . . . . . . . . . . e 28 1. R-Script del tema 1 . . . . . . 10 9. Script para ps.map del 2. R-Script del tema 2 . . . . . . 14 m´ todo Pol´gonos de in- e ı 3. R-Script en Linux del tema 3 . 22 fluencia . . . . . . . . . . . . 29 4. R-Script en Windows del te- 10. Funciones para imprimir ma 3 . . . . . . . . . . . . . . 23 variogramas . . . . . . . . . . 36 5. R-Script del tema 4 . . . . . . 27 6. Script para GRASS . . . . . . 27 11. R-Script del tema 5 . . . . . . 36 7. Script para ps.map del 12. R-Script del tema 6 . . . . . . 44 m´ todo IDW . . . . . . . . . e 28 13. R-Script del tema 8 . . . . . . 56
    • 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 tambi´ n es capaz de realizar toda clase de graficos ´ e ´ 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. 1 http://www.gnu.org
    • 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 GRASS en 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 m´ todos deter- ´ e 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 m´ todo de pesos inver- ı ´ e 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 walker esta 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.
    • 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. 250 15 12 24 27 30 0 2 18 18 18 81 77 103 112 123 19 40 111 114 120 16 7 34 36 29 7 4 18 18 20 82 61 110 121 119 77 52 111 117 124 248 16 9 22 24 25 10 7 19 19 22 82 74 97 105 112 91 73 115 118 129 21 8 27 27 32 4 10 15 17 19 88 70 103 111 122 64 84 105 113 123 246 21 18 20 27 29 19 7 16 19 22 89 88 94 110 116 108 73 107 118 127 Y 15 16 16 23 24 25 7 15 21 20 77 82 86 101 109 113 79 102 120 121 244 14 15 15 16 17 18 14 6 28 25 74 80 85 90 97 101 96 72 128 130 14 15 15 15 16 17 13 2 40 38 75 80 83 87 94 99 95 48 139 145 242 16 17 11 29 37 55 11 3 34 35 77 84 74 108 121 143 91 52 136 144 22 28 4 32 38 20 0 14 31 34 87 100 47 111 124 109 0 98 134 144 12 14 16 18 20 X Figura 1: Distribucion de U y V ´ e a ´ 1.2. M´ todos gr´ ficos para la descripcion univariada El m´ todo grafico mas utilizado es el histograma, en el que debemos integrar la e ´ ´ 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.
    • Modelizacion geoestad´stica con R ´ ı 7 17 16 15 14 14 14 12 12 11 10 Frequency 8 6 4 4 3 3 2 2 2 1 1 1 0 0 0 50 100 150 V Figura 2: Histograma de V 100 80 Frecuencia acumulada 60 40 20 0 0 10 20 30 40 50 60 70 80 90 100 120 140 Variable Figura 3: Histograma acumulado de V 1.0 0.8 Probabilidad acumulada 0.6 0.4 0.2 0.0 0 50 100 150 V Figura 4: Grafico de probabilidad uniforme de V ´
    • Modelizacion geoestad´stica con R ´ ı 8 2 Theoretical Quantiles 1 0 −1 −2 0 50 100 150 Sample Quantiles Figura 5: Grafico de probabilidad normal ´ 2 Theoretical Quantiles 1 0 −1 −2 3.0 3.5 4.0 4.5 5.0 Sample Quantiles Figura 6: Grafico de probabilidad lognormal ´
    • Modelizacion geoestad´stica con R ´ ı 9 1.3. M´ todos num´ ricos e e ´ 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. V 0 50 100 150 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 %"])
    • 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 ı ´ 1 n n i=1 (xi − m)3 CS = (1) σ3 El coeficiente de curtosis o apuntalamiento se calcula como n (xi −m)4 i=1 n K= −3 (2) σ4 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 25 dev.off() ´ 26 1 #TEMA 1 - DESCRIPCION UNIVARIADA 27 #Discretizar V para hallar frecuencias 2 ps.options(family="Bookman",pointsize 28 lsecV<-length(secV) =15) 29 cutV<-cut(V,secV) 3 rm(list=ls()) 30 tcutV<-table(cutV) 4 31 #Obtener las frecuencias acumuladas 5 #Cargar wle y redondearlo 32 sumfreq<-rep(0,length(secV)) 6 wle<-read.delim2("walker10.asc") 33 for (i in 1:lsecV){ sumfreq[i]<-length(V 7 wle<-round(wle,0) [V<secV[i]])} 8 34 #Imprimir el histograma 9 #Adjuntar los datos de wle para acceder 35 postscript("imgs/01/histAcumV.ps") directamente 36 barplot(sumfreq,xlab="Variable",ylab=" 10 attach(wle) Frecuencia acumulada",names.arg=secV 11 ) 12 #Ver los datos U y V 37 dev.off() 13 postscript("imgs/01/UyV.ps") 38 14 plot(X,Y,xlim=c(min(X),max(X)*1.01),ylim 39 #Gr´fico de probabilidad acumulada a =c(min(Y)*.999,max(Y)*1.001),pch=3) 40 postscript("imgs/01/probUnif.ps") 15 text(X+.3,Y+.2,U) 41 plot.ecdf(V,pch=1,xlab="V",ylab=" 16 text(X+.3,Y-.2,V) Probabilidad acumulada",main="") 17 dev.off() 42 dev.off() 18 43 19 #Mostrar el histograma de V 44 #Gr´fico de probabilidad normal y a 20 secV<-seq(0,150,10) lognormal 21 postscript("imgs/01/histV.ps") 45 postscript("imgs/01/probNormal.ps") 22 hist(V,breaks=secV, labels=TRUE, col=" 46 qqnorm(V,datax=TRUE,pch=3,main=""); lightgray", axes=FALSE,main="") qqline(V,datax=TRUE) 23 axis(2,at=seq(0,18,2)) 47 dev.off() 24 axis(1,at=seq(0,150,50))
    • Modelizacion geoestad´stica con R ´ ı 11 48 62 print(as.numeric(cuantiles["75 %"]- 49 logV<-log(V)[is.finite(log(V))] cuantiles["25 %"])) 50 postscript("imgs/01/probLogNormal.ps") 63 51 qqnorm(logV,datax=TRUE,pch=3,main=""); 64 #Diagrama de caja y bigotes de V qqline(logV,datax=TRUE) 65 postscript("imgs/01/cajaybig.ps") 52 dev.off() 66 boxplot(V,horizontal=TRUE,col="lightgray 53 ",ylab="V") 54 #Medidas de localizaci´n, dispersi´n, o o 67 dev.off() etc 68 55 media<-mean(V) 69 #Medidas de forma: sesgo, apuntalamiento 56 dt<-var(V) y variaci´n o 57 print("Cuartiles") 70 print("Sesgo, apuntalamiento y variaci´n o 58 print(cuantiles<-quantile(V,seq(0,1,.25) ") )) 71 print(CS<-sum((V-media)ˆ3)/(length(V)*dt 59 print("Varianza, desviaci´n t´pica y o ı ˆ3)) rango intercuart´lico") ı 72 print(K<-sum((V-media)ˆ4/length(V))/dt 60 print(dtˆ2) ˆ4-3) 61 print(dt) 73 print(CV<-dt/media)
    • Modelizacion geoestad´stica con R ´ ı 12 ´ Tema 2 Descripcion bivariada 2.1. M´ todos gr´ ficos e a La visualizacion de pares de histogramas y sobre todo de graficos de caja y bigotes ´ ´ ( 8)pueden aportar informacion de como son dos variables. ´ ´ U Variables V 0 50 100 150 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. 100% 50 U=V 40 30 U 75% 20 50% 25% 10 Cuartiles 0% 0 0 50 100 150 V 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 ´
    • Modelizacion geoestad´stica con R ´ ı 13 pueden ser susceptibles de ser eliminados. 50 40 30 U 20 10 0 0 50 100 150 V Figura 10: Grafico de dispersion ´ ´ 2.2. M´ todos num´ ricos e e 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). ´ 1 n n i=1 (xi− mx ) (yi − my ) ρ= (3) σx · σy 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 m´ todo. ´ e 1 n n i=1 (Rxi − mRx ) (Ryi − mRy ) ρOrden = (4) σRx · σRy > cov(U,V);cor(U,V,method="pearson");cor(U,V,method="spearman") [1] 218.2778 [1] 0.8393395 [1] 0.8576604
    • Modelizacion geoestad´stica con R ´ ı 14 2.3. Scripts Listado 2: R-Script del tema 2 (U,seq(0,1,.05)),pch=21,bg=" lightgray") ´ 1 #TEMA 2 - DESCRIPCION BIVARIADA 23 points(quantile(V,seq(0,1,.25)),quantile 2 ps.options(family="Bookman",pointsize (U,seq(0,1,.25)),pch=21,bg="white") =15) 24 # Texto en los cuartiles 3 rm(list=ls()) 25 text(quantile(V,seq(0,1,.25))-2,quantile 4 (U,seq(0,1,.25))+2,c("0 %","25 %","50 % 5 #Cargar wle y redondearlo ","75 %","100 %")) 6 wle<-read.delim2("walker10.asc") 26 # Linea con U=V y su texto 7 wle<-round(wle,0) 27 lines(c(0,150),c(0,150),type="l") 8 28 text(60,50,"U=V") 9 #Adjuntar los datos de wle para acceder 29 # Leyenda directamente 30 legend(100,8,c("Cuartiles"),bg="white", 10 attach(wle) pch=21) 11 31 dev.off() 12 #Diagrama de caja y bigotes de V y U 32 13 postscript("imgs/02/cajaybig.ps") 33 #Diagramas de dispersi´n o 14 boxplot(data.frame(V,U),horizontal=TRUE, 34 postscript("imgs/02/dispers.ps") col="lightgray",ylab="Variables", 35 plot(V,U,pch=21,bg="lightgray") boxwex=0.5) 36 dev.off() 15 dev.off() 37 16 38 #Covarianza y coeficientes de 17 # Diagrama qqplot correlaci´n o 18 postscript("imgs/02/qqnorm.ps") 39 print("Covarianza y coeficiente de 19 # Dibuja s´lo los ejes o correlaci´n de Pearson y de Spearman o 20 qqplot(V,U,xlab="V",ylab="U",las=1,xlim= ") c(-1,148),ylim=c(0,57),type="n") 40 print(covar<-cov(U,V)) 21 # Dibuja los puntos por cuantiles del 5 % 41 print(rho<-cor(U,V,method="pearson")) y los cuartiles 42 print(spear<-cor(U,V,method="spearman")) 22 points(quantile(V,seq(0,1,.05)),quantile
    • 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. ´ ı ´ 250 81 77 103 112 123 19 40 111 114 120 82 61 110 121 119 77 52 111 117 124 248 82 74 97 105 112 91 73 115 118 129 88 70 103 111 122 64 84 105 113 123 246 89 88 94 110 116 108 73 107 118 127 77 82 86 101 109 113 79 102 120 121 Y 244 74 80 85 90 97 101 96 72 128 130 75 80 83 87 94 99 95 48 139 145 242 77 84 74 108 121 143 91 52 136 144 87 100 47 111 124 109 0 98 134 144 Máximos 240 Mínimos 12 14 16 18 20 X 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.
    • Modelizacion geoestad´stica con R ´ ı 16 140 120 248 100 246 80 Y 60 244 40 20 242 0 12 14 16 18 X Figura 12: Mapa graduado de color de V V 250 248 246 0 81.75 100.5 y 116.25 145 244 242 12 14 16 18 20 x Figura 13: Mapa graduado de tamano de V ˜
    • Modelizacion geoestad´stica con R ´ ı 17 Umbral = 73.375 Umbral = 81.75 140 140 120 120 248 248 100 100 246 80 246 80 Y Y 60 60 244 244 40 40 242 242 20 20 0 0 12 14 16 18 12 14 16 18 X X (a) Cuantil 12.5 % (b) Cuantil 25 % Umbral = 89.125 Umbral = 100.5 140 140 120 120 248 248 100 100 246 80 246 80 Y Y 60 60 244 244 40 40 242 242 20 20 0 0 12 14 16 18 12 14 16 18 X X (c) Cuantil 37.5 % (d) Cuantil 50 % Umbral = 109.875 Umbral = 116.25 140 140 120 120 248 248 100 100 246 80 246 80 Y Y 60 60 244 244 40 40 242 242 20 20 0 0 12 14 16 18 12 14 16 18 X X (e) Cuantil 62.5 % (f) Cuantil 75 % Figura 14: Mapas de indicadores
    • 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. ´ ´ 250 248 246 244 242 12 14 16 18 20 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 ´
    • Modelizacion geoestad´stica con R ´ ı 19 250 85.22 95.56 111.33 97.67 78.44 76.56 94.56 117.67 235.94 409.53 75.75 1095.75 1332.03 1165.53 955.28 35.5 85.22 94.67 111.11 102.44 88.22 85.78 98.67 117.22 248 255.19 443.25 72.86 428.53 616.94 468.19 553.25 53.69 87.22 94.67 107.78 104.33 93.67 91.11 100.67 117.22 111.69 220.5 79.94 300.25 459.75 342.86 353.25 68.19 86.33 93.89 105.78 106 96.44 92.78 100.11 115.11 246 90.25 186.86 122.94 281 457.78 320.44 299.61 76.86 Y 83.89 90.67 98.67 105 99.11 94.56 99.44 113.89 39.36 92.75 123.5 69.5 219.86 248.78 441.03 334.86 80.22 86 92.44 99 98.11 89.44 97.67 111.67 244 17.94 42.5 74.03 69.75 93.36 392.78 828.75 1042.25 79.11 85.67 93.22 104.44 104.11 88.56 95.22 110.44 18.61 91.25 199.44 311.53 288.36 823.28 1163.69 1659.03 78.56 86 94.33 110.67 97.33 81.67 88.11 115.56 242 201.78 377.5 611.5 289.25 1628.25 1753 2227.36 1588.03 12 14 16 18 20 X Figura 16: Media y varianza en ventana de 3x3 2000 ρ = −0.11 1500 varianza 1000 500 0 80 90 100 110 media Figura 17: Grafico de dispersion de media y varianza ´ ´
    • 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). ´ ´ h=1 h=2 140 140 120 120 ρ = 0.74 ρ = 0.59 100 100 V(t) V(t) 80 80 60 60 40 40 x=y x=y 20 20 0 50 100 150 0 50 100 150 V(t+h) V(t+h) h=3 h=4 120 ρ = 0.48 120 ρ = 0.56 100 100 80 80 V(t) V(t) 60 60 40 40 x=y x=y 20 20 0 50 100 150 0 50 100 150 V(t+h) V(t+h) 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: N (h) 1 γ(h) = (vi − vi+h )2 (5) 2N (h) i=1 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
    • Modelizacion geoestad´stica con R ´ ı 21 h=1 h=2 140 140 120 120 100 100 ρ = 0.21 ρ = −0.41 80 80 V(t) V(t) 60 60 40 40 x=y x=y 20 20 0 0 0 50 100 150 0 50 100 150 V(t+h) V(t+h) h=3 h=4 140 140 120 120 100 100 ρ = −0.35 ρ = 0.3 80 V(t) V(t) 80 60 60 40 x=y 40 20 x=y 20 0 0 50 100 150 0 50 100 150 V(t+h) V(t+h) Figura 19: h-Scatterplots de direccion E-W ´ h=1 h=2 40 50 30 x=y 40 30 x=y U(t) U(t) ρ = 0.45 20 ρ = 0.6 20 10 10 0 0 0 50 100 150 0 50 100 150 V(t+h) V(t+h) h=3 h=4 35 35 30 30 x=y x=y 25 25 ρ = 0.36 ρ = 0.28 20 20 U(t) U(t) 15 15 10 10 5 5 0 0 0 50 100 150 0 50 100 150 V(t+h) V(t+h) Figura 20: h-Scatterplots cruzado de U y V en direccion N-S ´
    • Modelizacion geoestad´stica con R ´ ı 22 Listado 3: R-Script en Linux del tema 3 48 postscript("imgs/03/indics %02d.ps", onefile=FALSE) 49 for (i in 1:length(sec2)){ ´ 1 #TEMA 3 : DESCRIPCION ESPACIAL 50 tit<-as.expression(substitute( 2 ps.options(family="Bookman",pointsize Umbral==p,list(p=sec2[i]))) =15) 51 lv<-levelplot(V˜X*Y,wle,col. 3 rm(list=ls()) regions=c("lightgray","white 4 "),at=c(min(V),sec2[i],max(V 5 #Cargar paquetes )),main=tit); 6 library(lattice) 52 print(lv) 7 library(gstat) 53 } 8 54 dev.off() 9 #Cargar wle y redondearlo 55 10 wle<-read.delim2("walker10.asc") 56 11 wle<-round(wle,0) 57 # Mapas de isol´neas y de superficies ı 12 interpoladas en Windows 13 #Adjuntar los datos de wle para acceder 58 directamente 59 #Conseguir una matriz con los valores de 14 attach(wle) V 15 60 imgV<-xyz2img(wle,"V",2,1) 16 #Gr´fico de V con m´ximos y m´nimos a a ı 61 matVtemp<-imgV$z 17 #Obtener los 10 valores m´ximos y a 62 matV<-matVtemp*0 m´nimos ı 63 m<-dim(matVtemp)[1] 18 Vmax=sort(V)[90:100][1] 64 n<-dim(matVtemp)[2] 19 Vmin=sort(V)[1:10][10] 65 for(i in 1:m){for(j in 1:n){matV[i,j]<- 20 dfVmax= subset(wle,V>=Vmax) matVtemp[m+1-i,j] }} 21 dfVmin= subset(wle,V<=Vmin) 66 22 #Ya se puede hacer el dibujo 67 imgV2<-list(sort(imgV$y),sort(imgV$x, 23 postscript("imgs/03/maxmin.ps") decreasing=TRUE),matV) 24 plot(X,Y,pch=3,xlim=c(11,20.2),ylim=c 68 names(imgV2)<-c("x","y","z") (239.5,250.5)) 69 25 text(X+0.2,Y+0.2,V) 70 #Calcular una media y varianza 3x3 26 points(dfVmax$X,dfVmax$Y,bg="black",pch 71 media3<-matV*0 =21) 72 var3<-media3 27 points(dfVmin$X,dfVmin$Y,bg="lightgray", 73 seqm<-seq(2,m-1) pch=21) 74 seqn<-seq(2,n-1) 28 legend(11,240.8,c("M´ximos","M´nimos"), a ı 75 pch=21,pt.bg=c("black","lightgray")) 76 for(i in seqm){ 29 dev.off() 77 for(j in seqn){ 30 78 i1<-i-1; 31 #Gr´fico de s´mbolos graduados a ı 79 i2<-i+1; 32 postscript("imgs/03/simbs.ps") 80 j1<-j-1; 33 lv<-levelplot(V˜X*Y,wle,col.regions=gray 81 j2<-j+1; (seq(1,0.3,len=18)),aspect=mapasp( 82 matVtemp<-array(matV[i1: wle)) i2,j1:j2]); 34 print(lv) 83 media3[i,j]<-mean( 35 dev.off() matVtemp); 36 84 var3[i,j]<-var(matVtemp) 37 #Gr´fico de burbujas a 85 } 38 postscript("imgs/03/bubbles.ps") 86 } 39 # bub<-bubble(wle,1,2,"V",key.entries= 87 media3<-round(media3[seqm,seqn],2) quantile(V,seq(0,1,.25))) 88 var3<-round(var3[seqm,seqn],2) 40 bub<-bubble(wle,1,2,"V",fill=TRUE,pch 89 =21,key.entries=quantile(V,seq 90 #Mostrar resultados (0,1,.25))) 91 postscript("imgs/03/mediavar.ps") 41 print(bub) 92 plot(X,Y,pch=3) 42 dev.off() 93 for(i in seqm){ 43 94 for(j in seqn){ 44 #Mapas de indicadores (por 12.5 %, 25 %, 95 text(imgV2$x[i],imgV2$y[ 37.5 %, 50 %, 62.5 %, 75 %) j]+0.25,media3[j-1,i 45 # sec2<-quantile(V,c -1]); (12.5,25,37.5,50,62.5,75)/100) 96 text(imgV2$x[i],imgV2$y[ 46 sec1<-seq(0.125,.75,.125) j]-0.25,var3[j-1,i 47 sec2<-quantile(V,sec1)
    • Modelizacion geoestad´stica con R ´ ı 23 -1]) 139 lines(c(0,150),c(0,150));text 97 } (40,30,"x=y"); 98 } 140 text(10,90,as.expression( 99 dev.off() substitute(rho==ro,list(ro= 100 round(cor(matV1,matV2),2)))) 101 #Gr´fico de media contra varianza 3x3 a ) 102 postscript("imgs/03/mediavar2.ps") 141 title(as.expression(substitute(h 103 media<-array(media3,dim=64) ==hh,list(hh=h)))) 104 varianza<-array(var3,dim=64) 142 } 105 plot(media,varianza,pch=21,bg="lightgray 143 dev.off() ",xlab="media",ylab="varianza") 144 106 text(105,2000,as.expression(substitute( 145 #Continuidad espacial en V cruzado con U rho==ro,list(ro=round(cor(media, 146 imgU<-xyz2img(wle,"U",2,1) varianza),2))))) 147 matUtemp<-imgU$z 107 dev.off() 148 matU<-matUtemp*0 108 149 m<-dim(matUtemp)[1] 109 150 n<-dim(matUtemp)[2] 110 #Continuidad espacial en V 151 for(i in 1:m){for(j in 1:n){matU[i,j]<- 111 #NS matUtemp[m+1-i,j] }} 112 postscript("imgs/03/V-NS %02d.ps",onefile 152 =FALSE) 153 #NS 113 for(i in 1:4){ 154 postscript("imgs/03/VU-NS %02d.ps", 114 h<-i; onefile=FALSE) 115 fil1<-seq(1+h,m); 155 for(i in 1:4){ 116 col1<-seq(1,n); 156 h<-i; 117 matV1<-array(matV[fil1,col1],dim 157 fil1<-seq(1+h,m); =length(fil1)*length(col1)); 158 col1<-seq(1,n); 118 fil2<-seq(1,m-h); 159 matV1<-array(matV[fil1,col1],dim 119 col2<-seq(1,n); =length(fil1)*length(col1)); 120 matV2<-array(matV[fil2,col2],dim 160 fil2<-seq(1,m-h); =length(fil2)*length(col2)); 161 col2<-seq(1,n); 121 plot(matV1,matV2,xlab="V(t+h)", 162 matU2<-array(matU[fil2,col2],dim ylab="V(t)"); =length(fil2)*length(col2)); 122 lines(c(0,150),c(0,150));text 163 plot(matV1,matU2,xlab="V(t+h)", (40,30,"x=y"); ylab="U(t)"); 123 text(40,120,as.expression( 164 lines(c(0,150),c(0,150));text substitute(rho==ro,list(ro= (40,30,"x=y"); round(cor(matV1,matV2),2)))) 165 text(10,20,as.expression( ) substitute(rho==ro,list(ro= 124 title(as.expression(substitute(h round(cor(matV1,matU2),2)))) ==hh,list(hh=h)))) ) 125 } 166 title(as.expression(substitute(h 126 dev.off() ==hh,list(hh=h)))) 127 167 } 128 #EW 168 dev.off() 129 postscript("imgs/03/V-EW %02d.ps",onefile =FALSE) 130 for(i in 1:4){ Listado 4: R-Script en Windows del tema 3 131 h<-i; 1 orden<-6 132 fil1<-seq(1,m); 2 V.ls<-surf.ls(orden,wle$X,wle$Y,wle$V) 133 col1<-seq(1+h,n); 3 V.tr<-trmat(V.ls,11,20,241,250,150) 134 matV1<-array(matV[fil1,col1],dim 4 =length(fil1)*length(col1)); 5 ps.options(family="Bookman",pointsize 135 fil2<-seq(1,m); =15) 136 col2<-seq(1,n-h); 6 postscript("imgs/03/interp.ps") 137 matV2<-array(matV[fil2,col2],dim 7 image(V.tr,col=gray(seq(0.93,0.3,l=50))) =length(fil2)*length(col2)); 8 contour(V.tr,add=TRUE,labcex=.8) 138 plot(matV1,matV2,xlab="V(t+h)", 9 dev.off() ylab="V(t)");
    • Modelizacion geoestad´stica con R ´ ı 24 ´ Tema 4 Estimacion. M´ todos deterministas e 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 gstat ´ y cargandose con ejecutar el comando data(walker). ´ 250 200 150 Y 100 50 50 100 150 200 250 X 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.rst que implementan el m´ todo de pol´gonos de influencia, el de pesos inversos a la dis- e ı 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 m´ todos. e 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 m´ todo de Pol´gonos de influencia es el que mejor mantiene e ı las caracter´sticas estad´sticas. ı ı
    • Leyenda on geoestad´stica con R Modelizaci ´ ı 25 1400 1400 1200 1200 1000 1000 Splines de a de distancia (T=100) Polígonos la influenciade V Inverso Tensión de V de V 800 800 Escala 600 0 50 400 400 200 200 Equidistancia de curvas = 250ppm 0 0 100 200 200 100 Figura 22: Mapas generados por GRASS
    • 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.51 Q1 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 Q3 428.30 425.90 428.50 379.50 Max. ´ 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´ todo de Splines de tension ofrece resultados negativos pese a calcularse e ´ con un valor de tension alto (100). ´ Cabe destacar la diferencia entre los m´ todos estad´sticos y wlc en el apuntala- e ı miento, claramente observable en los histogramas. WLC Vor 25000 20000 20000 15000 15000 Frecuencia Frecuencia 10000 10000 5000 5000 0 0 0 500 1000 1500 0 500 1000 1500 V V IDW RST 15000 15000 10000 Frecuencia Frecuencia 10000 5000 5000 0 0 0 500 1000 1500 0 500 1000 1500 V V Figura 23: Histogramas de los conjuntos de datos
    • Modelizacion geoestad´stica con R ´ ı 27 4.1. Scripts Listado 5: R-Script del tema 4 ="Frecuencia") 49 hist(datos[[2]],main="Vor",xlab="V",ylab ´ 1 #TEMA 4 - ESTIMACION ="Frecuencia") 2 ps.options(family="Bookman",pointsize 50 hist(datos[[3]],main="IDW",xlab="V",ylab =15) ="Frecuencia") 3 rm(list=ls()) 51 hist(datos[[4]],main="RST",xlab="V",ylab 4 ="Frecuencia") 5 #Cargar los datos wlm 52 dev.off() 6 library(lattice) 7 library(gstat) 8 data(walker) Listado 6: Script para GRASS 9 wlm<-walker 1 # CREAR MAPA DE SPLINES 10 attach(wlm) 2 g.remove rast=splines vect=spcontour 11 3 v.surf.rst input=wle elev=splines 12 #Ver wlm zcolumn=u tension=100 13 postscript("imgs/04/wlm.ps") 4 r.contour input=splines output=spcontour 14 xy<-xyplot(Y˜X,wlm,pch=3,aspect=mapasp( step=250 wlm)) 5 r.colors map=splines rules=grey 15 print(xy) 6 16 dev.off() 7 17 8 # CREAR MAPA DE VORONOI 18 #Importar valores reales wlc 9 g.remove rast=rvorwle vect=clvorwle, 19 wlc<-read.csv("wlc.csv",sep=";",dec=".", vorwle header=TRUE) 10 v.voronoi input=wle ouput=vorwle 20 11 v.clean input=vorwle output=clvorwle 21 #Importar los valores estimados en GRASS type=boundary,line,centroid,area 22 idw<-read.csv(file="˜/geo/r/mapasgrass/ tool=break,rmdupl,snap idw.values.asc",sep="|") 12 g.region vect=clvorwle 23 vor<-read.csv(file="˜/geo/r/mapasgrass/ 13 r.colors map=rvorwle rast=splines voronoi.values.asc",sep="|") 14 24 splines<-read.csv(file="˜/geo/r/ 15 # CREAR MAPA IDW mapasgrass/splines.values.asc",sep=" 16 g.remove rast=idw vect=idwcontour |") 17 v.surf.idw input=wle output=idw col=u 25 18 r.colors map=idw rast=splines 26 # #Mostrar medias, varianzas y demas.... 19 r.contour input=idw output=idwcontour 27 Desv<-function(datos){sqrt(var(datos))} step=250 28 CS<-function(V){sum((V-mean(V))ˆ3)/( 20 length(V)*Desv(V)ˆ3)} 21 # GENERAR MAPAS PS 29 K<-function(V){sum((V-mean(V))ˆ4/length( 22 ps.map input=splines.psmap output= V))/Desv(V)ˆ4-3} splines.ps 30 CV<-function(V){Desv(V)/mean(V)} 23 ps.map input=voronoi.psmap output= 31 voronoi.ps 32 datos<-list(wlc$V,vor$value,idw$value, 24 ps.map input=idw.psmap output=idw.ps splines$value) 25 33 print("Resumen") 26 # EXPORTAR A CSV 34 print(lapply(datos,summary)) 27 r.to.vect input=idw output=idw feature= 35 print("Varianza") point #convertir a puntos 36 print(lapply(datos,var)) 28 r.to.vect input=splines output=splines 37 print("Desviaci´n T´pica") o ı feature=point #convertir a puntos 38 print(lapply(datos,Desv)) 29 r.to.vect input=rvorwle output=voronoi 39 print("Simetr´a") ı feature=point #convertir a puntos 40 print(lapply(datos,CS)) 30 41 print("Apuntalamiento") 31 echo "SELECT * FROM idw" | db.select > 42 print(lapply(datos,K)) idw.values.asc #valores 43 print("Coeficiente de Variaci´n") o 32 echo "SELECT * FROM splines" | db.select 44 print(lapply(datos,CV)) > splines.values.asc #valores 45 33 echo "SELECT * FROM voronoi" | db.select 46 postscript("imgs/04/hist %01d.ps",onefile > voronoi.values.asc #valores =FALSE) 34 47 # layout(matrix(1:4,2,2,byrow=TRUE)) 35 #v.out.ascii input=idw output=idw.coor. 48 hist(datos[[1]],main="WLC",xlab="V",ylab asc format=point # si quisieramos
    • Modelizacion geoestad´stica con R ´ ı 28 coordenadas 58 left 0.5 59 right 0.5 Listado 7: Script para ps.map del m´ todo e 60 bottom 0.5 61 top 0.5 IDW 62 end 1 grid 50 63 end 2 color black 3 numbers 2 black Listado 8: Script para ps.map del m´ todo e 4 end 5 vpoints wle RST 6 color black 1 grid 50 7 fcolor black 2 color black 8 size 1 3 numbers 2 black 9 label u 4 end 10 end 5 vpoints wle 11 vlines idwcontour 6 color black 12 color white 7 fcolor black 13 width 0.5 8 size 1 14 end 9 label u 15 raster idw 10 end 16 maploc 0.7 3 7 10 11 vlines spcontour 17 12 color white 18 13 width 0.5 19 rectangle 0 390 260 305 14 end 20 color black 15 raster splines 21 fcolor white 16 maploc 0.7 3 7 10 22 end 17 23 text 160 365 Inverso a la distancia 18 de V 19 rectangle 0 390 260 305 24 font Bookman 20 color black 25 size 10 21 fcolor white 26 end 22 end 27 text 20 385 Leyenda 23 text 160 365 Splines de Tensi´n de V o 28 font Bookman (T=100) 29 size 6 24 font Bookman 30 end 25 size 10 31 colortable y 26 end 32 where 2 0.7 27 text 20 385 Leyenda 33 raster idw 28 font Bookman 34 width 0.3 29 size 6 35 height 2 30 end 36 cols 6 31 colortable y 37 font Bookman 32 where 2 0.7 38 fontsize 8 33 raster splines 39 color black 34 width 0.3 40 end 35 height 2 41 text 160 320 Equidistancia de curvas 36 cols 6 = 250ppm 37 font Bookman 42 font Bookman 38 fontsize 8 43 size 6 39 color black 44 end 40 end 45 text 160 345 Escala 41 text 160 320 Equidistancia de curvas 46 font Bookman = 250ppm 47 size 6 42 font Bookman 48 end 43 size 6 49 scalebar f 44 end 50 where 5 2.1 45 text 160 345 Escala 51 length 50 46 font Bookman 52 height 0.05 47 size 6 53 segment 5 48 end 54 numbers 5 49 scalebar f 55 fontsize 8 50 where 5 2.1 56 end 51 length 50 57 paper a4 52 height 0.05
    • Modelizacion geoestad´stica con R ´ ı 29 53 segment 5 23 font Bookman 54 numbers 5 24 size 10 55 fontsize 8 25 end 56 end 26 text 20 385 Leyenda 57 paper a4 27 font Bookman 58 left 0.5 28 size 6 59 right 0.5 29 end 60 bottom 0.5 30 colortable y 61 top 0.5 31 where 2 0.7 62 end 32 raster rvorwle 63 end 33 width 0.3 34 height 2 Listado 9: Script para ps.map del m´ todo e 35 cols 6 Pol´gonos de influencia ı 36 font Bookman 37 fontsize 8 1 grid 50 38 color black 2 color black 39 end 3 numbers 2 black 40 text 160 345 Escala 4 end 41 font Bookman 5 vpoints wle 42 size 6 6 color black 43 end 7 fcolor black 44 scalebar f 8 size 1 45 where 5 2.1 9 end 46 length 50 10 vareas clvorwle 47 height 0.05 11 color black 48 segment 5 12 fcolor none 49 numbers 5 13 end 50 fontsize 8 14 raster rvorwle 51 end 15 maploc 0.7 3 7 10 52 paper a4 16 53 left 0.5 17 54 right 0.5 18 rectangle 0 390 260 305 55 bottom 0.5 19 color black 56 top 0.5 20 fcolor white 57 end 21 end 58 end 22 text 160 365 Pol´gonos de influencia ı de V
    • 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 anadi´ ndole los datos de trabajo. A continua- ˜ e 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 GSLIB ´ el 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 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 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=TRUE se 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 geom´ trica, mostrando los ı e ejes de maxima y m´nima continuidad. Este m´ todo puede ser util para una primera ´ ı e ´ 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 ´ ´
    • Modelizacion geoestad´stica con R ´ ı 31 1e+05 1e+05 8e+04 8e+04 Semivariograma Semivariograma 6e+04 6e+04 4e+04 4e+04 2e+04 2e+04 t=5 t = 10 0e+00 0e+00 0 20 40 60 80 100 20 40 60 80 100 Distancia Distancia 1e+05 1e+05 8e+04 8e+04 Semivariograma Semivariograma 6e+04 6e+04 4e+04 4e+04 2e+04 2e+04 t = 15 t = 20 0e+00 0e+00 20 40 60 80 100 20 40 60 80 100 Distancia Distancia Figura 24: Variogramas omnidireccionales (i)) 200000 180000 100 160000 50 140000 map.dy 120000 0 100000 −50 80000 60000 −100 40000 −100 −50 0 50 100 map.dx Figura 25: Mapa del variograma superficial
    • Modelizacion geoestad´stica con R ´ ı 32 100 50 map.dy 0 −50 −100 −100 −50 0 50 100 map.dx 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 num´ ri- ´ e 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. 80000 100000 1e+05 8e+04 Semivariograma Semivariograma 60000 6e+04 0 15 30 45 40000 4e+04 60 75 90 105 120 135 150 165 20000 2e+04 180 0e+00 0 20 40 60 80 100 20 40 60 80 100 Distancia Distancia Figura 27: Variogramas direccionales
    • Modelizacion geoestad´stica con R ´ ı 33 0 20 40 60 80 100 120 140 160 180 60 Distancia en lag = 4 50 40 30 0 20 40 60 80 100 120 140 160 180 Dirección 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. ´
    • Modelizacion geoestad´stica con R ´ ı 34 tol = 15 tol = 20 1e+05 80000 100000 424 696 613 608 1121 640 729 694 396 799 1481 902 588 537 8e+04 1092 1165 1473 1598 876 530 1254 754 587 829 1174 1637 903 464 828 1065 982 Semivariograma Semivariograma 483 6e+04 60000 487 704 303 458 4e+04 234 280 40000 90 90 160 115 160 2e+04 20000 73 0e+00 0 20 40 60 80 100 20 40 60 80 100 Distancia Distancia tol = 25 tol = 30 120000 1e+05 968 1062 822 891 1090 911 2100 783 1806 1006 2258 1295 1771 1071 1889 1296 1193 2052 8e+04 80000 1473 1115 1940 2302 1464 1151 1773 1392 985 1284 1089 503 585 1562 Semivariograma Semivariograma 6e+04 60000 883 1094 546 723 4e+04 305 40000 320 90 90 118 160 151 160 2e+04 20000 0e+00 0 20 40 60 80 100 20 40 60 80 100 Distancia Distancia Figura 29: Variogramas por tolerancias (i)
    • Modelizacion geoestad´stica con R ´ ı 35 tol = 35 tol = 40 1e+05 1e+05 1171 1368 1368 1520 2415 2728 1539 1816 1076 1383 2485 1146 2855 2365 1563 2656 1822 2941 1624 2677 8e+04 1624 1769 8e+04 1993 1582 2271 1884 1361 1513 744 1752 1904 895 Semivariograma Semivariograma 6e+04 1205 6e+04 1309 856 980 4e+04 4e+04 329 334 90 90 161 160 179 160 2e+04 2e+04 0e+00 0e+00 20 40 60 80 100 20 40 60 80 100 Distancia Distancia tol = 45 tol = 50 80000 100000 80000 100000 1502 1626 3002 3230 1812 2011 2146 2293 3103 3143 3354 2284 1362 1847 2949 1998 2072 3284 2050 2710 2228 3564 2439 2181 1627 1856 2476 1708 2255 2528 Semivariograma Semivariograma 1072 1209 1495 1716 60000 60000 1058 1114 40000 40000 343 359 90 90 203 230 160 160 20000 20000 0 0 20 40 60 80 100 20 40 60 80 100 Distancia Distancia Figura 30: Variogramas por tolerancias (ii) 5e+05 4e+05 3e+05 Semivariograma 2e+05 Cruzado 1e+05 85 160 0e+00 20 40 60 80 100 120 Distancia Figura 31: Variogramas cruzados
    • Modelizacion geoestad´stica con R ´ ı 36 5.5. Scripts Listado 10: Funciones para imprimir va- 41 for (i in 2:nvars){ riogramas 42 addvar(listvars[[i]],colores [i],seps2[i,1],seps2[i 1 #FUNCIONES PARA MOSTRAR VARIOGRAMAS ,2],nps) 2 #-------------Plotear el primer 43 } variograma 44 } 3 plotvar<-function(var,titulo,color,sepX, 45 #A˜adir la leyenda n sepY,limY,limX,nps){ 46 legend(posley[1],posley[2],etiqs, 4 plot(var$dist,var$gamma,type="b", colores) ylim=limY,xlim=limX,xlab=" 47 } Distancia",ylab="Semivariograma" ,col=color,main=titulo) 5 if (nps) text(var$dist+sepX,var$ Listado 11: R-Script del tema 5 gamma-sepY,var$np,col=color) 6 title(titulo) 1 #TEMA 5. CONTINUIDAD ESPACIAL 7 } 2 ps.options(family="Bookman",pointsize 8 =15) 9 #-------------A˜adir nuevos variogramas n 3 rm(list=ls()) 10 addvar<-function(var,color,sepX,sepY,nps 4 ){ 5 library(lattice) 11 points(var$dist,var$gamma,type="b", 6 library(gstat) col=color) 7 12 if (nps) text(var$dist+sepX,var$ 8 #A˜adir las funciones programadas n gamma-sepY,var$np,col=color) 9 source("Variogramas.R") 13 } 10 14 11 #------------- 15 #-------------Funci´n principal de o 12 grafiado 13 #Cargar los datos wlm 16 pintavars<-function(listvars,colores, 14 data(walker) etiqs,seps,titulo,posley,nps=FALSE){ 15 wlm<-walker 17 #Obtener los l´mites ı 16 attach(wlm) 18 nvars<-length(listvars) 17 19 maxtemp<-array(0,nvars) # Crear el objeto gstat 18 20 for (i in 1:nvars){ gstatV<-gstat(id="V",formula=V˜1, 19 21 maxtemp[i]<-max(listvars[[i]]$ locations=˜X+Y,data=wlm) gamma) 20 22 } 21 #Obtener variogramas omni. a varias 23 limY<-c(0,max(maxtemp)*1.1) distancias 24 22 secDists<-c(5,10,15,20) 25 maxtempA<-array(0,nvars) 23 colores<-c("red","green","blue") 26 maxtempB<-array(0,nvars) 24 postscript("imgs/05/omni %1d.ps",onefile= 27 for (i in 1:nvars){ FALSE) 28 maxtempA[i]<-min(listvars[[i]]$ 25 for (i in 1:length(secDists)){ dist); 26 si<-secDists[i]; 29 maxtempB[i]<-max(listvars[[i]]$ 27 letra<-as.character(si); dist) 28 varOmni<-variogram(gstatV,width=si, 30 } cutoff=101) 31 limX<-c(min(maxtempA),max(maxtempB)* 29 pintavars(list(varOmni),"black",as. 1.1) expression(substitute(t==sii, 32 list(sii=si))),c(3,4000),"",c 33 #Generar la matriz de separaciones (40,2e4)) 34 seps2<-matrix(seps,ncol=2,byrow=TRUE 30 } ) 31 dev.off() 35 32 36 #Pintar el primer variograma 33 #Obtener el mapa superficial 37 plotvar(listvars[[1]],titulo,colores 34 varOmni.map<-variogram(gstatV,width=10, [1],seps2[1,1],seps2[1,2],limY, cutoff=150,map=TRUE) limX,nps) 35 varOmni.map.df<-as.data.frame(varOmni. 38 map) 39 if (nvars>=2){ 36 postscript("imgs/05/omnimap1.ps") 40 #A˜adir el resto n 37 grises<-grey(seq(0.99,0.3,l=30))
    • Modelizacion geoestad´stica con R ´ ı 37 38 lp<-levelplot(map.V˜map.dx*map.dy, 84 } varOmni.map.df,col.regions=grises, 85 npMat<-cbind(grad,dist4) aspect=mapasp(varOmni.df)) 86 postscript("imgs/05/ejes.ps") 39 print(lp) 87 plot(npMat,type="b",pch=21,bg="lightgray 40 dev.off() ",xlab="Direcci´n",ylab="Distancia o 41 postscript("imgs/05/omnimap2.ps") en lag = 4",axes=FALSE) 42 cp<-contourplot(map.V˜map.dx*map.dy, 88 axis(1,at=seq(0,180,10),labels=FALSE); varOmni.map.df,labels=FALSE,cuts=7, axis(1,at=seq(0,180,20)) aspect=mapasp(varOmni.df)) 89 axis(3,at=seq(0,180,10),labels=FALSE); 43 print(cp) axis(3,at=seq(0,180,20)) 44 dev.off() 90 axis(2);box() 45 91 dev.off() 46 #Crear familias de variogramas por 92 direcciones 93 47 sec<-seq(0,180,5) 94 #Crear familias de variogramas por 48 separaciones<-rep(c(4,2000),length(sec)) tolerancias 49 posleyenda<-c(60,60000) 95 sec<-c(90,160) 50 varsDirs<-list() 96 lsec<-as.character(sec) 51 varsDirsP1<-list();sec1<-list() 97 tols<-seq(15,50,5) 52 varsDirsP2<-list();sec2<-list() 98 colores<-c("red","green") 53 for (j in 1:length(sec)){ 99 separaciones<-rep(c(4,2000),length(sec)) 54 sj<-sec[j] 100 posleyenda<-c(60,40000) 55 letra<-as.character(sj) 101 postscript("imgs/05/tols %1d.ps",onefile= 56 varsDirs[[letra]]<-variogram(gstatV, FALSE) width=10,cutoff=100,alpha=sj,tol 102 for (i in 1:length(tols)){ .hor=40) 103 vars<-list() 57 if (!sj % % 30) { 104 #Sengudo bucle por direcciones 58 varsDirsP1[[letra]]<-varsDirs[[ 105 for (j in 1:length(sec)){ letra]]; 106 sj<-sec[j];letra<-as.character( 59 sec1[[letra]]<-letra sj) 60 } 107 vars[[letra]]<-variogram(gstatV, 61 if (!sj % % && sj % % 15 30) { width=10,cutoff=100,alpha=sj 62 varsDirsP2[[letra]]<-varsDirs[[ ,tol.hor=tols[i]) letra]]; 108 } 63 sec2[[letra]]<-letra 109 letrat<-as.expression(substitute(tol 64 } ==t,list(t=tols[i]))) 65 } 110 pintavars(vars,colores,lsec, 66 postscript("imgs/05/dirs %1d.ps",onefile= separaciones,letrat,posleyenda, FALSE) TRUE) 67 pintavars(varsDirsP1,rainbow(length(sec1 111 } )),as.character(sec1),separaciones," 112 dev.off() ",posleyenda) 113 68 pintavars(varsDirsP2,rainbow(length(sec2 114 #Variogramas cruzados )),as.character(sec2),separaciones," 115 #Para la U hay que eliminar ",posleyenda) localizaciones sin dato 69 dev.off() 116 wlm2<-subset(wlm,!is.na(U)) 70 117 gVU<-gstat(id="V",formula=V˜1,locations= 71 #Buscar direcciones de los ejes de ˜X+Y,data=wlm) anisotrop´a ı 118 gVU<-gstat(gVU,id="U",formula=U˜1, 72 nVars<-length(varsDirs) locations=˜X+Y,data=wlm2) 73 grad<-sec 119 #Ver los variogramas 74 dist4<-rep(0,nVars) 120 separaciones<-rep(c(4,2000),3) 75 yc<-90000 121 posleyenda<-c(60,150000) 76 for (i in 1:nVars){ 122 colores<-c("black","red","green") 77 j<-1; 123 etiqs<-c("Cruzado","85","160") 78 while(varsDirs[[i]]$gamma[j]<yc){j<- 124 varsCruz<-list() j+1}; 125 varsCruz[[1]]<-subset(variogram(gVU, 79 y2<-varsDirs[[i]]$gamma[j]; width=10),id=="V.U") 80 y1<-varsDirs[[i]]$gamma[j-1]; 126 varsCruz[[2]]<-subset(variogram(gVU, 81 x2<-varsDirs[[i]]$dist[j]; width=10,alpha=85,tol.h=40),id=="V.U 82 x1<-varsDirs[[i]]$dist[j-1]; ") 83 dist4[i]<-(yc-y1)*(x2-x1)/(y2-y1) + 127 varsCruz[[3]]<-subset(variogram(gVU, x1 width=10,alpha=160,tol.h=40),id=="V.
    • Modelizacion geoestad´stica con R ´ ı 38 U") 130 dev.off() 128 postscript("imgs/05/cross.ps") 129 pintavars(varsCruz,colores,etiqs, separaciones,"",posleyenda)
    • 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, esf´ rico, gaussiano) y muchos mas. Para e ´ verlos, basta con ejecutar la orden show.vgms() 0.0 0.5 1.0 1.5 2.0 2.5 3.0 0.0 0.5 1.0 1.5 2.0 2.5 3.0 vgm(1,"Nug",0) vgm(1,"Exp",1) vgm(1,"Sph",1) vgm(1,"Gau",1) vgm(1,"Exc",1) 3 2 1 0 vgm(1,"Mat",1) vgm(1,"Cir",1) vgm(1,"Lin",0) vgm(1,"Bes",1) vgm(1,"Pen",1) 3 2 1 semivariance 0 vgm(1,"Per",1) vgm(1,"Hol",1) vgm(1,"Log",1) vgm(1,"Pow",1) vgm(1,"Spl",1) 3 2 1 0 vgm(1,"Err",0) vgm(1,"Int",0) 3 2 1 0 0.0 0.5 1.0 1.5 2.0 2.5 3.0 distance 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 esf´ rico bastar´a con indicar la me- e ı 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 150 2 Nug 22000 0 3 Sph 40000 30
    • Modelizacion geoestad´stica con R ´ ı 40 80000 Semivariograma 60000 40000 20000 20 40 60 80 100 Distancia Figura 33: Modelos esf´ rico de rango 30 y meseta parcial de 92000ppm e 80000 Semivariograma 60000 40000 20000 20 40 60 80 100 Distancia Figura 34: Modelos de variograma combinados
    • 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 6 variograms: model psill range V[1] Nug 186.3867 0.00000 V[2] Exp 93809.2943 12.01007 80000 Semivariograma 60000 40000 20000 20 40 60 80 100 Distancia 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 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)
    • 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 GeoR ademas 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 tambi´ n ajusta por m´nimos cuadrados el modelo de variogra- ´ e ı ma de forma analoga a gstat aunque algo mas simple, pasando unicamente un ´ ´ ´ valor de meseta, un rango y un m´ todo (fig. 38 en la pagina siguiente). En este e ´ 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: 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
    • Modelizacion geoestad´stica con R ´ ı 43 300 300 250 250 150 200 150 200 Coord Y Y Coord 100 100 50 50 0 0 0 50 100 150 200 250 0 500 1000 1500 X Coord data 1500 100 1000 40 60 80 Frequency data 500 20 0 0 0 50 100 150 200 250 0 500 1000 1500 Coord X data Figura 37: Descripcion de geoR del conjunto de datos ´ 1e+05 8e+04 6e+04 Semivariograma 4e+04 2e+04 0e+00 0 20 40 60 80 100 Distancia Figura 38: Modelo ajustado por geoR
    • Modelizacion geoestad´stica con R ´ ı 44 6.2. Scripts Listado 12: R-Script del tema 6 31 var<-variogram(g["V"],alpha=160,tol.h =40,width=10) ´ 1 # TEMA 6 MODELIZACION DEL VARIOGRAMA 32 print(plot(var,model=m,xlab="Distancia", 2 ps.options(family="Bookman",pointsize ylab="Semivariograma",pch=3,bg="grey =15) ")) 3 rm(list=ls()) 33 dev.off() 4 34 5 library(lattice) 35 #Ajustar al variograma omnidireccional 6 library(gstat) de V, un modelo ajustado "a ojo" 7 36 m<-vgm(72e3,"Exp",15,22e3) 8 #A˜adir las funciones programadas n 37 mfit<-fit.variogram(variogram(g["V"], 9 source("Variogramas.R") width=10),m) 10 38 g<-gstat(g,id="V",model=mfit) 11 #Cargar los datos wlm 39 print(g) 12 data(walker) 40 postscript("imgs/06/mfitV.ps") 13 wlm<-walker;rm(walker) 41 print(plot(variogram(g["V"]),model=g$ 14 attach(wlm) model$V,xlab="Distancia",ylab=" 15 # Crear el objeto gstat Semivariograma",pch=3,bg="grey")) 16 g<-gstat(id="V",formula=V˜1,locations=˜X 42 dev.off() +Y,data=wlm) 43 17 44 # #Usando geoR para estimar y ajustar el 18 #Ver modelos de variograma variograma 19 postscript("imgs/06/modelos.ps") 45 library(geoR) 20 print(show.vgms()) 46 geoV<-as.geodata(wlm,2:3,4) 21 dev.off() 47 postscript("imgs/06/geoV.ps") 22 48 plot(geoV) 23 #Modelo esf´rico e 49 dev.off() 24 postscript("imgs/06/esferico.ps") 50 vario.b<-variog(geoV,max.dist=100,breaks 25 print(plot(variogram(g["V"]),model=vgm =seq(0,130,10)) (92000,"Sph",30),xlab="Distancia", 51 # vario.m<-eyefit(vario.b) ylab="Semivariograma",pch=3,bg="grey 52 vario.m2<-variofit(vario.b,c(93809,12), ")) cov.model="exponential") 26 dev.off() 53 postscript("imgs/06/geoVfit.ps") 27 54 plot(vario.b,pch=21,bg="grey",xlab=" 28 #A˜adir diferentes modelos. n Distancia",ylab="Semivariograma"); 29 postscript("imgs/06/imbr.ps") lines(vario.m2) 30 m<-vgm(40e3,"Sph",30,add.to=vgm(22000," 55 dev.off() Nug",add.to=vgm(45e3,"Sph",150)))
    • Modelizacion geoestad´stica con R ´ ı 45 Tema 8 Kriging Denotado en la literatura en espanol como ((krigeado)), este conjunto de m´ todos ˜ e desarrollado por Denis Krige en los anos 50 del sigo XX es el m´ todo geoestad´stico ˜ e ı mas ampliamente aceptado. El fin ultimo del estudio y modelizacion del variograma ´ ´ ´ es su aplicacion en este m´ todo para el calculo del valor de la variable en puntos ´ e ´ arbitrarios (generalmente una malla regular) mediante esta familia de m´ todos. e 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. 1600 5000 1400 250 250 4000 1200 200 200 1000 3000 800 Y Y 150 150 600 2000 100 100 400 1000 50 50 200 0 0 50 100 150 200 50 100 150 200 X X (a) V (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 sim´ tricas ( 40 en la ˜ e pagina siguiente). ´
    • Modelizacion geoestad´stica con R ´ ı 46 30000 29491 25000 20000 Frecuencia 15587 15000 12274 10000 8762 5000 4409 3190 1900 1128 30 150 610 326 99 29 8 6 2 0 −500 0 500 1000 Error 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 m´ todos (42). e 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 tambi´ n un numero m´nimo (nmin) y el numero de puntos loca- e ´ ı ´ lizados por maxdist es menor, se genera un valor nulo.
    • Modelizacion geoestad´stica con R ´ ı 47 30000 30154 25000 20000 Frecuencia 15624 15000 11348 10000 8874 5000 4405 3206 1919 618 1160 22 142 383 101 29 8 6 2 0 −500 0 500 1000 Error Figura 41: Error del Krigeado universal 30000 29782 25000 20000 Frecuencia 15000 15307 11473 10000 9198 5000 4673 3318 1869 1207 16 111 584 335 89 26 6 5 2 0 −500 0 500 1000 Error Figura 42: Error del Krigeado universal por bloques
    • Modelizacion geoestad´stica con R ´ ı 48 Si se utilizan los parametros nmax y distmax operan ambos criterios ´ Este m´ todo tambi´ n se puede combinar con el krigeado ordinario o universal y e e 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) 30000 29782 25000 20000 Frecuencia 15000 15307 11473 10000 9198 5000 4673 3318 1869 1207 16 111 584 335 89 26 6 5 2 0 −500 0 500 1000 Error 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 tambi´ n los valores de la otra. Este principio es el que utiliza el e 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´ todo. Ademas impone algunas res- e ´ 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 gstat y se anaden las localizaciones, a continuacion se anaden los tres modelos iniciales. ˜ ´ ˜ Despu´ s, con el comando fit.lmc se genera el modelo de corregionalizacion lineal e ´ ajustado. Se obtiene tambi´ n el variograma experimental del objeto gstat (el cual e 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. ´
    • Modelizacion geoestad´stica con R ´ ı 49 #Crear el objeto gstat y a˜adir las localizaciones n g<-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 modelos mv<-vgm(72e3,"Exp",15,22e3) mu<-vgm(26e4,"Exp",15,26e4) muv<-vgm(.6e5,"Exp",15,3e5) #A˜adir los modelos al objeto n 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´ n (figs 48(b) e y 49(b)).
    • Modelizacion geoestad´stica con R ´ ı 50 50962 50000 40000 30000 Frecuencia 20000 14892 10000 7493 2600 1131492 195 96 62 27 12 6 22 0 4 0 3 3 0 0 1 0 0 2000 4000 6000 8000 Error (a) Error del CKO 42942 40000 30000 Frecuencia 22081 20000 10000 8044 2657 1077 435 3 22 59 294 19995 50 23 7 4 1 3 0 2 1 1 0 0 1 0 −2000 0 2000 4000 6000 8000 10000 Error (b) Error del UKO Figura 44: Diferencias con wlc de la modelizacion de U ´
    • Modelizacion geoestad´stica con R ´ ı 51 8.7. Resultados ´ 8.7.1. Modelizacion de V A continuacion se muestran los resultados de los m´ todos de krigeado empleados ´ e 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). ´ 1600 1600 1400 1400 250 250 1200 1200 200 200 1000 1000 800 800 Y Y 150 150 600 600 100 100 400 400 50 50 200 200 0 0 50 100 150 200 50 100 150 200 X X (a) KO (b) KU 1600 1600 1400 1400 250 250 1200 1200 200 200 1000 1000 800 800 Y Y 150 150 600 600 100 100 400 400 50 50 200 200 0 0 50 100 150 200 50 100 150 200 X X (c) KUB (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 ´
    • Modelizacion geoestad´stica con R ´ ı 52 350 350 300 300 250 250 250 250 200 200 200 200 Y Y 150 150 150 150 100 100 100 100 50 50 50 50 0 0 50 100 150 200 50 100 150 200 X X (a) KO (b) KU 350 350 300 300 250 250 250 250 200 200 200 200 Y Y 150 150 150 150 100 100 100 100 50 50 50 50 0 0 50 100 150 200 50 100 150 200 X X (c) KUB (d) KUL Figura 46: Desviacion t´pica en la modelizacion de V (wlm) ´ ı ´ Cuadro 2: Estad´sticos de los errores en los m´ todos de krigeado de V ı e 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
    • Modelizacion geoestad´stica con R ´ ı 53 KUL KUB KU KO −1000 −500 0 500 1000 Figura 47: Diagramas de caja y bigote de las diferencias
    • 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). ´ 5000 5000 250 250 4000 4000 200 200 3000 3000 Y Y 150 150 2000 2000 100 100 1000 1000 50 50 0 0 50 100 150 200 50 100 150 200 X X (a) CKO (b) UKO Figura 48: Prediccion en la modelizacion de U (wlm) ´ ´ 800 800 700 700 250 250 600 600 200 200 500 500 400 400 Y Y 150 150 300 300 100 100 200 200 50 50 100 100 0 0 50 100 150 200 50 100 150 200 X X (a) CKO (b) UKO Figura 49: Desviacion t´pica en la modelizacion de U (wlm) ´ ı ´
    • Modelizacion geoestad´stica con R ´ ı 55 Cuadro 3: Estad´sticos de los errores en los m´ todos de krigeado de U ı e 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
    • Modelizacion geoestad´stica con R ´ ı 56 8.8. Scripts Listado 13: R-Script del tema 8 46 47 #Generar el objeto gstat 1 # TEMA 8 KRIGING 48 g<-gstat(id="V",formula=V˜1,locations=˜X 2 ps.options(family="Bookman",pointsize +Y,data=wlm) =15) 49 #Establecer un modelo inicial de V 3 # rm(list=ls()) 50 mv<-vgm(72e3,"Exp",15,22e3) 4 51 #Ajustar el modelo con el variograma 5 library(lattice) omnidireccional 6 library(gstat) 52 mvfit<-fit.variogram(variogram(g["V"], 7 width=10,cutoff=100),mv) 8 #Funci´n que devuelve estad´sticas o ı 53 #A˜adir el ajuste al objeto gstat n 9 calcestads<-function(datosO){ 54 g<-gstat(g,id="V",model=mvfit) 10 Desv<-function(datos){sqrt(var(datos 55 ))} 56 #Crear una malla regular de unas 5000 11 CS<-function(V){sum((V-mean(V))ˆ3)/( celdas (aprox) length(V)*Desv(V)ˆ3)} 57 wlmGrid<-makegrid(X,Y,5000) 12 K<-function(V){sum((V-mean(V))ˆ4/ 58 names(wlmGrid)<-c("X","Y") length(V))/Desv(V)ˆ4-3} 59 13 CV<-function(V){Desv(V)/mean(V)} 60 #KRIGEADO ORDINARIO 14 datos<-datosO[!is.na(datosO)] 61 print("Calculando KO...") 15 data.frame(media=mean(datos),Q0=min( 62 KO<-read.csv("KO.csv") datos), 63 # KO<-krige(V˜1,˜X+Y,wlm,wlc,g$model$V) 16 Q1=as.double(quantile(datos,0.25,na. 64 # write.table(round(KO,3),file="KO.csv", rm=TRUE)), sep=",",row.names=FALSE) 17 Q2=median(datos), 65 difKO<-KO$var1.pred-wlc$V 18 Q3=as.double(quantile(datos,0.75,na. 66 postscript("imgs/08/KO %01d.ps",onefile= rm=TRUE)), FALSE) 19 Q4=max(datos), 67 graf1<-levelplot(var1.pred˜X+Y,KO,at=niv 20 var=var(datos),desv=Desv(datos), ,aspect=mapasp(KKULO),contour=TRUE, 21 CS=CS(datos),K=K(datos),CV=CV(datos) col.regions=gris1,labels=FALSE) ) 68 graf2<-levelplot(sqrt(var1.var)˜X+Y,KO, 22 } at=niv2,aspect=mapasp(KO),col. 23 regions=gris2) 24 #Niveles y secuencias 69 print(graf1);print(graf2) 25 niv<-seq(0,1600,200) 70 hist(difKO,breaks=nivH,labels=TRUE,main= 26 niv2<-seq(0,350,50) "",col="lightgray",xlab="Error",ylab 27 nivH<-seq(-700,1000,100) ="Frecuencia") 28 nivH2<-seq(-1000,1000,100) 71 dev.off() 29 gris1<-gray(seq(0.9,0.3,l=30)) 72 30 gris2<-gray(seq(0.99,0.5,l=7)) 73 31 gris3<-gray(seq(0.9,0.3,l=8)) 74 #KRIGEADO UNIVERSAL 32 75 print("Calculando KU...") 33 #Cargar los datos wlm 76 KU<-read.csv("KU.csv") 34 print("Cargando datos...") 77 # KU<-krige(V˜X+Y,˜X+Y,wlm,wlc,g$model$V 35 data(walker) ) 36 wlm<-walker;rm(walker) 78 # write.table(round(KU,3),file="KU.csv", 37 attach(wlm) sep=",",row.names=FALSE) 38 79 difKU<-KU$var1.pred-wlc$V 39 #Importar e imprimir los valores reales 80 postscript("imgs/08/KU %01d.ps",onefile= wlc FALSE) 40 wlc<-read.csv("wlc.csv",sep=";",dec=".", 81 graf1<-levelplot(var1.pred˜X+Y,KU,at=niv header=TRUE) ,aspect=mapasp(KU),contour=TRUE,col. 41 postscript("imgs/08/wlc %01d.ps",onefile= regions=gris1,labels=FALSE) FALSE) 82 graf2<-levelplot(sqrt(var1.var)˜X+Y,KU, 42 print(levelplot(V˜X+Y,wlc,at=niv,aspect= at=niv2,aspect=mapasp(KU),col. mapasp(wlc),col.regions=gris1)) regions=gris2) 43 print(levelplot(U˜X+Y,wlc,at=seq 83 print(graf1);print(graf2) (0,5200,400),aspect=mapasp(wlc),col. 84 hist(difKU,breaks=nivH,labels=TRUE,main= regions=gris1)) "",col="lightgray",xlab="Error",ylab 44 dev.off() ="Frecuencia") 45
    • Modelizacion geoestad´stica con R ´ ı 57 85 dev.off() 125 86 126 # COKRIGEADO 87 127 print("Iniciando CKO...") 88 #KRIGEADO UNIVERSAL POR BLOQUES 128 #Rehacer el objeto gstat s´lo con las o 89 print("Calculando KUB...") localizaciones donde U existe 90 KUB<-read.csv("KUB.csv") 129 wlm2<-subset(wlm,!is.na(wlm$U)) 91 # KUB<-krige(V˜X+Y,˜X+Y,wlm,wlc,g$model$ 130 g<-"null" V,block=c(10,10)) 131 rm(g) 92 # write.table(round(KUB,3),file="KUB.csv 132 g<-gstat(id="U",formula=U˜1,locations=˜X ",sep=",",row.names=FALSE) +Y,data=wlm2) 93 difKUB<-KUB$var1.pred-wlc$V 133 g<-gstat(g,id="V",formula=V˜1,locations= 94 postscript("imgs/08/KUB %01d.ps",onefile= ˜X+Y,data=wlm2) FALSE) 134 #Crear los modelos 95 graf1<-levelplot(var1.pred˜X+Y,KUB,at= 135 mv<-vgm(72e3,"Exp",15,22e3) niv,aspect=mapasp(KUB),contour=TRUE, 136 mu<-vgm(26e4,"Exp",15,26e4) col.regions=gris1,labels=FALSE) 137 muv<-vgm(.6e5,"Exp",15,3e5) 96 graf2<-levelplot(sqrt(var1.var)˜X+Y,KUB, 138 at=niv2,aspect=mapasp(KUB),col. 139 #A˜adir los modelos al objeto n regions=gris2) 140 g<-gstat(g,id="U",model=mu) 97 print(graf1);print(graf2) 141 g<-gstat(g,id="V",model=mv) 98 hist(difKUB,breaks=nivH,labels=TRUE,main 142 g<-gstat(g,id=c("U","V"),model=muv) ="",col="lightgray",xlab="Error", 143 #Calcular el modelo ajustado ylab="Frecuencia") 144 x<-variogram(g,cutoff=100) 99 dev.off() 145 g.fit=fit.lmc(x,g)#,fit.ranges=T) 100 146 #Ver variogramas y modelos 101 #KRIGEADO UNIVERSAL LOCAL 147 postscript("imgs/08/UyV.ps") 102 print("Calculando KUL...") 148 print(plot(variogram(g),model=g.fit,xlab 103 KUL<-read.csv("KUL.csv") ="Distancia",ylab="Semivariograma")) 104 # KUL<-krige(V˜X+Y,˜X+Y,wlm,wlc,g$model$ 149 dev.off() V,nmin=5,maxdist=30) 150 105 # write.table(round(KUL,3),file="KUL.csv 151 #Ejecutar el cokrigeado ",sep=",",row.names=FALSE) 152 print("Calculando CKO...") 106 difKUL<-KUL$var1.pred-wlc$V 153 CKO<-read.csv("CKO.csv") 107 postscript("imgs/08/KUL %01d.ps",onefile= 154 # CKO<-predict(g.fit, newdata = wlc) FALSE) 155 # write.table(round(CKO,3),file="CKO.csv 108 graf1<-levelplot(var1.pred˜X+Y,KUL,at= ",sep=",",row.names=FALSE) niv,aspect=mapasp(KUL),contour=TRUE, 156 difCKO<-wlc$U-CKO$U.pred col.regions=gris3,labels=FALSE) 157 postscript("imgs/08/CKO %01d.ps",onefile= 109 graf2<-levelplot(sqrt(var1.var)˜X+Y,KUL, FALSE) at=niv2,aspect=mapasp(KUB),col. 158 graf1<-levelplot(U.pred˜X+Y,CKO,at=seq regions=gris2) (0,5200,400),aspect=mapasp(CKO), 110 print(graf1);print(graf2) contour=TRUE,col.regions=gray(seq 111 hist(difKUL,breaks=nivH2,labels=TRUE, (0.99,0.3,l=30)),labels=F) main="",col="lightgray",xlab="Error" 159 graf2<-levelplot(sqrt(U.var)˜X+Y,CKO,at= ,ylab="Frecuencia") seq(0,800,100),aspect=mapasp(CKO), 112 dev.off() col.regions=gris1) 113 160 print(graf1);print(graf2) 114 #RESUMEN DE DIFERENCIAS 161 hist(difCKO,labels=TRUE,main="",col=" 115 print("Calculando Resumen...") lightgray",xlab="Error",ylab=" 116 diff.l<-list(KO=difKO,KU=difKU,KUB= Frecuencia") difKUB,KUL=difKUL) 162 dev.off() 117 diff.R<-lapply(diff.l,calcestads) 163 118 diff.Rdf<-data.frame(rbind(diff.R[[1]], 164 #Calcular el krigeaado ordinario de U diff.R[[2]],diff.R[[3]],diff.R[[4]]) para comparar ) 165 print("Calculando UKO...") 119 row.names(diff.Rdf)<-c("KO","KU","KUB"," 166 mufit<-fit.variogram(variogram(g["U"], KUL") width=10,cutoff=100),vgm(26e4,"Exp" 120 ,15,26e4)) 121 postscript("imgs/08/boxplot.ps") 167 UKO<-read.csv("UKO.csv") 122 boxplot(diff.l,horizontal=TRUE,col=" 168 # UKO<-krige(U˜1,˜X+Y,wlm2,wlc,mufit) lightgray") 169 # write.table(round(UKO,3),file="UKO.csv 123 dev.off() ",sep=",",row.names=FALSE) 124 print(diff.Rdf) 170 difUKO<-wlc$U-UKO$var1.pred
    • Modelizacion geoestad´stica con R ´ ı 58 171 postscript("imgs/08/UKO %01d.ps",onefile= ,col.regions=gris1) FALSE) 174 print(graf1);print(graf2) 172 graf1<-levelplot(var1.pred˜X+Y,UKO,at= 175 hist(difUKO,labels=TRUE,main="",col=" seq(0,5200,400),aspect=mapasp(UKO), lightgray",xlab="Error",ylab=" contour=TRUE,col.regions=gray(seq Frecuencia") (0.99,0.3,l=30)),labels=F) 176 dev.off() 173 graf2<-levelplot(sqrt(var1.var)˜X+Y,UKO, at=seq(0,800,100),aspect=mapasp(UKO)
    • Modelizacion geoestad´stica con R ´ ı 59 Referencias [1] M AR T´NEZ L LARIO , J OS E C ARLOS y C OLL A LIAGA , E LOINA, Apuntes de geoestad´sti- I ´ ı ca basica. Aplicaciones mediante Sistemas de Informacion Geografica, UPV, Valen- ´ ´ ´ cia, 2005. [2] P EBESMA , E DZER J., gstat’s user manual, Dept. of Physical Geography, Utrecht University, Utretch, Holanda, 2001. URL http://www.gstat.org [3] P EBESMA , E DZER J., Multivariable geostatistics in S: the gstat package, Computers & Geosciences, tomo 30, pags. 683–691, 2004. ´ [4] R D EVELOPMENT C ORE T EAM, Introduccion a R, R Foundation for Statistical Com- ´ puting, Vienna, Austria, 2000. [5] R D EVELOPMENT C ORE T EAM, 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] R IBEIRO , PAULO J. J R y D IGGLE , P ETER J., geoR: a package for geostatistical analysis, R-NEWS, tomo 1(2), pags. 14–18, 2001, iSSN 1609-3631. ´ URL CRAN://doc/Rnews/ [7] S ARKAR , D EEPAYAN, lattice: Lattice Graphics, 2004, r package version 0.10-16.