This documentation contains the RDA modeling procedure for the article mentioned above. For more method details, see the methods section of the article.

setup

setwd("C:/Users/Jenny/Dropbox/Diss/Auswertung/vitality_I")
load("C:/Users/Jenny/Dropbox/Diss/Auswertung/vitality_I/vitality_I.RData")
library(vegan)

dataset setup: dataset dataroot as basis

# dca with only the scaled vitality parameters

dataset_MV <- dataset_prop_liv_RA
names(dataset_MV)
##  [1] "ID"                "plot"              "ind_ID"           
##  [4] "vGP"               "GP"                "vG"               
##  [7] "primary"           "adventive"         "resprouting"      
## [10] "date"              "RA"                "AA"               
## [13] "AAA"               "prop_blooming"     "prop_leaf"        
## [16] "prop_dead"         "prop_bare"         "count_bt"         
## [19] "l_infl"            "infl_dens"         "blossom_per_plant"
## [22] "ann_gro"           "trunk_dens"        "ratio_liv_bloom"  
## [25] "prop_liv_bare"     "height"            "N"                
## [28] "area"              "K"                 "man"              
## [31] "grazing"           "p_a_r"
# transformations 
dataset_MV$blossom_per_plant <- sqrt(dataset_MV$blossom_per_plant)
dataset_MV$prop_bare <- sqrt(dataset_MV$prop_bare)
dataset_MV$ann_gro <- sqrt(dataset_MV$ann_gro)
dataset_MV$prop_liv_bare <- sqrt(dataset_MV$prop_liv_bare)
dataset_MV$l_infl <- sqrt(dataset_MV$l_infl)

dataset_MV <- dataset_MV[,c(1:3, 11, 13, 14, 17, 19:22, 25:32)]
names(dataset_MV)
##  [1] "ID"                "plot"              "ind_ID"           
##  [4] "RA"                "AAA"               "prop_blooming"    
##  [7] "prop_bare"         "l_infl"            "infl_dens"        
## [10] "blossom_per_plant" "ann_gro"           "prop_liv_bare"    
## [13] "height"            "N"                 "area"             
## [16] "K"                 "man"               "grazing"          
## [19] "p_a_r"
decorana(dataset_MV[,c(6:13)])
## 
## Call:
## decorana(veg = dataset_MV[, c(6:13)]) 
## 
## Detrended correspondence analysis with 26 segments.
## Rescaling of axes with 4 iterations.
## 
##                   DCA1    DCA2    DCA3    DCA4
## Eigenvalues     0.1061 0.07607 0.03359 0.02407
## Decorana values 0.1071 0.05682 0.02355 0.01391
## Axis lengths    1.8218 2.41424 1.26215 1.99764

clear linear responses with gradient = 1.82

Question 1: What are the discriminant factors for shaping vitality? Automatic model selection - RDAall

