Web-Spider Ecological Community: Redundancy Analysis (RDA)

1 Redundancy Analysis

Redundancy Analysis (RDA) is a method to extract the variation in a set of response variables that explained by a set of non-numerical explanatory variables with a direct gradient analysis technique. Gradient Analysis technique can be constructed by a linear model setting with a set of significant explanatory variables, which can be further extended with multiple linear regression (MLR) version. A matrix of the fitted values of all response variables generated through MLR is also subject to principal components analysis (PCA).

Simply speakingly, Redundancy Analysis (RDA) is a constrained version of principal components analysis (PCA), where canonical axes is the linear combinations of the explanatory variables fitted by MLR. The RDA approach can generate ordinations in the space for the matrix of non-numerical response variables and for explanatory non-numerical response variables. Ordination methods is a transformation of non-numerical variables to numerical values which are either based on Euclidean distances (RDA) or Hellinger-chord (tb-RDA) distances. Ordination approach is commonly used in numerical ecological modeling. Details can refer to

  • Legendre and Gallagher (2001)
  • Zuur, Ieno, and Smith (2007)
  • Legendre and Legendre (2012)
  • Borcard, Gillet, and Legendre (2018)

1.1 Hellinger-Chord Distances

sourced from @Legendre2001

Figure 1.1: sourced from Legendre and Gallagher (2001)

1.2 Unconstrainted Ordination

sourced from @Legendre2001

Figure 1.2: sourced from Legendre and Gallagher (2001)

1.3 Constrainted Ordination

sourced from @Legendre2001

Figure 1.3: sourced from Legendre and Gallagher (2001)

1.4 Hellinger Distances

sourced from @Legendre2001

Figure 1.4: sourced from Legendre and Gallagher (2001)

1.5 Chord Distances

sourced from @Legendre2001

Figure 1.5: sourced from Legendre and Gallagher (2001)

2 Load Spider Dataset

2.1 Spider Metacommunity

2.2 Environmental Dataset

2.3 Spider Dataset

2.4 census.comm

2.5 census.env

2.6 Hellinger-transformed community dataset

3 RDA Modeling of Web-Spiders

3.1 Environmental variables Setting

CA.full <- rda(comm.Hellinger ~ log10(tangle.vol.cm3) + Host + cld.num + sociality +
    Year, scale = FALSE, data = data.env)

CA.full
Call: rda(formula = comm.Hellinger ~ log10(tangle.vol.cm3) + Host +
cld.num + sociality + Year, data = data.env, scale = FALSE)

              Inertia Proportion Rank
Total          0.4035     1.0000     
Constrained    0.1139     0.2823    6
Unconstrained  0.2896     0.7177   18
Inertia is variance 
Some constraints were aliased because they were collinear (redundant)

Eigenvalues for constrained axes:
   RDA1    RDA2    RDA3    RDA4    RDA5    RDA6 
0.04434 0.03326 0.02478 0.00519 0.00478 0.00155 

Eigenvalues for unconstrained axes:
    PC1     PC2     PC3     PC4     PC5     PC6     PC7     PC8 
0.06552 0.04400 0.04270 0.02975 0.01933 0.01760 0.01263 0.01000 
(Showing 8 of 18 unconstrained eigenvalues)
step.forward <- ordistep(rda(comm.Hellinger ~ 1, scale = FALSE, data = data.env),
    scope = formula(CA.full), direction = "forward", pstep = 1000)

Start: comm.Hellinger ~ 1 

                        Df     AIC       F Pr(>F)   
+ Host                   3 -166.82 13.9008  0.005 **
+ sociality              1 -148.50 15.9602  0.005 **
+ cld.num                1 -143.28 10.3537  0.005 **
+ Year                   1 -136.95  3.8149  0.005 **
+ log10(tangle.vol.cm3)  1 -136.51  3.3741  0.005 **
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Step: comm.Hellinger ~ Host 

                        Df     AIC      F Pr(>F)   
+ log10(tangle.vol.cm3)  1 -169.86 4.9548  0.005 **
+ Year                   1 -169.68 4.7698  0.005 **
+ cld.num                1 -165.80 0.9477  0.420   
+ sociality              0 -166.82                 
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Step: comm.Hellinger ~ Host + log10(tangle.vol.cm3) 

            Df     AIC      F Pr(>F)   
+ Year       1 -173.82 5.8359  0.005 **
+ cld.num    1 -168.84 0.9442  0.520   
+ sociality  0 -169.86                 
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Step: comm.Hellinger ~ Host + log10(tangle.vol.cm3) + Year 

            Df     AIC      F Pr(>F)
