##
## Mantel statistic based on Pearson's product-moment correlation
##
## Call:
## mantel(xdis = gendis, ydis = geodis)
##
## Mantel statistic r: 0.1674
## Significance: 0.035
##
## Upper quantiles of permutations (null model):
## 90% 95% 97.5% 99%
## 0.110 0.142 0.181 0.211
## Permutation: free
## Number of permutations: 999
##
## Mantel statistic based on Pearson's product-moment correlation
##
## Call:
## mantel(xdis = gendis, ydis = geodis, permutations = perm)
##
## Mantel statistic r: 0.1224
## Significance: 0.0517
##
## Upper quantiles of permutations (null model):
## 90% 95% 97.5% 99%
## 0.0992 0.1237 0.1439 0.1725
## Plots: site_id, plot permutation: free
## Permutation: none
## Number of permutations: 9999
## [1] 0.1
This is a one-sided t-test as we hypothesized greater clustering at northern and southern sites than the middle. Filled circles indicate phylogenetic clustering significantly deviates from random. The null model is “taxa labels.” Using null model “independent swap” reduces the strength of the effect (p = 0.1).
| test | estimate1 | estimate2 | statistic | p.value |
|---|---|---|---|---|
| southern_vs_middle | 0.89 | 0.55 | 2.03 | 0.05 |
| northern_vs_middle | 0.84 | 0.55 | 2.46 | 0.02 |
The results indicate phylogenetic clustering is significantly greater in the northern and southern sites than in the middle sites. Positive NRI values indicate phylogenetic clustering, smaller phylogenetic distances among co-occurring species than expected by chance. The NRI values are lower at mid-latitudes, suggesting those sites exhibit less phylogenetic clustering.
NRI is generally thought to be more sensitive to tree-wide patterns of phylogenetic clustering and eveness, while NTI is more sensitive to patterns of evenness and clustering closer to the tips of the phylogeny. There was no significant trend with NTI (p-values > 0.05 for latitude and WorldClim bio01 and bio12). These results suggest that tree-wide patterns of phylogenetic clustering follows a latitudinal trend and low-level, (i.e., the tips of the phylogeny) do not.
| taxonomic.level | location | size | order |
|---|---|---|---|
| OTU | south | 3659 | 400 |
| OTU | middle | 3236 | 400 |
| OTU | north | 3391 | 400 |
| Genus | south | 1340 | 239 |
| Genus | middle | 2951 | 308 |
| Genus | north | 906 | 199 |
| Family | south | 340 | 123 |
| Family | middle | 884 | 160 |
| Family | north | 232 | 107 |
Following method from Ma et al. 2016 in ISME.
T-tests of differences in the network parameters between north vs middle and south vs middle. Plots on the left side are the network parameters calculated from subgraphs plotted against latitude. Plots on the right side are the mean and 95% confidence intervals of parameters calculated from subgraphs by range location.
## [1] "ASV"
## Call:
## aov(formula = betweenness.centrality ~ location, data = (subgraphs %>%
## filter(taxonomic.level == "ASV")))
##
## Terms:
## location Residuals
## Sum of Squares 0.02242268 0.03776107
## Deg. of Freedom 2 18
##
## Residual standard error: 0.04580215
## Estimated effects may be unbalanced
## Df Sum Sq Mean Sq F value Pr(>F)
## location 2 0.02242 0.011211 5.344 0.0151 *
## Residuals 18 0.03776 0.002098
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## [1] "Genus"
## Df Sum Sq Mean Sq F value Pr(>F)
## location 2 0.00588 0.002940 0.909 0.421
## Residuals 18 0.05824 0.003235
## [1] "Family"
## Df Sum Sq Mean Sq F value Pr(>F)
## location 2 0.003387 0.001694 1.867 0.183
## Residuals 18 0.016326 0.000907
## Tukey multiple comparisons of means
## 95% family-wise confidence level
##
## Fit: aov(formula = betweenness.centrality ~ location, data = (subgraphs %>% filter(taxonomic.level == "ASV")))
##
## $location
## diff lwr upr p adj
## middle-south -0.01017099 -0.072653763 0.05231178 0.9097202
## north-south 0.06366968 0.001186906 0.12615245 0.0453993
## north-middle 0.07384067 0.011357895 0.13632344 0.0193342
## [1] "ASV"
## Df Sum Sq Mean Sq F value Pr(>F)
## location 2 0.0543 0.02717 1.238 0.314
## Residuals 18 0.3951 0.02195
## [1] "Genus"
## Df Sum Sq Mean Sq F value Pr(>F)
## location 2 0.0516 0.02578 1.063 0.366
## Residuals 18 0.4365 0.02425
## [1] "Family"
## Df Sum Sq Mean Sq F value Pr(>F)
## location 2 0.3436 0.17180 5.93 0.0105 *
## Residuals 18 0.5215 0.02897
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## Tukey multiple comparisons of means
## 95% family-wise confidence level
##
## Fit: aov(formula = clustering.coefficient ~ location, data = (subgraphs %>% filter(taxonomic.level == "Family")))
##
## $location
## diff lwr upr p adj
## middle-south 0.05690709 -0.175287965 0.2891021 0.8081804
## north-south 0.29528928 0.063094227 0.5274843 0.0118763
## north-middle 0.23838219 0.006187141 0.4705772 0.0436592
## [1] "ASV"
## Df Sum Sq Mean Sq F value Pr(>F)
## location 2 5.161 2.5807 5.597 0.0129 *
## Residuals 18 8.300 0.4611
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## [1] "Genus"
## Df Sum Sq Mean Sq F value Pr(>F)
## location 2 4.333 2.1664 6.46 0.00768 **
## Residuals 18 6.037 0.3354
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## [1] "Family"
## Df Sum Sq Mean Sq F value Pr(>F)
## location 2 0.915 0.4574 1.239 0.313
## Residuals 18 6.645 0.3692
## Tukey multiple comparisons of means
## 95% family-wise confidence level
##
## Fit: aov(formula = mean.distance ~ location, data = (subgraphs %>% filter(taxonomic.level == "ASV")))
##
## $location
## diff lwr upr p adj
## middle-south -0.5192851 -1.4456126 0.4070424 0.3467985
## north-south 0.6910273 -0.2353002 1.6173549 0.1663168
## north-middle 1.2103125 0.2839849 2.1366400 0.0098125
## Tukey multiple comparisons of means
## 95% family-wise confidence level
##
## Fit: aov(formula = mean.distance ~ location, data = (subgraphs %>% filter(taxonomic.level == "Genus")))
##
## $location
## diff lwr upr p adj
## middle-south -1.1113848 -1.9013979 -0.3213717 0.0056393
## north-south -0.6013813 -1.3913944 0.1886318 0.1556106
## north-middle 0.5100035 -0.2800096 1.3000166 0.2521656
## [1] "ASV"
## Df Sum Sq Mean Sq F value Pr(>F)
## location 2 0.05499 0.02750 2.396 0.119
## Residuals 18 0.20654 0.01148
## [1] "Genus"
## Df Sum Sq Mean Sq F value Pr(>F)
## location 2 0.2536 0.12681 10.52 0.000942 ***
## Residuals 18 0.2170 0.01206
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## [1] "Family"
## Df Sum Sq Mean Sq F value Pr(>F)
## location 2 0.4472 0.22362 13.59 0.000253 ***
## Residuals 18 0.2961 0.01645
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## Tukey multiple comparisons of means
## 95% family-wise confidence level
##
## Fit: aov(formula = modularity ~ location, data = (subgraphs %>% filter(taxonomic.level == "Genus")))
##
## $location
## diff lwr upr p adj
## middle-south -0.2655112 -0.41529398 -0.11572843 0.0007316
## north-south -0.0943424 -0.24412518 0.05544037 0.2681162
## north-middle 0.1711688 0.02138603 0.32095158 0.0238109
## Tukey multiple comparisons of means
## 95% family-wise confidence level
##
## Fit: aov(formula = modularity ~ location, data = (subgraphs %>% filter(taxonomic.level == "Family")))
##
## $location
## diff lwr upr p adj
## middle-south -0.34571304 -0.52068890 -0.17073718 0.0002384
## north-south -0.09412534 -0.26910120 0.08085052 0.3753783
## north-middle 0.25158770 0.07661184 0.42656356 0.0047449
## [1] "ASV"
## Df Sum Sq Mean Sq F value Pr(>F)
## location 2 10.7 5.36 0.268 0.768
## Residuals 18 359.6 19.98
## [1] "Genus"
## Df Sum Sq Mean Sq F value Pr(>F)
## location 2 276.4 138.2 6.548 0.0073 **
## Residuals 18 379.8 21.1
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## [1] "Family"
## Df Sum Sq Mean Sq F value Pr(>F)
## location 2 164 82.01 10.54 0.000932 ***
## Residuals 18 140 7.78
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## Tukey multiple comparisons of means
## 95% family-wise confidence level
##
## Fit: aov(formula = mean.degree ~ location, data = (subgraphs %>% filter(taxonomic.level == "Genus")))
##
## $location
## diff lwr upr p adj
## middle-south 7.2377806 0.971179 13.504382 0.0223142
## north-south -0.8454834 -7.112085 5.421118 0.9369596
## north-middle -8.0832640 -14.349865 -1.816662 0.0107525
## Tukey multiple comparisons of means
## 95% family-wise confidence level
##
## Fit: aov(formula = mean.degree ~ location, data = (subgraphs %>% filter(taxonomic.level == "Family")))
##
## $location
## diff lwr upr p adj
## middle-south 5.94752464 2.142523 9.752526 0.0023578
## north-south 0.03841707 -3.766585 3.843419 0.9996340
## north-middle -5.90910757 -9.714109 -2.104106 0.0024948
A significant p-value indicates that the network does NOT follow a power law.
## [1] "OTU south p= 0.1531"
## [1] "OTU middle p= 0.2725"
## [1] "OTU north p= 0.2889"
## [1] "Genus south p= 0.0026"
## [1] "Genus middle p= 0.8066"
## [1] "Genus north p= 0.345"
## [1] "Family south p= 1"
## [1] "Family middle p= 0.9742"
## [1] "Family north p= 0.5194"
Following Franciska de Vries et al. 2018. Nature Comms.
## n.south n.middle n.north
## (-1,0] 26 11 5
## (0,1] 5988 5266 6080
##
## Pearson's Chi-squared test with Yates' continuity correction
##
## data: Rhos[c("n.south", "n.middle")]
## X-squared = 3.6548, df = 1, p-value = 0.05591
##
## Pearson's Chi-squared test with Yates' continuity correction
##
## data: Rhos[c("n.north", "n.middle")]
## X-squared = 2.3699, df = 1, p-value = 0.1237
##
## Pearson's Chi-squared test with Yates' continuity correction
##
## data: Rhos[c("n.north", "n.south")]
## X-squared = 13.173, df = 1, p-value = 0.000284
Positive co-occurrences are the overwhelming majority across all ranges. However, negative co-occurrences are significantly greater in the southern range, at approximately twice as common as the middle range and five times as common as in the northern range. The pattern holds at the Genus level.