DOI: 10.5061/dryad.1jwstqk67
title: Data and code from: Diverging restoration pathways for overstory and understory communities in a Mediterranean-climate riparian ecosystem

description: Few restoration studies have long-term longitudinal data to evaluate
 recovery trajectories, which typically vary among different aspects of
 ecosystem structure and composition. We used repeat surveys to evaluate if
 the trajectory of vegetation structure and community composition in
 restored and reference forests converged from recovery of restored forest
 or degradation of reference forest, and whether patterns differed for
 forest overstories and understories. We measured vegetation communities
 9–16 years after prior surveys and 21–30 years after planting in 11
 restored and 8 reference forest sites along a 100-km span of the
 Sacramento River, California. We used generalized linear mixed models and
 non-metric multidimensional scaling to evaluate convergence in overstory
 structure, understory cover and understory composition. Restored forest
 structure became more similar to reference forests over time, converging
 on basal area of ca. 20 m2 ha-1 around 25 years and densities of stems
 around 35 years. In contrast, overstory species composition remained
 distinctive, primarily due to the different initial tree species
 composition and limited overlap in new species recruitment in restored and
 reference forests. Restored understories had lower native and higher
 exotic cover than reference sites in both surveys. Restored understory
 composition became more similar to reference sites as shade-intolerant
 exotic species cover declined. However, understory composition in restored
 sites remained distinct from reference sites due to the increased woody
 cover, primarily from the invasive, shade-tolerant shrub Rubus armeniacus,
 which increased from 2 to 23 percent mean site cover between the two
 surveys. Path analysis showed that in restored forests, R. armeniacus
 cover was negatively related (R = -0.51) to native understory cover,
 suggesting that it impedes forest recovery. Our results suggest that this
 system has converged with reference forest in overstory structure but not
 yet in overstory or understory composition.