+ cld.num    1 -172.88 1.0154  0.485
+ sociality  0 -173.82              
step.forward$terms
comm.Hellinger ~ Host + log10(tangle.vol.cm3) + Year
attr(,"variables")
list(comm.Hellinger, Host, log10(tangle.vol.cm3), Year)
attr(,"factors")
                      Host log10(tangle.vol.cm3) Year
comm.Hellinger           0                     0    0
Host                     1                     0    0
log10(tangle.vol.cm3)    0                     1    0
Year                     0                     0    1
attr(,"term.labels")
[1] "Host"                  "log10(tangle.vol.cm3)" "Year"                 
attr(,"order")
[1] 1 1 1
attr(,"intercept")
[1] 1
attr(,"response")
[1] 1
attr(,".Environment")
<environment: R_GlobalEnv>

3.2 Variation Partitioning

3.2.1 Environmental variables Setting

data.env1 <- data.env[data.env$Year == 2015 & !is.na(data.env$longitude), ]
row.names(data.env1) <- data.env1$Nest
data.env1
               Nest        Host Collect.Date Year long.diam short.diam
2015age01 2015age01 Aglaoctenus       29-May 2015        30         25
2015age02 2015age02 Aglaoctenus       30-May 2015        96         44
2015age03 2015age03 Aglaoctenus       31-May 2015        73         38
2015age04 2015age04 Aglaoctenus       31-May 2015        73         42
          h.from.ground basket.height Tangle.height    CLD   Quality P.Cover AS
2015age01           170             7            34 sparse excellent      NA NA
2015age02            70             5            69   some      good      NA NA
2015age03            22             6           152   some      good      NA NA
2015age04            17             8            81   many      good      NA NA
          Host.Pop tangle.vol.cm3 Spider.size.mm Orb.diam.1 Orb.diam.2
2015age01        1           6676             10         NA         NA
2015age02        1          76303             20         NA         NA
2015age03        1         110387             23         NA         NA
2015age04        1          65017             20         NA         NA
          Orb.Area.cm2 Notes   Simpson  Shannon abundance richness density.m3
2015age01           NA       0.6000000 1.227529        10        5  14.979029
2015age02           NA       0.6224490 1.034601        14        3   1.834790
2015age03           NA       0.6159334 1.075604        29        4   2.627121
2015age04           NA       0.6875000 1.467205        32        7   4.921790
          sociality cld.num  latitude longitude prop.aggressive
2015age01  solitary       1 -1.066854 -77.61592      0.00000000
2015age02  solitary       2 -1.068090 -77.61607      0.00000000
2015age03  solitary       2 -1.074708 -77.61272      0.03448276
2015age04  solitary       3 -1.070106 -77.61587      0.12500000
 [ reached 'max' / getOption("max.print") -- omitted 80 rows ]

3.2.2 Space Setting

data.space <- geoXY(latitude = data.env1$latitude, longitude = data.env1$longitude,
    unit = 1)
row.names(data.space) <- row.names(data.env1)
data.space
                    X           Y
