Data and code from: Estimating large carnivore populations in an arid fenced reserve using spatial capture-recapture modelling
Data files
Jul 10, 2026 version files 250.54 KB
-
README.md
15.92 KB
-
Tswalu_09.07.26.zip
234.62 KB
Abstract
Large carnivore populations in fenced protected areas require robust density estimates to inform management, yet such data remain scarce for arid systems, where restricted dispersal and low primary productivity jointly shape carnivore densities. This dataset provides spatial capture-recapture data for three sympatric, individually identifiable carnivores, leopard (Panthera pardus), brown hyaena (Parahyaena brunnea), and spotted hyaena (Crocuta crocuta), collected from a camera trap survey at 85 paired stations across the Korannaberg section of Tswalu Kalahari Reserve, South Africa, between January and May 2024. For each species, individuals were identified from pelage and stripe patterns and compiled into spatially explicit capture histories (individual × occasion × trap site), accompanied by a binary camera operation file accounting for station downtime across the survey period. Trap coordinates, state-space definitions, and site-level detection covariates, including camera placement (game path vs. road) for all species and distance to den site for spotted hyaena, are included alongside the R scripts used to fit the spatial capture-recapture models in 'oSCR'. Together, these data allow density and abundance to be estimated for three co-occurring carnivores from a shared camera trap array, and can be reused to test alternative model structures, compare detection probability and space-use parameters against other arid or fenced systems, or contribute to broader multi-species analyses of carnivore density.
Dataset DOI: 10.5061/dryad.rxwdbrvrt
Description of the data and file structure
This dataset contains the data and code required to replicate the spatial capture-recapture (SCR) analyses in Visagie et al. (2026), estimating population density of leopard (Panthera pardus), brown hyaena (Parahyaena brunnea), and spotted hyaena (Crocuta crocuta) in the Korannaberg section of Tswalu Kalahari Reserve, Northern Cape, South Africa.
Data were collected from a camera trap survey conducted at 85 paired stations over 127 sampling occasions (18 January–23 May 2024). For each species, individuals were identified from natural markings and compiled into encounter data files (capture histories) and trap detection files, used to fit SCR models in the R package oSCR. Trap-level covariates include camera placement (road vs. game path) for all three species, and distance to den site for spotted hyaena, derived from GPS cluster locations of collared individuals. Spatial data include the Korannaberg reserve boundary, camera trap locations, and the state-space grids used to define the area over which density was estimated.
Analysis found:
- Leopard density among the lowest reported for a fenced reserve (0.18/100 km²)
- Brown hyaena density exceeding values from mesic systems (2.68/100 km²)
- Spotted hyaena density representing the first SCR estimate for the Northern Cape (0.66/100 km²)
Collection and analysis timeline:
- Camera trap deployment and image collection: 18 January – 23 May 2024
- Individual identification and capture history compilation: 2024
- Spotted hyaena GPS collar data (used to derive the den-distance covariate), collected independently as part of ongoing reserve monitoring: [insert date range]
- SCR model fitting and analysis: 2024–2025
Location: Korannaberg section (1,017 km²) of Tswalu Kalahari Reserve, Northern Cape Province, South Africa.
Files and variables
Coordinate generalization
Camera trap coordinates in this dataset have been generalized to protect the sensitive/threatened species associated with this study, following guidance from Dryad's data curation team and GBIF's best-practice recommendations for sensitive species data (https://docs.gbif.org/sensitive-species-best-practices/master/en/#s-generalization). Each camera trap's true GPS location has been replaced with the centroid coordinates of the 1 km × 1 km grid cell in which it falls, using the same grid (grid_tswalu_1km.shp) that underlies the spotted hyaena state space. True, un-generalized trap coordinates are not included anywhere in this submission.
File: Tswalu_09.07.26.zip
Encounter and trap detection data
| File | Description |
|---|---|
| Tswalu_spotted_edf.csv | Encounter data file (capture history) for spotted hyaena. Columns: SESSION, ANIMAL_ID, SO (sampling occasion), TRAP_ID — one row per detection event across the 127-occasion survey. Duplicate rows present in the raw file are removed in the analysis script prior to model fitting. |
| Tswalu_leopard.csv | Encounter data file for leopard, same column structure as above. |
| Tswalu_brown.csv | Encounter data file for brown hyaena, same column structure as above. |
| Tswalu_tdf.csv | Contains trap ID, X/Y coordinates (generalized to 1 km grid cell centroids, see Coordinate generalization above, converted to km scale), a binary operation matrix (station functional per sampling occasion), and two trap-level covariates: TRAIL (camera placement, binary: 0 = road, 1 = game path) and DEN (distance from each trap to the nearest spotted hyaena den site, originally in metres, converted to km in the script). The DEN covariate was calculated using true (non-generalized) trap locations at the time of analysis; the X/Y coordinates provided in this file have subsequently been generalized to grid cell centroids for data sharing and might not reproduce the original DEN values if recalculated. |
Spatial data — boundary and camera locations
| File | Description |
|---|---|
| Korranaberg boundary.shp (+ .dbf, .shx, .prj, .cpg, .qmd) | Polygon shapefile of the Korannaberg section boundary, used to construct the state space for spotted hyaena (assumed fence-impermeable). |
| Camera traps.shp (+ .dbf, .shx, .prj, .cpg) | Point shapefile of the 85 camera trap station locations, generalized to 1 km grid cell centroids. |
Model outputs
| File | Description |
|---|---|
| Tswalu_spotted_hyaena_model_output_WildlifeBiologyR1.RData | Saved R objects (m0–m3): four fitted SCR candidate models for spotted hyaena — null model (D1, p01, sig~1), and models testing camera placement (TRAIL), distance to den (DEN), and both combined on baseline encounter probability (p0). |
| Tswalu_leopard_model_output_WildlifeBiologyR1.RData | Saved R objects (m0–m1): null model and a model testing the effect of TRAIL on baseline encounter probability, for leopard. |
| Tswalu_brown_hyaena_model_output_WildlifeBiologyR1.RData | Saved R objects (m0–m1), same model structure as leopard, for brown hyaena. |
State space and grid
| File | Description |
|---|---|
| state_space.csv | State-space coordinates (1 km² resolution activity-centre grid, X/Y in km) for spotted hyaena density estimation, restricted to the Korannaberg boundary. Generated in Step 2 of Tswalu_carnivores_density_models_.R via sf::st_make_grid(); one activity centre falling outside the boundary was excluded prior to export. |
| state_space_Tswalu_1km.shp (+ .dbf, .prj, .shx) | Shapefile of the state-space activity-centre points (1 km² resolution), exported for inspection in GIS software. |
| grid_tswalu_1km.shp (+ .dbf, .prj, .shx) | Shapefile of the 1 km² grid cells underlying the spotted hyaena state space. |
Predicted density rasters
| File | Description |
|---|---|
| tswalu_spotted_density_pred.grd / .gri / .tif tswalu_leopard_density_pred.grd / .gri / .tif tswalu_brownhyaena_density_pred.grd / .gri / .tif | Predicted spatial density (individuals per pixel) for spotted hyaena, leopard, and brown hyaena respectively, from each species' top-ranked model. .grd/.gri: intermediate km-scale outputs from predict.oSCR/writeRaster in Tswalu_carnivores_density_models_.R (Step 5) — not directly plottable in GIS. .tif: final metre-scale rasters, reprojected to EPSG:32734 (UTM Zone 34S), produced by make_rasters_from_oSCR_preds.R for direct GIS use. |
Scripts
| File | Description |
|---|---|
| Tswalu_carnivores_density_models_.R | Full analysis workflow. |
| make_rasters_from_oSCR_preds.R | Converts each species' top-ranked model prediction surface to a metre-scale, correctly projected GeoTIFF for GIS use. |
Supplemental information
| File | Description |
|---|---|
| https://doi.org/10.5281/zenodo.21235691 | Four original figures generated during analysis: Density_figure.jpg (composite three-panel spatial density map for spotted hyaena, leopard, and brown hyaena across the Korannaberg boundary, with camera trap locations overlaid), spotted_den_covariate_plot.png (baseline encounter probability vs. distance to den, spotted hyaena), leopard_trail_covariate_plot.png (baseline encounter probability by camera placement, leopard), brown_trail_plot.png (baseline encounter probability by camera placement, brown hyaena). |
Code/software
Analyses were conducted in R (version 4.5.1, 2025-06-13) using:
- oSCR (Sutherland et al., 2019): spatial capture-recapture model fitting and density estimation
- sf: handling and processing shapefiles, constructing state spaces
- ggplot2: generating encounter probability plots
- terra: exporting predicted density surfaces as raster files, and reprojecting/rescaling those surfaces to metre-scale GeoTIFFs for GIS use
Tswalu_carnivores_density_models_.R
Divided into three sections (spotted hyaena, leopard, brown hyaena), each following the same five-step workflow:
- Read in data — encounter data file (edf) and trap detection file (tdf); format coordinates and covariates to the km scale.
- Build scrFrame and state space — construct an scrFrame object via data2oscr. For spotted hyaena, this includes generating the Korannaberg-restricted 1 km² grid and activity-centre points directly via sf::st_make_grid() (producing state_space.csv, state_space_Tswalu_1km.shp, and grid_tswalu_1km.shp); for leopard and brown hyaena, the state space is built with make.ssDF using a 20 km buffer around the camera array.
- Fit candidate models using oSCR.fit.
- Compare models by AIC using fitList.oSCR and modSel.oSCR.
- Interpret the top-ranked model — extract density, abundance, baseline encounter probability, and sigma estimates using get.real; generate prediction plots (den-distance plot for spotted hyaena, camera-placement plots for leopard and brown hyaena); export a predicted density raster using predict.oSCR and writeRaster. This produces a km-scale .grd/.gri raster pair for each species that requires further reprocessing before use in GIS (see below).
make_rasters_from_oSCR_preds.R
Takes the km-scale prediction surface (pred$r[[1]]) generated for each species' top-ranked model, converts it to a data frame, rescales coordinates from km to metres, assigns the EPSG:32734 (UTM Zone 34S) coordinate reference system, and writes the result as a GeoTIFF (tswalu_brownhyaena_density_pred.tif, tswalu_leopard_density_pred.tif, tswalu_spotted_density_pred.tif). Each species' section reloads its model output (.RData) and recomputes the prediction surface independently, so the script runs standalone without depending on objects from Tswalu_carnivores_density_models_.R.
