This documentation contains the RDA modeling procedure for the article mentioned above. For more method details, see the methods section of the article.
setwd("C:/Users/Jenny/Dropbox/Diss/Auswertung/vitality_I")
load("C:/Users/Jenny/Dropbox/Diss/Auswertung/vitality_I/vitality_I.RData")
library(vegan)
# 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
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.
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
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
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