2015age01  1718.71320 2365.149035
2015age02  1702.10730 2228.469908
2015age03  2075.18450 1496.639235
2015age04  1724.33827 2005.540331
2015age05  2229.34661 1535.232005
2015age06  1800.45381 2331.977743
2015age07  1896.79470 1754.657476
2015age08  1991.87567 1623.855388
2015age09  1828.47792 2151.237930
2015age11  1609.21782 2342.015711
2015age12  1530.01483 2270.863128
2015age13  2159.11771 1293.478187
2015age14  2346.15437 1402.677306
2015age15   225.23021 2638.450894
2015age16   225.28586 2650.593097
2015age17  1827.16236 2432.927985
2015age18  1850.76566 2196.596762
2015age19  1515.18194 2286.841166
2015age20  1446.16509 2243.150906
2015age21  1365.31042 2213.158635
2015dom01  1685.18421 2171.071707
2015dom02  1684.96940 2171.061755
2015dom03  1269.40806 2052.187359
2015dom05  1479.47927 1625.180072
2015dom06  1933.32655 1340.422662
2015dom08  1754.04190 2435.986480
2015dom09  1727.09962 2373.175650
2015dom10  1783.19459 2453.290309
2015dom11  1783.19459 2453.290309
2015dom12  1896.68228 1948.364385
2015dom14   222.98196 2679.881007
2015dom15   222.98196 2679.881007
2015dom19  1803.53235 2295.952518
2015dom20  1282.14295 2058.202620
2015dom21  1634.23907 1900.604976
2015dom22  1204.31118  939.533095
2015dom23  1205.99959  944.184971
2015dom24  1296.81668  269.075732
2015dom25  1202.95778    0.000000
2015dom28  1884.57401 1968.282199
2015dom30  1196.99657    3.911026
2015dom31   261.40813 2538.354289
2015ex01   1839.07586 1865.775062
2015ex02   1640.09676 2027.321329
2015ex03   2257.43528 1263.754611
2015ex04   1779.68754 2398.153360
2015ex05   1623.21151 2399.432709
2015ex06   1812.24600 1950.756115
2015ex07   1817.14318 1954.453731
2015ex08    332.40166 2459.722437
2015ex09   1248.02630  830.167006
2015ex10   1203.31282 1089.038894
2015ex11   1215.83179    2.001402
2015ex12    363.18712  526.187281
2015ex13      0.00000 1621.908168
2015ex15   1818.67354 1962.730245
2015ex16    372.92694  320.533869
2015ex17    229.13905  764.724492
2015ex18    218.25173  804.484933
2015ex19    208.18580  813.474653
2015ex21     41.54144 1685.099378
2015ex22    303.77987 2429.062295
 [ reached getOption("max.print") -- omitted 22 rows ]

3.2.3 Modified Hellinger-transformed dataset

comm.Hellinger1 <- comm.Hellinger[data.env$Year == 2015 & !is.na(data.env$longitude),
    ]
comm.Hellinger1
          Neospintharus.sp1   Mimetus Faiditus.sp6 Faiditus.sp5 Faiditus.sp4
2015age01                 0 0.0000000            0            0    0.3333333
2015age02                 0 0.0000000            0            0    0.0000000
2015age03                 0 0.1856953            0            0    0.0000000
2015age04                 0 0.0000000            0            0    0.0000000
2015age05                 0 0.1561738            0            0    0.0000000
2015age06                 0 0.0000000            0            0    0.0000000
          Paratenetus Tetramorium Rhomphaea   Hypaeus Faiditus.sp1 Faiditus.sp3
2015age01           0           0         0 0.0000000    0.0000000    0.3333333
2015age02           0           0         0 0.0000000    0.0000000    0.5345225
2015age03           0           0         0 0.0000000    0.0000000    0.3216338
2015age04           0           0         0 0.1796053    0.3110855    0.3592106
2015age05           0           0         0 0.0000000    0.0000000    0.4938648
2015age06           0           0         0 0.0000000    0.0000000    0.2208631
          Faiditus.sp2 Mysmenopsis.sp1 Mysmenopsis.sp2 Philoponella Ranzovius
2015age01            0       0.3333333       0.0000000    0.8164966         0
2015age02            0       0.4629100       0.0000000    0.7071068         0
2015age03            0       0.6432675       0.0000000    0.6695341         0
2015age04            0       0.7184212       0.1796053    0.4399413         0
2015age05            0       0.5630925       0.0000000    0.6439209         0
2015age06            0       0.5843487       0.0000000    0.6807456         0
          Crematogaster Wasmannia
2015age01             0  0.000000
2015age02             0  0.000000
2015age03             0  0.000000
2015age04             0  0.000000
2015age05             0  0.000000
2015age06             0  0.382546
 [ reached 'max' / getOption("max.print") -- omitted 78 rows ]

3.2.4 PCNM

dis <- dist(data.space)
pcnm1 <- pcnm(dis)
data.pcnm <- as.data.frame(pcnm1$vectors)
data.pcnm
                PCNM1       PCNM2        PCNM3        PCNM4         PCNM5
2015age01 -0.10453685  0.07995080  0.005846451 -0.004912035  0.0067131818
2015age02 -0.10289196  0.04888911  0.002403331 -0.003996766 -0.0004820712
2015age03  0.03450754 -0.22415983 -0.016118035  0.006087890 -0.0202161608
                PCNM6      PCNM7         PCNM8       PCNM9      PCNM10
2015age01  0.01852436 -0.1220186 -0.0001752782 -0.03750271  0.04048969
2015age02 -0.15178856  0.0641160 -0.0277964950  0.12798573 -0.08703467
2015age03 -0.25382015  0.2748703 -0.0260439927  0.12724939 -0.05263026
                PCNM11      PCNM12      PCNM13     PCNM14      PCNM15
