inst/doc/Optimizing_spatialising_parameters.R

## ----include = FALSE----------------------------------------------------------
set.seed(2023-05-10)
knitr::opts_chunk$set(
  collapse = TRUE,
  fig.width = 7,
  comment = "#>"
)

## ----setup--------------------------------------------------------------------
library(terra)
library(spatialising)
maine2013 = rast(system.file("raster/maine2013.tif", package = "spatialising"))
maine2016 = rast(system.file("raster/maine2016.tif", package = "spatialising"))

## -----------------------------------------------------------------------------
plot(c(maine2013, maine2016))

## -----------------------------------------------------------------------------
composition_index(c(maine2013, maine2016))

## -----------------------------------------------------------------------------
texture_index(c(maine2013, maine2016))

## -----------------------------------------------------------------------------
sim1 = kinetic_ising(maine2013, B = 0.3, J = 0.9, iter = ncell(maine2013) * 3, inertia = 150)
sim2 = kinetic_ising(maine2013, B = 0.7, J = 0.1, iter = ncell(maine2013) * 3, inertia = 150)

## -----------------------------------------------------------------------------
plot(c(sim1, sim2))

## -----------------------------------------------------------------------------
maine2016_metrics = c(composition_index(maine2016), texture_index(maine2016))
sim1_metrics = c(composition_index(sim1), texture_index(sim1))
sim2_metrics = c(composition_index(sim2), texture_index(sim2))

## -----------------------------------------------------------------------------
all_metrics = rbind(maine2016_metrics, sim1_metrics, sim2_metrics)
dist(all_metrics)

## -----------------------------------------------------------------------------
optimize_model = function(x){
  sim = spatialising::kinetic_ising(x = maine2013, B = x[1], J = x[2], 
                                    iter = ncell(maine2013) * 3, inertia = 150)  
  maine2016_metrics = c(composition_index(maine2016), texture_index(maine2016))
  sim_metrics = c(composition_index(sim), texture_index(sim))             
  dist(rbind(maine2016_metrics, sim_metrics))[[1]]
}

## -----------------------------------------------------------------------------
library(optimization)
optim_params = optim_sa(fun = optimize_model, 
                        start = c(0, 0), lower = c(-0.9, 0), upper = c(0.9, 0.9))

## -----------------------------------------------------------------------------
optim_params$par

## -----------------------------------------------------------------------------
sim_optim = kinetic_ising(maine2016, 
                          B = optim_params$par[1], J = optim_params$par[2], 
                          iter = ncell(maine2013) * 3, inertia = 150)
plot(sim_optim)

## -----------------------------------------------------------------------------
sim_optim_metrics = c(composition_index(sim_optim), texture_index(sim_optim))             
dist(rbind(maine2016_metrics, sim_optim_metrics))[[1]]

## -----------------------------------------------------------------------------
plot(c(maine2013, maine2016, sim_optim), nr = 1)

Try the spatialising package in your browser

Any scripts or data that you put into this service are public.

spatialising documentation built on Nov. 28, 2023, 1:08 a.m.