mod <- rda(dataset_MV[,c(6:13)] ~ ., dataset_MV[, c(4:5, 14:19)])   
ordistep(rda(dataset_MV[,c(6:13)] ~ 1, dataset_MV), scope = formula(mod))
## 
## Start: dataset_MV[, c(6:13)] ~ 1 
## 
##           Df    AIC       F Pr(>F)   
## + AAA      1 1584.0 56.5293  0.005 **
## + RA       1 1608.1 27.6961  0.005 **
## + p_a_r    2 1630.7  2.8215  0.040 * 
## + grazing  5 1634.1  1.6279  0.165   
## + N        1 1633.3  1.0642  0.300   
## + area    18 1648.6  1.0452  0.430   
## + man      3 1635.5  0.9412  0.465   
## + K        1 1633.9  0.4754  0.610   
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Step: dataset_MV[, c(6:13)] ~ AAA 
## 
##       Df    AIC      F Pr(>F)   
## - AAA  1 1632.3 56.529  0.005 **
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
##           Df    AIC      F Pr(>F)   
## + p_a_r    2 1575.1 6.5126  0.010 **
## + RA       1 1580.6 5.3223  0.010 **
## + grazing  5 1582.5 2.2805  0.020 * 
## + man      3 1582.7 2.3979  0.035 * 
## + area    18 1591.9 1.5106  0.055 . 
## + N        1 1585.5 0.4913  0.585   
## + K        1 1585.5 0.4798  0.610   
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Step: dataset_MV[, c(6:13)] ~ AAA + p_a_r 
## 
##         Df    AIC       F Pr(>F)   
## - p_a_r  2 1584.0  6.5126  0.005 **
## - AAA    1 1630.7 65.1826  0.005 **
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
##           Df    AIC      F Pr(>F)   
## + RA       1 1569.2 7.8661  0.005 **
## + grazing  5 1574.8 2.0106  0.065 . 
## + area    18 1584.2 1.4273  0.085 . 
## + K        1 1575.6 1.4288  0.185   
## + man      3 1577.7 1.1035  0.325   
## + N        1 1576.4 0.7150  0.470   
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Step: dataset_MV[, c(6:13)] ~ AAA + p_a_r + RA 
## 
##         Df    AIC       F Pr(>F)   
## - RA     1 1575.1  7.8661  0.010 **
## - p_a_r  2 1580.6  7.8269  0.005 **
## - AAA    1 1606.5 42.2752  0.005 **
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
##           Df    AIC      F Pr(>F)  
## + grazing  5 1571.1 1.5750  0.090 .
## + area    18 1580.8 1.2768  0.145  
## + K        1 1570.2 0.9372  0.370  
## + man      3 1572.5 0.8652  0.530  
## + N        1 1571.0 0.1443  0.920  
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## Call: rda(formula = dataset_MV[, c(6:13)] ~ AAA + p_a_r + RA, data =
## dataset_MV)
## 
##                 Inertia Proportion Rank
## Total         2749.5931     1.0000     
## Constrained    803.1937     0.2921    4
## Unconstrained 1946.3994     0.7079    8
## Inertia is variance 
## 
## Eigenvalues for constrained axes:
##  RDA1  RDA2  RDA3  RDA4 
## 663.7 117.8  21.6   0.1 
## 
## Eigenvalues for unconstrained axes:
##    PC1    PC2    PC3    PC4    PC5    PC6    PC7    PC8 
## 1430.8  346.5  155.1    7.6    3.6    2.6    0.2    0.1
mv_1 <- rda(dataset_MV[,c(6:13)] ~ AAA + p_a_r, dataset_MV)
# AAA and RA cannot be included in one model due to colinearity
mv_1
## Call: rda(formula = dataset_MV[, c(6:13)] ~ AAA + p_a_r, data =
## dataset_MV)
## 
##                 Inertia Proportion Rank
## Total         2749.5931     1.0000     
## Constrained    727.0216     0.2644    3
## Unconstrained 2022.5715     0.7356    8
## Inertia is variance 
## 
## Eigenvalues for constrained axes:
##  RDA1  RDA2  RDA3 
## 663.4  54.2   9.4 
## 
## Eigenvalues for unconstrained axes:
##    PC1    PC2    PC3    PC4    PC5    PC6    PC7    PC8 
## 1450.8  395.1  162.0    8.0    3.9    2.6    0.2    0.1
# result from selection, 26.44 % expl variance

The observed vitality parameters were most determined by branch age and life history, explaining together 26.4 % of total inertia.

Question 2: How many of total inertia is explained by nitrogen , management and grazing? - RDAenv

