Skip to main content
Dryad logo

Data from: Climatic and vegetational drivers of insect beta diversity at the continental scale


Chesters, Douglas et al. (2020), Data from: Climatic and vegetational drivers of insect beta diversity at the continental scale, Dryad, Dataset,



We construct a framework for mapping pattern and drivers of insect diversity at the continental scale and use it to test whether and which environmental gradients drive insect beta diversity.


Global; North and Central America; Western Europe.

Time period

21st century.

Major taxa studied



An informatics system was developed to integrate terrestrial data on insects with environmental parameters. We mined repositories of data for distribution, climatic data were retrieved (WorldClim), and vegetation parameters inferred from remote sensing analysis (MODIS Vegetation Continuous Fields). Beta diversity between sites was calculated and then modeled with two methods, Mantel test with multiple regression and generalized dissimilarity modeling.


Geographic distance was the main driver of insect beta diversity. Independent of geographic distance, bioclimate variables explained more variance in dissimilarity than vegetation variables, although the particular variables found to be significant were more consistent in the latter, particularly, tree cover. Tree cover gradients drove compositional dissimilarity at denser coverages, in both continental case studies. For climate, gradients in temperature parameters were significant in driving beta diversity more so than gradients in precipitation parameters.

Main conclusions

Although environmental gradients drive insect beta diversity independently of geography, the relative contribution of different climatic and vegetational parameters is not expected to be consistent in different study systems. With further incorporation of additional temporal information and variables, this approach will enable the development of a predictive framework for conserving insect biodiversity at the global scale.

Usage Notes


# will need to make equivelent rows using the intersect R command. example:

overlapping_samples <- intersect(row.names(params_MCL), row.names(comm_MCL));length(overlapping_samples)
comm_MCL <- comm_MCL[overlapping_samples,]
params_MCL <- params_MCL[overlapping_samples,]


# consider removing species which are found at very few sites:
column_names <- colnames(comm_MCL)
region_counts_per_species <- seq(from=0, to=0, length=length(comm_MCL[1 , ]))
for(j in 1:length(region_counts_per_species))
    current_column <- comm_MCL[ , j ];current_column_ID <- column_names[j]
    indexs <- (1:length(current_column))[current_column >= 1]; # print(c( j , current_column_ID, length(region_counts_per_species) , length(indexs) ))
    if(length(indexs) >= 3){region_counts_per_species[j] <- 1}
rm_cols2 <- (1:length(region_counts_per_species))[region_counts_per_species == 0];print (c("removing species:" , length(rm_cols2) )); print (c( "proportion:" , length(rm_cols2) /  length(comm_MCL[ 1 ,  ])))


# and if removing sites with few observations:

species_counts_per_region <- seq(from=0, to=0, length=length(comm_MCL[ , 1]))
for(j in 1:length(species_counts_per_region))
    current_row <- comm_MCL[j , ]
    indexs <- (1:length(current_row))[current_row >= 1]
    if(length(indexs) >= 30)
        {species_counts_per_region[j] <- 1}

rm_rows<-(1:length(species_counts_per_region))[species_counts_per_region == 0];

if(length(rm_rows) >= 1)
    comm_MCL<-comm_MCL[-rm_rows , ];params_MCL <- params_MCL[-rm_rows , ];