Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Geoestadistica Con R
Geoestadistica Con R
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 modelizacion
mediante metodos geoestadsiticos (krigeado). En este trabajo se presenta un
resumen de dicho desarrollo utilizando los mismos datos de partida pero empleando
para el mismo herramientas de Software Libre, principalmente una herramienta estadstica R y un Sistema de Informacion
Geografica,
Indice
0. Introduccion
0.1. R . . . . . . . . .
0.2. gstat . . . . . . .
0.3. GRASS . . . . . .
0.4. Datos de trabajo
cruzados . . . . . . . . . . . 20
3.6. Scripts . . . . . . . . . . . . . 20
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
4
4
4
5
5
univariada
1. Descripcion
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
bivariada
2. Descripcion
12
2.1. Metodos graficos
. . . . . . . 12
2.2. Metodos numericos . . . . . 13
2.3. Scripts . . . . . . . . . . . . . 14
espacial
3. Descripcion
3.1. Visualizacion
espacial de
datos . . . . . . . . . . . . . .
3.2. Ventanas moviles
y el efecto
proporcional . . . . . . . . .
3.3. Continuidad espacial . . . .
3.4. Variograma . . . . . . . . . .
15
15
18
18
20
4. Estimacion.
Metodos deterministas
24
4.1. Scripts . . . . . . . . . . . . . 27
5. Continuidad espacial de V
5.1. Variograma omnidireccional
5.2. Variograma superficial . . .
5.3. Variogramas direccionales .
5.4. Variogramas cruzados . . . .
5.5. Scripts . . . . . . . . . . . . .
30
30
30
30
33
36
automatizada
del modelo . . . . . . . . . . 41
6.2. Scripts . . . . . . . . . . . . . 44
8. Kriging
8.1. wlc . . . . . . . . . . . . . . .
8.2. Krigeado Ordinario (KO) . . .
8.3. Krigeado Universal (KU) . . .
8.4. Krigeado por bloques (KUB)
8.5. Krigeado Local (KUL) . . . .
8.6. Cokrigeado (CKO) . . . . . .
8.7. Resultados . . . . . . . . . .
8.8. Scripts . . . . . . . . . . . . .
45
45
45
46
46
46
48
51
56
Modelizacion
geoestadstica con R
Indice de figuras
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
Distribucion
de U y V . . . .
Histograma de V . . . . . . .
Histograma acumulado de V
Grafico
de probabilidad
uniforme de V . . . . . . . .
Grafico
de probabilidad
normal . . . . . . . . . . . . .
Grafico
de probabilidad lognormal . . . . . . . . . . . . .
Grafico
de caja y bigotes de V
Grafico
de caja y bigotes de
VyU. . . . . . . . . . . . . .
Grafico
de cuantiles de V y U
Grafico
de dispersion
. . . .
Distribucion
de V . . . . . .
Mapa graduado de color de V
Mapa graduado de tamano
de V . . . . . . . . . . . . . .
Mapas de indicadores . . . .
Mapa de superficie interpolada . . . . . . . . . . . . . .
Media y varianza en ventana de 3x3 . . . . . . . . . . .
Grafico
de dispersion
de
media y varianza . . . . . . .
h-Scatterplots de direccion
N-S . . . . . . . . . . . . . . .
h-Scatterplots de direccion
E-W . . . . . . . . . . . . . .
h-Scatterplots cruzado de U
y V en direccion
N-S . . . . .
Distribucion
de wlm . . . . .
Mapas generados por GRASS
Histogramas de los conjuntos de datos . . . . . . . . . .
Variogramas omnidireccionales (i)) . . . . . . . . . . . .
Mapa del variograma superficial . . . . . . . . . . . .
Isolneas del variograma
superficial . . . . . . . . . . .
6
7
7
7
8
8
9
12
12
13
15
16
16
17
18
19
19
20
21
21
24
25
26
31
31
32
Indice de cuadros
1.
Resumen de estadsticos de
datos de validacion
y estimados . . . . . . . . . . . . . 26
de geoR del
conjunto de datos . . . . . .
38. Modelo ajustado por geoR .
39. Conjunto de datos wlc . . . .
40. Error del Krigeado ordinario
41. Error del Krigeado universal
42. Error del Krigeado universal por bloques . . . . . . . .
43. Error del Krigeado local
universal . . . . . . . . . . .
44. Diferencias con wlc de la
modelizacion
de U . . . . . .
45. Prediccion
en la modelizacion
de V (wlm) . . . . . . . .
46. Desviacion
tpica en la modelizacion
de V (wlm) . . . . .
47. Diagramas de caja y bigote
de las diferencias . . . . . . .
48. Prediccion
en la modelizacion
de U (wlm) . . . . . . . .
49. Desviacion
tpica en la modelizacion
de U (wlm) . . . . .
2.
3.
32
33
34
35
35
39
40
40
41
42
43
43
45
46
47
47
48
50
51
52
53
54
54
Modelizacion
geoestadstica con R
Indice de listados
1.
2.
3.
4.
5.
6.
7.
8.
10
14
22
23
27
27
28
9.
10.
11.
12.
13.
28
29
36
36
44
56
Modelizacion
geoestadstica con R
Tema 0 Introduccion
0.1. R
R [5] es un conjunto integrado de herramientas para manipular datos, realizar todo
tipo de calculos
estadsticos.
En [4] se citan las siguientes caractersticas:
es multiplataforma,
almacenamiento y manipulacion
efectiva de datos,
operadores para calculo
de
datos,
posibilidades graficas
para analisis
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 geoestadstica 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
0.2. gstat
gstat [2] es un software para llevar a cabo modelizacion,
prediccion
y simulacion
de
datos geoestadsticos. 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)
http://www.gnu.org
Modelizacion
geoestadstica con R
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 metodos determinsticos. Se ha usado en este trabajo para la obtencion
de la modelizacion
por
polgonos de influencia (Voronoi), Splines de tension
y por el metodo de pesos inversos a la distancia.
Ademas
se ha utilizado para la presentacion
de la cartografa, maquetando sencillos mapas con salida PostScript.
estadsticos.
gstat dispone del conjunto wlm, los otros dos seran
cargados desde ficheros de texto
separados por comas (CSV) para poder operar con ellos.
Modelizacion
geoestadstica con R
univariada
Tema 1 Descripcion
de los datos
1.1. Carga y visualizacion
242
244
246
248
250
En este captulo 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.
15
81
12
77
24
103
27
112
30
123
0
19
2
40
18
111
18
114
18
120
16
82
7
61
34
110
36
121
29
119
7
77
4
52
18
111
18
117
20
124
16
82
9
74
22
97
24
105
25
112
10
91
7
73
19
115
19
118
22
129
21
88
8
70
27
103
27
111
32
122
4
64
10
84
15
105
17
113
19
123
21
89
18
88
20
94
27
110
29
116
19
108
7
73
16
107
19
118
22
127
15
77
16
82
16
86
23
101
24
109
25
113
7
79
15
102
21
120
20
121
14
74
15
80
15
85
16
90
17
97
18
101
14
96
6
72
28
128
25
130
14
75
15
80
15
83
15
87
16
94
17
99
13
95
2
48
40
139
38
145
16
77
17
84
11
74
29
108
37
121
55
143
11
91
3
52
34
136
35
144
22
87
28
100
4
47
32
111
38
124
20
109
0
0
14
98
31
134
34
144
12
14
16
18
20
Figura 1: Distribucion
de U y V
univariada
1.2. Metodos graficos para la descripcion
El metodo grafico
mas
utilizado es el histograma, en el que debemos integrar la
variable en clases. La variable V se vara entre 0ppm y 145ppm por lo que dividirla en
clases de 10 unidades es conveniente (fig. 2 en la pagina
siguiente).
Otro grafico
siguiente).
El grafico
siguiente)
Las figuras 5 en la pagina
8 y 6 en la pagina
Modelizacion
geoestadstica con R
16
17
15
14
14
14
10
8
6
Frequency
12
12
11
4
3
3
2
2
1
50
100
150
60
40
0
20
Frecuencia acumulada
80
100
Figura 2: Histograma de V
10
20
30
40
50
60
70
80
90 100
120
140
Variable
0.6
0.4
0.2
0.0
Probabilidad acumulada
0.8
1.0
50
100
150
Figura 4: Grafico
de probabilidad uniforme de V
1
0
1
2
Theoretical Quantiles
Modelizacion
geoestadstica con R
50
100
150
Sample Quantiles
1
0
1
2
Theoretical Quantiles
Figura 5: Grafico
de probabilidad normal
3.0
3.5
4.0
4.5
Sample Quantiles
Figura 6: Grafico
de probabilidad lognormal
5.0
Modelizacion
geoestadstica con R
Media
Mediana
Moda
Rango
0
145
100.5
97.55
110-120
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
50
100
150
Figura 7: Grafico
de caja y bigotes de V
Modelizacion
geoestadstica con R
10
[1] 695.3409
[1] 26.36932
[1] 34.5
Pn
1
n
CS =
i=1 (xi
3
m)3
(1)
Pn
i=1
(xi m)4
n
4
(2)
El coeficiente de variacion
no es mas
que el cociente entre la desviacion
tpica y la
media, siendo trivial su calculo.
1.4. Scripts
Listado 1: R-Script del tema 1
N UNIVARIADA
1 #TEMA 1 - DESCRIPCIO
2 ps.options(family="Bookman",pointsize
3
4
5
6
7
8
9
=15)
rm(list=ls())
#Cargar wle y redondearlo
wle<-read.delim2("walker10.asc")
wle<-round(wle,0)
25
26
27
28
29
30
31
32
33
34
35
36
11
12 #Ver los datos U y V
37
13 postscript("imgs/01/UyV.ps")
38
14 plot(X,Y,xlim=c(min(X),max(X)*1.01),ylim
39
=c(min(Y)*.999,max(Y)*1.001),pch=3)
40
15 text(X+.3,Y+.2,U)
41
16 text(X+.3,Y-.2,V)
17 dev.off()
42
18
43
19 #Mostrar el histograma de V
44
20 secV<-seq(0,150,10)
21 postscript("imgs/01/histV.ps")
45
22 hist(V,breaks=secV, labels=TRUE, col="
46
lightgray", axes=FALSE,main="")
23 axis(2,at=seq(0,18,2))
24 axis(1,at=seq(0,150,50))
dev.off()
#Discretizar V para hallar frecuencias
lsecV<-length(secV)
cutV<-cut(V,secV)
tcutV<-table(cutV)
#Obtener las frecuencias acumuladas
sumfreq<-rep(0,length(secV))
for (i in 1:lsecV){ sumfreq[i]<-length(V
[V<secV[i]])}
#Imprimir el histograma
postscript("imgs/01/histAcumV.ps")
barplot(sumfreq,xlab="Variable",ylab="
Frecuencia acumulada",names.arg=secV
)
dev.off()
#Gr
afico de probabilidad acumulada
postscript("imgs/01/probUnif.ps")
plot.ecdf(V,pch=1,xlab="V",ylab="
Probabilidad acumulada",main="")
dev.off()
#Gr
afico de probabilidad normal y
lognormal
postscript("imgs/01/probNormal.ps")
qqnorm(V,datax=TRUE,pch=3,main="");
qqline(V,datax=TRUE)
47 dev.off()
Modelizacion
geoestadstica con R
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
media<-mean(V)
dt<-var(V)
print("Cuartiles")
print(cuantiles<-quantile(V,seq(0,1,.25)
))
on t
pica y
59 print("Varianza, desviaci
rango intercuart
lico")
60 print(dt2)
61 print(dt)
55
56
57
58
11
62 print(as.numeric(cuantiles["75 %"]-
cuantiles["25 %"]))
63
64 #Diagrama de caja y bigotes de V
65 postscript("imgs/01/cajaybig.ps")
66 boxplot(V,horizontal=TRUE,col="lightgray
",ylab="V")
67 dev.off()
68
69 #Medidas de forma: sesgo, apuntalamiento
y 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)
Modelizacion
geoestadstica con R
12
bivariada
Tema 2 Descripcion
2.1. Metodos graficos
Variables
La visualizacion
de pares de histogramas y sobre todo de graficos
de caja y bigotes
( 8)pueden aportar informacion
de como
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
son diferentes.
100%
U=V
50
40
30
75%
20
50%
25%
10
Cuartiles
0
0%
50
100
150
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
geoestadstica con R
13
10
20
30
40
50
50
100
150
de dispersion
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.
1 Pn
i=1 (Rxi mRx ) (Ryi mRy )
n
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
geoestadstica con R
14
2.3. Scripts
Listado 2: R-Script del tema 2
N BIVARIADA
1 #TEMA 2 - DESCRIPCIO
2 ps.options(family="Bookman",pointsize
3
4
5
6
7
8
9
=15)
rm(list=ls())
#Cargar wle y redondearlo
wle<-read.delim2("walker10.asc")
wle<-round(wle,0)
col="lightgray",ylab="Variables",
boxwex=0.5)
15 dev.off()
16
17
18
19
20
# Diagrama qqplot
postscript("imgs/02/qqnorm.ps")
# Dibuja s
olo los ejes
qqplot(V,U,xlab="V",ylab="U",las=1,xlim=
c(-1,148),ylim=c(0,57),type="n")
21 # Dibuja los puntos por cuantiles del 5 %
y los cuartiles
22 points(quantile(V,seq(0,1,.05)),quantile
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
(U,seq(0,1,.05)),pch=21,bg="
lightgray")
points(quantile(V,seq(0,1,.25)),quantile
(U,seq(0,1,.25)),pch=21,bg="white")
# Texto en los cuartiles
text(quantile(V,seq(0,1,.25))-2,quantile
(U,seq(0,1,.25))+2,c("0 %","25 %","50 %
","75 %","100 %"))
# Linea con U=V y su texto
lines(c(0,150),c(0,150),type="l")
text(60,50,"U=V")
# Leyenda
legend(100,8,c("Cuartiles"),bg="white",
pch=21)
dev.off()
#Diagramas de dispersi
on
postscript("imgs/02/dispers.ps")
plot(V,U,pch=21,bg="lightgray")
dev.off()
#Covarianza y coeficientes de
correlaci
on
print("Covarianza y coeficiente de
correlaci
on de Pearson y de Spearman
")
print(covar<-cov(U,V))
print(rho<-cor(U,V,method="pearson"))
print(spear<-cor(U,V,method="spearman"))
Modelizacion
geoestadstica con R
15
espacial
Tema 3 Descripcion
espacial de datos
3.1. Visualizacion
240
242
244
246
248
250
Se trata de trazar un mapa de puntos e indicar por ejemplo los 10 valores maximos
y los 10 valores mnimos. En R se trata de obtener los conjuntos de datos de wle con
los valores maximos
81
77
103
112
123
19
40
111
114
120
82
61
110
121
119
77
52
111
117
124
82
74
97
105
112
91
73
115
118
129
88
70
103
111
122
64
84
105
113
123
89
88
94
110
116
108
73
107
118
127
77
82
86
101
109
113
79
102
120
121
74
80
85
90
97
101
96
72
128
130
75
80
83
87
94
99
95
48
139
145
77
84
74
108
121
143
91
52
136
144
87
100
47
111
124
109
98
134
144
Mximos
Mnimos
12
14
16
18
20
de maximos
Modelizacion
geoestadstica con R
16
140
120
248
100
246
80
60
244
40
20
242
12
14
16
18
250
248
246
0
81.75
100.5
116.25
145
244
242
12
14
16
18
20
Modelizacion
geoestadstica con R
17
Umbral = 73.375
Umbral = 81.75
140
140
120
120
248
248
100
100
80
80
246
246
60
60
244
244
40
242
40
242
20
20
0
12
14
16
18
12
14
16
(b) Cuantil 25 %
Umbral = 89.125
18
Umbral = 100.5
140
140
120
120
248
248
100
100
80
80
246
246
60
60
244
244
40
242
40
242
20
20
0
12
14
16
18
12
14
16
(d) Cuantil 50 %
Umbral = 109.875
18
Umbral = 116.25
140
140
120
120
248
248
100
100
80
80
246
246
60
244
60
244
40
242
20
40
242
20
0
12
14
16
18
0
12
14
16
(f) Cuantil 75 %
18
Modelizacion
geoestadstica con R
18
242
244
246
248
250
12
14
16
18
20
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.
19
250
Modelizacion
geoestadstica con R
242
244
246
248
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
12
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
14
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
16
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
18
2000
1000
500
0
varianza
1500
= 0.11
80
90
100
110
media
de dispersion
de media y varianza
20
Modelizacion
geoestadstica con R
20
distancia (h) variando de 1 a 4 puntos y en las direcciones norte-sur (fig. 18) y esteoeste (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
120
120
140
140
h=2
V(t)
100
= 0.59
40
40
60
80
80
60
V(t)
100
= 0.74
x=y
20
20
x=y
50
100
150
V(t+h)
h=3
h=4
100
150
100
150
= 0.48
80
60
V(t)
80
100
100
= 0.56
40
40
60
V(t)
50
V(t+h)
120
120
x=y
20
20
x=y
50
100
150
50
V(t+h)
V(t+h)
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)
X
1
(h) =
(vi vi+h )2
2N (h)
(5)
i=1
cruzados
3.5. Diagramas de dispersion
El ultimo
grafico
3.6. Scripts
Modelizacion
geoestadstica con R
21
120
100
100
120
140
h=2
140
h=1
V(t)
60
40
40
60
V(t)
80
= 0.41
80
= 0.21
20
x=y
20
x=y
50
100
150
50
V(t+h)
V(t+h)
h=3
h=4
100
150
100
150
100
150
100
150
100
100
120
120
140
140
= 0.35
80
40
60
60
V(t)
V(t)
80
= 0.3
20
40
x=y
20
x=y
50
100
150
50
V(t+h)
V(t+h)
h=1
U(t)
x=y
= 0.45
20
30
x=y
= 0.6
10
10
20
U(t)
40
30
50
40
h=2
50
100
150
V(t+h)
h=3
h=4
35
30
30
x=y
25
25
x=y
20
= 0.28
10
10
15
15
U(t)
20
= 0.36
U(t)
50
V(t+h)
35
50
100
V(t+h)
150
50
V(t+h)
Modelizacion
geoestadstica con R
22
48 postscript("imgs/03/indics %02d.ps",
onefile=FALSE)
N ESPACIAL
1 #TEMA 3 : DESCRIPCIO
2 ps.options(family="Bookman",pointsize
=15)
3 rm(list=ls())
4
5
6
7
8
9
10
11
12
13
#Cargar paquetes
library(lattice)
library(gstat)
#Cargar wle y redondearlo
wle<-read.delim2("walker10.asc")
wle<-round(wle,0)
49 for (i in 1:length(sec2)){
50
tit<-as.expression(substitute(
Umbral==p,list(p=sec2[i])))
lv<-levelplot(VX*Y,wle,col.
regions=c("lightgray","white
"),at=c(min(V),sec2[i],max(V
)),main=tit);
52
print(lv)
53
}
54 dev.off()
51
55
56
57 # Mapas de isol
neas y de superficies
interpoladas en Windows
58
59 #Conseguir una matriz con los valores de
15
16 #Gr
afico de V con m
aximos y m
nimos
17 #Obtener los 10 valores m
aximos y
60
61
62
63
64
65
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
m
nimos
Vmax=sort(V)[90:100][1]
Vmin=sort(V)[1:10][10]
dfVmax= subset(wle,V>=Vmax)
dfVmin= subset(wle,V<=Vmin)
#Ya se puede hacer el dibujo
postscript("imgs/03/maxmin.ps")
plot(X,Y,pch=3,xlim=c(11,20.2),ylim=c
(239.5,250.5))
text(X+0.2,Y+0.2,V)
points(dfVmax$X,dfVmax$Y,bg="black",pch
=21)
points(dfVmin$X,dfVmin$Y,bg="lightgray",
pch=21)
legend(11,240.8,c("M
aximos","M
nimos"),
pch=21,pt.bg=c("black","lightgray"))
dev.off()
66
67 imgV2<-list(sort(imgV$y),sort(imgV$x,
68
69
70
71
72
73
74
75
76
77
78
#Gr
afico de s
mbolos graduados
79
postscript("imgs/03/simbs.ps")
80
lv<-levelplot(VX*Y,wle,col.regions=gray 81
(seq(1,0.3,len=18)),aspect=mapasp(
82
wle))
print(lv)
dev.off()
#Gr
afico de burbujas
postscript("imgs/03/bubbles.ps")
# 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)
V
imgV<-xyz2img(wle,"V",2,1)
matVtemp<-imgV$z
matV<-matVtemp*0
m<-dim(matVtemp)[1]
n<-dim(matVtemp)[2]
for(i in 1:m){for(j in 1:n){matV[i,j]<matVtemp[m+1-i,j] }}
83
84
85
86
87
88
89
90
91
92
93
94
95
decreasing=TRUE),matV)
names(imgV2)<-c("x","y","z")
#Calcular una media y varianza 3x3
media3<-matV*0
var3<-media3
seqm<-seq(2,m-1)
seqn<-seq(2,n-1)
for(i in seqm){
for(j in seqn){
i1<-i-1;
i2<-i+1;
j1<-j-1;
j2<-j+1;
matVtemp<-array(matV[i1:
i2,j1:j2]);
media3[i,j]<-mean(
matVtemp);
var3[i,j]<-var(matVtemp)
}
}
media3<-round(media3[seqm,seqn],2)
var3<-round(var3[seqm,seqn],2)
#Mostrar resultados
postscript("imgs/03/mediavar.ps")
plot(X,Y,pch=3)
for(i in seqm){
for(j in seqn){
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
Modelizacion
geoestadstica con R
-1])
97
98
99
100
101
102
103
104
105
23
lines(c(0,150),c(0,150));text
(40,30,"x=y");
text(10,90,as.expression(
substitute(rho==ro,list(ro=
round(cor(matV1,matV2),2))))
)
title(as.expression(substitute(h
==hh,list(hh=h))))
139
}
}
dev.off()
140
#Gr
afico de media contra varianza 3x3
141
postscript("imgs/03/mediavar2.ps")
media<-array(media3,dim=64)
142
varianza<-array(var3,dim=64)
plot(media,varianza,pch=21,bg="lightgray 143
144
",xlab="media",ylab="varianza")
106 text(105,2000,as.expression(substitute( 145
146
rho==ro,list(ro=round(cor(media,
147
varianza),2)))))
148
107 dev.off()
}
dev.off()
108
109
110 #Continuidad espacial en V
111 #NS
112 postscript("imgs/03/V-NS %02d.ps",onefile 152
153 #NS
=FALSE)
113 for(i in 1:4){
154 postscript("imgs/03/VU-NS %02d.ps",
onefile=FALSE)
114
h<-i;
155 for(i in 1:4){
115
fil1<-seq(1+h,m);
156
h<-i;
116
col1<-seq(1,n);
fil1<-seq(1+h,m);
117
matV1<-array(matV[fil1,col1],dim 157
col1<-seq(1,n);
=length(fil1)*length(col1)); 158
159
matV1<-array(matV[fil1,col1],dim
118
fil2<-seq(1,m-h);
=length(fil1)*length(col1));
119
col2<-seq(1,n);
fil2<-seq(1,m-h);
120
matV2<-array(matV[fil2,col2],dim 160
col2<-seq(1,n);
=length(fil2)*length(col2)); 161
matU2<-array(matU[fil2,col2],dim
121
plot(matV1,matV2,xlab="V(t+h)", 162
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
=length(fil2)*length(col2));
plot(matV1,matU2,xlab="V(t+h)",
ylab="U(t)");
lines(c(0,150),c(0,150));text
(40,30,"x=y");
text(10,20,as.expression(
substitute(rho==ro,list(ro=
round(cor(matV1,matU2),2))))
)
title(as.expression(substitute(h
==hh,list(hh=h))))
ylab="V(t)");
163
lines(c(0,150),c(0,150));text
(40,30,"x=y");
164
text(40,120,as.expression(
substitute(rho==ro,list(ro=
round(cor(matV1,matV2),2)))) 165
)
title(as.expression(substitute(h
==hh,list(hh=h))))
}
dev.off()
166
167 }
168
#EW
postscript("imgs/03/V-EW %02d.ps",onefile
=FALSE)
for(i in 1:4){
h<-i;
1
fil1<-seq(1,m);
2
col1<-seq(1+h,n);
3
matV1<-array(matV[fil1,col1],dim 4
=length(fil1)*length(col1)); 5
fil2<-seq(1,m);
col2<-seq(1,n-h);
6
matV2<-array(matV[fil2,col2],dim 7
=length(fil2)*length(col2)); 8
plot(matV1,matV2,xlab="V(t+h)",
9
ylab="V(t)");
dev.off()
Modelizacion
geoestadstica con R
24
Metodos deterministas
Tema 4 Estimacion.
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
250
200
150
100
50
50
100
150
200
250
Leyenda
Modelizacion
geoestad
stica con R
1400
25
1400
1200
1000
Inverso
la distancia
de
Splines
de a
Tensin
de V (T=100)
Polgonos
de
influencia
deVV
800
800
Escala
600
600
50
400
400
200
200
200
100
200
100
0
0
Modelizacion
geoestadstica con R
26
Mn.
Q1
Median.
Media
Q3
Max.
Simetr.
Apunt.
CV
0.00
67.79
221.30
278.00
428.30
1631.00
62423.16
249.84
0.90
0.77
0.90
Voronoi
0.00
70.70
224.40
275.10
425.90
1528.00
60039.41
245.03
0.89
1.25
0.89
IDW
0.46
163.00
297.20
316.80
428.50
1498.00
39458.06
198.64
0.63
1.39
0.63
RST
-47.51
121.20
277.90
277.90
379.50
1530.00
44820.41
211.71
0.76
2.44
0.76
WLC
15000
Frecuencia
5000
10000
15000
10000
5000
Frecuencia
20000
20000
25000
Vor
500
1000
1500
500
1000
IDW
RST
1500
5000
10000
Frecuencia
10000
5000
Frecuencia
15000
15000
500
1000
V
1500
500
1000
V
1500
Modelizacion
geoestadstica con R
27
4.1. Scripts
Listado 5: R-Script del tema 4
="Frecuencia")
49 hist(datos[[2]],main="Vor",xlab="V",ylab
N
1 #TEMA 4 - ESTIMACIO
2 ps.options(family="Bookman",pointsize
3
4
5
6
7
8
9
10
11
12
13
14
=15)
rm(list=ls())
="Frecuencia")
50 hist(datos[[3]],main="IDW",xlab="V",ylab
="Frecuencia")
51 hist(datos[[4]],main="RST",xlab="V",ylab
="Frecuencia")
#Cargar los datos wlm
library(lattice)
library(gstat)
data(walker)
wlm<-walker
attach(wlm)
#Ver wlm
postscript("imgs/04/wlm.ps")
xy<-xyplot(YX,wlm,pch=3,aspect=mapasp(
wlm))
15 print(xy)
16 dev.off()
17
18 #Importar valores reales wlc
19 wlc<-read.csv("wlc.csv",sep=";",dec=".",
header=TRUE)
20
21 #Importar los valores estimados en GRASS
22 idw<-read.csv(file="/geo/r/mapasgrass/
idw.values.asc",sep="|")
23 vor<-read.csv(file="/geo/r/mapasgrass/
52 dev.off()
zcolumn=u tension=100
4 r.contour input=splines output=spcontour
step=250
5 r.colors map=splines rules=grey
6
7
8 # CREAR MAPA DE VORONOI
9 g.remove rast=rvorwle vect=clvorwle,
vorwle
10 v.voronoi input=wle ouput=vorwle
11 v.clean input=vorwle output=clvorwle
type=boundary,line,centroid,area
tool=break,rmdupl,snap
12 g.region vect=clvorwle
13 r.colors map=rvorwle rast=splines
voronoi.values.asc",sep="|")
14
15
mapasgrass/splines.values.asc",sep=" 16
17
|")
18
25
26 # #Mostrar medias, varianzas y demas.... 19
27 Desv<-function(datos){sqrt(var(datos))}
20
28 CS<-function(V){sum((V-mean(V))3)/(
21
length(V)*Desv(V)3)}
29 K<-function(V){sum((V-mean(V))4/length( 22
24 splines<-read.csv(file="/geo/r/
V))/Desv(V)4-3}
30 CV<-function(V){Desv(V)/mean(V)}
31
32 datos<-list(wlc$V,vor$value,idw$value,
33
34
35
36
37
38
39
40
41
42
43
44
45
46
splines$value)
print("Resumen")
print(lapply(datos,summary))
print("Varianza")
print(lapply(datos,var))
pica")
print("Desviaci
on T
print(lapply(datos,Desv))
print("Simetr
a")
print(lapply(datos,CS))
print("Apuntalamiento")
print(lapply(datos,K))
print("Coeficiente de Variaci
on")
print(lapply(datos,CV))
# GENERAR MAPAS PS
ps.map input=splines.psmap output=
splines.ps
23 ps.map input=voronoi.psmap output=
voronoi.ps
24 ps.map input=idw.psmap output=idw.ps
25
26 # EXPORTAR A CSV
27 r.to.vect input=idw output=idw feature=
idw.values.asc #valores
32 echo "SELECT * FROM splines" | db.select
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
geoestadstica con R
coordenadas
grid 50
color black
numbers 2 black
end
vpoints wle
color black
fcolor black
size 1
label u
end
vlines idwcontour
color white
width 0.5
end
raster idw
maploc 0.7 3 7 10
28
58
59
60
61
62
63 end
left 0.5
right 0.5
bottom 0.5
top 0.5
end
grid 50
color black
numbers 2 black
end
vpoints wle
color black
fcolor black
size 1
label u
end
vlines spcontour
color white
width 0.5
end
raster splines
maploc 0.7 3 7 10
Modelizacion
geoestadstica con R
53
segment 5
54
numbers 5
55
fontsize 8
56
end
57 paper a4
58
left 0.5
59
right 0.5
60
bottom 0.5
61
top 0.5
62
end
63 end
grid 50
color black
numbers 2 black
end
vpoints wle
color black
fcolor black
size 1
end
vareas clvorwle
color black
fcolor none
end
raster rvorwle
maploc 0.7 3 7 10
29
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
font Bookman
size 10
end
text
20 385 Leyenda
font Bookman
size 6
end
colortable y
where 2 0.7
raster rvorwle
width 0.3
height 2
cols 6
font Bookman
fontsize 8
color black
end
text
160 345 Escala
font Bookman
size 6
end
scalebar f
where 5 2.1
length 50
height 0.05
segment 5
numbers 5
fontsize 8
end
paper a4
left 0.5
right 0.5
bottom 0.5
top 0.5
end
end
Modelizacion
geoestadstica con R
30
GSLIB
el que acepta este parametro,
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, el valor del variograma, las direcciones horizontales y verticales (si las hubiera)
y la variable utilizada.
> gstatV<-gstat(id="V",formula=V1,locations=X+Y,data=wlm)
> varOmni<-variogram(gstatV,width=10,cutoff=101)
> varOmni
np
dist
gamma dir.hor dir.ver id
1
565
7.291342 42743.67
0
0 V
2 2072 15.022197 67877.29
0
0 V
3 2948 24.783924 79062.05
0
0 V
4 3210 34.757173 94338.18
0
0 V
5 4044 44.673417 88377.42
0
0 V
6 4265 54.887742 94888.71
0
0 V
7 4926 64.548384 92944.57
0
0 V
8 5196 74.614543 94322.57
0
0 V
9 5533 84.724877 89014.25
0
0 V
10 5167 94.880575 98948.24
0
0 V
11 707 100.470981 86139.86
0
0 V
La figura 24 en la pagina
de lags y la continuidad
buscada. El parametro
en 80 metros en sucesivos
calculos.
31
6e+04
Semivariograma
2e+04
4e+04
6e+04
4e+04
2e+04
Semivariograma
8e+04
8e+04
1e+05
1e+05
Modelizacion
geoestadstica con R
t = 10
0e+00
0e+00
t=5
20
40
60
80
100
20
40
60
Distancia
100
1e+05
Semivariograma
2e+04
4e+04
6e+04
8e+04
1e+05
8e+04
6e+04
4e+04
2e+04
t = 15
t = 20
0e+00
0e+00
20
40
60
80
100
20
40
Distancia
60
80
Distancia
200000
180000
100
160000
50
map.dy
Semivariograma
80
Distancia
140000
120000
0
100000
50
80000
60000
100
40000
100
50
50
100
map.dx
100
Modelizacion
geoestadstica con R
32
100
map.dy
50
50
100
100
50
50
100
map.dx
8e+04
6e+04
15
45
75
105
135
165
0e+00
2e+04
4e+04
Semivariograma
1e+05
80000 100000
60000
20000
40000
0
30
60
90
120
150
180
Semivariograma
y mnima 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 numericamente 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 alrededor de dicho valor. Por ultimo
se ha creado un grafico
y en
torno a los 90 grados de mnimo, se asemejan a los obtenidos en los apuntes de la
asignatura.
20
40
60
80
100
20
40
Distancia
60
Distancia
80
100
Modelizacion
geoestadstica con R
33
20
40
60
80
100
120
140
160
180
20
40
60
80
100
120
140
160
180
50
40
30
Distancia en lag = 4
60
Direccin
continuidad no presentan grandes discontinuidades, el de mnima continuidad ofrece un aspecto poco clarificador debido
seguramente a la existencia de datos anomalos
Modelizacion
geoestadstica con R
34
608
1121
640
8e+04
876
1254
754
Semivariograma
464
6e+04
487
303
234
90
160
696
729
694
537
1473
1174
828
483
1065
1637
903
982
458
90
160
115
73
1481
902
799
1598
704
280
20000
4e+04
829
588
1165
0e+00
2e+04
Semivariograma
587
1092
530
80000 100000
613
396
60000
424
tol = 20
40000
1e+05
tol = 15
40
60
80
100
20
40
60
Distancia
Distancia
tol = 25
tol = 30
80
100
891
1090
1806
1089
546
305
2e+04
1296
1151
585
2100
1295
911
1773
2052
1392
2258
1193
2302
1464
1562
1094
723
320
90
160
151
20000
90
160
118
80000
1284
883
60000
985
503
1115
1940
Semivariograma
8e+04
1473
1006
1071
1889
40000
822
1771
6e+04
4e+04
1062
968
783
0e+00
Semivariograma
1e+05
120000
20
20
40
60
Distancia
80
100
20
40
60
Distancia
80
100
Modelizacion
geoestadstica con R
35
1993
1361
1513
1e+05
2415
1539
2677
1624
Semivariograma
1752
744
2485
1624
1205
856
329
90
160
980
2271
1582
2855
1769
2728
1816
2941
1884
1309
334
90
160
0e+00
0e+00
2656
1822
1904
179
60
80
100
60
tol = 50
1708
2949
1998
2439
3103
2072
3002
2011
3284
2181
Semivariograma
2255
1072
1495
1058
343
20000
2146
2050
1856
2710
100
3143
2228
3354
2284
3230
2293
3564
2476
2528
1209
1716
1114
359
90
160
230
20000
90
160
203
80
1626
1627
60000
1847
80000 100000
tol = 45
1812
60000
40
Distancia
1502
1362
20
Distancia
40000
80000 100000
40
20
40
60
80
100
20
40
Distancia
60
Distancia
2e+05
3e+05
4e+05
5e+05
1e+05
Cruzado
85
160
0e+00
Semivariograma
Semivariograma
20
40000
895
1520
1563
2e+04
2e+04
161
1368
1146
8e+04
2365
6e+04
1383
4e+04
8e+04
tol = 40
1368
1171
1076
6e+04
4e+04
Semivariograma
1e+05
tol = 35
20
40
60
80
100
Distancia
120
80
100
Modelizacion
geoestadstica con R
36
5.5. Scripts
Listado 10: Funciones para imprimir variogramas
1 #FUNCIONES PARA MOSTRAR VARIOGRAMAS
2 #-------------Plotear el primer
3
4
variograma
plotvar<-function(var,titulo,color,sepX,
sepY,limY,limX,nps){
plot(var$dist,var$gamma,type="b",
ylim=limY,xlim=limX,xlab="
Distancia",ylab="Semivariograma"
,col=color,main=titulo)
if (nps) text(var$dist+sepX,var$
gamma-sepY,var$np,col=color)
title(titulo)
}
6
7
8
9 #-------------A
nadir nuevos variogramas
10 addvar<-function(var,color,sepX,sepY,nps
11
12
){
points(var$dist,var$gamma,type="b",
col=color)
if (nps) text(var$dist+sepX,var$
gamma-sepY,var$np,col=color)
13 }
14
15 #-------------Funci
on principal de
grafiado
16 pintavars<-function(listvars,colores,
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
for (i in 2:nvars){
addvar(listvars[[i]],colores
[i],seps2[i,1],seps2[i
,2],nps)
}
41
42
43
44
45
46
}
#A
nadir la leyenda
legend(posley[1],posley[2],etiqs,
colores)
47 }
=15)
rm(list=ls())
library(lattice)
library(gstat)
#A
nadir las funciones programadas
source("Variogramas.R")
#------------#Cargar los datos wlm
data(walker)
wlm<-walker
attach(wlm)
etiqs,seps,titulo,posley,nps=FALSE){
#Obtener los l
mites
nvars<-length(listvars)
# Crear el objeto gstat
maxtemp<-array(0,nvars)
gstatV<-gstat(id="V",formula=V1,
for (i in 1:nvars){
locations=X+Y,data=wlm)
maxtemp[i]<-max(listvars[[i]]$
20
gamma)
21 #Obtener variogramas omni. a varias
}
distancias
limY<-c(0,max(maxtemp)*1.1)
22 secDists<-c(5,10,15,20)
23 colores<-c("red","green","blue")
maxtempA<-array(0,nvars)
24 postscript("imgs/05/omni %1d.ps",onefile=
maxtempB<-array(0,nvars)
FALSE)
for (i in 1:nvars){
maxtempA[i]<-min(listvars[[i]]$ 25 for (i in 1:length(secDists)){
26
si<-secDists[i];
dist);
letra<-as.character(si);
maxtempB[i]<-max(listvars[[i]]$ 27
28
varOmni<-variogram(gstatV,width=si,
dist)
cutoff=101)
}
pintavars(list(varOmni),"black",as.
limX<-c(min(maxtempA),max(maxtempB)* 29
expression(substitute(t==sii,
1.1)
list(sii=si))),c(3,4000),"",c
(40,2e4))
#Generar la matriz de separaciones
}
seps2<-matrix(seps,ncol=2,byrow=TRUE 30
31 dev.off()
)
32
Modelizacion
geoestadstica con R
38 lp<-levelplot(map.Vmap.dx*map.dy,
39
40
41
42
varOmni.map.df,col.regions=grises,
aspect=mapasp(varOmni.df))
print(lp)
dev.off()
postscript("imgs/05/omnimap2.ps")
cp<-contourplot(map.Vmap.dx*map.dy,
varOmni.map.df,labels=FALSE,cuts=7,
aspect=mapasp(varOmni.df))
print(cp)
dev.off()
43
44
45
46 #Crear familias de variogramas por
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
79
80
81
82
83
84
85
86
87
88
89
}
npMat<-cbind(grad,dist4)
postscript("imgs/05/ejes.ps")
plot(npMat,type="b",pch=21,bg="lightgray
",xlab="Direcci
on",ylab="Distancia
en lag = 4",axes=FALSE)
axis(1,at=seq(0,180,10),labels=FALSE);
axis(1,at=seq(0,180,20))
axis(3,at=seq(0,180,10),labels=FALSE);
axis(3,at=seq(0,180,20))
axis(2);box()
dev.off()
90
91
92
93
94 #Crear familias de variogramas por
direcciones
sec<-seq(0,180,5)
separaciones<-rep(c(4,2000),length(sec))
posleyenda<-c(60,60000)
95
varsDirs<-list()
96
varsDirsP1<-list();sec1<-list()
97
varsDirsP2<-list();sec2<-list()
98
for (j in 1:length(sec)){
99
sj<-sec[j]
100
101
letra<-as.character(sj)
varsDirs[[letra]]<-variogram(gstatV,
width=10,cutoff=100,alpha=sj,tol 102
103
.hor=40)
104
if (!sj % %30) {
varsDirsP1[[letra]]<-varsDirs[[ 105
106
letra]];
sec1[[letra]]<-letra
107
}
if (!sj % %15 && sj % %30) {
varsDirsP2[[letra]]<-varsDirs[[
108
letra]];
109
sec2[[letra]]<-letra
}
110
}
postscript("imgs/05/dirs %1d.ps",onefile=
FALSE)
pintavars(varsDirsP1,rainbow(length(sec1 111
)),as.character(sec1),separaciones," 112
113
",posleyenda)
pintavars(varsDirsP2,rainbow(length(sec2 114
)),as.character(sec2),separaciones," 115
",posleyenda)
116
dev.off()
69
70
71 #Buscar direcciones de los ejes de
72
73
74
75
76
77
78
37
117
118
anisotrop
a
nVars<-length(varsDirs)
grad<-sec
119
dist4<-rep(0,nVars)
120
yc<-90000
121
for (i in 1:nVars){
122
j<-1;
123
while(varsDirs[[i]]$gamma[j]<yc){j<- 124
j+1};
125
y2<-varsDirs[[i]]$gamma[j];
y1<-varsDirs[[i]]$gamma[j-1];
126
x2<-varsDirs[[i]]$dist[j];
x1<-varsDirs[[i]]$dist[j-1];
dist4[i]<-(yc-y1)*(x2-x1)/(y2-y1) + 127
x1
tolerancias
sec<-c(90,160)
lsec<-as.character(sec)
tols<-seq(15,50,5)
colores<-c("red","green")
separaciones<-rep(c(4,2000),length(sec))
posleyenda<-c(60,40000)
postscript("imgs/05/tols %1d.ps",onefile=
FALSE)
for (i in 1:length(tols)){
vars<-list()
#Sengudo bucle por direcciones
for (j in 1:length(sec)){
sj<-sec[j];letra<-as.character(
sj)
vars[[letra]]<-variogram(gstatV,
width=10,cutoff=100,alpha=sj
,tol.hor=tols[i])
}
letrat<-as.expression(substitute(tol
==t,list(t=tols[i])))
pintavars(vars,colores,lsec,
separaciones,letrat,posleyenda,
TRUE)
}
dev.off()
#Variogramas cruzados
#Para la U hay que eliminar
localizaciones sin dato
wlm2<-subset(wlm,!is.na(U))
gVU<-gstat(id="V",formula=V1,locations=
X+Y,data=wlm)
gVU<-gstat(gVU,id="U",formula=U1,
locations=X+Y,data=wlm2)
#Ver los variogramas
separaciones<-rep(c(4,2000),3)
posleyenda<-c(60,150000)
colores<-c("black","red","green")
etiqs<-c("Cruzado","85","160")
varsCruz<-list()
varsCruz[[1]]<-subset(variogram(gVU,
width=10),id=="V.U")
varsCruz[[2]]<-subset(variogram(gVU,
width=10,alpha=85,tol.h=40),id=="V.U
")
varsCruz[[3]]<-subset(variogram(gVU,
width=10,alpha=160,tol.h=40),id=="V.
Modelizacion
geoestadstica con R
U")
128 postscript("imgs/05/cross.ps")
129 pintavars(varsCruz,colores,etiqs,
separaciones,"",posleyenda)
38
130 dev.off()
Modelizacion
geoestadstica con R
39
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)
vgm(1,"Per",1)
vgm(1,"Hol",1)
vgm(1,"Log",1)
vgm(1,"Pow",1)
vgm(1,"Spl",1)
3
2
semivariance
1
0
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
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)) simplemente anadiendo
su definicion
unos sobre otros. As, podemos anadir
crear un modelo
o
para el variograma direccional de 160 de la Variable V segun
la siguiente definicion:
(6)
Modelizacion
geoestadstica con R
40
Semivariograma
80000
60000
40000
20000
20
40
60
80
100
Distancia
Semivariograma
80000
60000
40000
20000
20
40
60
80
100
Distancia
Modelizacion
geoestadstica con R
41
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 = V1 ; locations = X + Y ; data dim = 470 x 6
variograms:
model
psill
range
V[1]
Nug
186.3867 0.00000
V[2]
Exp 93809.2943 12.01007
Semivariograma
80000
60000
40000
20000
20
40
60
80
100
Distancia
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
Modelizacion
geoestadstica con R
42
> vario.b<-variog(geoV,max.dist=130,breaks=seq(0,130,10))
variog: computing omnidirectional variogram
> vario.m<-eyefit(vario.b)
Loading required package: tcltk
de dispersion
de la variable contra las coordenadas X e Y respectivamente (fig. 37).
Por ultimo,
geoR tambien ajusta por mnimos cuadrados el modelo de variograma de forma analoga
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 tipo 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
250
Coord Y
150 200
100
50
0
50
100
Y Coord
150 200
250
300
43
300
Modelizacion
geoestadstica con R
50
100 150
X Coord
200
100 150
Coord X
200
250
500
1000
1500
data
20
500
data
Frequency
40 60 80
1000
100
1500
50
250
500
1000
data
6e+04
4e+04
2e+04
0e+00
Semivariograma
8e+04
1e+05
20
40
60
80
100
Distancia
1500
Modelizacion
geoestadstica 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)
N DEL VARIOGRAMA
1 # TEMA 6 MODELIZACIO
2 ps.options(family="Bookman",pointsize
=15)
3 rm(list=ls())
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
library(lattice)
library(gstat)
#A
nadir las funciones programadas
source("Variogramas.R")
32 print(plot(var,model=m,xlab="Distancia",
ylab="Semivariograma",pch=3,bg="grey
"))
33 dev.off()
34
35 #Ajustar al variograma omnidireccional
width=10),m)
g<-gstat(g,id="V",model=mfit)
#Cargar los datos wlm
print(g)
data(walker)
postscript("imgs/06/mfitV.ps")
wlm<-walker;rm(walker)
print(plot(variogram(g["V"]),model=g$
attach(wlm)
model$V,xlab="Distancia",ylab="
# Crear el objeto gstat
Semivariograma",pch=3,bg="grey"))
g<-gstat(id="V",formula=V1,locations=X 42 dev.off()
+Y,data=wlm)
43
44 # #Usando geoR para estimar y ajustar el
#Ver modelos de variograma
variograma
postscript("imgs/06/modelos.ps")
45 library(geoR)
print(show.vgms())
46 geoV<-as.geodata(wlm,2:3,4)
dev.off()
47 postscript("imgs/06/geoV.ps")
48 plot(geoV)
#Modelo esf
erico
49 dev.off()
postscript("imgs/06/esferico.ps")
50 vario.b<-variog(geoV,max.dist=100,breaks
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")
dev.off()
53 postscript("imgs/06/geoVfit.ps")
54 plot(vario.b,pch=21,bg="grey",xlab="
#A
nadir diferentes modelos.
Distancia",ylab="Semivariograma");
postscript("imgs/06/imbr.ps")
lines(vario.m2)
m<-vgm(40e3,"Sph",30,add.to=vgm(22000," 55 dev.off()
Nug",add.to=vgm(45e3,"Sph",150)))
38
39
40
41
Modelizacion
geoestadstica 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
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
150
150
2000
600
100
100
400
1000
50
50
200
0
50
100
150
200
0
50
100
150
(a) V
(b) U
200
Ya solo
falta ejecutar el comando krige con la formula
y simetricas ( 40 en la
pagina
siguiente).
46
30000
Modelizacion
geoestadstica con R
15000
15587
10000
12274
8762
5000
Frecuencia
20000
25000
29491
4409
3190
1900
1128
30 150 610
500
326 99
29
500
1000
Error
de la orden
krige a VX+Y para que se ejecute esta variedad del krigeado.
KU<-krige(VX+Y,X+Y,wlm,wlc,g$model$V)
pasando un nuevo
parametro
con el tamano
del bloque en un vector de una a tres dimensiones (dependiendo del numero
maximo
de puntos (nmax).
O una distancia maxima
(maxdist).
Si se especifica tambien un numero
47
30000
Modelizacion
geoestadstica con R
20000
15000
15624
11348
10000
Frecuencia
25000
30154
5000
8874
4405
3206
1919
1160
618
22 142
500
383 101 29
500
1000
Error
30000
15000
15307
10000
11473
5000
9198
4673
3318
1869
Frecuencia
20000
25000
29782
1207
16 111 584
500
335 89
500
26
1000
Error
Modelizacion
geoestadstica con R
48
de 15 metros y un numero
30000
KUL<-krige(VX+Y,X+Y,wlm,wlc,g$model$V,nmin=5,maxdist=30)
15000
15307
10000
11473
9198
5000
Frecuencia
20000
25000
29782
4673
3318
1869
1207
16 111 584
500
335 89
26
500
1000
Error
Modelizacion
geoestadstica con R
49
Modelizacion
geoestadstica con R
50
30000
20000
14892
10000
Frecuencia
40000
50000
50962
7493
2600
1131492 195
96 62 27 12 6
22
2000
4000
6000
8000
Error
20000
22081
10000
0
Frecuencia
30000
40000
42942
8044
2657
1077
43519995 50 23 7 4 1 3 0 2 1 1 0 0 1
3 22 59 294
2000
2000
4000
6000
8000
Error
10000
Modelizacion
geoestadstica con R
51
8.7. Resultados
de V
8.7.1. Modelizacion
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 comparan se muestran los estadsticos de las diferencias entre los valores estimados y los
valores reales (wlc).
En el diagrama de cajas (fig. 47 en la pagina
siguiente).
1600
1600
1400
1400
250
250
1200
1200
200
200
800
150
1000
1000
800
150
600
600
100
100
400
400
50
50
200
200
0
50
100
150
200
50
100
150
(a) KO
(b) KU
200
1600
1600
1400
1400
250
250
1200
1200
200
200
800
150
1000
1000
800
150
600
100
600
100
400
50
400
50
200
200
0
50
100
150
200
0
50
100
150
(c) KUB
(d) KUL
200
de U
8.7.2. Modelizacion
Viendo la prediccion
del cokrigeado, se observa que el resultado no es demasiado satisfactorio, seguramente porque la modelizacion
del variograma, al restringir al
Modelizacion
geoestadstica con R
52
350
350
300
300
250
250
250
250
200
200
200
200
150
150
150
150
100
100
100
100
50
50
50
50
0
50
100
150
200
50
100
150
(a) KO
(b) KU
200
350
350
300
300
250
250
250
250
200
200
200
200
150
150
150
100
150
100
100
50
100
50
50
50
0
50
100
150
200
0
50
100
150
(c) KUB
(d) KUL
200
Media
Mnimo
Q1
Q2
Q3
Max.
Var.
Desv.
CS
K
CV
KO
5.77
-686.11
-71.55
28.6
89.31
967.39
21394.29
146.27
-0.39
1.45
25.34
Estadsticos
KU
KUB
4.35
4.47
-684.74
-645.48
-72.55
-76.87
25.94
28.71
84.83
86.51
967.42
913.93
21344.87 21325.76
146.10
146.03
-0.34
-0.32
1.47
1.23
33.56
32.68
KUL
-4.13
-928.96
-80.85
12.572
77.19
969.61
22621.25
150.40
-0.32
1.86
-36.42
53
KO
KU
KUB
KUL
Modelizacion
geoestadstica con R
1000
500
500
1000
Modelizacion
geoestadstica 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
siguiente).
5000
5000
250
250
4000
4000
200
200
3000
3000
150
150
2000
2000
100
100
1000
1000
50
50
0
50
100
150
200
50
100
150
(a) CKO
(b) UKO
200
800
800
700
700
250
250
600
600
200
200
400
150
500
500
400
150
300
100
300
100
200
50
200
50
100
100
0
50
100
150
200
0
50
100
150
(a) CKO
(b) UKO
200
Modelizacion
geoestadstica con R
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
55
Modelizacion
geoestadstica con R
56
8.8. Scripts
Listado 13: R-Script del tema 8
1 # TEMA 8 KRIGING
2 ps.options(family="Bookman",pointsize
=15)
3 # rm(list=ls())
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
library(lattice)
library(gstat)
46
47 #Generar el objeto gstat
48 g<-gstat(id="V",formula=V1,locations=X
+Y,data=wlm)
49 #Establecer un modelo inicial de V
50 mv<-vgm(72e3,"Exp",15,22e3)
51 #Ajustar el modelo con el variograma
omnidireccional
52 mvfit<-fit.variogram(variogram(g["V"],
width=10,cutoff=100),mv)
#Funci
on que devuelve estad
sticas
calcestads<-function(datosO){
Desv<-function(datos){sqrt(var(datos
))}
CS<-function(V){sum((V-mean(V))3)/(
length(V)*Desv(V)3)}
K<-function(V){sum((V-mean(V))4/
length(V))/Desv(V)4-3}
CV<-function(V){Desv(V)/mean(V)}
datos<-datosO[!is.na(datosO)]
data.frame(media=mean(datos),Q0=min(
datos),
Q1=as.double(quantile(datos,0.25,na.
rm=TRUE)),
Q2=median(datos),
Q3=as.double(quantile(datos,0.75,na.
rm=TRUE)),
Q4=max(datos),
var=var(datos),desv=Desv(datos),
CS=CS(datos),K=K(datos),CV=CV(datos)
)
}
#Niveles y secuencias
niv<-seq(0,1600,200)
niv2<-seq(0,350,50)
nivH<-seq(-700,1000,100)
nivH2<-seq(-1000,1000,100)
gris1<-gray(seq(0.9,0.3,l=30))
gris2<-gray(seq(0.99,0.5,l=7))
gris3<-gray(seq(0.9,0.3,l=8))
#Cargar los datos wlm
print("Cargando datos...")
data(walker)
wlm<-walker;rm(walker)
attach(wlm)
#Importar e imprimir los valores reales
wlc
wlc<-read.csv("wlc.csv",sep=";",dec=".",
header=TRUE)
postscript("imgs/08/wlc %01d.ps",onefile=
FALSE)
print(levelplot(VX+Y,wlc,at=niv,aspect=
mapasp(wlc),col.regions=gris1))
print(levelplot(UX+Y,wlc,at=seq
(0,5200,400),aspect=mapasp(wlc),col.
regions=gris1))
dev.off()
53 #A
nadir el ajuste al objeto gstat
54 g<-gstat(g,id="V",model=mvfit)
55
56 #Crear una malla regular de unas 5000
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
celdas (aprox)
wlmGrid<-makegrid(X,Y,5000)
names(wlmGrid)<-c("X","Y")
#KRIGEADO ORDINARIO
print("Calculando KO...")
KO<-read.csv("KO.csv")
# KO<-krige(V1,X+Y,wlm,wlc,g$model$V)
# write.table(round(KO,3),file="KO.csv",
sep=",",row.names=FALSE)
difKO<-KO$var1.pred-wlc$V
postscript("imgs/08/KO %01d.ps",onefile=
FALSE)
graf1<-levelplot(var1.predX+Y,KO,at=niv
,aspect=mapasp(KKULO),contour=TRUE,
col.regions=gris1,labels=FALSE)
graf2<-levelplot(sqrt(var1.var)X+Y,KO,
at=niv2,aspect=mapasp(KO),col.
regions=gris2)
print(graf1);print(graf2)
hist(difKO,breaks=nivH,labels=TRUE,main=
"",col="lightgray",xlab="Error",ylab
="Frecuencia")
dev.off()
#KRIGEADO UNIVERSAL
print("Calculando KU...")
KU<-read.csv("KU.csv")
# KU<-krige(VX+Y,X+Y,wlm,wlc,g$model$V
)
# write.table(round(KU,3),file="KU.csv",
sep=",",row.names=FALSE)
difKU<-KU$var1.pred-wlc$V
postscript("imgs/08/KU %01d.ps",onefile=
FALSE)
graf1<-levelplot(var1.predX+Y,KU,at=niv
,aspect=mapasp(KU),contour=TRUE,col.
regions=gris1,labels=FALSE)
graf2<-levelplot(sqrt(var1.var)X+Y,KU,
at=niv2,aspect=mapasp(KU),col.
regions=gris2)
print(graf1);print(graf2)
hist(difKU,breaks=nivH,labels=TRUE,main=
"",col="lightgray",xlab="Error",ylab
="Frecuencia")
Modelizacion
geoestadstica con R
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
dev.off()
57
125
126 # COKRIGEADO
127 print("Iniciando CKO...")
128 #Rehacer el objeto gstat s
olo con las
146
147
#KRIGEADO UNIVERSAL LOCAL
148
print("Calculando KUL...")
KUL<-read.csv("KUL.csv")
# KUL<-krige(VX+Y,X+Y,wlm,wlc,g$model$ 149
V,nmin=5,maxdist=30)
150
# write.table(round(KUL,3),file="KUL.csv 151
",sep=",",row.names=FALSE)
152
difKUL<-KUL$var1.pred-wlc$V
153
postscript("imgs/08/KUL %01d.ps",onefile= 154
155
FALSE)
graf1<-levelplot(var1.predX+Y,KUL,at=
niv,aspect=mapasp(KUL),contour=TRUE, 156
157
col.regions=gris3,labels=FALSE)
graf2<-levelplot(sqrt(var1.var)X+Y,KUL,
at=niv2,aspect=mapasp(KUB),col.
158
regions=gris2)
print(graf1);print(graf2)
hist(difKUL,breaks=nivH2,labels=TRUE,
main="",col="lightgray",xlab="Error" 159
,ylab="Frecuencia")
dev.off()
112
113
114 #RESUMEN DE DIFERENCIAS
115 print("Calculando Resumen...")
116 diff.l<-list(KO=difKO,KU=difKU,KUB=
difKUB,KUL=difKUL)
#Ejecutar el cokrigeado
print("Calculando CKO...")
CKO<-read.csv("CKO.csv")
# CKO<-predict(g.fit, newdata = wlc)
# write.table(round(CKO,3),file="CKO.csv
",sep=",",row.names=FALSE)
difCKO<-wlc$U-CKO$U.pred
postscript("imgs/08/CKO %01d.ps",onefile=
FALSE)
graf1<-levelplot(U.predX+Y,CKO,at=seq
(0,5200,400),aspect=mapasp(CKO),
contour=TRUE,col.regions=gray(seq
(0.99,0.3,l=30)),labels=F)
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
117 diff.R<-lapply(diff.l,calcestads)
118 diff.Rdf<-data.frame(rbind(diff.R[[1]], 164 #Calcular el krigeaado ordinario de U
para comparar
diff.R[[2]],diff.R[[3]],diff.R[[4]])
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(U1,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
geoestadstica con R
,col.regions=gris1)
FALSE)
174 print(graf1);print(graf2)
172 graf1<-levelplot(var1.predX+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)
58
Modelizacion
geoestadstica con R
59
Referencias
[1] M AR TI NEZ L LARIO , J OS E C ARLOS y C OLL A LIAGA , E LOINA, Apuntes de geoestadstica basica.
683691, 2004.
[4] R D EVELOPMENT C ORE T EAM, Introduccion
a R, R Foundation for Statistical Computing, Vienna, Austria, 2000.
[5] R D EVELOPMENT C ORE T EAM, R: A language and environment for statistical computing, R Foundation for Statistical Computing, Vienna, Austria, 2004, ISBN 3900051-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.