Ranks spatial predictors generated by mem_multithreshold() or pca_multithreshold() by their effect in reducing the Moran's I of the model residuals (ranking.method = "effect"), or by their own Moran's I (ranking.method = "moran").

In the former case, one model of the type y ~ predictors + spatial_predictor_X is fitted per spatial predictor, and the Moran's I of this model's residuals is compared with the one of the model without spatial predictors (y ~ predictors), to finally rank the spatial predictor from maximum to minimum difference in Moran's I.

In the latter case, the spatial predictors are ordered by their Moran's I alone (this is the faster option).

In both cases, spatial predictors that are redundant with others at a Pearson correlation > 0.5 and spatial predictors with no effect (no reduction of Moran's I or Moran's I of the spatial predictor equal or lower than 0) are removed.

This function has been designed to be used internally by rf_spatial() rather than directly by a user.

rank_spatial_predictors(
data = NULL,
dependent.variable.name = NULL,
predictor.variable.names = NULL,
distance.matrix = NULL,
distance.thresholds = NULL,
ranger.arguments = NULL,
spatial.predictors.df = NULL,
ranking.method = c("moran", "effect"),
reference.moran.i = 1,
verbose = FALSE,
n.cores = parallel::detectCores() - 1,
cluster = NULL
)

## Arguments

data Data frame with a response variable and a set of predictors. Default: NULL Character string with the name of the response variable. Must be in the column names of data. Default: NULL Character vector with the names of the predictive variables. Every element of this vector must be in the column names of data. Default: NULL Squared matrix with the distances among the records in data. The number of rows of distance.matrix and data must be the same. If not provided, the computation of the Moran's I of the residuals is omitted. Default: NULL Numeric vector with neighborhood distances. All distances in the distance matrix below each value in dustance.thresholds are set to 0 for the computation of Moran's I. If NULL, it defaults to seq(0, max(distance.matrix), length.out = 4). Default: NULL List with ranger arguments. See rf or rf_repeat for further details. Data frame of spatial predictors. Character, method used by to rank spatial predictors. The method "effect" ranks spatial predictors according how much each predictor reduces Moran's I of the model residuals, while the method "moran" ranks them by their own Moran's I. Default: "moran". Moran's I of the residuals of the model without spatial predictors. Default: 1 Logical, ff TRUE, messages and plots generated during the execution of the function are displayed, Default: TRUE Integer, number of cores to use for parallel execution. Creates a socket cluster with parallel::makeCluster(), runs operations in parallel with foreach and %dopar%, and stops the cluster with parallel::clusterStop() when the job is done. Default: parallel::detectCores() - 1 A cluster definition generated with parallel::makeCluster(). If provided, overrides n.cores. When cluster = NULL (default value), and model is provided, the cluster in model, if any, is used instead. If this cluster is NULL, then the function uses n.cores instead. The function does not stop a provided cluster, so it should be stopped with parallel::stopCluster() afterwards. The cluster definition is stored in the output list under the name "cluster" so it can be passed to other functions via the model argument, or using the %>% pipe. Default: NULL

## Value

A list with four slots:

• method: Character, name of the method used to rank the spatial predictors.

• criteria: Data frame with two different configurations depending on the ranking method. If ranking.method = "effect", the columns contain the names of the spatial predictors, the r-squared of the model, the Moran's I of the model residuals, the difference between the Moran's I of the model including the given spatial predictor, and the Moran's I of the model fitted without spatial predictors, and the interpretation of the Moran's I value. If ranking.method = "moran", only the name of the spatial predictor and it's Moran's I are in the output data frame.

• ranking: Ordered character vector with the names of the spatial predictors selected.

• spatial.predictors.df: data frame with the selected spatial predictors in the order of the ranking.

## Examples

if(interactive()){

data(distance_matrix)

#computing Moran's Eigenvector Maps
mem.df <- mem(
distance.matrix = distance_matrix[1:50, 1:50],
distance.threshold = 0
)

#ranking by the Moran's I of the spatial predictor
rank <- rank_spatial_predictors(
distance.matrix = distance_matrix[1:50, 1:50],
distance.thresholds = 0,
spatial.predictors.df = mem.df,
ranking.method = "moran",
n.cores = 1
)

#checking Moran's I of MEMs
rank$criteria #checking rank of MEMs rank$ranking
}