trainRf: Calibrate a random forest model

View source: R/trainRf.r

trainRfR Documentation

Calibrate a random forest model

Description

This function trains a random forest model. It first finds the optimal value for mtry (number of variables sampled as candidates at each split). It then calls the function randomForest from the randomForest package.

Usage

trainRf(
  data,
  resp = names(data)[1],
  preds = names(data)[2:ncol(data)],
  family = "binomial",
  w = TRUE,
  verbose = FALSE,
  ...
)

Arguments

data

Data frame.

resp

Character or integer. Name or column index of response variable. Default is to use the first column in data.

preds

Character list or integer list. Names of columns or column indices of predictors. Default is to use the second and subsequent columns in data.

family

Character. If "binomial" then the response is converted to a binary factor with levels 0 and 1. Otherwise, this argument has no effect.

w

Either logical in which case TRUE causes the total weight of presences to equal the total weight of absences (if family='binomial') or a numeric list of weights, one per class in resp. The default is to assign equal total weight to presences and contrast sites (TRUE).

verbose

Logical. If TRUE then display progress for finding optimal value of mtry.

...

Arguments to pass to randomForest.

Value

Object of class randomForest.

See Also

randomForest, trainCrf

Examples

## Not run: 
### model red-bellied lemurs
data(mad0)
data(lemurs)

# climate data
bios <- c(1, 5, 12, 15)
clim <- raster::getData('worldclim', var='bio', res=10)
clim <- raster::subset(clim, bios)
clim <- raster::crop(clim, mad0)

# occurrence data
occs <- lemurs[lemurs$species == 'Eulemur rubriventer', ]
occsEnv <- raster::extract(clim, occs[ , c('longitude', 'latitude')])

# background sites
bg <- 2000 # too few cells to locate 10000 background points
bgSites <- dismo::randomPoints(clim, 2000)
bgEnv <- raster::extract(clim, bgSites)

# collate
presBg <- rep(c(1, 0), c(nrow(occs), nrow(bgSites)))
env <- rbind(occsEnv, bgEnv)
env <- cbind(presBg, env)
env <- as.data.frame(env)

preds <- paste0('bio', bios)

set.seed(123)

# random forest
rf <- trainRf(
	data = env,
	resp = 'presBg',
	preds = preds,
)

# conditional random forest
crf <- trainCrf(
	data = env,
	resp = 'presBg',
	preds = preds,
)

plot(rf)

# prediction rasters
mapRf1 <- predict(clim, rf, type='prob') # opposite class!
mapRf2 <- 1 - predict(clim, rf, type='prob') # correct
pointsFx <- function() points(occs[ , c('longitude', 'latitude')])
plot(stack(mapRf1, mapRf2), addfun=pointsFx)

# CRFs are tricky...

## End(Not run)

adamlilith/enmSdm documentation built on Jan. 6, 2023, 11 a.m.