mv_2a <- rda(dataset_MV[,c(6:13)] ~ N + grazing + man, dataset_MV)
mv_2b <- rda(dataset_MV[,c(6:13)] ~ K + grazing + man, dataset_MV)
vif.cca(mv_2a)   # ok
##                    N grazinghorses/cattle            grazingno 
##             1.121410             1.949670             6.687727 
##  grazingsheep fenced    grazingsheep trad   grazingsheep trad+ 
##             2.418449             6.359100             1.790111 
##                manMa              mannone                 manS 
##             1.624391             2.051543             1.678577
# table of expl variance (in % of total inertia), calculated from model output,
# model effects
mv_2a   # only 5.6 %
## Call: rda(formula = dataset_MV[, c(6:13)] ~ N + grazing + man, data =
## dataset_MV)
## 
##                 Inertia Proportion Rank
## Total         2.750e+03  1.000e+00     
## Constrained   1.541e+02  5.605e-02    8
## Unconstrained 2.595e+03  9.439e-01    8
## Inertia is variance 
## 
## Eigenvalues for constrained axes:
##   RDA1   RDA2   RDA3   RDA4   RDA5   RDA6   RDA7   RDA8 
## 109.76  33.19  10.25   0.72   0.13   0.05   0.00   0.00 
## 
## Eigenvalues for unconstrained axes:
##    PC1    PC2    PC3    PC4    PC5    PC6    PC7    PC8 
## 1895.4  445.0  240.7    7.5    4.3    2.3    0.1    0.1
outcome <- anova.cca(mv_2a, by="terms")
gross_effects <- data.frame(exp_var = (outcome$Variance*100)/2385.1024, outcome[4])
gross_effects
##              exp_var Pr..F.
## N          0.5982908  0.291
## grazing    4.7862982  0.093
## man        1.0764632  0.672
## Residual 108.8209216     NA
mv_2b   # only 5.18 %
## Call: rda(formula = dataset_MV[, c(6:13)] ~ K + grazing + man, data =
## dataset_MV)
## 
##                 Inertia Proportion Rank
## Total         2.750e+03  1.000e+00     
## Constrained   1.425e+02  5.182e-02    8
## Unconstrained 2.607e+03  9.482e-01    8
## Inertia is variance 
## 
## Eigenvalues for constrained axes:
##   RDA1   RDA2   RDA3   RDA4   RDA5   RDA6   RDA7   RDA8 
## 104.41  26.60  10.58   0.70   0.12   0.08   0.00   0.00 
## 
## Eigenvalues for unconstrained axes:
##    PC1    PC2    PC3    PC4    PC5    PC6    PC7    PC8 
## 1907.2  445.6  240.0    7.5    4.3    2.3    0.1    0.1
outcome <- anova.cca(mv_2b, by="terms")
gross_effects <- data.frame(exp_var = (outcome$Variance*100)/2385.1024, outcome[4])
gross_effects
##              exp_var Pr..F.
## K          0.2680244  0.605
## grazing    4.6979102  0.109
## man        1.0082640  0.711
## Residual 109.3077753     NA
cor(dataset_MV$N, dataset_MV$K, method = "spearman")
## [1] 0.9243115

Question 3: What determines vitality more? The real plant age or the stem age? - RDAage