description: ## Data and code from: Diverging restoration pathways for overstory and
 understory communities in a Mediterranean-climate riparian ecosystem This
 readme explains the steps needed to reproduce the figures in the results
 and supplemental materials. Before running any of the scripts to create
 the figures users will need to run the global_variables.R script, which
 centralizes most of the data loading and function definitions. The scripts
 use relative paths using the here package
 [https://here.r-lib.org/](https://here.r-lib.org/) which was fully tested
 on several environments using GitHub repos but may work slightly
 differently when downloading it from Dryad. The following describe which
 scripts are needed to reproduce each figure and table in the document:
 (note: legends were rearranged and some changes to color and font were
 made in Adobe Illustrator) R programming language (v4.4.0) ``` Package
 Version dplyr 1.1.4 tidyverse 2.0.0 here 1.0.1 ggplot2 3.5.1 mvabund 4.2.1
 RVAideMemoire 0.9.83.7 vegan 2.6.6.1 stringr 1.5.1 lme4 1.1.35.3 readxl
 1.4.3 MASS 7.3.60.2 emmeans 1.10.2 glmmTMB 1.1.9 DHARMa 0.4.6 patchwork
 1.2.0 purrr 1.0.2 progress 1.2.3 lavaan 0.6.18 ``` ## SCRIPTS General
 workflow: Please run the `global_variables.R` script first which will
 define all the shared variables and import functions `define_functions.R`
 among all the scripts, then you may proceed and run the following scripts
 to reproduce any figures or tables. None of the following figures or
 tables are included in the repository they are all in the manuscript
 titled "Diverging restoration pathways for overstory and understory
 communities in a Mediterranean-climate riparian ecosystem" published
 by Ecological Applications in 2025. **Figure 1** - conceptual figure (not
 data based) **Figure 2** - map (data listed below) **Figure 3** -
 `GLMM_figure_v4.R` * Creates the ggplot for the basal area and stem
 density GLMM figure (Figure 3) **Figure 4** - `nmds_overstory_2023_v2.R` *
 Creates the ggplot figure for the NMDS figure for overstory composition
 (Figure 4) **Figure 5** - `absolute_cover_figure_v5.R` * Creates a ggplot
 figure for the absolute native understory cover figure GLMM (Figure 5)
 **Figure 6** - `nmds_2023_v7.R` * Creates a ggplot figure for the NMDS
 figure for understory composition (Figure 6) **Figure 7** -
 `SEM_variables_summarize_4.R` * Creates the ggplot for the path analysis
 SEM figure (Figure 7) **Table 1** - `glmm_table_v2.R` * Creates the
 coefficient and test statistics presented in the overstory glmm table
 (Table 1) **Table 2** - `species_change_boxplot_v3.R` * Creates the means
 and differences presented in the species change boxplot for species level
 changes between surveys (Table 2) **Table 3** -
 `predict_glmm_exotic_native_under.R` * Creates the means and differences
 presented in the species change table for species level differences
 between surveys (Table 3) **Table 4** - `absolute_cover_table_v1.R` *
 Creates all the coefficients and test statistics presented in the
 understory cover GLMM table (Table 4) **Figure S1** - conceptual figure
 **Figure S2** - `species_change_boxplot_v3.R` * Creates the ggplot for the
 species change box plot (Figure S2) **Table S1** - method description
 **Table S2** - `env_var_scratch_predict.R` * Creates the tables values for
 environmental variables and their statistics including range, mean, and SE
 (Table S2), this output is generated by running the second section of the
 script. **Table S3** - `env_var_scratch_predict.R` * Creates the tables
 values for the correlation between environmental variables and their
 statistics for each forest type (Table S3), this output is generated by
 running the first section of the script. **Table S4** -
 `nmds_overstory_2023_v2.R` * Shows all the coefficients and test
 statistics for the PERMANOVA related to the NMDS for figure 4 that are put
 into a table (Table S4) **Table S5** - `nmds_2023_v7.R` * Shows all the
 coefficients and test statistics for the PERMANOVA related to the NMDS for
 figure 6 that are put into a table (Table S5) **Table S6** - notes of
 species found **Table S7** - `SEM_variables_summarize_4.R` * Creates the
 model diagnostics describing the path analysis (Figure 7) that are puting
 into the table (Table S7) ## DATASETS ## `BrookCathyJohn_area5.csv`
 **Description**: woody stem measurements from all three surveys for
 species in forest plots studied **Fields**: * `plot_id`: plot identifer *
 `dbh_cm`: diameter in centimers at breast height * `surveyor`: the survey
 that the data originated from, either one of the prior studies (Cathy,
 John) or the current one (Brook (2021), Brook_2 (2022)) * `area_m2`: area
 of the plot study area * `species_code`: code for the species ##
 `df_under_2021_2020_rub_arm_format.csv` **Description**: rubus armeniacus
 abundance measures for SEM **Fields**: * `plot_id`: plot identifer *
 `understory`: quadrat identifier * `species_code`: species code * `value`:
 absolute cover measurement ## `df_understories_2008_2021_2022_v9.csv`
 **Description**: understory measurements calculated from quadrats for the
 absolute cover of every understory species **Fields**: * `plot_id`: plot
 identifer * `species_code`: code for species * `forestType`: restored or
 reference forest * `survey_period`: if record was prior survey or current
 * `understory`: quadrat identfier in forest plot * `value`: cover
 measurement ## `updated_elevation.csv` **Description**: relative
 floodplain elevation used for the SEM for each forest plot **Fields**: *
 `gis_id`: links the id of the geometry to the forest plot ID *
 `rel_flood_elevation`: elevation above the river in meters ##
 `distance_to_river_and_forest_2021_2022_v3.csv` **Description**: distance
 to remnant forest and river from plots used for the structural equation
 model for each forest plot **Fields**: * `gis_id`: links the id of the
 geometry to the forest plot ID * `distance_to_river_geo`: distance in
 meters between restored plot and reference forest boundary *
 `distance_to_remnant_geo`: distance in meters between restored plot and
 remnant forest boundary * `plot_id`: plot identifier ##
 `floodplain_age.csv` **Description**: used for dating reference forests
 based on the age the floodplain first formed using the location of each
 plot **Fields**: * `gis_id`: links the id of the geometry to the forest
 plot ID * `OID_`: links to original geometry from shapefile *
 `distance_to_remnant_geo`: distance in meters between restored plot and
 remnant forest boundary * `distance_to_river_geo`: distance in meters
 between restored plot and reference forest boundary * `PlotNumber`: plot
 identifier used in GIS * `FloodplainYear`: year floodplain formed *
 `planted_year`: year restored site was planted * `YearSurveyed`: year of
 initial survey * `Latitude`: latitude dd (WGS84) * `Longitude`: Longitude
 dd (WGS84) * `plot_id`: plot identifier ## `long_2022_2021_midstory.csv`
 **Description**: shrub measurements that were used as predictors in the
 SEM in long format **Fields**: * `transect_number`: transect identifier *
 `plot_id`: plot identifier * `species`: species code * `value`: absolute
 cover measurement ## `overstory_2022_2021_long.csv` **Description**:
 overstory cover measurements for SEM that described the cover using a
 densiometer of the overstory above each quadrat (long instead of wide
 table) **Fields**: * `plot_id`: plot identfier * `overstory_quadrat`: the
 quadrat identifier where this measurement was taken ##
 `plant_species_qualities.csv` **Description**: guild information for
 species that were used in the structural equation model **Fields**: *
 `species_code`: code to identify species * `origin`: native or exotic *
 `group`: lifeform type (gram, forb, shrub, tree) ## `plot_ids_7.csv`
 **Description**: plot ids for quadrats and forest plots which linked each
 plot id to the type of forest and which study did the original survey for
 dating **Fields**: * `plot_id`: plot identfier * `site_group`: forest site
 identifier for comparing between survey periods * `forestType`: restored
 or reference forests * `original_survey`: study original survey came from
 (Cathy, John) ## `plotID_2021_2022_forestType.csv` **Description**: plot
 ids for quadrats and forest plots formatted for SEM **Fields**: *
 `plot_id`: plot identfier * `forestType`: restored or reference forest ##
 `rub_arm_cover.csv` **Description**: used to calculate rub arm cover for
 abstract **Fields**: * `transect_number`: the belt transect identfier that
 measured the rubus cover * `plot_id`: the plot identifier * `species`:
 species code * `value`: absolute cover measure * `forestType`: restored or
 reference forest ## `seed_disp_table_3.csv` **Description**: seed
 dispersal strategy for native plants to evaluate the landscape level
 variables on native cover in the SEM **Fields**: * `species`: species code
 * `full_species_name`: the full name of each species * `origin`: native or
 exotic * `group`: life form type * `seed_dispersal`: seed dispersal
 strategy (wind, water, gravity, animal) * `citation`: relevant citation
 for certain seed dispersal strategies that were not as clear ##
 `species_grouping_12.csv` **Description**: table for exotic and native
 species identity and lifeform for understory and overstory measures
 **Fields**: * `species_code`: species code * `species`: species code with
 underscores for plot labels * `origin`: native or exotic * `group`:
 lifeform (graminoid, forb, shrub, tree) ##
 `under_2022_2021_sem_merged.csv` **Description**: understory measurements
 formatted for SEM that included native and exotic cover for each forest
 plot in wide format **Fields**: * `plot_id `: the identifier for each plot
 * `understory`: the quadrat identifier for each quadrat * The following
 other fields are just species codes and their abundance between 0 and 100
 percent for each quadrat, they can be converted from species codes (which
 is done in the scripts), or using
 `under_species_code_to_scientific_names_v2.csv` * bro_dia gal_apa ari_cal
 bra_nig rub_arm tor_arv mar_fab car_bar ely_tri art_cal hor_sp ger_sp
 fes_sp jug_hin ave_sp phy_ame ace_neg vic_vil art_dou ely_gla dig_sp
 vit_cal rub_urs ger_dis sal_lasio que_lob amb_art lac_ser car_pyc tox_div
 bac_pil rum_sp met_sp aster_unk hyp_per car_oli bra_sp bro_sp bro_hor
 fes_per aster_long_leaves med_sp ero_sp ari_dou ely_sp ros_cal cle_lig
 fra_lat aru_don fic_car poa_sp sti_mil sal_exi eri_can tae_cap pop_fre
 log_gal vit_vil tri_hor ana_arv agr_sp pla_sp ver_lit phy_can ars_cal
 pla_lan oxa_sp lep_lat cen_nig ver_bon equ_hye sam_nig cir_vul pru_cer
 ver_tha tar_sp dau_sp sol_vel kic_sp con_mac men_sp pol_sp dat_sp boe_cyl
 xan_str phyta_sp cen_sol sal_lasia lin_ben ail_alt ##
 `under_species_code_to_scientific_names_v2.csv` **Description**: crosswalk
 species codes to scientific names **Fields**: * `species_code`: species
 code * `scientific_name`: full scientific name ##
 `map_markers_catographic.shp` **Description**: centroids for forests
 studied **Fields**: * `Field1`: restoration site name * `LatMin`: latitude
 in minutes and seconds * `LonMin`: longitude in minutes and seconds *
 `LatDec`: latitude in decimal degrees * `LonDec`: longitude in decimal
 degrees * `Approximat`: approximation of the centroid (Yes or NULL) *
 `Remnant`: remnant or restored forest (Yes or NULL) * `Survey`: original
 study group * `in_study`: if the plot is in the study area (1 or 0) ##
 `Sac_NWR_cartographic.shp` **Description**: boundaries for Sacramento
 National Wildlife Refuge areas with forest plots **Fields**: *
 `TNC_SacRiv`: name of the restoration unit * `Shape_Leng`: length of the
 polygon * `Shape_Area`: area of the polygon