Sites location

Genetic distance correlates with geographic distance

Merge samples by site

## 
## 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

Samples are unique and permutations are restricted within sites

## 
## 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

Phylogenetic clustring has a significant quadratic relationship with latitude

## [1] 0.1

T-tests of greater NRI values (greater clustering) at northern and southern sites vs middle site

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.

Co-occurrence network analysis by geographic location and taxonomic level

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

Compare with random network

Calculate replicates for network parameters using site-wise subgraphs

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.

Are network properties associated with latitude?

Betweenness centrality

## [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

Clustering Coefficient

## [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

Mean distance (average path length)

## [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

Modularity

## [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

Mean degree

## [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

Testing if networks have scale-free property (follow a power law)

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"

How do the incidences of significant positive and negative co-occurences compare across ranges?

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.