Explaining plant assemblies

Relationship between bare ground, litter, stone, rock, moss and plant community composition in Castril, Santiago and Pontones (CSP) pasturelands.

Soil variables

Correlation matrix

res <- cor(soil_22_23, method = c("spearman"))
res <- round(res, 2)

upper<-res
upper[upper.tri(res,diag=FALSE)]<-""
upper<-as.data.frame(upper) ;kable(upper)
lit ston rock moss bare
lit 1
ston -0.38 1
rock 0.09 -0.23 1
moss -0.02 -0.21 0.26 1
bare 0.01 -0.01 -0.29 -0.36 1

dbMEM Analysis

Distance-Based Moran’s Eigenvector Maps (dbMEM)

Construction of eigenvectors from latitude-longitude coordinates that makes possible to test spatial explanatory variable.

## Hellinger-transformed community data
community_data_density_22_23.h <- decostand(community_data_density_22_23, "hellinger")
## Computation of linearly detrended community data
csp.h.det <- resid(lm(as.matrix(community_data_density_22_23.h) ~ ., data = coord_22_23_b))

  #csp.dbmem.quick <- quickMEM(community_data_density_22_23.h, coord_22_23_b)
  #summary(csp.dbmem.quick)
## Step 1. Construct the matrix of dbMEM variables
# argument of dbmem either a matrix of spatial coordinates or a distance matrix 
csp.dbmem.tmp <- dbmem(coord_22_23_b, silent = FALSE)
## Truncation level = 0.04710244 
## Time to compute dbMEMs = 0.030000  sec
csp.dbmem <- as.data.frame(csp.dbmem.tmp)
# Truncation distance used above:
thr <- give.thresh(dist(coord_22_23_b))
  # Display and count the eigenvalues
  #attributes(csp.dbmem.tmp)$values
  #length(attributes(csp.dbmem.tmp)$values)
## Step 2. Run the global dbMEM analysis
(csp.dbmem.rda <- rda(csp.h.det ~., csp.dbmem))
## Call: rda(formula = csp.h.det ~ MEM1 + MEM2 + MEM3 + MEM4 + MEM5 + MEM6
## + MEM7 + MEM8 + MEM9 + MEM10 + MEM11 + MEM12 + MEM13 + MEM14 + MEM15 +
## MEM16 + MEM17, data = csp.dbmem)
## 
##               Inertia Proportion Rank
## Total         0.38236    1.00000     
## Constrained   0.09632    0.25190   17
## Unconstrained 0.28605    0.74810   55
## Inertia is variance 
## 
## Eigenvalues for constrained axes:
##     RDA1     RDA2     RDA3     RDA4     RDA5     RDA6     RDA7     RDA8 
## 0.021968 0.014454 0.011737 0.008997 0.006848 0.006101 0.005164 0.004413 
##     RDA9    RDA10    RDA11    RDA12    RDA13    RDA14    RDA15    RDA16 
## 0.003495 0.002998 0.002727 0.002316 0.002033 0.001651 0.001151 0.000184 
##    RDA17 
## 0.000084 
## 
## Eigenvalues for unconstrained axes:
##     PC1     PC2     PC3     PC4     PC5     PC6     PC7     PC8 
## 0.04951 0.02949 0.02246 0.01843 0.01441 0.01399 0.01099 0.01005 
## (Showing 8 of 55 unconstrained eigenvalues)
anova(csp.dbmem.rda)
## Permutation test for rda under reduced model
## Permutation: free
## Number of permutations: 999
## 
## Model: rda(formula = csp.h.det ~ MEM1 + MEM2 + MEM3 + MEM4 + MEM5 + MEM6 + MEM7 + MEM8 + MEM9 + MEM10 + MEM11 + MEM12 + MEM13 + MEM14 + MEM15 + MEM16 + MEM17, data = csp.dbmem)
##          Df Variance      F Pr(>F)
## Model    17 0.096318 1.0894  0.159
## Residual 55 0.286046
(csp.R2a <- RsquareAdj(csp.dbmem.rda)$adj.r.squared)
## [1] 0.02067161

Variance explained by the model is reduced (0.096318) and is not significant (p-value > 0.05). The adjusted R2 of the model is: 0.02. Thus, it seems that the eigenvectors, representing spatial explanatory variables, do not have an important influence on plant community heterogeneity.

Redundancy Analysis

Model with soil variables considering the latitude-longitude coordinates

Distance-based RDA as we use Bray-Curtis distance.

