Appendix 1. Validation of the data analysis approach The data analysis approach in our case study is based on the relationship between species associations (v-score) and species trait dissimilarity. Species associations are enclosed in a matrix where, for each pair of species, the v-score indicates how often the two species co-occur. Species dissimilarity is enclosed in another matrix indicating, for each pair of species, to what extent they share similar trait values. See the ‘Material and Methods’ section for more details and how these matrices are computed. Applying our approach required, as we discuss below, choosing appropriate methods to compute species co-occurrence and relate this to species dissimilarities. Here we discuss this choice and use simulations to validate the overall approach. Our approach follows Willis et al. (2010), based on Cavender-Bares (2004) and Silwertown et al. (2001). Our approach differs from that of Willis et al. (2010) in that we use a different measure of species co-occurrence: the v-score, instead of the c-score. Although results based on the c-score were even stronger and more easy to interpret than those based on the c-score, we feel that the vscore provides a more realistic assessment of species co-occurrence patterns. This is for two important reasons. First, the calculation of the v-score takes into account the cases where both species are absent – information that is important when defining species co-occurrence (Leps & Smilauer 2003). Second, the highest c-score can only be found when there are two more-or-less equally abundant species that do not co-occur. For example, species with intermediate frequency values gave the highest c-scores in our case study (Fig. 1). Removing the highest frequency value species (Festuca ovina) resulted in a positive linear relationship between frequency and c-score. With the v-score these patterns do not occur and therefore it appeared that this index was better for our purposes. Figure 1. Relationship between within-plot species frequencies (here the mean number of subplots, out of 25, where each species was present) and mean value of overall species occurrence, computed either with the c-score or the v-score. ● ● ● ● ● Mean c−score 0.3 0.4 0.5 ● ● ● ● ● ● ●● ● ● ● ● ● ● ● ● ● ● ●● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ●● ● ●● ● ● ● r²=0.00, p=0.418 ● ● ● ● ● ● ● ● ● ● r²=0.71, p<0.0001 ● ● Mean v−score 0.01 0.03 ● 0.6 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 ● ● ● ● ● ● ● ● ● ● ● ● ● ●● ● ● ● 5 10 15 Mean frequency 20 −0.01 0.2 ● ● ● ●● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● 5 10 15 Mean frequency 20 27 1 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 After choosing the appropriate co-occurrence algorithm we asked if the method relating cooccurrence and trait dissimilarity with a Mantel test would provide reliable results. To validate the analytical approach of our study we created a set of virtual datasets, each with known properties, simulating the properties of our case study, in order to verify the occurrence of Type I and II errors in our approach. An R script to obtain the results shown at continuation is available at the end of the Appendix. We first created a dataset in which coexisting species occurred randomly with respect to their traits (‘Random scenario’: no significant relationship between v-score and trait dissimilarity expected). We created a set of 100 species. Species trait values were spaced at regular increasing intervals from species 1 to 100, with dissimilarity between species 1 and 100 equal to 1. Then we created 20 PLOTS, each divided into 25 SUBPLOTS as in our case study. In each plot we only allowed 40 species to occur, in order to be able to simulate species turnover between plots. Within each subplot we allowed 5 to 12 species to be randomly selected out of the 40 species, reflecting the general properities of the dataset in our case study. To account for differences in species frequencies observed in the field (Fig. 1) the 40 species could occur in the plot with different probabilities. Within each plot we first calculated the v-score between each pair of species. Typically, in this scenario we found that the v-score accounting for all 40 species in the plot resulted in a majority of values being above zero (Fig. 2). This is because when rare species occur in few subplots (e.g. less than 5) together with other rare species, their association will appear positive, because the two species will both be absent in most of the other subplots. Figure 2. V-score values obtained in the Random scenario including, or excluding, rare species (i.e. species occurring in less than 5 subplots). It should be noted that in our case study we excluded the most rare species from our analyses, i.e. we selected only the 60 most abundant species (i.e. those that accounted for 88% of all occurrences 2 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 in the subplot level and 78% at the plot level). By doing this, the selected 60 species had in 89% of the cases a frequency higher than 5 subplots, while the more rare where, in 85% of the cases, never occupied more than 5 subplots in a given plot. After computing the v-score for each individual plot we also computed an average v-score for all 20 plots, as in the case study. As we show below, we did such averaging (as in Reitalu et al. 2008) in the case study to increase the number of species in the analyses, and thus have more stable and robust results. We show below, in fact, that the test becomes less strong when the number of species is too low. In the simulations, we then related the v-score to species dissimilarity using a Mantel test with permutations, for each single plot and for the average v-score. We did this for all 100 species and for the most frequent species (i.e. those present at least in 40 subplots in the whole region), repeating the whole process 100 times. We then verified how many correct results (i.e. no deviations from random expectations) and how many incorrect results (either significant convergence or significant divergence found instead of random patterns) appeared in our simulations. The results were considered significant if the correlation was either smaller than the 0.025 quantile of the null model distribution or larger than the 0.975 quantile (i.e. two tailed test with alpha = 0.05). The results indicate that the Type I error rate approaches the expected 5%. Table 1. Results emerging from the Random scenario. The results are shown (1) for the average vscore across the 20 plots (out of the 100 runs), both including all species and only on the most frequent ones; and (2) for single plots, i.e. indicating the average number of 20 plots, out of the 100 runs, falling in each category. Average v-score Single plots 22 23 24 25 26 27 28 29 30 31 32 Convergent Random Divergent All species 3% 93% 4% Most frequent 3% 93% 4% All species 2.5% 95% 2.5% Most frequent 2.5% 95% 2.5% After developing the Random scenario we also created the Divergent and Convergent scenarios. The general approach for these two scenarios was similar to that for the Random one: 100 species created, 20 plots divided into 25 subplots, 40 species per plot having different frequencies, 5 to 12 species per subplot. The difference was that, in the Divergent scenario, co-occurring species were set to be as dissimilar as possible in terms of their traits. This was done by selecting species into subplots only within sets of species evenly distributed on the trait value gradient. 3 1 Table 2. Results from the Divergent scenario. Average v-score Single plots 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 Convergent Random Divergent All species 0% 0% 100% Most frequent 0% 1% 99% All species 0% 85% 15% Most frequent 0.5% 88% 11.5% The results of the Divergent scenarios show some key patterns. Notably they reveal that our v-score approach has a reduced ability to detect the simulated patterns when the number of species in a dataset is too low – a property that limits analyses at the single plot level. In fact, at the plot level, with a maximum of 40 species, on average, the simulated divergent patterns were only correctly detected in 3 plots (out of 20). The number of significantly divergent plots even decreased slightly when only the most frequent species were considered (2.25 out 20). These results suggest that carrying analyses to detect divergence at the plot level does not provide sufficiently robust results. In contrast, when using the average v-score across all plots, the results became more stable with the simulated patterns detecting almost 100% of the true positive results. The better results after averaging the vscore across plots is because more species are included in the analyses and because using more plots allows co-occurrence pattern to be more stable (as in Reitalu et al. 2008). In other words, the Type II error rates of our approach are not acceptable for the Divergent scenario analyses at the scale of single plots, but they are acceptable when using more plots together. In the Convergent scenario the species coexisting in the same subplots were selected so as to be among the most similar ones out of the 40 species selected for that plot. This basically was done by removing one forth (either the greater or smaller) of the trait values for the 40 species. In this case the results of the simulation show that the detection of convergent patterns is both possible at the plot level and when using the average v-score across plots. Table 3. Results emerging from the Convergent scenario. Average v-score Single plots Convergent Random Divergent All species 100% 0% 0% Most frequent 100% 0% 0% All species 99.5% 0.5% 0% Most frequent 44% 55% 1% 23 24 25 26 4 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 Conclusions The results of our tests suggested that there was no significant bias in the analytical approach; the Type I error rate approaches the expected value (i.e. the significance level) and the Type II error rate was low. We are aware that simulated patterns can be stronger than those found in the nature, and so the power of the test may be exaggerated, but our tests shows that the approach is consistent. Particularly the Random scenario shows that false positive results are not very likely in our approach. These tests also suggested that (1) the use of the v-score was more appropriate than the c-score for our analyses, (2) to allow better detection of divergent and convergent patterns we focused on average v-score on multiple plots instead of v-scores for single plots and on most abundant species. References Cavender-Bares, J., Ackerly, D. D., Baum D. A. & Bazzaz, F. A. (2004) Phylogenetic overdispersion in Floridian oak communities. American Naturalist, 163, 823-843. Silvertown, J., Dodd, M., & Gowing, D. (2001) Phylogeny and the niche structure of meadow plant communities. Journal of Ecology, 89, 428-435. Willis, C. G., Halina, M., Lehman, C., Reich, P. B., Keen, A., McCarthy, S. & Cavender-Bares, J. (2010) Phylogenetic community structure in Minnesota oak savanna is influenced by spatial extent and environmental variation. Ecography, 33, 565-577. 20 5 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 R script for the simulations (Appendix 1 continued) WARNING, the simulation of plots and the Mantel test might take quite some time to run (you can also decrease the number of runs, now set to 100). ####### test with random assembly ##### ####################################### library(vegan) require(abind) species<-1:100 chance<-(1:40)^1.3 plots<-list() resultsR<-matrix(0, 100, 42) for(z in 1:100){ for(j in 1:20){ spinquad<-sample(species, 40) quad<-matrix(0, 100, 25) rownames(quad)<-species for(i in 1:25){ nspcoexist<-sample(5:12, 1) coexist<-sample(spinquad, nspcoexist, prob=chance) quad[coexist, i]<-1 } plots[[j]]<-quad freqsp<-apply(quad, 1, sum) vscore<-as.dist(cor(t(quad[freqsp>0, ]))) dissim<-dist(as.numeric(rownames(quad[freqsp>0, ]))) resultsR[z, j+1]<-mantel(vscore, dissim)$signif vscore<-as.dist(cor(t(quad[freqsp>5, ]))) dissim<-dist(as.numeric(rownames(quad[freqsp>5, ]))) resultsR[z, j+22]<-mantel(vscore, dissim)$signif } vscores<-list() spabund<-matrix(0, 100, 20) for(j in 1:20){ quad<-plots[[j]] vscores[[j]]<-cor(t(quad)) spabund[, j]<-as.numeric(apply(quad, 1, sum)) } spabundreg<-apply(spabund, 1, sum) combV <- abind(vscores, along=3) meancombV<-apply(combV, 1:2, mean, na.rm=T) resultsR[z, 1]<-mantel(as.dist(meancombV), dist(species), na.rm = T)$signif meancombVabb<-meancombV[spabundreg>40, spabundreg>40] dissimall<-as.matrix(dist(species)) resultsR[z, 22]<-mantel(as.dist(meancombVabb), as.dist(dissimall[spabundreg>40, spabundreg>40]), na.rm = T)$signif } #boxplot(as.dist(meancombVabb)) #boxplot(as.dist(meancombV)) save(resultsR, file="resultsR.r") load("resultsR.r") resu<-resultsR[, 1] length(resu[resu<0.025])###counting the number of divergent cases### 6 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 length(resu[resu>0.975])###counting the number of convergent cases### resu<-resultsR[, 22] length(resu[resu<0.025])###counting the number of divergent cases for most frequent species### length(resu[resu>0.975])###counting the number of convergent cases for most frequent species### resuAll<-matrix(0, 100, 2) resuDom<-matrix(0, 100, 2) for(i in 1:100){ vec1<-resultsR[i, 2:21] vec2<-resultsR[i, 23:42] resuAll[i, 1]<-length(vec1[vec1<0.025]) resuAll[i, 2]<-length(vec1[vec1>0.975]) resuDom[i, 1]<-length(vec2[vec2<0.025]) resuDom[i, 2]<-length(vec2[vec2>0.975]) } apply(resuAll, 2, mean)#counting average number of plots that were divergent, either all species or only the most frequent# apply(resuDom, 2, mean)#counting average number of plots that were convergent, either all species or only the most frequent# #showing the case of a specific plot# species<-1:100 chance<-(1:40)^1.3 spinquad<-sample(species, 40) quad<-matrix(0, 100, 25) rownames(quad)<-species for(i in 1:25){ nspcoexist<-sample(5:12, 1) coexist<-sample(spinquad, nspcoexist, prob=chance) quad[coexist, i]<-1 } freqsp<-apply(quad, 1, sum) hist(freqsp, main="", xlab="# of subplots") nsp<-apply(quad, 2, sum) hist(nsp) par(mfrow=c(1,2)) boxplot(as.dist(cor(quad[spinquad, ])), main="with rare species", ylab="V-score") abline(h=0) boxplot(as.dist(cor(quad[freqsp>5, ])), main="without rare species") abline(h=0) dim(quad[freqsp>5, ]) ########### test for the divergence scenario ###################### ################################################################### library(vegan) require(abind) species<-1:100 spinquad<-sample(species, 40) chance<-c(seq(40, 1, by=-4)^1.2, seq(1, 40, by=4)^1.2, seq(39, 1, by=-4)^1.2, seq(2, 40, by=4)^1.2) plots<-list() resultsD<-matrix(0, 100, 42) for(z in 1:100){ for(j in 1:20){ spinquad<-sample(species, 40) quad<-matrix(0, 100, 25) rownames(quad)<-species 7 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 for(i in 1:25){ nspcoexist<-sample(15:25, 1) ordspinq<-sort(spinquad) names(ordspinq)<-1:40 divergent<-seq(sample(1:4, 1), 40, round(40/nspcoexist)) sel<-ordspinq[divergent] coexist<-sample(ordspinq[divergent], sample(5:12, 1), prob=chance[as.numeric(names(sel))]) quad[coexist, i]<-1 } plots[[j]]<-quad freqsp<-apply(quad, 1, sum) vscore<-as.dist(cor(t(quad[freqsp>0, ]))) dissim<-dist(as.numeric(rownames(quad[freqsp>0, ]))) resultsD[z, j+1]<-mantel(vscore, dissim)$signif vscore<-as.dist(cor(t(quad[freqsp>5, ]))) dissim<-dist(as.numeric(rownames(quad[freqsp>5, ]))) resultsD[z, j+22]<-mantel(vscore, dissim)$signif } vscores<-list() spabund<-matrix(0, 100, 20) for(j in 1:20){ quad<-plots[[j]] vscores[[j]]<-cor(t(quad)) spabund[, j]<-as.numeric(apply(quad, 1, sum)) } spabundreg<-apply(spabund, 1, sum) combV <- abind(vscores, along=3) meancombV<-apply(combV, 1:2, mean, na.rm=T) resultsD[z, 1]<-mantel(as.dist(meancombV), dist(species), na.rm = T)$signif meancombVabb<-meancombV[spabundreg>40, spabundreg>40] dissimall<-as.matrix(dist(species)) resultsD[z, 22]<-mantel(as.dist(meancombVabb), as.dist(dissimall[spabundreg>40, spabundreg>40]), na.rm = T)$signif } save(resultsD, file="resultsD.r") load("resultsD.r") resu<-resultsD[, 1] length(resu[resu<0.025]) resu<-resultsD[, 22] length(resu[resu<0.025]) resuAll<-matrix(0, 100, 2) resuDom<-matrix(0, 100, 2) for(i in 1:100){ vec1<-resultsD[i, 2:21] vec2<-resultsD[i, 23:42] resuAll[i, 1]<-length(vec1[vec1<0.025]) resuAll[i, 2]<-length(vec1[vec1>0.975]) resuDom[i, 1]<-length(vec2[vec2<0.025]) resuDom[i, 2]<-length(vec2[vec2>0.975]) } apply(resuAll, 2, mean) apply(resuAll, 2, sd) apply(resuDom, 2, mean) apply(resuDom, 2, sd) 8 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 species<-1:100 chance<-c(seq(40, 1, by=-4)^1.2, seq(1, 40, by=4)^1.2, seq(39, 1, by=-4)^1.2, seq(2, 40, by=4)^1.2) spinquad<-sample(species, 40) quad<-matrix(0, 100, 25) rownames(quad)<-species for(i in 1:25){ nspcoexist<-sample(15:25, 1) ordspinq<-sort(spinquad) names(ordspinq)<-1:40 divergent<-seq(sample(1:4, 1), 40, round(40/nspcoexist)) sel<-ordspinq[divergent] coexist<-sample(ordspinq[divergent], sample(5:12, 1), prob=chance[as.numeric(names(sel))]) quad[coexist, i]<-1 } freqsp<-apply(quad, 1, sum) hist(freqsp) nsp<-apply(quad, 2, sum) hist(nsp) par(mfrow=c(1,2)) boxplot(as.dist(cor(quad[spinquad, ])), main="with rare species", ylab="V-score") abline(h=0) dim(quad[freqsp>0, ]) boxplot(as.dist(cor(quad[freqsp>5, ])), main="without rare species") abline(h=0) dim(quad[freqsp>5, ]) ##############test for the convergent scenario############# ########################################################### library(vegan) require(abind) species<-1:100 chance<-c(seq(60, 1, by=-2)^1.1) resultsC<-matrix(0, 100, 42) plots<-list() for(z in 1:100){ for(j in 1:20){ spinquad<-sample(species, 40) quad<-matrix(0, 100, 25) rownames(quad)<-species for(i in 1:25){ nspcoexist<-sample(5:12, 1) #cut<-sample(c(0, quantile(spinquad)[3]), 1) #lim1<-spinquad[spinquad>cut] #lim2<-lim1[lim1<c(cut+50)] cut<-sample(c(0, quantile(spinquad)[2]), 1) lim1<-spinquad[spinquad>cut] lim2<-lim1[lim1<c(cut+75)] lim2<-lim2[1:30] chance2<-chance[1:length(lim2)] coexist<-sample(lim2, nspcoexist, prob=chance2) quad[coexist, i]<-1 } plots[[j]]<-quad freqsp<-apply(quad, 1, sum) vscore<-as.dist(cor(t(quad[freqsp>0, ]))) 9 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 dissim<-dist(as.numeric(rownames(quad[freqsp>0, ]))) resultsC[z, j+1]<-mantel(vscore, dissim)$signif vscore<-as.dist(cor(t(quad[freqsp>5, ]))) dissim<-dist(as.numeric(rownames(quad[freqsp>5, ]))) resultsC[z, j+22]<-mantel(vscore, dissim)$signif } vscores<-list() spabund<-matrix(0, 100, 20) for(j in 1:20){ quad<-plots[[j]] vscores[[j]]<-cor(t(quad)) spabund[, j]<-as.numeric(apply(quad, 1, sum)) } spabundreg<-apply(spabund, 1, sum) combV <- abind(vscores, along=3) meancombV<-apply(combV, 1:2, mean, na.rm=T) resultsC[z, 1]<-mantel(as.dist(meancombV), dist(species), na.rm = T)$signif meancombVabb<-meancombV[spabundreg>40, spabundreg>40] dissimall<-as.matrix(dist(species)) resultsC[z, 22]<-mantel(as.dist(meancombVabb), as.dist(dissimall[spabundreg>40, spabundreg>40]), na.rm = T)$signif } save(resultsC, file="resultsC.r") load("resultsC.r") resu<-resultsC[, 1] length(resu[resu>0.975]) resu<-resultsC[, 21] length(resu[resu>0.975]) resuAll<-matrix(0, 100, 2) resuDom<-matrix(0, 100, 2) for(i in 1:100){ vec1<-resultsC[i, 2:21] vec2<-resultsC[i, 23:42] resuAll[i, 1]<-length(vec1[vec1<0.025]) resuAll[i, 2]<-length(vec1[vec1>0.975]) resuDom[i, 1]<-length(vec2[vec2<0.025]) resuDom[i, 2]<-length(vec2[vec2>0.975]) } apply(resuAll, 2, mean) apply(resuAll, 2, sd) apply(resuDom, 2, mean) apply(resuDom, 2, sd) species<-1:100 spinquad<-sample(species, 40) chance<-c(seq(60, 1, by=-2)^1.1) quad<-matrix(0, 100, 25) rownames(quad)<-species for(i in 1:25){ nspcoexist<-sample(5:12, 1) #cut<-sample(c(0, quantile(spinquad)[3]), 1) #lim1<-spinquad[spinquad>cut] #lim2<-lim1[lim1<c(cut+50)] cut<-sample(c(0, quantile(spinquad)[2]), 1) 10 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 lim1<-spinquad[spinquad>cut] lim2<-lim1[lim1<c(cut+75)] lim2<-lim2[1:30] chance2<-chance[1:length(lim2)] coexist<-sample(lim2, nspcoexist, prob=chance2) quad[coexist, i]<-1 } freqsp<-apply(quad, 1, sum) hist(freqsp) nsp<-apply(quad, 2, sum) hist(nsp) par(mfrow=c(1,2)) boxplot(as.dist(cor(quad[spinquad, ])), main="with rare species", ylab="V-score") abline(h=0) dim(quad[freqsp>0, ]) boxplot(as.dist(cor(quad[freqsp>5, ])), main="without rare species") abline(h=0) dim(quad[freqsp>5, ]) 11 1 2 3 4 5 6 Appendix 2. Full results of the Mantel correlations between matrices of species co-occurrence and traits or phylogeny. The results are given for each trait category and spatial scale (plot, patch, landscape) considered. The three tables correspond to the three panels in Figure 1 (all plots together, only grazed, only non-grazed plots). A total of nine tests were run for each trait. ‘r’ indicates correlation; ‘p’ indicates P-value; ‘p.corr.traits’ indicates P-value after correction for multiple tests (in bold when <0.05); * indicates a P-value between 0.05 and 0.1. 12 1 All plots Trait r p scale p.corr.traits All traits 0.057 0.020 plot 0.045 Phylogeny 0.080 0.002 plot 0.018 Height -0.013 0.323 plot 0.415 Leaf traits 0.059 0.013 plot 0.039 Seed mass -0.011 0.328 plot 0.461 LHS traits 0.011 0.350 plot 0.399 Lateral spread 0.018 0.236 plot 0.344 Life form 0.014 0.282 plot 0.500 Phenology 0.058 0.012 plot 0.103 Clonality 0.034 0.103 plot 0.239 SLA 0.027 0.158 plot 0.237 LDMC 0.033 0.114 plot 0.171 Toughness 0.048 0.028 plot 0.225 All traits -0.074 0.002 patch 0.009 Phylogeny -0.023 0.169 patch 0.381 Height -0.020 0.213 patch 0.415 Leaf traits -0.082 0.001 patch 0.009 Seed mass -0.036 0.087 patch 0.241 LHS traits -0.067 0.017 patch 0.081 Lateral spread -0.072 0.009 patch 0.040 Life form 0.002 0.475 patch 0.500 Phenology 0.033 0.101 patch 0.227 Clonality -0.040 0.057 patch 0.239 SLA -0.047 0.057 patch 0.237 LDMC -0.092 0.002 patch 0.009 Toughness -0.008 0.396 patch 0.445 All traits -0.034 0.114 landscape 0.205 Phylogeny 0.008 0.338 landscape 0.381 Height -0.001 0.462 landscape 0.462 Leaf traits -0.048 0.036 landscape 0.065* Seed mass -0.036 0.089 landscape 0.241 LHS traits -0.040 0.084 landscape 0.189 Lateral spread -0.012 0.306 landscape 0.344 Life form 0.004 0.428 landscape 0.500 Phenology -0.017 0.210 landscape 0.297 Clonality -0.005 0.406 landscape 0.416 SLA -0.022 0.149 landscape 0.237 LDMC -0.045 0.037 landscape 0.111 Toughness -0.027 0.137 landscape 0.308 2 13 1 Grazed plots Trait r p scale p.corr.traits All traits 0.052 0.018 plot 0.045 Phylogeny 0.075 0.004 plot 0.018 Height 0.002 0.456 plot 0.462 Leaf traits 0.032 0.089 plot 0.114 Seed mass -0.004 0.416 plot 0.461 LHS traits 0.012 0.317 plot 0.399 Lateral spread 0.028 0.132 plot 0.297 Life form 0.007 0.401 plot 0.500 Phenology 0.049 0.036 plot 0.108 Clonality 0.027 0.133 plot 0.239 SLA 0.000 0.476 plot 0.476 LDMC 0.027 0.141 plot 0.181 Toughness 0.030 0.110 plot 0.308 All traits -0.092 0.002 patch 0.009 Phylogeny -0.020 0.221 patch 0.381 Height -0.050 0.053 patch 0.415 Leaf traits -0.086 0.005 patch 0.022 Seed mass -0.010 0.346 patch 0.461 LHS traits -0.072 0.018 patch 0.081* Lateral spread -0.079 0.008 patch 0.040 Life form 0.018 0.282 patch 0.500 Phenology -0.010 0.379 patch 0.393 Clonality -0.032 0.115 patch 0.239 SLA -0.009 0.369 patch 0.474 LDMC -0.140 0.001 patch 0.009 Toughness 0.000 patch 0.488 All traits -0.037 0.141 landscape 0.211 Phylogeny -0.016 0.245 landscape 0.381 Height 0.015 0.291 landscape 0.415 Leaf traits -0.065 0.023 landscape 0.052* Seed mass -0.078 0.008 landscape 0.072* LHS traits -0.061 0.055 landscape 0.165 Lateral spread -0.019 0.235 landscape 0.344 Life form -0.010 0.361 landscape 0.500 Phenology 0.022 0.171 landscape 0.297 Clonality -0.010 0.336 landscape 0.416 SLA -0.032 0.108 landscape 0.237 LDMC -0.047 0.057 landscape 0.117 Toughness -0.049 0.050 landscape 0.225 0.488 2 14 1 Abandoned plots Trait r p scale p.corr.traits All traits 0.023 0.190 plot 0.244 Phylogeny 0.005 0.450 plot 0.450 Height -0.013 0.276 plot 0.415 Leaf traits 0.038 0.062 plot 0.093* Seed mass -0.032 0.107 plot 0.241 LHS traits -0.012 0.355 plot 0.399 Lateral spread 0.000 0.499 plot 0.499 Life form 0.000 0.500 plot 0.500 Phenology -0.006 0.393 plot 0.393 Clonality 0.053 0.025 plot 0.225 SLA 0.037 0.090 plot 0.237 LDMC 0.022 0.242 plot 0.272 Toughness 0.012 0.342 plot 0.445 All traits 0.008 0.388 patch 0.388 Phylogeny -0.010 0.339 patch 0.381 Height 0.016 0.282 patch 0.415 Leaf traits 0.004 0.451 patch 0.451 Seed mass 0.004 0.461 patch 0.461 LHS traits 0.014 0.310 patch 0.399 Lateral spread -0.043 0.051 patch 0.153 Life form -0.058 0.018 patch 0.162 Phenology 0.055 0.023 patch 0.103 Clonality -0.009 0.341 patch 0.416 SLA -0.056 0.024 patch 0.216 LDMC 0.044 0.065 patch 0.117 Toughness 0.016 0.297 patch 0.445 All traits 0.012 0.282 landscape 0.317 Phylogeny -0.008 0.326 landscape 0.381 Height 0.011 0.263 landscape 0.415 Leaf traits 0.004 0.436 landscape 0.451 Seed mass -0.005 0.402 landscape 0.461 LHS traits 0.003 0.425 landscape 0.425 Lateral spread 0.011 0.286 landscape 0.344 Life form 0.001 0.439 landscape 0.500 Phenology 0.014 0.231 landscape 0.297 Clonality 0.002 0.416 landscape 0.416 SLA 0.005 0.441 landscape 0.476 LDMC 0.008 0.362 landscape 0.362 Toughness -0.005 0.392 landscape 0.445 2 3 4 5 15