mv_3 <- rda(dataset_MV[,c(6:13)] ~ RA + p_a_r + Condition(grazing + man + N), dataset_MV)
mv_3
## Call: rda(formula = dataset_MV[, c(6:13)] ~ RA + p_a_r +
## Condition(grazing + man + N), data = dataset_MV)
## 
##                 Inertia Proportion Rank
## Total         2.750e+03  1.000e+00     
## Conditional   1.541e+02  5.605e-02    9
## Constrained   4.154e+02  1.511e-01    3
## Unconstrained 2.180e+03  7.929e-01    8
## Inertia is variance 
## 
## Eigenvalues for constrained axes:
##  RDA1  RDA2  RDA3 
## 384.4  28.9   2.0 
## 
## Eigenvalues for unconstrained axes:
##    PC1    PC2    PC3    PC4    PC5    PC6    PC7    PC8 
## 1653.3  333.3  180.2    7.3    3.6    2.2    0.1    0.1
vif.cca(mv_3)   # ok 
## grazinghorses/cattle            grazingno  grazingsheep fenced 
##             1.988942             6.743727             2.476523 
##    grazingsheep trad   grazingsheep trad+                manMa 
##             6.398607             1.887296             1.778172 
##              mannone                 manS                    N 
##             2.545197             1.708782             1.194113 
##                   RA               p_a_rp               p_a_rr 
##             1.249184             1.759203             1.776959
outcome <- anova.cca(mv_3, by="terms")
gross_effects <- data.frame(exp_var = (outcome$Variance)/2.750e+03, outcome[4])
gross_effects
##             exp_var Pr..F.
## RA       0.13071757  0.001
## p_a_r    0.02033164  0.056
## Residual 0.79276548     NA
mv_5 <- rda(dataset_MV[,c(6:13)] ~ AAA + p_a_r + Condition(grazing + man + N), dataset_MV)
mv_5
## Call: rda(formula = dataset_MV[, c(6:13)] ~ AAA + p_a_r +
## Condition(grazing + man + N), data = dataset_MV)
## 
##                 Inertia Proportion Rank
## Total         2.750e+03  1.000e+00     
## Conditional   1.541e+02  5.605e-02    9
## Constrained   7.045e+02  2.562e-01    3
## Unconstrained 1.891e+03  6.877e-01    8
## Inertia is variance 
## 
## Eigenvalues for constrained axes:
##  RDA1  RDA2  RDA3 
## 669.4  28.9   6.2 
## 
## Eigenvalues for unconstrained axes:
##    PC1    PC2    PC3    PC4    PC5    PC6    PC7    PC8 
## 1352.3  373.2  152.1    7.4    3.5    2.2    0.1    0.1
vif.cca(mv_5)  # ok
## grazinghorses/cattle            grazingno  grazingsheep fenced 
##             1.956962             6.825292             2.490738 
##    grazingsheep trad   grazingsheep trad+                manMa 
##             6.417714             1.886682             1.728247 
##              mannone                 manS                    N 
##             2.505349             1.711548             1.155660 
##                  AAA               p_a_rp               p_a_rr 
##             1.183740             1.738117             1.771304
outcome <- anova.cca(mv_5, by="terms")
gross_effects <- data.frame(exp_var = (outcome$Variance)/2.750e+03, outcome[4])
gross_effects
##             exp_var Pr..F.
## AAA      0.22817662  0.001
## p_a_r    0.02799857  0.007
## Residual 0.68763950     NA

Question 4: What is the age-independent effect of area? - RDAarea

Study areas showed patterning in age distributions (c.f. OR 2: Fig. 1). Therefore, we checked the remaining effect of area besides age-related differences in study areas with including age and life history as conditional terms.

mv_6 <- rda(dataset_MV[,c(6:13)] ~ area + Condition(RA + p_a_r), dataset_MV)
mv_6
## Call: rda(formula = dataset_MV[, c(6:13)] ~ area + Condition(RA +
## p_a_r), data = dataset_MV)
## 
##                 Inertia Proportion Rank
## Total         2.750e+03  1.000e+00     
## Conditional   3.938e+02  1.432e-01    3
## Constrained   2.658e+02  9.666e-02    8
## Unconstrained 2.090e+03  7.601e-01    8
## Inertia is variance 
## 
## Eigenvalues for constrained axes:
##   RDA1   RDA2   RDA3   RDA4   RDA5   RDA6   RDA7   RDA8 
## 237.49  16.01  10.86   0.82   0.32   0.26   0.01   0.00 
## 
## Eigenvalues for unconstrained axes:
##    PC1    PC2    PC3    PC4    PC5    PC6    PC7    PC8 
## 1574.3  327.8  175.3    7.0    3.4    2.0    0.1    0.0
mv_7 <- rda(dataset_MV[,c(6:13)] ~ area + Condition(AAA + p_a_r), dataset_MV)
mv_7
## Call: rda(formula = dataset_MV[, c(6:13)] ~ area + Condition(AAA +
## p_a_r), data = dataset_MV)
## 
##                 Inertia Proportion Rank
## Total         2.750e+03  1.000e+00     
## Conditional   7.270e+02  2.644e-01    3
## Constrained   2.478e+02  9.012e-02    8
## Unconstrained 1.775e+03  6.455e-01    8
## Inertia is variance 
## 
## Eigenvalues for constrained axes:
##   RDA1   RDA2   RDA3   RDA4   RDA5   RDA6   RDA7   RDA8 
## 199.57  34.56  12.54   0.66   0.28   0.18   0.01   0.00 
## 
## Eigenvalues for unconstrained axes:
##    PC1    PC2    PC3    PC4    PC5    PC6    PC7    PC8 
## 1253.7  366.7  141.9    6.9    3.3    2.0    0.1    0.0