csp_rda_1_bis <- capscale(community_data_density_22_23 ~ bare + lit + ston + rock + moss + Condition(scores(coord_22_23_b)),
                 data =  soil_22_23, distance = "bray")
csp_rda_1_bis
## Call: capscale(formula = community_data_density_22_23 ~ bare + lit +
## ston + rock + moss + Condition(scores(coord_22_23_b)), data =
## soil_22_23, distance = "bray")
## 
##                Inertia Proportion Rank
## Total         13.89670    1.00000     
## Conditional    0.92328    0.06644    2
## Constrained    1.87598    0.13499    5
## Unconstrained 12.47160    0.89745   45
## Imaginary     -1.37417   -0.09888   27
## Inertia is squared Bray distance 
## Species scores projected from 'community_data_density_22_23' 
## 
## Eigenvalues for constrained axes:
##   CAP1   CAP2   CAP3   CAP4   CAP5 
## 0.9251 0.4785 0.2092 0.1555 0.1077 
## 
## Eigenvalues for unconstrained axes:
##   MDS1   MDS2   MDS3   MDS4   MDS5   MDS6   MDS7   MDS8 
## 1.8772 1.5702 1.0563 0.8840 0.7126 0.6183 0.5751 0.5062 
## (Showing 8 of 45 unconstrained eigenvalues)
  • 6% of inertia (i.e. variance) explained by the condition, i.e. geographical distance between transect.

  • 13% of inertia is related to the explanatory variables, i.e. litter, stone, rock, moss, bare ground.

s_csp_rda_1_bis = summary(csp_rda_1_bis) 
s_csp_rda_1_bis$cont$importance[,1:4]
##                             CAP1       CAP2       CAP3       CAP4
## Eigenvalue            0.92510603 0.47846328 0.20922779 0.15552453
## Proportion Explained  0.06447816 0.03334799 0.01458279 0.01083977
## Cumulative Proportion 0.06447816 0.09782615 0.11240894 0.12324871

Axes 1 and axes 2 explain 6.4% and 3.3% of variance, respectively. We keep just these two axes for the data visualization.

Axes one and two of RDA

s_csp_rda_1_bis = summary(csp_rda_1_bis)  
sp_sel = s_csp_rda_1_bis$species[,1:3] %>% as.data.frame %>% mutate(position = seq(1:156)) %>% filter(if_any(c(CAP1,CAP2,CAP3), ~ .x >= 0.1)|if_any(c(CAP1,CAP2,CAP3), ~ .x <= -0.1)) %>% pull(position)

ggtriplotRDA(csp_rda_1_bis,site.sc = "wa", plot.sites = FALSE,plot.spe = FALSE,label.spe = FALSE, scaling = 2,plot.centr = FALSE) #select.spe = sp_sel)
## 
## No factor, hence levels cannot be plotted with symbols;
## 'plot.centr' is set to FALSE
Figure 1: Scaling 2 i.e angles between variables reflect their correlation

Figure 1: Scaling 2 i.e angles between variables reflect their correlation

Regarding the coding, the initial letter C,S and P represent Castril, Santiago and Pontones, respectively. The following number (01 up to 12) is the transect number in each common. The letters A, B and C are the replicates in each pastoral unit. Replicates A were carried out during the spring 2022. Replicates B and C were carried out in 2023. The last number(1,2 or 3) represents the Tranhumance modality.

## 
## No factor, hence levels cannot be plotted with symbols;
## 'plot.centr' is set to FALSE
Figure 2: Type Scaling 1 which focuses on the distance relationships among species

Figure 2: Type Scaling 1 which focuses on the distance relationships among species

Contribution of each variables in each canonical axes:

s_csp_rda_1_bis$biplot[,1:2]
##            CAP1       CAP2
## bare -0.7545247 -0.1679387
## lit  -0.1147567  0.6200539
## ston -0.3374754 -0.5627073
## rock  0.4747150 -0.4234487
## moss  0.7912226 -0.1000900

Variance Inflation Factors (VIF)

Linear dependencies can be explored by computing the X variables’ Variance Inflation Factors (VIF). VIF greater than 10 should be avoided.

vif.cca(csp_rda_1_bis)
## scores(coord_22_23_b)x scores(coord_22_23_b)y                   bare 
##               1.321748               1.421529               1.236206 
##                    lit                   ston                   rock 
##               1.307199               1.339330               1.210303 
##                   moss 
##               1.221457