Slides: https://jakubnowosad.com/rome2025
Video recording: https://youtu.be/uZe7thh80MI
Reproducible code: https://jakubnowosad.com/rome2025/index.R
Geospatial predictive mapping is a common task in many domains, with the aim of producing continuous surfaces based on point observations and spatial predictors. There are many algorithms available to perform this task, ranging from simple interpolation methods to complex machine learning models, and a variety of R packages implement these methods. So creating a map based on points is easy, but understanding how reliable that map is is much more difficult.
In my talk at the Rome R Users Group (November 27, 2025), I presented practical R workflows for generating and evaluating spatial predictions. Using data on plant species richness across South America, I compared methods such as Inverse Distance Weighting, Common and Universal Kriging, and Random Forests. These approaches often produce visually appealing maps, but can be misleading. Common problems include unrealistic predictions outside observed value ranges, predictions for environments not present in the training data, and overly optimistic accuracy metrics when training and test points are spatially clustered.
To address these issues, I focused on two complementary tools:
- kNN Distance Matching (kNNDM), an adaptive cross-validation method for prediction domains that reshapes validation folds to make withheld data resemble “unseen” areas. This reduces evaluation bias caused by data sampling and provides more realistic performance estimates.
- Scope of Application (AoA), which identifies locations whose environmental conditions differ from the training data. By masking or highlighting these regions, you can communicate where predictions are more or less reliable.
Together, kNNDM and AoA shift the focus from model-centric accuracy to understanding the prediction domain: where the model can be trusted and how well the errors within that domain are quantified.
Quote
@online{nowosad2025,
author = {Nowosad, Jakub},
title = {R for {Geospatial} {Predictive} {Mapping:} {Takeaways} from
the {Talk}},
date = {2025-12-01},
url = {https://jakubnowosad.com/posts/2025-12-01-rome-talk/},
langid = {en}
}
For source citation, you can cite this work as:
Nowosad, Jakub. 2025. “R for Geospatial Predictive Mapping: Lessons from the Conversation.” December 1, 2025. https://jakubnowosad.com/posts/2025-12-01-rome-talk/.
Related
#Geospatial #Predictive #Mapping #lessons #conversation #bloggers


