R/moran.bounds.R In adespatial: Multivariate Multiscale Spatial Analysis

Documented in moran.bounds

```#' Function to compute extreme values of Moran's I
#'
#' This function computes the upper and lower bounds of Moran's I for a given spatial weighting matrix (stored in a \code{listw} object).
#' These values are obtained by the eigendecomposition of the spatial weighting matrix.
#'
#'
#'
#' @param listw an object of class \code{listw}
#' @return A vector containing the maximum and minimum of Moran's I for a given spatial weighting matrix value returned
#' @author Stéphane Dray \email{[email protected]@univ-lyon1.fr}
#' @references de Jong, P., Sprenger, C., & van Veen, F. (1984). On extreme values of Moran’s I and Geary's C. Geographical Analysis, 16(1), 17–24.
#' @keywords spatial
#' @examples
#'
#'  if(require("spdep", quietly = TRUE)){
#'      data(oribatid)
#'      nbtri <- tri2nb(as.matrix(oribatid\$xy))
#'      lwB <- nb2listw(nbtri, style = "B")
#'      lwW <- nb2listw(nbtri, style = "W")
#'      scB <- mem(lwB)
#'      scW <- mem(lwW)

#'      moran.bounds(lwB)
#'      moran.mc(scB[,1], lwB, 9)
#'      moran.mc(scB[,69], lwB, 9)

#'      moran.bounds(lwW)
#'      moran.mc(scW[,1], lwW, 9)
#'      moran.mc(scW[,69], lwW, 9)
#'  }
#' }
#'
#' @importFrom spdep listw2mat
#'
#' @export

moran.bounds <- function(listw){
W <- listw2mat(listw)
W <- (W + t(W)) / 2
res <- nrow(W) / sum(W) *  range(eigen(bicenter.wt(W), only.values = TRUE))
names(res) <- c("Imin", "Imax")
return(res)
}
```