2015age01  0.003248005  0.01458943 0.028883551 0.02335808 -0.00403877
2015age02 -0.034927048 -0.07292320 0.008058058 0.14549377  0.02307526
2015age03  0.012089473  0.08425490 0.168102783 0.49526861  0.04343828
               PCNM16      PCNM17      PCNM18      PCNM19      PCNM20
2015age01 0.003842022 -0.01159065 0.002989703 0.006258723 -0.01684925
2015age02 0.013035828  0.07623023 0.019503505 0.017344819 -0.15059109
2015age03 0.011556071  0.06118256 0.015940168 0.014535729 -0.07721144
              PCNM21       PCNM22        PCNM23      PCNM24       PCNM25
2015age01 0.25677120  0.132344787 -1.567495e-02 9.39863e-02 5.653319e-04
2015age02 0.02467783 -0.075618278  2.320557e-03 1.47286e-03 9.012748e-04
2015age03 0.01428798 -0.002566293 -7.837802e-06 9.04672e-05 8.071059e-06
                PCNM26        PCNM27        PCNM28        PCNM29       PCNM30
2015age01 3.787990e-02 -8.467772e-02  7.145196e-02  1.934414e-03 1.128389e-03
2015age02 1.763101e-03 -1.236150e-02 -1.398783e-01 -4.094078e-03 1.682418e-02
2015age03 8.975190e-06 -1.610407e-05 -3.627543e-05 -8.702016e-07 3.627073e-07
                 PCNM31        PCNM32
2015age01 -1.223683e-02  5.838803e-04
2015age02  1.096075e-02 -1.004268e-03
2015age03  1.773275e-07 -7.610650e-10
 [ reached 'max' / getOption("max.print") -- omitted 81 rows ]

3.2.5 Selection based on AdjR2

rda.space <- rda(comm.Hellinger1 ~ ., data = data.pcnm)  #RDA of all PCNM vectors
rda.space
Call: rda(formula = comm.Hellinger1 ~ PCNM1 + PCNM2 + PCNM3 + PCNM4 +
PCNM5 + PCNM6 + PCNM7 + PCNM8 + PCNM9 + PCNM10 + PCNM11 + PCNM12 +
PCNM13 + PCNM14 + PCNM15 + PCNM16 + PCNM17 + PCNM18 + PCNM19 + PCNM20 +
PCNM21 + PCNM22 + PCNM23 + PCNM24 + PCNM25 + PCNM26 + PCNM27 + PCNM28 +
PCNM29 + PCNM30 + PCNM31 + PCNM32, data = data.pcnm)

              Inertia Proportion Rank
Total          0.4085     1.0000     
Constrained    0.1696     0.4150   18
Unconstrained  0.2390     0.5850   18
Inertia is variance 

Eigenvalues for constrained axes:
   RDA1    RDA2    RDA3    RDA4    RDA5    RDA6    RDA7    RDA8    RDA9   RDA10 
0.04437 0.02989 0.02781 0.01249 0.01237 0.00925 0.00804 0.00680 0.00553 0.00396 
  RDA11   RDA12   RDA13   RDA14   RDA15   RDA16   RDA17   RDA18 
0.00274 0.00190 0.00156 0.00104 0.00074 0.00056 0.00040 0.00012 

Eigenvalues for unconstrained axes:
    PC1     PC2     PC3     PC4     PC5     PC6     PC7     PC8 
0.05708 0.04608 0.03852 0.02642 0.01580 0.01274 0.01004 0.00758 
(Showing 8 of 18 unconstrained eigenvalues)

3.2.6 Optimal RDA Component Selection

fsel.space <- ordiR2step(rda(comm.Hellinger1 ~ 1, data = data.pcnm), scope = formula(rda.space),
    direction = "forward")
Step: R2.adj= 0 
Call: comm.Hellinger1 ~ 1 
 
                  R2.adjusted
