Uses `rf_evaluate()`

to compare the performance of several models on independent spatial folds via spatial cross-validation.

rf_compare( models = NULL, xy = NULL, repetitions = 30, training.fraction = 0.75, metrics = c("r.squared", "pseudo.r.squared", "rmse", "nrmse", "auc"), distance.step = NULL, distance.step.x = NULL, distance.step.y = NULL, fill.color = viridis::viridis(100, option = "F", direction = -1, alpha = 0.8), line.color = "gray30", seed = 1, verbose = TRUE, n.cores = parallel::detectCores() - 1, cluster = NULL )

models | Named list with models resulting from |
---|---|

xy | Data frame or matrix with two columns containing coordinates and named "x" and "y". Default: |

repetitions | Integer, number of spatial folds to use during cross-validation. Must be lower than the total number of rows available in the model's data. Default: |

training.fraction | Proportion between 0.5 and 0.9 indicating the proportion of records to be used as training set during spatial cross-validation. Default: |

metrics | Character vector, names of the performance metrics selected. The possible values are: "r.squared" ( |

distance.step | Numeric, argument |

distance.step.x | Numeric, argument |

distance.step.y | Numeric, argument |

fill.color | Character vector with hexadecimal codes (e.g. "#440154FF" "#21908CFF" "#FDE725FF"), or function generating a palette (e.g. |

line.color | Character string, color of the line produced by |

seed | Integer, random seed to facilitate reproduciblity. If set to a given number, the results of the function are always the same. Default: |

verbose | Logical. If |

n.cores | Integer, number of cores to use for parallel execution. Creates a socket cluster with |

cluster | A cluster definition generated with |

A list with three slots:

`comparison.df`

: Data frame with one performance value per spatial fold, metric, and model.`spatial.folds`

: List with the indices of the training and testing records for each evaluation repetition.`plot`

: Violin-plot of`comparison.df`

.

if(interactive()){ #loading example data data(distance_matrix) data(plant_richness_df) #fitting random forest model rf.model <- rf( data = plant_richness_df, dependent.variable.name = "richness_species_vascular", predictor.variable.names = colnames(plant_richness_df)[5:21], distance.matrix = distance_matrix, distance.thresholds = 0, n.cores = 1 ) #fitting a spatial model with Moran's Eigenvector Maps rf.spatial <- rf_spatial( model = rf.model, n.cores = 1 ) #comparing the spatial and non spatial models comparison <- rf_compare( models = list( `Non spatial` = rf.model, Spatial = rf.spatial ), xy = plant_richness_df[, c("x", "y")], metrics = c("r.squared", "rmse"), n.cores = 1 ) }