Capítulo 10 Otimização de Configurações Amostrais
10.1 Introdução
10.2 Estimativa de tendências
# Otimização para estimativa de tendências espaciais ####
# Cronograma de recozimento simulado
schedule <- spsann::scheduleSPSANN(
chains = 1000, initial.temperature = 50, stopping = 100,
x.max = 1540, y.max = 2060, x.min = 0, y.min = 0, cellsize = 40)
# Covariáveis espaciais:
# - soil: tipo de solo (3 categorias)
# - ffreq: frequência de inundação (3 categorias)
covars <- c("soil", "ffreq")
image(meuse.grid, "soil", axes = TRUE, col = terrain.colors(3))
image(meuse.grid, "ffreq", axes = TRUE, col = heat.colors(3))
# Otimização: somente no espaço de atributos
set.seed(2001)
res_dist_att <- spsann::optimDIST(
points = 15, candi = meuse.grid@coords, covars = meuse.grid@data[, covars],
schedule = schedule, plotit = TRUE)
# Otimização: em ambos os espaços de atributos e geográfico
set.seed(2001)
res_dist_geo <- spsann::optimDIST(
points = 15, candi = meuse.grid@coords, covars = meuse.grid@data[, covars],
use.coords = TRUE, schedule = schedule, plotit = TRUE)
# Comparar visualmente ambas as configurações #####
# Salvar imagem no formato PNG
dev.off()
png("images/optim_dist.png", height = 480 * 2, width = 480 * 3, res = 150)
par(mfrow = c(1, 2))
# Legenda
leg <- c("Sem coordenadas", "Com coordenadas")
# Tipo de solo
image(meuse.grid, "soil", axes = TRUE, col = terrain.colors(3))
title(main = "Tipo de solo", xlab = "Longitude (m)", ylab = "Latitude (m)")
points(res_dist_att$points[, 2:3], pch = 21)
points(res_dist_geo$points[, 2:3], pch = 24)
legend("topleft", pch = c(21, 24), legend = leg, bty = "n", title = "Covariáveis")
# Frequência de inundação
image(meuse.grid, "ffreq", axes = TRUE, col = cm.colors(3))
title(main = "Frequência de inundação", xlab = "Longitude (m)", ylab = "Latitude (m)")
points(res_dist_att$points[, 2:3], pch = 21)
points(res_dist_geo$points[, 2:3], pch = 24)
legend("topleft", pch = c(21, 24), legend = leg, bty = "n", title = "Covariáveis")
dev.off()
10.3 Estimativa de variogramas
# Otimização para estimativa de variogramas ####
# Cronograma de recozimento simulado
schedule <- spsann::scheduleSPSANN(
chains = 1000, initial.temperature = 200, stopping = 100,
x.max = 1540, y.max = 2060, x.min = 0, y.min = 0, cellsize = 40)
# Otimização: pontos por classe de distância
set.seed(1984)
res_ppl_points <- spsann::optimPPL(
points = 15, candi = meuse.grid@coords, schedule = schedule, plotit = TRUE)
# Otimização: pares de pontos por classe de distãncia
set.seed(1984)
res_ppl_pairs <- spsann::optimPPL(
points = 15, candi = meuse.grid@coords, schedule = schedule, plotit = TRUE, pairs = TRUE)
# Comparar visualmente ambas as configurações #####
# Salvar imagem no formato PNG
dev.off()
png("images/optim_ppl.png", width = 480 * 3, height = 480 * 2, res = 150)
par(mfrow = c(1, 2))
# Pontos
image(meuse.grid, "soil", axes = TRUE, col = terrain.colors(3))
title(xlab = "Longitude (m)", ylab = "Latitude (m)", main = "Pontos por classe de distância")
points(res_ppl_points$points[, 2:3], pch = 21)
text(meuse.grid@bbox[1, 1], meuse.grid@bbox[2, 2], labels = "(a)")
# Pares de pontos
image(meuse.grid, "soil", axes = TRUE, col = terrain.colors(3))
title(xlab = "Longitude (m)", ylab = "Latitude (m)", main = "Pares por classe de distância")
points(res_ppl_pairs$points[, 2:3], pch = 21)
text(meuse.grid@bbox[1, 1], meuse.grid@bbox[2, 2], labels = "(b)")
dev.off()
10.4 Interpolação espacial
# Otimização para estimativa de tendências espaciais ####
# Cronograma de recozimento simulado
schedule <- spsann::scheduleSPSANN(
chains = 1000, initial.temperature = 500000, stopping = 100,
x.max = 1540, y.max = 2060, x.min = 0, y.min = 0, cellsize = 40)
# Otimização
set.seed(1984)
res_mssd <- spsann::optimMSSD(
points = 15, candi = meuse.grid@coords, schedule = schedule, plotit = TRUE)
# Salvar imagem no formato PNG
dev.off()
png("images/optim_mssd.png", width = 480 * 3, height = 480 * 2, res = 150)
# Tipo de solo
image(meuse.grid, "soil", axes = TRUE, col = terrain.colors(3))
title(xlab = "Longitude (m)", ylab = "Latitude (m)")
points(res_mssd$points[, 2:3], pch = 21)
dev.off()