<All variables>  4.799459e-02
+ PCNM21         1.576868e-02
+ PCNM4          1.385148e-02
+ PCNM7          1.154958e-02
+ PCNM28         9.345271e-03
+ PCNM24         8.144699e-03
+ PCNM1          7.204080e-03
+ PCNM5          6.782931e-03
+ PCNM2          6.023598e-03
+ PCNM16         5.686736e-03
+ PCNM3          5.546793e-03
+ PCNM23         4.234051e-03
+ PCNM26         4.143214e-03
+ PCNM25         3.555229e-03
+ PCNM31         4.248328e-04
+ PCNM8          2.492437e-06
<none>           0.000000e+00
+ PCNM6         -7.999742e-04
+ PCNM15        -1.710880e-03
+ PCNM10        -1.832157e-03
+ PCNM11        -2.083595e-03
+ PCNM12        -2.356127e-03
+ PCNM32        -2.372807e-03
+ PCNM17        -3.345881e-03
+ PCNM27        -3.572893e-03
+ PCNM9         -3.898333e-03
+ PCNM19        -4.061810e-03
+ PCNM13        -4.111699e-03
+ PCNM30        -5.043622e-03
+ PCNM22        -5.313731e-03
+ PCNM14        -6.071884e-03
+ PCNM29        -7.189820e-03
+ PCNM20        -8.541832e-03
+ PCNM18        -1.010633e-02

         Df     AIC      F Pr(>F)  
+ PCNM21  1 -74.556 2.3298  0.028 *
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Step: R2.adj= 0.01576868 
Call: comm.Hellinger1 ~ PCNM21 
 
                R2.adjusted
<All variables> 0.047994585
+ PCNM4         0.029985835
+ PCNM7         0.027655520
+ PCNM28        0.025423997
+ PCNM24        0.024208603
+ PCNM1         0.023256371
+ PCNM5         0.022830023
+ PCNM2         0.022061316
+ PCNM16        0.021720294
+ PCNM3         0.021578624
+ PCNM23        0.020249675
+ PCNM26        0.020157716
+ PCNM25        0.019562473
+ PCNM31        0.016393429
+ PCNM8         0.015965875
<none>          0.015768677
+ PCNM6         0.015153501
+ PCNM15        0.014231350
+ PCNM10        0.014108576
+ PCNM11        0.013854033
+ PCNM12        0.013578137
+ PCNM32        0.013561251
+ PCNM17        0.012576163
+ PCNM27        0.012346349
+ PCNM9         0.012016891
+ PCNM19        0.011851396
+ PCNM13        0.011800892
+ PCNM30        0.010857463
+ PCNM22        0.010584019
+ PCNM14        0.009816506
+ PCNM29        0.008684769
+ PCNM20        0.007316065
+ PCNM18        0.005732257

        Df     AIC      F Pr(>F)  
+ PCNM4  1 -74.809 2.2018  0.032 *
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Step: R2.adj= 0.02998583 
Call: comm.Hellinger1 ~ PCNM21 + PCNM4 
 
                R2.adjusted
<All variables>  0.04799459
+ PCNM7          0.04219898
+ PCNM28         0.03993956
+ PCNM24         0.03870897
+ PCNM1          0.03774484
+ PCNM5          0.03731316
+ PCNM2          0.03653485
+ PCNM16         0.03618956
+ PCNM3          0.03604612
+ PCNM23         0.03470056
+ PCNM26         0.03460745
+ PCNM25         0.03400477
+ PCNM31         0.03079611
+ PCNM8          0.03036321
<none>           0.02998583
+ PCNM6          0.02954068
+ PCNM15         0.02860701
+ PCNM10         0.02848270
+ PCNM11         0.02822497
+ PCNM12         0.02794563
+ PCNM32         0.02792853
+ PCNM17         0.02693113
+ PCNM27         0.02669844
+ PCNM9          0.02636487
+ PCNM19         0.02619730
+ PCNM13         0.02614617
+ PCNM30         0.02519095
+ PCNM22         0.02491408
+ PCNM14         0.02413698
+ PCNM29         0.02299109
+ PCNM20         0.02160528
+ PCNM18         0.02000167

        Df     AIC      F Pr(>F)  
+ PCNM7  1 -74.916 2.0328  0.032 *
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Step: R2.adj= 0.04219898 
Call: comm.Hellinger1 ~ PCNM21 + PCNM4 + PCNM7 
 
                R2.adjusted
+ PCNM28         0.05243330
+ PCNM24         0.05118713
+ PCNM1          0.05021079
+ PCNM5          0.04977365
+ PCNM2          0.04898548
+ PCNM16         0.04863583
+ PCNM3          0.04849057
<All variables>  0.04799459
+ PCNM23         0.04712798
+ PCNM26         0.04703369
+ PCNM25         0.04642338
+ PCNM31         0.04317411
+ PCNM8          0.04273573
<none>           0.04219898
+ PCNM6          0.04190279
+ PCNM15         0.04095729
+ PCNM10         0.04083141
+ PCNM11         0.04057042
+ PCNM12         0.04028754
+ PCNM32         0.04027023
+ PCNM17         0.03926020
+ PCNM27         0.03902457
+ PCNM9          0.03868677
+ PCNM19         0.03851709
+ PCNM13         0.03846530
+ PCNM30         0.03749799
+ PCNM22         0.03721762
+ PCNM14         0.03643068
+ PCNM29         0.03527029
+ PCNM20         0.03386694
+ PCNM18         0.03224303
fsel.space$terms[[3]]
PCNM21 + PCNM4 + PCNM7

