R/spseg.R

Defines functions spseg

Documented in spseg

# ------------------------------------------------------------------------------
# Function 'spseg'
#
# Author: Seong-Yun Hong <hong.seongyun@gmail.com>
# ------------------------------------------------------------------------------
spseg <- function(x, data, method = "all", smoothing = "none", 
                  nrow = 100, ncol = 100, window, sigma, useC = TRUE, negative.rm = FALSE, 
                  tol = .Machine$double.eps, verbose = FALSE, ...) {
  
  # ----------------------------------------------------------------------------
  # STEP 1 Data preparation
  # ----------------------------------------------------------------------------
  if (verbose)
    tmp <- chksegdata(x, data)
  else
    tmp <- suppressMessages(chksegdata(x, data))
  
  coords <- tmp$coords
  data <- tmp$data
  proj4string <- tmp$proj4string
  
  # Validate smoothing argument
  smoothing <- match.arg(smoothing, c("none", "kernel", "equal"), several.ok = FALSE)
  
  # ----------------------------------------------------------------------------
  # STEP 2 Estimate the data surface
  # ----------------------------------------------------------------------------
  if (smoothing == "equal") {
    tmp <- surface.equal(x, data, nrow, ncol, verbose)
    coords <- tmp$coords
    data <- tmp$data
  }
  
  else if (smoothing == "kernel") {
    if (missing(window)) {
      x_range <- range(coords[,1])
      y_range <- range(coords[,2])
      window <- matrix(c(x_range[1], y_range[1], 
                         x_range[1], y_range[2], 
                         x_range[2], y_range[2], 
                         x_range[2], y_range[1]), 
                       ncol = 2, byrow = TRUE)
    }
    
    if (missing(sigma))
      sigma <- min(bw.nrd(coords[,1]), bw.nrd(coords[,2]))
    
    tmp <- surface.kernel(coords, data, sigma, nrow, ncol, window, verbose)
    coords <- tmp$coords
    data <- tmp$data
  }
  
  # ----------------------------------------------------------------------------
  # STEP 3 Calculate the population composition of each local environment
  # ----------------------------------------------------------------------------
  env <- localenv(coords, data, ...)
  env <- update(env, proj4string = CRS(proj4string))
  
  # ----------------------------------------------------------------------------
  # STEP 4 Compute the segregation indices
  # ----------------------------------------------------------------------------
  spatseg(env, method, useC, negative.rm, tol)
}
syunhong/seg documentation built on Feb. 3, 2025, 7:23 a.m.