require(geoR)
## Loading required package: geoR
## --------------------------------------------------------------
## Analysis of Geostatistical Data
## For an Introduction to geoR go to http://www.leg.ufpr.br/geoR
## geoR version 1.8-1 (built on 2020-02-08) is now loaded
## --------------------------------------------------------------
library(readxl)
library(readxl)
require(rasterVis)
## Loading required package: rasterVis
## Loading required package: raster
## Loading required package: sp
## Loading required package: lattice
## Loading required package: latticeExtra
require(raster)
library(readxl)
datos <- read_excel("C:/Users/linam/Desktop/Doctorado-20201031T024248Z-001/Doctorado/Semestre V/Analisis Espacial de Datos/base_cienaga.xls")
head(datos)
## # A tibble: 6 x 6
## Este Norte prof temp sali oxig
## <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 976952 1706444 1.75 26.4 29.0 6.34
## 2 970883. 1704880. 1.4 30.3 13.0 9.42
## 3 972704. 1704827. 1.1 30.4 19.2 7.88
## 4 974718 1704874 1.5 28.3 35.0 5.67
## 5 976538 1704874 0.5 27 34.0 5.49
## 6 955344. 1703160. 1.62 26 18.0 5.07
plot(datos[,1:2])
##names(datos)=c("Este","Norte","Temp")
points(datos[,1:2], col="red", pch=16)

geodatos=as.geodata(datos,coords.col=1:2,data.col=4)
plot(geodatos)

##Semivariograma experimental
summary(dist(geodatos$coords))
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 1373 6994 11204 11531 15606 31924
summary(dist(geodatos$coords[1:5,]))
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 1624 1870 3282 3415 4368 6268
##geodatos$data=sample(geodata$data)
variograma=variog(geodatos,option = "bin",uvec=seq(0,20000,1500))
## variog: computing omnidirectional variogram
plot(variograma,pch=16)

##lines(variograma_aleatorio,col="red")
geodatos.env=variog.mc.env(geodatos,obj=variograma)
## variog.env: generating 99 simulations by permutating data values
## variog.env: computing the empirical variogram for the 99 simulations
## variog.env: computing the envelops
plot(variograma, pch=16, main=names(datos)[4], envelope=geodatos.env)
names(datos)
## [1] "Este" "Norte" "prof" "temp" "sali" "oxig"
##Ajuste del Modelo de Semivarianza
ini.vals=expand.grid(seq(5,7,l=10), seq(10000,5000,l=10))
model_mco_gaus=variofit(variograma,ini=ini.vals,cov.model="gaussian",wei="npair", min="optim", nugget=0)
## variofit: covariance model used is gaussian
## variofit: weights used: npairs
## variofit: minimisation function used: optim
## variofit: searching for best initial value ... selected values:
## sigmasq phi tausq kappa
## initial.value "6.33" "7777.78" "0" "0.5"
## status "est" "est" "est" "fix"
## loss value: 353.860197210756
model_mco_exp=variofit(variograma,ini=ini.vals,cov.model="exponential",wei="npair", min="optim", nugget=0)
## variofit: covariance model used is exponential
## variofit: weights used: npairs
## variofit: minimisation function used: optim
## variofit: searching for best initial value ... selected values:
## sigmasq phi tausq kappa
## initial.value "7" "8888.89" "0" "0.5"
## status "est" "est" "est" "fix"
## loss value: 2484.41516301323
model_mco_sphe=variofit(variograma,ini=ini.vals,cov.model="spheric",wei="npair", min="optim", nugget=0)
## variofit: covariance model used is spherical
## variofit: weights used: npairs
## variofit: minimisation function used: optim
## variofit: searching for best initial value ... selected values:
## sigmasq phi tausq kappa
## initial.value "5.22" "10000" "0" "0.5"
## status "est" "est" "est" "fix"
## loss value: 6345.73259045248
lines(model_mco_gaus, col="red")
lines(model_mco_exp, col="blue")
lines( model_mco_sphe,col="purple")

##Predicciòn Espacial Kriging
geodatos_gird=expand.grid(Este=seq(952023,979916,l=100),Norte=seq(1677586, 1708649,l=100))
plot(geodatos_gird)

geodatos_ko=krige.conv(geodatos,loc=geodatos_gird,krige=krige.control(nugget=0,trend.d = "cte", trend.l= "cte", cov.pars =c(sigmasq=6.2810, phi=7971.9857 )))
## krige.conv: model with constant mean
## krige.conv: Kriging performed using global neighbourhood
par(mfrow=c(1,1))
image(geodatos_ko,main="kriging predict", xlab="East", ylab="North")
contour(geodatos_ko,main="Kriging Predict", add=TRUE, drawlabels=TRUE)

image(geodatos_ko,main="kriging StDv predict", val=sqrt(geodatos_ko$krige.var),xlab="East", ylab="North")

contour(geodatos_ko,main="kriging StDv predict", val=sqrt(geodatos_ko$krige.var),xlab="East", ylab="North")

require(rasterVis)
require(raster)
pred=cbind(geodatos_gird,geodatos_ko$predict)
temp_predict=rasterFromXYZ(cbind(geodatos_gird,geodatos_ko$predict))
plot(temp_predict)

temp_error=rasterFromXYZ(cbind(geodatos_gird,geodatos_ko$krige.var))
plot(temp_error)