4 COMMUNITY ANALYSES

4.1 Constrained ordination Approach

CA <- rda(comm.Hellinger ~ Host + log10(tangle.vol.cm3) + Condition(Year), data = data.env)
CA
Call: rda(formula = comm.Hellinger ~ Host + log10(tangle.vol.cm3) +
Condition(Year), data = data.env)

              Inertia Proportion Rank
Total         0.40352    1.00000     
Conditional   0.01014    0.02513    1
Constrained   0.10170    0.25204    4
Unconstrained 0.29168    0.72283   18
Inertia is variance 

Eigenvalues for constrained axes:
   RDA1    RDA2    RDA3    RDA4 
0.04407 0.03177 0.02076 0.00510 

Eigenvalues for unconstrained axes:
    PC1     PC2     PC3     PC4     PC5     PC6     PC7     PC8 
0.06613 0.04402 0.04292 0.02975 0.01942 0.01763 0.01264 0.01029 
(Showing 8 of 18 unconstrained eigenvalues)
anova(CA)
Permutation test for rda under reduced model
Permutation: free
Number of permutations: 999

Model: rda(formula = comm.Hellinger ~ Host + log10(tangle.vol.cm3) + Condition(Year), data = data.env)
          Df Variance      F Pr(>F)    
Model      4  0.10170 12.553  0.001 ***
Residual 144  0.29168                  
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
plot(CA, type = "t", display = c("sp", "bp"))

rda.plot <- ordination_plot(ordi = CA, group = data.env$Host, species = data.species,
    polygons = T, plot.species = F, sp.bold = TRUE)

4.2 Summary of ordination

CA.sum <- summary(CA)
CA.sum

Call:
rda(formula = comm.Hellinger ~ Host + log10(tangle.vol.cm3) +      Condition(Year), data = data.env) 

Partitioning of variance:
              Inertia Proportion
Total         0.40352    1.00000
Conditioned   0.01014    0.02513
Constrained   0.10170    0.25204
Unconstrained 0.29168    0.72283

Eigenvalues, and their contribution to the variance 
after removing the contribution of conditiniong variables

Importance of components:
                         RDA1    RDA2    RDA3     RDA4     PC1     PC2     PC3
Eigenvalue            0.04407 0.03177 0.02076 0.005104 0.06613 0.04402 0.04292
Proportion Explained  0.11203 0.08077 0.05276 0.012976 0.16812 0.11189 0.10912
Cumulative Proportion 0.11203 0.19280 0.24556 0.258537 0.42665 0.53855 0.64766
                          PC4     PC5     PC6     PC7     PC8      PC9     PC10
Eigenvalue            0.02975 0.01942 0.01763 0.01264 0.01029 0.009754 0.008077
Proportion Explained  0.07563 0.04936 0.04482 0.03212 0.02616 0.024797 0.020533
Cumulative Proportion 0.72330 0.77266 0.81748 0.84960 0.87576 0.900556 0.921089
                          PC11     PC12     PC13     PC14     PC15     PC16
Eigenvalue            0.006665 0.006122 0.004165 0.003927 0.003508 0.002417
Proportion Explained  0.016942 0.015561 0.010587 0.009984 0.008917 0.006144
Cumulative Proportion 0.938031 0.953593 0.964180 0.974164 0.983080 0.989225
                          PC17     PC18
Eigenvalue            0.002321 0.001918
Proportion Explained  0.005899 0.004876
Cumulative Proportion 0.995124 1.000000

Accumulated constrained eigenvalues
Importance of components:
                         RDA1    RDA2    RDA3     RDA4
Eigenvalue            0.04407 0.03177 0.02076 0.005104
Proportion Explained  0.43333 0.31240 0.20409 0.050189
Cumulative Proportion 0.43333 0.74573 0.94981 1.000000

Scaling 2 for species and site scores
* Species are scaled proportional to eigenvalues
* Sites are unscaled: weighted dispersion equal on all dimensions
* General scaling constant of scores:  2.784598 


