Applies moran() to different distance thresholds at the same time.

moran_multithreshold(
  x = NULL,
  distance.matrix = NULL,
  distance.thresholds = NULL,
  verbose = TRUE
)

Arguments

x

Numeric vector, generally model residuals, Default: NULL

distance.matrix

Distance matrix among cases in x. The number of rows of this matrix must be equal to the length of x. Default: NULL

distance.thresholds

Numeric vector, distances below each value are set to 0 on separated copies of the distance matrix for the computation of Moran's I at different neighborhood distances. If NULL, it defaults to seq(0, max(distance.matrix)/4, length.out = 2). Default: NULL

verbose

Logical, if TRUE, plots Moran's I values for each distance threshold. Default: TRUE

Value

A named list with the slots:

  • df: Data frame with the results of moran per distance threshold.

  • plot: A plot of Moran's I across distance thresholds.

  • max.moran: Maximum value of Moran's I across thresholds.

  • max.moran.distance.threshold: Distance threshold with the maximum Moran's I value.

Details

Using different distance thresholds helps to take into account the uncertainty about what "neighborhood" means in ecological systems (1000km in geological time means little, but 100m might be quite a long distance for a tree to disperse seeds over), and allows to explore spatial autocorrelation of model residuals for several minimum-distance criteria at once.

See also

Examples

if(interactive()){

 #loading example data
 data(distance_matrix)
 data(plant_richness)

 #computing Moran's I for the response variable at several reference distances
 out <- moran_multithreshold(
   x = plant_richness$richness_species_vascular,
   distance.matrix = distance_matrix,
   distance.thresholds = c(0, 100, 1000, 10000),
   plot = TRUE
   )
 out

}