Overlap Analysis is one of the **simplest forms of modelling species’ distributions**. It assesses the ranges of values of the given predictor variables at the sites where a species has been recorded present, and predicts where that species should be able to occur based on those presence data (e.g. Brito *et al*. 1999, Arntzen & Teixeira 2006).

OA, now included in the *modEvA* package (Barbosa et al. 2014), can **also** be **useful** when **extrapolating models outside their original scope** (geographical area, time period or spatial resolution), as it can identify which localities are within the model’s domain — i.e., within the analysed ranges of values of the variables, outside which the model may not be reliable (e.g. Barbosa *et al*. 2009). In this case, the *sp.cols* should contain not species’ presence/absence, but rather indicate (with value 1) all observations that have been included in the model. Cf. *modEvA* function *MESS*, which is more informative but also more computationally intensive.

OA <- function(data, sp.cols, var.cols) { # version 2.1 (13 May 2014) if (length(sp.cols) > 1) stop ("Sorry, OA is currently implemented for only one response variable at a time, so 'sp.cols' must indicate only one column") input.data <- data na.rm = TRUE if(na.rm) { mod.data <- data[ , c(sp.cols, var.cols)] data <- data[complete.cases(mod.data), ] } predictors <- data[ , var.cols] nvar <- ncol(predictors) response <- data[ , sp.cols] predictors.presence <- predictors[response > 0, ] var.presmin <- var.presmax <- vector("numeric", nvar) predictors.overlap <- matrix(data = NA, nrow = nrow(predictors), ncol = nvar) for (v in 1:nvar) { var.presmin[v] <- min(predictors.presence[ , v]) var.presmax[v] <- max(predictors.presence[ , v]) predictors.overlap[ , v] <- ifelse((predictors[ , v] >= var.presmin[v] & predictors[ , v] <= var.presmax[v]), 1, 0) } # end for v overlap.noNA <- as.integer(rowSums(predictors.overlap) == nvar) return(overlap.noNA) }

[presented with Pretty R]

**NOTE** that the **input data format for this function has changed** in mid May 2014, with former parameters *response* and *predictors* now replaced with *data*, *sp.cols* and *var.cols* (for coherence with *multGLM* and other functions in *modEvA*). Input data for the *OA* function are now a matrix or data frame containing the response variable (presences vs. absences of a species if we want to model its occurrence, or modelled vs. non-modelled sites if we want to know which non-modelled sites are within the modelled range), and the predictor variables to consider. The output is a binary vector whith 1 where the values of all predictors lie within the ranges observed for the presence records, and 0 otherwise. For example, if you have a table called *mydata* with your species’ presence data in the first column and your predictor variables in columns 2 to 12, paste in R the *OA* function followed by this command:

OA(data = mydata, sp.cols = 1, var.cols = 2:12)

**References**

Arntzen JW, Teixeira J. 2006. History and new developments in the mapping and modelling of the distribution of the golden-striped salamander, *Chioglossa lusitanica. Zeitschrift für Feldherpetologie, Supplement*: 1-14.

Barbosa A.M., Brown J.A. & Real R. (2014) modEvA – an R package for model evaluation and analysis. R package, version 0.1.

Barbosa, A.M., Real, R. & Vargas, J.M. (2009) Transferability of environmental favourability models in geographic space: the case of the Iberian desman (*Galemys pyrenaicus*) in Portugal and Spain. *Ecological Modelling* **220**: 747–754.

Brito JC, Crespo EG, Paulo OS 1999. Modelling wildlife distributions: Logistic Multiple Regression vs Overlap Analysis. *Ecography* 22: 251-260.