Species scores

                       RDA1       RDA2      RDA3      RDA4        PC1       PC2
Neospintharus.sp1  0.027325 -0.0127020 -0.002715  0.029871  0.0220024 -0.032575
Mimetus           -0.005103 -0.0309416 -0.043009  0.097087  0.1130095  0.068887
Faiditus.sp6       0.265151 -0.2270618  0.218172 -0.007540  0.0245121 -0.118131
Faiditus.sp5      -0.005842 -0.0168149 -0.036356 -0.029179 -0.0001956  0.003591
Faiditus.sp4      -0.032102 -0.0402920 -0.016337  0.046450 -0.0138207 -0.123495
Paratenetus       -0.001792  0.0240305  0.018241 -0.009506  0.0264985 -0.003477
Tetramorium       -0.004065  0.0003468 -0.008940  0.041389 -0.0008997  0.011024
Rhomphaea          0.087963 -0.0356823  0.029360 -0.002244  0.0422725  0.009445
Hypaeus           -0.002774  0.0374285 -0.039248 -0.005926 -0.0088238 -0.017417
Faiditus.sp1       0.154217 -0.4100405  0.150375 -0.108011  0.2396292 -0.064169
Faiditus.sp3       0.165830  0.2660983  0.010059 -0.085846 -0.1968059  0.819422
Faiditus.sp2       0.308556  0.3249924 -0.121547 -0.157587 -0.0799760 -0.037802
Mysmenopsis.sp1   -0.406413  0.2929902  0.478765 -0.054526  0.1742522  0.092473
Mysmenopsis.sp2   -0.089672 -0.1408991 -0.113365 -0.147308  0.0227674 -0.024558
Philoponella      -0.504471 -0.2312294 -0.144286 -0.115086 -0.7568105 -0.326167
Ranzovius          0.248234 -0.2112300  0.207447 -0.015567  0.0586507 -0.043723
Crematogaster      0.362055  0.0647372  0.030833 -0.018982  0.7379057 -0.125308
Wasmannia          0.007323 -0.0126200  0.025061  0.021645  0.0079707 -0.010069


Site scores (weighted sums of species scores)

                RDA1      RDA2      RDA3       RDA4       PC1        PC2
2014age01  -0.403645  0.200227  0.330567  0.0830079 -0.016250  0.0184384
2014age03  -0.178653  0.087730 -0.180359 -0.0184466 -0.161113  0.1720758
2014age05  -0.192297  0.069627 -0.185807 -0.0071355 -0.133308  0.1628826
2014age06  -0.310498 -0.123204 -0.222174  0.2366257 -0.122475 -0.2347727
2014age07  -0.372473  0.192776  0.244200 -0.0630120 -0.069554  0.0714156
2014age08  -0.223072 -0.091807 -0.179440  0.7253468 -0.004651 -0.2362199
2014age09  -0.247560 -0.009802 -0.206037  0.0633948 -0.146656  0.0008070
2014age10  -0.310498 -0.123204 -0.222174  0.2366257 -0.137582 -0.2470926
2014age11  -0.310498 -0.123204 -0.222174  0.2366257 -0.083347 -0.2028634
2014age12  -0.310498 -0.123204 -0.222174  0.2366257 -0.155879 -0.2620136
2014age13  -0.230788  0.015538 -0.200269  0.0369901 -0.196169  0.0107857
2014age14  -0.437227  0.215618  0.409383  0.0123083 -0.012295 -0.0181473
2014age15  -0.327896  0.169360  0.398168 -0.1587261 -0.021858  0.1207198
2014dom01  -0.091997  0.035486 -0.075757  0.0738613 -0.323095  0.0156212
2014dom02   0.140193  0.135835 -0.081521  0.1968821  0.116931 -0.1763794
2014dom03   0.563972  0.237085  0.212889  0.0744676  0.554256  0.3439287
2014dom04   0.291210  0.589141 -0.287402 -0.7558195 -0.190293  0.0340648
2014dom05   0.101158  0.392740 -0.048685  0.0179248 -0.166202  0.5890575
2014dom06   0.533991  0.709265 -0.226401 -0.3847895  0.114034 -0.1094258
2014dom07   0.400957  0.679413 -0.266955 -0.7243821 -0.097940  0.0713172
 [ reached getOption("max.print") -- omitted 130 rows ]


Site constraints (linear combinations of constraining variables)

                RDA1    RDA2     RDA3       RDA4       PC1        PC2
