DOI: 10.5061/dryad.7sqv9s4zk
title: Interplay of competition and facilitation in grazing succession by migrant Serengeti herbivores

description: Competition, facilitation, and predation offer alternative explanations
 for successional patterns of migratory herbivores. However, these
 interactions are difficult to measure, leaving uncertainty about the
 mechanisms underlying body-size-dependent grazing—and even whether
 succession occurs at all. We used data from an 8-year camera-trap survey,
 GPS-collared herbivores, and fecal DNA metabarcoding to analyze the
 timing, arrival order, and interactions among migratory grazers in
 Serengeti National Park. Temporal grazing succession is characterized by a
 “push-pull” dynamic: Competitive grazing nudges zebra ahead of
 co-migrating wildebeest, whereas grass consumption by these large-bodied
 migrants attracts trailing, small-bodied gazelle that benefit from
 facilitation. “Natural experiments” involving intense wildfires and
 rainfall respectively disrupted and strengthened these effects. Our
 results highlight a balance between facilitative and competitive forces in
 co-regulating large-scale ungulate migrations.
description: # **Interplay of competition and facilitation in grazing succession by
 migrant Serengeti herbivores**
 [https://doi.org/10.5061/dryad.7sqv9s4zk](https://doi.org/10.5061/dryad.7sqv9s4zk) **Data S1. Serengeti_occupancy_data_4-day_2011-2018.** A compressed (zipped) folder containing eight .csv files, each labeled as ‘SER_20xx_final_dat_4d’ where 20xx is the year 2011 – 2018. Files contain the raw data aggregated within 4-day time intervals and are required to run a Bayesian occupancy model with the accompanying R script from the same year. Descriptions of columns names are as follows: “NDVI.BIN” – a date (mm/dd/yyyy) which specifies the start of a 4-d period over the occupancy of migratory species is quantified; dates were selected to align with 8-d Normalized Difference Vegetation Index (NDVI) values provided by NASA’s MODIS satellite data.  “X” – a unique numerical identifier “NDVI.BIN.SITE” – the same date as in the NDVI.BIN column combined with the site ID. “SITE” – the site ID of the same trap laid out in a grid of letters (ranging from B to V from west to east) and numbers (ranging 1 – 13 from north to south). “DAYS.ON” – count from 1 – 4 the camera was on during the 4-d NDVI.BIN. “gazelleThomsons” – value indicating if Thomson’s gazelles were present (1) or absent (0) during the DAYS.ON for the NDVI.BIN. “wildebeest” – value indicating if wildebeest were present (1) or absent (0) during the DAYS.ON for the NDVI.BIN. “zebra” – value indicating if zebra were present (1) or absent (0) during the DAYS.ON for the NDVI.BIN. “YEAR.DAY” – a date in the format ‘yyyyddd’ which indicates the year and ordinal day of the year. “NDVI” – the NDVI value for the specified 4-d NDVI.BIN. “X_coord” – the X spatial coordinate of the camera trap in the units of meters and datum of ARC1960 zone 36S [EPSG:21036]. “Y_coord” – the Y spatial coordinate of the camera trap in the units of meters and datum of ARC1960 zone 36S [EPSG:21036]. “Facing” – the primary cardinal direction the camera faces “Pole” – is the camera attached to a pole (1) or tree (0). “RivDist_am” – distance (m) from the camera trap to the nearest river as measured by Mosser et al. 2009 ([https://doi.org/10.1111/j.1461-0248.2009.01359.x](https://doi.org/10.1111/j.1461-0248.2009.01359.x)). “RivDist_as” – distance (m) from the camera trap to the nearest river as measured by Swanson et al. 2016 ([https://doi.org/10.1002/ece3.2569](https://doi.org/10.1002/ece3.2569)). “ConfDist_am” – distance (m) from the camera trap to the nearest river confluence as measured by Mosser et al. 2009 ([https://doi.org/10.1111/j.1461-0248.2009.01359.x](https://doi.org/10.1111/j.1461-0248.2009.01359.x)). “KopDist_am” – distance (m) from the camera trap to the nearest kopje as measured by Mosser et al. 2009 ([https://doi.org/10.1111/j.1461-0248.2009.01359.x](https://doi.org/10.1111/j.1461-0248.2009.01359.x)). “LriskDry_am” – risk of lion predation during the dry season at the camera trap as reported by Mosser et al. 2009 ([https://doi.org/10.1111/j.1461-0248.2009.01359.x](https://doi.org/10.1111/j.1461-0248.2009.01359.x)). “LriskWet_am” – risk of lion predation during the wet season at the camera trap as reported by Mosser et al. 2009 ([https://doi.org/10.1111/j.1461-0248.2009.01359.x](https://doi.org/10.1111/j.1461-0248.2009.01359.x)). “AvgTree10_mp” – average distance (m) from the camera trap to the nearest 10 trees &gt; 2 m in ht. “NearTree_mp” – distance (m) to the nearest tree &gt; 2 m in ht. “CountTrees0_25” – number of trees &gt; 2 m in ht counted in a 0 to 25 m radius around the camera trap. “CountTrees25_50” – number of trees &gt; 2 m in ht counted in a 25 to 50 m radius around the camera trap. “CountTrees50_100” – number of trees &gt; 2 m in ht counted in a 50 to 100 m radius around the camera trap. “CountTrees100_150” – number of trees &gt; 2 m in ht counted in a 100 to 150 m radius around the camera trap. “CountTrees150_200” – number of trees &gt; 2 m in ht counted in a 150 to 200 m radius around the camera trap. “CountTrees200_250” – number of trees &gt; 2 m in ht counted in a 200 to 250 m radius around the camera trap. “BinTerm_mp” – binomial value indicating if termite mounds &gt; 1 m in ht are present (1) or absent (0) within a 1 km radius of the camera trap. “AvgTerm10_mp” – distance (m) to the nearest 10 termite mounds &gt; 1 m in ht. “NearTerm_mp” – distance (m) from the camera trap to the nearest termite mound &gt; 1 m in ht. “CountTerm0_50” – number of termite mounds &gt; 1 m ht counted in a 0 to 50 m radius around the camera trap. “CountTerm50_100” – number of termite mounds &gt; 1 m ht counted in a 50 to 100 m radius around the camera trap. “CountTerm100_300” – number of termite mounds &gt; 1 m ht counted in a 100 to 300 m radius around the camera trap. “CountTermGT300” – number of termite mounds &gt; 1 m ht counted in a 300 to 1000 m radius around the camera trap. “CountTrees0_50” - number of trees &gt; 2 m in ht counted in a 50 m radius around the camera trap (includes the tree to which the camera is attached if pole = 0). “RAIN” – rainfall (mm) measured at the camera trap during the current NDVI.BIN. “RAIN.4DAY.LAG” – rainfall (mm) at the camera trap measured in the NDVI.BIN one 4-d period prior to the current NDVI.BIN (a 4-d lag period) “RAIN.8DAY.LAG” – rainfall (mm) at the camera trap measured in the NDVI.BIN two 4-d periods prior to the current NDVI.BIN (an 8-d lag period). “CAM.COUNT” – number of operational cameras during the current NDVI.BIN. **Data S2. Serengeti_Bayesian_occupancy_model_4-day_2011.** A compressed (zipped) folder containing six .R files, each labeled as ‘year_2011_SP1_SP2_4d’ where SP1 and SP2 are the predictor and target (i.e., response) species (Thomson’s gazelle, wildebeest, or zebra), respectively. The scripts estimate the Bayesian occupancy model for a 4-day time interval for the year 2011 but can be changed to run the data for other years. **Data S3. Serengeti_occupancy_data_16-day_2011-2018.** A compressed (zipped) folder containing eight .csv files, each labeled as ‘SER_20xx_final_dat_16d’ where 20xx is the year 2011 – 2018. Files contain the raw occupancy data aggregated within 16- to 32-day time intervals (i.e., a 16-day lag) and are required to run a Bayesian occupancy model with the accompanying R script from the same year. Descriptions of columns names and variables are the same as those described in ‘Serengeti_occupancy_data_4-day_2011-2018’ from above, with the only difference being the period over which occupancy is measured (16-d) and the length of the lag period to measure rainfall (16-d and 32-d). **Data S4. Serengeti_Bayesian_occupancy_model_16-day_2011.** A compressed (zipped) folder containing six .R files, each labeled as ‘year_2011_SP1_SP2_16d’ where SP1 and SP2 are the predictor and target (i.e., response) species (Thomson’s gazelle, wildebeest, or zebra), respectively. The scripts estimate the Bayesian occupancy model for a 16-day lagged time interval for the year 2011 but can be changed to run the data for other years. **Data S5. Serengeti_ISSF_movement_analysis_2017-2018.** A compressed (zipped) folder containing six files required to run the integrated step selection (ISSF) analysis for wildebeest (wb) and zebra (zb) at 4-day and 16-day lagged time intervals for the years 2017 and 2018. The .R scripts run the ISSF model selection and conduct model selection; the .rds files include the movement data for each species by year which was processed with the R package ‘amt’ and prepared for ISSF analysis using the ‘steps()’ and ‘random_steps()’ commands in amt. Note that distances are measured from conspecifics so if the analysis is focused on wildebeest all distances will be measured from zebra (i.e., dist_zb90_2), and vice versa. The column names for the .rds files are as follows: "burst_" – identity of the burst number; a burst represents an uninterrupted track made of consecutive steps. "x1_" – the X location (UTM; crs = 21036) of the first (starting) position of the step. "x2_" – the X location (UTM; crs = 21036) of the second (ending) position of the step. "y1_" – the Y location (UTM; crs = 21036) of the first (starting) position of the step. "y2_" – the Y location (UTM; crs = 21036) of the second (ending) position of the step. "sl_" – step length (m). "direction_p" – directional persistence or the absolute direction of the step (radians). "ta_" – turn angle (radians) from the previous step. "t1_" – time stamp (yyyy-mm-dd HH:MM:SS) of the first position (start) of the step. "t2_" – time stamp (yyyy-mm-dd HH:MM:SS) of the second position (end) of the step. "dt_" – difference in time between the end and start of each step; for our analysis the step time = 4 h. "step_id_" – identity of the step number. "case_" – the actual step of the animal as measured by the GPS collar (TRUE) or a simulated step (FALSE) that was sampled from a tentative parametric distribution to which true steps are statistically compared. We used the default in amt which = 20 random samples per true step. "date1" – date (yyyy-mm-dd) of the first position (start) of the step. "date2" – date (yyyy-mm-dd) of the second position (end) of the step. "dist_zb25_2" – distance (m) from the second position (end) of the step to the nearest camera trap above the 25th percentile of the number of daily captures per camera trap per day for zebra (or wildebeest if the track is from a zebra). "dist_zb25_1" – distance (m) from the first position (start) of the step to the nearest camera trap above the 25th percentile of the number of daily captures per camera trap per day for zebra (or wildebeest if the track is from a zebra). "dist_zb50_2" – distance (m) from the second position (end) of the step to the nearest camera trap above the 50th percentile of the number of daily captures per camera trap per day for zebra (or wildebeest if the track is from a zebra). "dist_zb50_1" – distance (m) from the first position (start) of the step to the nearest camera trap above the 50th percentile of the number of daily captures per camera trap per day for zebra (or wildebeest if the track is from a zebra). "dist_zb90_2" – distance (m) from the second position (end) of the step to the nearest camera trap above the 90th percentile of the number of daily captures per camera trap per day for zebra (or wildebeest if the track is from a zebra). "dist_zb90_1" – distance (m) from the first position (start) of the step to the nearest camera trap above the 90th percentile of the number of daily captures per camera trap per day for zebra (or wildebeest if the track is from a zebra). "ang_zb90" – angle (radians) to the nearest camera trap above the 90th percentile of the number of daily captures per camera trap per day for zebra (or wildebeest if the track is from a zebra). "ang_zb50" – angle (radians) to the nearest camera trap above the 50th percentile of the number of daily captures per camera trap per day for zebra (or wildebeest if the track is from a zebra). "ang_zb25" – angle (radians) to the nearest camera trap above the 25th percentile of the number of daily captures per camera trap per day for zebra (or wildebeest if the track is from a zebra). "dist_zb25_2_1632lag" – distance (m) from the second position (end) of the step to the nearest camera trap above the 25th percentile of the number of daily captures per camera trap per day incorporating a 16-d lag period for zebra (or wildebeest if the track is from a zebra). "dist_zb25_1_1632lag" – distance (m) from the first position (start) of the step to the nearest camera trap above the 25th percentile of the number of daily captures per camera trap per day incorporating a 16-d lag period for zebra (or wildebeest if the track is from a zebra). "dist_zb50_2_1632lag" – distance (m) from the second position (end) of the step to the nearest camera trap above the 50th percentile of the number of daily captures per camera trap per day incorporating a 16-d lag period for zebra (or wildebeest if the track is from a zebra). "dist_zb50_1_1632lag" – distance (m) from the first position (start) of the step to the nearest camera trap above the 50th percentile of the number of daily captures per camera trap per day incorporating a 16-d lag period for zebra (or wildebeest if the track is from a zebra). "dist_zb90_2_1632lag" – distance (m) from the second position (end) of the step to the nearest camera trap above the 90th percentile of the number of daily captures per camera trap per day incorporating a 16-d lag period for zebra (or wildebeest if the track is from a zebra). "dist_zb90_1_1632lag" – distance (m) from the first position (start) of the step to the nearest camera trap above the 90th percentile of the number of daily captures per camera trap per day incorporating a 16-d lag period for zebra (or wildebeest if the track is from a zebra). "ang_zb90_1632lag" – angle (radians) to the nearest camera trap above the 90th percentile of the number of daily captures per camera trap per day incorporating a 16-d lag period for zebra (or wildebeest if the track is from a zebra). "ang_zb50_1632lag" – angle (radians) to the nearest camera trap above the 50th percentile of the number of daily captures per camera trap per day incorporating a 16-d lag period for zebra (or wildebeest if the track is from a zebra). "ang_zb25_1632lag" – angle (radians) to the nearest camera trap above the 25th percentile of the number of daily captures per camera trap per day incorporating a 16-d lag period for zebra (or wildebeest if the track is from a zebra). "grassN1" – estimated grass nitrogen (%N) at the first position (start) of the step. "grassN2" – estimated grass nitrogen (%N) at the second position (end) of the step.  "veg1" – estimated cover of woody vegetation &gt; 2 m ht at the first position (start) of the step. "veg2" – estimated cover of woody vegetation &gt; 2 m ht at the second position (end) of the step. "river_con_dist1" – distance (m) to the nearest river confluence from the first position (start) of the step. "river_con_dist2" – distance (m) to the nearest river confluence from the second position (end) of the step. "ndvi_x2" – the normalized difference vegetation index (NDVI) at the camera trap during the current NDVI.BIN. "dndvi_x2" – the change in NDVI between the previous and current NDVI.BIN. "cos_ta" – cosine of the turn angle (radians). "log_sl" – log of the step length (m). "log_dist_zb25_1" – log of dist_zb25_1 "log_dist_zb25_2" – log of dist_zb25_2 "log_dist_zb50_1" – log of dist_zb50_1 "log_dist_zb50_2" – log of dist_zb50_2 "log_dist_zb90_1" – log of dist_zb90_1 "log_dist_zb90_2" – log of dist_zb90_2 "log_dist_zb25_1_sc" – scaled log of dist_zb25_1 "log_dist_zb25_2_sc" – scaled log of dist_zb25_2 "log_dist_zb50_1_sc" – scaled log of dist_zb50_1 "log_dist_zb50_2_sc" – scaled log of dist_zb50_2 "log_dist_zb90_1_sc" – scaled log of dist_zb90_1 "log_dist_zb90_2_sc" – scaled log of dist_zb90_2 "ang_zb25cos" – cosine of ang_zb25 "ang_zb50cos" – cosine of ang_zb50 "ang_zb90cos" – cosine of ang_zb90 "AID" – animal identification number at the first position; Z = zebra, W = wildebeest. "AID2" – animal identification number at the second position; Z = zebra, W = wildebeest. **Data S6. Serengeti_diet_analysis_2017-2018.** A compressed (zipped) folder containing fifteen files required to run the diet analysis for migratory herbivores for the years 2017 and 2018. The .R script runs the diet analysis; text files provide the mean number of reads for different sequences by individual sample animal; .csv files contain grass morphology and grass nutrition data; text files contain metadata for each fecal sample; text files present README files; text files also provide data on grass relative abundance and grass sequence identity. (1) The values in ‘filtered_datasets’ correspond to data reported in Pansu et al. 2022 ([https://doi.org/10.1073/pnas.2204400119](https://doi.org/10.1073/pnas.2204400119)). The column headings are as follows: “Sequence.ID” – Unique sequence identifier “Order.name” – Order of the plant taxon according to the database that provided the best identity score “Family.name” – Family of the plant taxon according to the database that provided the best identity score “Genus.name” – Genus of the plant taxon according to the database that provided the best identity score “Species.name” – Species of the plant taxon according to the database that provided the best identity score “Scientific.name” – Binomial of the taxon according to the database that provided the best identity score “Taxid” – European Molecular Biology Laboratory (EMBL) TaxID of the scientific name “Best.reference.database” – Reference database that provided the best assignment (MRC: Laikipia, Kenya; SER: Serengeti National Park; PNG: Gorongosa National Park; GDB: Global reference database). “Best.identity.score” – Best identity score with the closest sequence in the database that provided the best identity score. “Sequence” – DNA sequence “sample.WWW_XX_YYYY_ZZ” – Mean number of reads (averaged among technical replicates) of each mOTU per sample.                         =&gt; WWW corresponds to code for the sampling location (SER: Serengeti)                         =&gt; XX corresponds to year of sampling (17: 2017, 18: 2018)                         =&gt; YYYY corresponds to the species code (EQGR: Grevy's zebra, EQQU: Plains zebra, HINI: Sable, PHAF: Warthog, CESI: White rhinoceros, DALU: Topi, COTA: Wildebeest, ALBU: Hartebeest, REAR: Reedbuck, HIAM: Hippopotamus, KOVA: Puku, ORBE: Oryx, SYCA: Buffalo, OUOU: Oribi, KOEL: Waterbuck, EUTH: Thomson's gazelle, POLA: Bushpig, HIEQ: Roan, LOAF: Elephant, AEME: Impala, NAGR: Grant's gazelle, TRAN: Nyala, DIBI: Black rhinoceros, TAOR: Eland, MAGU: Dik-dik, OROR: Klipspringer, SYGR: Common duiker, TRSC: Bushbuck, TRST: Kudu, GICA: Giraffe)                         =&gt; ZZ corresponds to the number attributed to the sample for a given sampling location, a given year and a given species                         =&gt; See also sample metadatafor details (2) The values in ‘grass_morphology’ correspond to data on grass morphology reported in Anderson et al. 2011 (doi: 10.1111/j.1365-2745.2011.01795.x). The column headings are as follows: “SPECIES” – six letter code corresponding to the first three letters of the genus and first three letters of the species. “AVE_LEAF_HT” – average leaf height (cm). “AVE_FLOW_HT” - – average flower height (cm). “AVE_BASAL_DIA” - – average basal diameter of an individual grass clump (cm). “AVE_SLA” – average specific leaf area (cm2 g-1). “AVE_CULM_DEN” – average density of a reproductive culm (g mm-3). (3) The values in ‘grass_nutrition’ correspond to data on grass leaf elemental concentrations collected in Serengeti and reported in Anderson et al. 2018 ([https://doi.org/10.1002/ecy.2175](https://doi.org/10.1002/ecy.2175)). The column headings are as follows: “SPECIES” – six letter code corresponding to the first three letters of the genus and first three letters of the species. “C” – percent carbon (%C). “N” – percent carbon (%C). “P” – percent carbon (%C). “K” – percent carbon (%C). “Mg” – percent carbon (%C). “Ca” – percent carbon (%C). “Na” – percent carbon (%C). “Si” – percent carbon (%C). (4) The values in ‘morphology_griffith’ correspond to grass trait data collected in Serengeti and reported in Griffith et al. 2016 (DOI 10.1007/s00442-016-3632-3). The column headings are as follows: “SITE” – three letter code corresponding to the collection site. “SPP” – six letter code corresponding to the first three letters of the genus and first three letters of the species. “SLA_m2_kg” – specific leaf area (m2 kg-1). “LDMC_g_g” – leaf dry matter content (g g-1). “TK_um”– leaf thickness (um). “ht_leaf_cm” – leaf height (cm). **Description of the data and file structure** There are three main file types distributed among six zip folders: (1) those for conducting a Bayesian occupancy model of camera trap data collected in Serengeti National Park between 2011 – 2018 within 4-day and 16-day lagged intervals, (2) those for conducting an integrated step selection function (iSSF) analysis of GPS collared wildebeest and zebra in Serengeti National Park in 2017 and 2018, and (3) those for conducting dietary analysis of DNA barcode data obtained from fecal material of Thomson’s gazelle, wildebeest, and zebra collected between 2017 and 2018. *(1) Bayesian occupancy models* The files to run the Bayesian occupancy model include the following zip files: (i) Serenegti_Bayesian_occupancy_model_4-day_2011.zip (ii) Serenegti_occupancy_data_4-day_2011-2018.zip (iii) Serenegti_Bayesian_occupancy_model_16-day_2011.zip (iv) Serenegti_occupancy_data_16-day_2011-2018.zip Occupancy data sets for zebra, wildebeest, and Thomson's gazelles that have been restricted to the transition season (05 April - 08 August) for the target year and include static and dynamic environmental data for each camera trap location (see below). The files include data that is either aggregated into 4-day occupancy windows (for example, "SER_2011_final_dat_4d.csv") or those aggregated into 16-day occupancy windows that include a first-order lagged effect (for example, "SER_2011_final_dat_16d.csv"). The R code in the scripts is for the year 2011. To change the code to a different year, modify the code on lines 44 and 65 accordingly. *(2) Integrated step selection function analysis* The files to run the iSSF analysis are include in the following zip file: (v) Serengeti_ISSF_movement_analysis_2017-2018.zip The zip folder includes two R files which conduct the iSSF analysis in either a 4-day window (issf_run_analysis_4day_model_selection.R) or 16-day window with a first-ordered lagged effect (issf_run_analysis_16day_model_selection.R). Individual GPS collar movement data are grouped at the population level for 2017 and 2018 separately for wildebeest (wb_2017bypopulation06Nov22.rds and wb_2018bypopulation06Nov22.rds), and zebra (zb_2017bypopulation31Oct22.rds and zb_2018bypopulation31Oct22.rds). The R script performs AIC model selection for 14 candidate models using iSSF functions from the 'amt' package. Movement data for GPS-collared zebra and wildebeest in 2017 and 2018 were filtered to occur within a 5 km buffer of the Snapshot Serengeti camera trap grid. *(3) Dietary analyses* The files to run the diet analysis are include in the following zip file: (vi) Serengeti_diet_analysis_2017-2018.zip The zip folder includes a single R script (Anderson_et_al_Science_2024_DietAnalysesOfMigrantHerbivores.R) to run all analyses in different blocks of code. There are five filtered datasets which contain the mean number of reads (averaged among technical replicates) of each plant mOTUs per sample. These datasets were originally published in Pansu et al. (2022; [https://doi.org/10.1073/pnas.2204400119](https://doi.org/10.1073/pnas.2204400119)) and original unfiltered data are available at: [https://doi.org/10.5061/dryad.brv15dvcj](https://doi.org/10.5061/dryad.brv15dvcj). Metadata files provide information about the location, time and animal from which fecal samples were collected. Two grass morphology data files and one grass nutrition file are used to relate animal foraging to grass traits. Finally, the relative abundance of grass species across plots compared to their abundance in the diets of migrant species was used to conduct selectivity analysis. For questions about the code or data please contact the corresponding author T. Michael Anderson ([anderstm@wfu.edu](mailto:anderstm@wfu.edu)) **Sharing/Access information** NA **Code/Software** The documentation of how to run the code and what data files need to be loaded in order to execute the analysis are contained in the R scripts.re contained in the R scripts.