trainCrf: Calibrate a conditional random forest model

View source: R/trainCrf.r

trainCrfR Documentation

Calibrate a conditional random forest model

Description

This function trains a conditional random forest model. It is nearly identical to the cforest function in the party package but is included for consistency with trainGlm, trainGam, and similar functions.

Usage

trainCrf(
  data,
  resp = names(data)[1],
  preds = names(data)[2:ncol(data)],
  family = "binomial",
  w = ifelse(family == "binomial", TRUE, 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

Name of family for data error structure (see ?family). Default is to use the 'binomial' family.

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 row in data OR the name of the column in data that contains site weights. The default is to assign a weight of 1 to each datum.

...

Arguments to pass to cforest function.

Value

Object of class RandomForest.

See Also

cforest, trainRf

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.