2014age01  -0.368561  0.1426  0.20496  0.1716030 -0.016250  0.0184384
2014age03  -0.320510  0.1587  0.25731  0.0515765 -0.161113  0.1720758
2014age05  -0.375129  0.1404  0.19780  0.1880091 -0.133308  0.1628826
2014age06  -0.368883  0.1425  0.20460  0.1724084 -0.122475 -0.2347727
2014age07  -0.341301  0.1517  0.23466  0.1035096 -0.069554  0.0714156
2014age08  -0.395144  0.1337  0.17599  0.2380048 -0.004651 -0.2362199
2014age09  -0.360985  0.1451  0.21321  0.1526793 -0.146656  0.0008070
2014age10  -0.342117  0.1515  0.23377  0.1055484 -0.137582 -0.2470926
2014age11  -0.438210  0.1192  0.12906  0.3455807 -0.083347 -0.2028634
2014age12  -0.309699  0.1623  0.26909  0.0245722 -0.155879 -0.2620136
2014age13  -0.272835  0.1747  0.30926 -0.0675108 -0.196169  0.0107857
2014age14  -0.340806  0.1519  0.23520  0.1022729 -0.012295 -0.0181473
2014age15  -0.302585  0.1647  0.27685  0.0068014 -0.021858  0.1207198
2014dom01   0.278927  0.2846 -0.03314 -0.2920701 -0.323095  0.0156212
2014dom02   0.270634  0.2818 -0.04217 -0.2713560  0.116931 -0.1763794
2014dom03   0.082978  0.2188 -0.24665  0.1973912  0.554256  0.3439287
2014dom04   0.286194  0.2870 -0.02522 -0.3102227 -0.190293  0.0340648
2014dom05   0.177087  0.2504 -0.14411 -0.0376837 -0.166202  0.5890575
2014dom06   0.210468  0.2616 -0.10773 -0.1210668  0.114034 -0.1094258
2014dom07   0.261633  0.2788 -0.05198 -0.2488724 -0.097940  0.0713172
 [ reached getOption("max.print") -- omitted 130 rows ]


Biplot scores for constraining variables

                          RDA1    RDA2    RDA3     RDA4 PC1 PC2
HostKapogea           -0.45201 -0.4854 -0.5619 -0.49132   0   0
HostA.domingo          0.48697  0.7118 -0.4944  0.07495   0   0
HostA.eximius          0.52839 -0.6584  0.4350  0.31281   0   0
log10(tangle.vol.cm3)  0.06591 -0.3324  0.1802 -0.90910   0   0


Centroids for factor constraints

                   RDA1    RDA2    RDA3     RDA4 PC1 PC2
HostAglaoctenus -0.2852  0.1737  0.2659  0.02518   0   0
HostKapogea     -0.2014 -0.2162 -0.2503 -0.21886   0   0
HostA.domingo    0.1718  0.2512 -0.1745  0.02645   0   0
HostA.eximius    0.1926 -0.2400  0.1586  0.11405   0   0

4.3 Optimal factors contributed to web-spider community

mv.comm <- mvabund(data.comm)
mv.fit <- manyglm(mv.comm ~ log10(tangle.vol.cm3) + Host, data = data.env, family = "negative.binomial")
plot(mv.fit)

mv.glm.M01 <- anova.manyglm(mv.fit, p.uni = "unadjusted")
Time elapsed: 0 hr 2 min 4 sec
colnames(mv.glm.M01$uni.p)[which(mv.glm.M01$uni.p[3, ] < 0.05)]
 [1] "Faiditus.sp6"    "Faiditus.sp5"    "Rhomphaea"       "Faiditus.sp1"   
 [5] "Faiditus.sp2"    "Mysmenopsis.sp1" "Mysmenopsis.sp2" "Philoponella"   
 [9] "Ranzovius"       "Crematogaster"  

References

Borcard, Daniel, François Gillet, and Pierre Legendre. 2018. Numerical Ecology with r. Springer.
Legendre, Pierre, and Eugene Gallagher. 2001. “Ecologically Meaningful Transformations for Ordination of Species Data.” Oecologia 129 (October): 271–80.
Legendre, Pierre, and Louis Legendre. 2012. Numerical Ecology. Elsevier.
Zuur, Alain F., Elena N. Ieno, and Graham M. Smith. 2007. “Principal Component Analysis and Redundancy Analysis.” In Analysing Ecological Data, 193–224. New York, NY: Springer New York. https://doi.org/10.1007/978-0-387-45972-1_12.