Packages

library(tidyverse)
library(dplyr)
library(phyloseq)
library(corncob)
library(lme4)
library(ggplot2)
library(vegan)
library(msa)
library(DECIPHER)
library(phangorn)
library(ape)
library(picante)
library(ggtext)
library(pairwiseAdonis)
library(MicrobiotaProcess)
library(VennDiagram)
library(ggVennDiagram)
library(RVenn)
library(ggvenn)
library(microbiome)

Prep

counts <- read.csv("R_files/counts.csv",row.names = 1)
meta <- read.csv("R_files/meta.csv", row.names = 1)
tax <- read.csv("R_files/tax.csv", row.names = 1)
tree <- read.tree("R_files/tree")

counts <- as.data.frame(t(counts))
offseason.females <- c("F178","F193","F38","F39","MR10","F154")
meta$toe.clip <- as.factor(meta$toe.clip)
meta$sex <- as.factor(meta$sex)
meta$RS <- as.factor(meta$RS)
meta$season <- as.factor(meta$season)
meta$year <- as.factor(meta$year)
meta$half.month <- as.factor(meta$half.month)

meta <- meta[order(rownames(meta)),]
counts <- counts[order(rownames(counts)),]


meta$season <- factor(meta$season, levels = c("pre","breeding","post"))
meta$RS <- factor(meta$RS, levels =c("pre","V","G","PostOvi"))

str(meta)
## 'data.frame':    258 obs. of  9 variables:
##  $ toe.clip  : Factor w/ 209 levels "","1011","1020",..: 60 61 25 67 199 202 69 70 124 25 ...
##  $ sex       : Factor w/ 2 levels "F","M": 1 1 1 1 1 1 1 1 1 1 ...
##  $ svl       : num  61 58 70 65 66 65 64 67.5 63 69 ...
##  $ RS        : Factor w/ 4 levels "pre","V","G",..: 2 2 2 2 2 2 2 2 1 1 ...
##  $ season    : Factor w/ 3 levels "pre","breeding",..: 2 2 2 2 2 2 2 2 1 1 ...
##  $ year      : Factor w/ 3 levels "2017","2018",..: 1 1 1 1 1 1 1 1 2 2 ...
##  $ half.month: Factor w/ 12 levels "April_Early",..: 10 10 10 10 10 10 10 10 1 1 ...
##  $ month     : chr  "May" "May" "May" "May" ...
##  $ bmass     : num  6.9 5.4 9.3 7.8 8.3 9.1 7.5 9 6.6 7.7 ...
counts <- counts[,colSums(counts) > 10]

tax <- tax[rownames(tax) %in% colnames(counts),]

counts.ps <- otu_table(counts, taxa_are_rows = FALSE)
colnames(counts.ps) <- colnames(counts)

tax.ps <- phyloseq::tax_table(tax)
taxa_names(tax.ps) <- taxa_names(counts.ps)
colnames(tax.ps) <- c("Kingdom","Phylum","Class","Order","Family","Genus")
meta.ps <- sample_data(meta)


ps <- phyloseq(counts.ps, tax.ps, meta.ps, tree)
ps.real <- ps
richness <- estimate_richness(ps, measures = "Observed")
ps@otu_table <- transform_sample_counts(ps@otu_table, 
                                                  function(x) log10(x +1))
shannon<- estimate_richness(ps, measures = "Shannon")
meta <- cbind(meta, shannon,richness)
meta.ps <- sample_data(meta)
ps@sam_data <- meta.ps
pick_new_outgroup <- function(tree.unrooted){
    require("magrittr")
    require("data.table")
    require("ape") # ape::Ntip
    # tablify parts of tree that we need.
    treeDT <- 
      cbind(
        data.table(tree.unrooted$edge),
        data.table(length = tree.unrooted$edge.length)
      )[1:Ntip(tree.unrooted)] %>% 
      cbind(data.table(id = tree.unrooted$tip.label))
    # Take the longest terminal branch as outgroup
    new.outgroup <- treeDT[which.max(length)]$id
    return(new.outgroup)
  }
  
new.outgroup = pick_new_outgroup(ps@phy_tree)
ps@phy_tree <- root(ps@phy_tree, outgroup=new.outgroup, resolve.root=TRUE)

is.rooted(ps@phy_tree)
## [1] TRUE
fam.ps <- tax_glom(ps.real, "Family", NArm = FALSE)
phy.ps <- tax_glom(ps.real, "Phylum", NArm = FALSE)
pd<- pd(ps@otu_table, ps@phy_tree)
meta$PD <- pd$PD
meta %>%
  count(sex, season)
##   sex   season  n
## 1   F      pre 30
## 2   F breeding 66
## 3   F     post 43
## 4   M      pre 23
## 5   M breeding 64
## 6   M     post 32
meta %>%
  group_by(sex) %>%
  summarise(mean.svl = mean(svl))
## # A tibble: 2 × 2
##   sex   mean.svl
##   <fct>    <dbl>
## 1 F         63.9
## 2 M         57.7
samples.f <- 
   meta[meta$sex == "F",] %>% 
  group_by(RS) %>%
  summarize(mean.svl = mean(svl))
samples.f
## # A tibble: 4 × 2
##   RS      mean.svl
##   <fct>      <dbl>
## 1 pre         64.1
## 2 V           64.8
## 3 G           62.9
## 4 PostOvi     63.8
meta[meta$sex == "F",] %>% 
  count(RS)
##        RS  n
## 1     pre 31
## 2       V 32
## 3       G 30
## 4 PostOvi 46
rc1 <- rarecurve(ps.real@otu_table,label = FALSE)
rc.zoom <- rarecurve(ps.real@otu_table,label = FALSE, xlim=c(0, 2000))
ps.full <- ps
ps <- subset_samples(ps, !sample_names(ps) %in% offseason.females)
meta.full <- meta
meta <- meta[!rownames(meta) %in% offseason.females,]
counts.full <- counts
counts <- counts[!rownames(counts) %in% offseason.females,]

Year Analysis

Alpha

year.meta <- meta[meta$half.month == "June_Late" | meta$half.month == "May_Late",]
year.aov.shan <- aov(Shannon ~ year * sex * svl, data = year.meta)
plot(density(year.aov.shan$residuals))

qqnorm(year.aov.shan$residuals)
qqline(year.aov.shan$residuals, datax = FALSE, distribution = qnorm, probs = c(0.25, 0.75))

plot(year.aov.shan$residuals~year.aov.shan$fitted.values)
lines(lowess(year.aov.shan$fitted.values,year.aov.shan$residuals), col="blue")

year.aov.ob <- aov(log10(Observed) ~ year * sex * svl, data = year.meta)
plot(density(year.aov.ob$residuals))

qqnorm(year.aov.ob$residuals)
qqline(year.aov.ob$residuals, datax = FALSE, distribution = qnorm, probs = c(0.25, 0.75))

plot(year.aov.ob$residuals~year.aov.ob$fitted.values)
lines(lowess(year.aov.ob$fitted.values,year.aov.ob$residuals), col="blue")

year.aov.pd <- aov(log10(PD) ~ year * sex * svl, data = year.meta)
plot(density(year.aov.pd$residuals))

qqnorm(year.aov.pd$residuals)
qqline(year.aov.pd$residuals, datax = FALSE, distribution = qnorm, probs = c(0.25, 0.75))

plot(year.aov.pd$residuals~year.aov.pd$fitted.values)
lines(lowess(year.aov.pd$fitted.values,year.aov.pd$residuals), col="blue")

aov.year.shan <- aov(Shannon ~ year * sex * svl + Error(toe.clip), data = year.meta)
aov.year.ob <- aov(log10(Observed) ~ year * sex * svl + Error(toe.clip), data = year.meta)
aov.year.PD <- aov(log10(PD) ~ year  * sex * svl + Error(toe.clip), data = year.meta)

summary(aov.year.shan)
## 
## Error: toe.clip
##              Df Sum Sq Mean Sq F value Pr(>F)  
## year          2  0.709  0.3543   2.002 0.1439  
## sex           1  0.494  0.4939   2.790 0.1000 .
## svl           1  0.046  0.0459   0.259 0.6124  
## year:sex      2  0.948  0.4739   2.678 0.0768 .
## year:svl      2  0.251  0.1254   0.708 0.4964  
## sex:svl       1  0.009  0.0089   0.050 0.8238  
## year:sex:svl  2  0.670  0.3352   1.894 0.1592  
## Residuals    61 10.797  0.1770                 
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Error: Within
##          Df  Sum Sq Mean Sq
## year      2 0.10303 0.05151
## svl       1 0.12540 0.12540
## year:sex  1 0.01413 0.01413
summary(aov.year.ob)
## 
## Error: toe.clip
##              Df Sum Sq Mean Sq F value Pr(>F)  
## year          2 0.1405 0.07026   2.086  0.133  
## sex           1 0.0912 0.09119   2.708  0.105  
## svl           1 0.0109 0.01089   0.323  0.572  
## year:sex      2 0.1792 0.08959   2.660  0.078 .
## year:svl      2 0.0472 0.02361   0.701  0.500  
## sex:svl       1 0.0017 0.00167   0.050  0.824  
## year:sex:svl  2 0.1313 0.06564   1.949  0.151  
## Residuals    61 2.0543 0.03368                 
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Error: Within
##          Df   Sum Sq  Mean Sq
## year      2 0.019169 0.009584
## svl       1 0.024701 0.024701
## year:sex  1 0.003439 0.003439
summary(aov.year.PD)
## 
## Error: toe.clip
##              Df Sum Sq Mean Sq F value Pr(>F)
## year          2  0.391 0.19555   2.268  0.112
## sex           1  0.106 0.10551   1.224  0.273
## svl           1  0.188 0.18762   2.176  0.145
## year:sex      2  0.253 0.12670   1.470  0.238
## year:svl      2  0.002 0.00104   0.012  0.988
## sex:svl       1  0.009 0.00924   0.107  0.745
## year:sex:svl  2  0.353 0.17661   2.049  0.138
## Residuals    61  5.259 0.08622               
## 
## Error: Within
##          Df  Sum Sq Mean Sq
## year      2 0.13054 0.06527
## svl       1 0.22951 0.22951
## year:sex  1 0.05218 0.05218
aov.year.shan <- aov(Shannon ~ year + sex + svl + Error(toe.clip), data = year.meta)
aov.year.ob <- aov(log10(Observed) ~ year + sex + svl + Error(toe.clip), data = year.meta)
aov.year.PD <- aov(log10(PD) ~ year  + sex + svl + Error(toe.clip), data = year.meta)

summary(aov.year.shan)
## 
## Error: toe.clip
##           Df Sum Sq Mean Sq F value Pr(>F)
## year       2  0.709  0.3543   1.901  0.157
## sex        1  0.494  0.4939   2.649  0.108
## svl        1  0.046  0.0459   0.246  0.621
## Residuals 68 12.675  0.1864               
## 
## Error: Within
##           Df  Sum Sq Mean Sq F value Pr(>F)
## year       2 0.10303 0.05151   3.645  0.347
## svl        1 0.12540 0.12540   8.872  0.206
## Residuals  1 0.01413 0.01413
summary(aov.year.ob)
## 
## Error: toe.clip
##           Df Sum Sq Mean Sq F value Pr(>F)
## year       2 0.1405 0.07026   1.979  0.146
## sex        1 0.0912 0.09119   2.569  0.114
## svl        1 0.0109 0.01089   0.307  0.582
## Residuals 68 2.4136 0.03549               
## 
## Error: Within
##           Df   Sum Sq  Mean Sq F value Pr(>F)
## year       2 0.019169 0.009584   2.787  0.390
## svl        1 0.024701 0.024701   7.183  0.227
## Residuals  1 0.003439 0.003439
summary(aov.year.PD)
## 
## Error: toe.clip
##           Df Sum Sq Mean Sq F value Pr(>F)
## year       2  0.391 0.19555   2.263  0.112
## sex        1  0.106 0.10551   1.221  0.273
## svl        1  0.188 0.18762   2.171  0.145
## Residuals 68  5.877 0.08643               
## 
## Error: Within
##           Df  Sum Sq Mean Sq F value Pr(>F)
## year       2 0.13054 0.06527   1.251  0.534
## svl        1 0.22951 0.22951   4.399  0.283
## Residuals  1 0.05218 0.05218
year.ps <- subset_samples(ps, sample_names(ps) %in% rownames(year.meta))
dist.year <- vegdist(year.ps@otu_table, method = "bray")
year.a <- UniFrac(year.ps, weighted = TRUE)
year.b <- UniFrac(year.ps, weighted = FALSE)
anova(betadisper(dist.year, year.ps@sam_data[["year"]]))
## Analysis of Variance Table
## 
## Response: Distances
##           Df  Sum Sq   Mean Sq F value Pr(>F)
## Groups     2 0.00817 0.0040847  0.2816 0.7554
## Residuals 74 1.07347 0.0145063
anova(betadisper(dist.year, year.ps@sam_data[["sex"]]))
## Analysis of Variance Table
## 
## Response: Distances
##           Df  Sum Sq Mean Sq F value  Pr(>F)  
## Groups     1 0.06082 0.06082  6.3687 0.01373 *
## Residuals 75 0.71623 0.00955                  
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
anova(betadisper(dist.year, year.ps@sam_data[["svl"]]))
## Analysis of Variance Table
## 
## Response: Distances
##           Df Sum Sq  Mean Sq F value  Pr(>F)  
## Groups    20 1.7808 0.089039   2.177 0.01172 *
## Residuals 56 2.2904 0.040901                  
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
set.seed(1)
adonis2(dist.year ~ year * sex * svl, data = year.meta)
## Permutation test for adonis under reduced model
## Terms added sequentially (first to last)
## Permutation: free
## Number of permutations: 999
## 
## adonis2(formula = dist.year ~ year * sex * svl, data = year.meta)
##              Df SumOfSqs      R2      F Pr(>F)  
## year          2   0.7575 0.03173 1.2430  0.256  
## sex           1   0.3598 0.01507 1.1808  0.303  
## svl           1   0.7252 0.03038 2.3800  0.039 *
## year:sex      2   0.5455 0.02285 0.8950  0.515  
## year:svl      2   0.5587 0.02340 0.9168  0.503  
## sex:svl       1   0.1308 0.00548 0.4291  0.812  
## year:sex:svl  2   0.9899 0.04146 1.6242  0.142  
## Residual     65  19.8072 0.82963                
## Total        76  23.8747 1.00000                
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
set.seed(1)
adonis2(dist.year ~ year + sex + svl, data = year.meta)
## Permutation test for adonis under reduced model
## Terms added sequentially (first to last)
## Permutation: free
## Number of permutations: 999
## 
## adonis2(formula = dist.year ~ year + sex + svl, data = year.meta)
##          Df SumOfSqs      R2      F Pr(>F)  
## year      2   0.7575 0.03173 1.2378  0.257  
## sex       1   0.3598 0.01507 1.1759  0.304  
## svl       1   0.7252 0.03038 2.3701  0.041 *
## Residual 72  22.0320 0.92282                
## Total    76  23.8747 1.00000                
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
anova(betadisper(year.a, year.ps@sam_data[["year"]]))
## Analysis of Variance Table
## 
## Response: Distances
##           Df  Sum Sq  Mean Sq F value Pr(>F)
## Groups     2 0.04860 0.024300  2.3181 0.1056
## Residuals 74 0.77571 0.010483
anova(betadisper(year.a, year.ps@sam_data[["sex"]]))
## Analysis of Variance Table
## 
## Response: Distances
##           Df  Sum Sq  Mean Sq F value Pr(>F)
## Groups     1 0.01562 0.015625  1.4305 0.2355
## Residuals 75 0.81921 0.010923
anova(betadisper(year.a, year.ps@sam_data[["svl"]]))
## Analysis of Variance Table
## 
## Response: Distances
##           Df  Sum Sq  Mean Sq F value Pr(>F)
## Groups    20 0.26849 0.013425  1.2305 0.2656
## Residuals 56 0.61093 0.010910
set.seed(1)
adonis2(year.a ~ year * sex * svl, data = year.meta)
## Permutation test for adonis under reduced model
## Terms added sequentially (first to last)
## Permutation: free
## Number of permutations: 999
## 
## adonis2(formula = year.a ~ year * sex * svl, data = year.meta)
##              Df SumOfSqs      R2      F Pr(>F)
## year          2  0.09181 0.03739 1.3951  0.251
## sex           1  0.02112 0.00860 0.6418  0.575
## svl           1  0.05443 0.02216 1.6541  0.172
## year:sex      2  0.04176 0.01701 0.6345  0.668
## year:svl      2  0.02456 0.01000 0.3731  0.886
## sex:svl       1  0.00741 0.00302 0.2252  0.889
## year:sex:svl  2  0.07573 0.03084 1.1507  0.328
## Residual     65  2.13876 0.87098              
## Total        76  2.45556 1.00000
set.seed(1)
adonis2(year.a ~ year + sex + svl, data = year.meta)
## Permutation test for adonis under reduced model
## Terms added sequentially (first to last)
## Permutation: free
## Number of permutations: 999
## 
## adonis2(formula = year.a ~ year + sex + svl, data = year.meta)
##          Df SumOfSqs      R2      F Pr(>F)
## year      2  0.09181 0.03739 1.4444  0.230
## sex       1  0.02112 0.00860 0.6645  0.563
## svl       1  0.05443 0.02216 1.7126  0.162
## Residual 72  2.28821 0.93185              
## Total    76  2.45556 1.00000
anova(betadisper(year.b, year.ps@sam_data[["year"]]))
## Analysis of Variance Table
## 
## Response: Distances
##           Df  Sum Sq   Mean Sq F value Pr(>F)
## Groups     2 0.01711 0.0085557  0.4682  0.628
## Residuals 74 1.35228 0.0182741
anova(betadisper(year.b, year.ps@sam_data[["sex"]]))
## Analysis of Variance Table
## 
## Response: Distances
##           Df  Sum Sq   Mean Sq F value Pr(>F)
## Groups     1 0.00366 0.0036645  0.2082 0.6495
## Residuals 75 1.31998 0.0175998
anova(betadisper(year.b, year.ps@sam_data[["svl"]]))
## Analysis of Variance Table
## 
## Response: Distances
##           Df Sum Sq  Mean Sq F value Pr(>F)  
## Groups    20 1.2073 0.060365    1.97 0.0243 *
## Residuals 56 1.7160 0.030643                 
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
set.seed(1)
adonis2(year.b ~ year * sex * svl, data = year.meta)
## Permutation test for adonis under reduced model
## Terms added sequentially (first to last)
## Permutation: free
## Number of permutations: 999
## 
## adonis2(formula = year.b ~ year * sex * svl, data = year.meta)
##              Df SumOfSqs      R2      F Pr(>F)    
## year          2   0.6271 0.03834 1.5379  0.089 .  
## sex           1   0.2259 0.01382 1.1083  0.317    
## svl           1   1.0476 0.06406 5.1390  0.001 ***
## year:sex      2   0.3172 0.01940 0.7779  0.703    
## year:svl      2   0.3227 0.01973 0.7915  0.690    
## sex:svl       1   0.0956 0.00584 0.4687  0.909    
## year:sex:svl  2   0.4665 0.02853 1.1443  0.267    
## Residual     65  13.2509 0.81028                  
## Total        76  16.3535 1.00000                  
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
set.seed(1)
adonis2(year.b ~ year + sex + svl, data = year.meta)
## Permutation test for adonis under reduced model
## Terms added sequentially (first to last)
## Permutation: free
## Number of permutations: 999
## 
## adonis2(formula = year.b ~ year + sex + svl, data = year.meta)
##          Df SumOfSqs      R2      F Pr(>F)    
## year      2   0.6271 0.03834 1.5619  0.082 .  
## sex       1   0.2259 0.01382 1.1256  0.305    
## svl       1   1.0476 0.06406 5.2190  0.001 ***
## Residual 72  14.4529 0.88378                  
## Total    76  16.3535 1.00000                  
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Hibernation

hib.meta <- meta[meta$month == "September" | meta$month == "April",]
hib.ps <- subset_samples(ps, month == "September" | month == "April")
aov.hib <- aov(Shannon ~ month * sex * svl, data = hib.meta)

plot(density(aov.hib$residuals))

qqnorm(aov.hib$residuals)
qqline(aov.hib$residuals, datax = FALSE, distribution = qnorm, probs = c(0.25, 0.75))

plot(aov.hib$residuals~aov.hib$fitted.values)
lines(lowess(aov.hib$fitted.values,aov.hib$residuals), col="blue")

aov.hib <- aov(Shannon ~ month * sex * svl + Error(toe.clip), data = hib.meta)
summary(aov.hib)
## 
## Error: toe.clip
##               Df Sum Sq Mean Sq F value  Pr(>F)   
## month          1  0.073  0.0729   0.433 0.51414   
## sex            1  0.450  0.4497   2.672 0.10995   
## svl            1  1.529  1.5285   9.084 0.00446 **
## month:sex      1  0.003  0.0032   0.019 0.89088   
## month:svl      1  0.329  0.3287   1.953 0.16994   
## sex:svl        1  0.000  0.0002   0.001 0.97532   
## month:sex:svl  1  0.045  0.0452   0.269 0.60712   
## Residuals     40  6.731  0.1683                   
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Error: Within
##               Df  Sum Sq Mean Sq F value Pr(>F)
## month          1 0.29538 0.29538   2.039  0.289
## svl            1 0.02852 0.02852   0.197  0.701
## month:sex      1 0.06316 0.06316   0.436  0.577
## month:svl      1 0.05803 0.05803   0.401  0.591
## sex:svl        1 0.00298 0.00298   0.021  0.899
## month:sex:svl  1 0.15169 0.15169   1.047  0.414
## Residuals      2 0.28967 0.14484
aov.hib.ob <- aov(log10(Observed) ~ month * sex * svl, data = hib.meta)

plot(density(aov.hib.ob$residuals))

qqnorm(aov.hib.ob$residuals)
qqline(aov.hib.ob$residuals, datax = FALSE, distribution = qnorm, probs = c(0.25, 0.75))

plot(aov.hib.ob$residuals~aov.hib.ob$fitted.values)
lines(lowess(aov.hib.ob$fitted.values,aov.hib.ob$residuals), col="blue")

aov.hib.ob <- aov(log10(Observed) ~ month * sex * svl + Error(toe.clip), data = hib.meta)

summary(aov.hib.ob)
## 
## Error: toe.clip
##               Df Sum Sq Mean Sq F value Pr(>F)   
## month          1 0.0150 0.01501   0.476 0.4944   
## sex            1 0.0807 0.08069   2.557 0.1177   
## svl            1 0.2845 0.28449   9.014 0.0046 **
## month:sex      1 0.0010 0.00101   0.032 0.8592   
## month:svl      1 0.0651 0.06507   2.062 0.1588   
## sex:svl        1 0.0000 0.00002   0.001 0.9796   
## month:sex:svl  1 0.0090 0.00901   0.285 0.5961   
## Residuals     40 1.2625 0.03156                  
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Error: Within
##               Df  Sum Sq Mean Sq F value Pr(>F)
## month          1 0.05344 0.05344   2.112  0.283
## svl            1 0.00618 0.00618   0.244  0.670
## month:sex      1 0.01222 0.01222   0.483  0.559
## month:svl      1 0.01113 0.01113   0.440  0.575
## sex:svl        1 0.00042 0.00042   0.017  0.909
## month:sex:svl  1 0.03129 0.03129   1.237  0.382
## Residuals      2 0.05061 0.02531
aov.hib.pd <- aov(log10(PD) ~ month * sex * svl, data = hib.meta)

plot(density(aov.hib.pd$residuals))

qqnorm(aov.hib.pd$residuals)
qqline(aov.hib.pd$residuals, datax = FALSE, distribution = qnorm, probs = c(0.25, 0.75))

plot(aov.hib.pd$residuals~aov.hib.pd$fitted.values)
lines(lowess(aov.hib.pd$fitted.values,aov.hib.pd$residuals), col="blue")

aov.hib.pd <- aov(log10(PD) ~ month * sex * svl + Error(toe.clip), data = hib.meta)
summary(aov.hib.pd)
## 
## Error: toe.clip
##               Df Sum Sq Mean Sq F value  Pr(>F)   
## month          1 0.0046  0.0046   0.121 0.72961   
## sex            1 0.0426  0.0426   1.129 0.29439   
## svl            1 0.3489  0.3489   9.244 0.00415 **
## month:sex      1 0.0140  0.0140   0.370 0.54659   
## month:svl      1 0.1354  0.1354   3.587 0.06547 . 
## sex:svl        1 0.0524  0.0524   1.388 0.24576   
## month:sex:svl  1 0.0198  0.0198   0.526 0.47257   
## Residuals     40 1.5097  0.0377                   
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Error: Within
##               Df  Sum Sq Mean Sq F value Pr(>F)
## month          1 0.07799 0.07799   2.867  0.232
## svl            1 0.01253 0.01253   0.461  0.567
## month:sex      1 0.03046 0.03046   1.120  0.401
## month:svl      1 0.03083 0.03083   1.133  0.399
## sex:svl        1 0.00539 0.00539   0.198  0.700
## month:sex:svl  1 0.09753 0.09753   3.586  0.199
## Residuals      2 0.05439 0.02720
aov.hib <- aov(Shannon ~ month + sex + svl + Error(toe.clip), data = hib.meta)

aov.hib.ob <- aov(log10(Observed) ~ month + sex + svl + Error(toe.clip), data = hib.meta)

aov.hib.pd <- aov(log10(PD) ~ month + sex + svl + Error(toe.clip), data = hib.meta)

summary(aov.hib)
## 
## Error: toe.clip
##           Df Sum Sq Mean Sq F value Pr(>F)   
## month      1  0.073  0.0729   0.451 0.5052   
## sex        1  0.450  0.4497   2.784 0.1023   
## svl        1  1.529  1.5285   9.462 0.0036 **
## Residuals 44  7.108  0.1615                  
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Error: Within
##           Df Sum Sq Mean Sq F value Pr(>F)
## month      1 0.2954 0.29538   3.134  0.127
## svl        1 0.0285 0.02852   0.303  0.602
## Residuals  6 0.5655 0.09426
summary(aov.hib.ob)
## 
## Error: toe.clip
##           Df Sum Sq Mean Sq F value  Pr(>F)   
## month      1 0.0150 0.01501   0.494 0.48599   
## sex        1 0.0807 0.08069   2.654 0.11040   
## svl        1 0.2845 0.28449   9.358 0.00377 **
## Residuals 44 1.3376 0.03040                   
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Error: Within
##           Df  Sum Sq Mean Sq F value Pr(>F)
## month      1 0.05344 0.05344   3.034  0.132
## svl        1 0.00618 0.00618   0.351  0.575
## Residuals  6 0.10568 0.01761
summary(aov.hib.pd)
## 
## Error: toe.clip
##           Df Sum Sq Mean Sq F value  Pr(>F)   
## month      1 0.0046  0.0046   0.116 0.73480   
## sex        1 0.0426  0.0426   1.083 0.30375   
## svl        1 0.3489  0.3489   8.867 0.00471 **
## Residuals 44 1.7312  0.0393                   
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Error: Within
##           Df  Sum Sq Mean Sq F value Pr(>F)
## month      1 0.07799 0.07799   2.140  0.194
## svl        1 0.01253 0.01253   0.344  0.579
## Residuals  6 0.21861 0.03643
set.seed(1)
dist.hib <- vegdist(hib.ps@otu_table, method = "bray")
a.dist.hib <- UniFrac(hib.ps, weighted = TRUE)
b.dist.hib <- UniFrac(hib.ps, weighted = FALSE)
anova(betadisper(dist.hib, hib.ps@sam_data[["month"]]))
## Analysis of Variance Table
## 
## Response: Distances
##           Df  Sum Sq  Mean Sq F value Pr(>F)
## Groups     1 0.00178 0.001784  0.0683 0.7948
## Residuals 54 1.41050 0.026120
anova(betadisper(dist.hib, hib.ps@sam_data[["sex"]]))
## Analysis of Variance Table
## 
## Response: Distances
##           Df  Sum Sq  Mean Sq F value  Pr(>F)  
## Groups     1 0.07803 0.078028  2.8678 0.09613 .
## Residuals 54 1.46924 0.027208                  
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
anova(betadisper(dist.hib, hib.ps@sam_data[["svl"]]))
## Analysis of Variance Table
## 
## Response: Distances
##           Df Sum Sq  Mean Sq F value  Pr(>F)  
## Groups    16 1.3448 0.084051  2.2825 0.01804 *
## Residuals 39 1.4361 0.036824                  
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
set.seed(1)
adonis2(dist.hib ~ month * sex * svl, data = hib.meta)
## Permutation test for adonis under reduced model
## Terms added sequentially (first to last)
## Permutation: free
## Number of permutations: 999
## 
## adonis2(formula = dist.hib ~ month * sex * svl, data = hib.meta)
##               Df SumOfSqs      R2      F Pr(>F)  
## month          1   0.1312 0.00863 0.4894  0.791  
## sex            1   0.8486 0.05584 3.1644  0.012 *
## svl            1   0.4707 0.03097 1.7554  0.104  
## month:sex      1   0.1382 0.00910 0.5155  0.776  
## month:svl      1   0.0561 0.00369 0.2091  0.955  
## sex:svl        1   0.3810 0.02507 1.4209  0.206  
## month:sex:svl  1   0.2998 0.01973 1.1179  0.382  
## Residual      48  12.8718 0.84697                
## Total         55  15.1974 1.00000                
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
adonis2(dist.hib ~ month + sex + svl, data = hib.meta)
## Permutation test for adonis under reduced model
## Terms added sequentially (first to last)
## Permutation: free
## Number of permutations: 999
## 
## adonis2(formula = dist.hib ~ month + sex + svl, data = hib.meta)
##          Df SumOfSqs      R2      F Pr(>F)   
## month     1   0.1312 0.00863 0.4964  0.762   
## sex       1   0.8486 0.05584 3.2098  0.009 **
## svl       1   0.4707 0.03097 1.7806  0.124   
## Residual 52  13.7469 0.90456                 
## Total    55  15.1974 1.00000                 
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
anova(betadisper(a.dist.hib, hib.ps@sam_data[["month"]]))
## Analysis of Variance Table
## 
## Response: Distances
##           Df   Sum Sq   Mean Sq F value Pr(>F)
## Groups     1 0.001101 0.0011009  0.2411 0.6254
## Residuals 54 0.246577 0.0045662
anova(betadisper(a.dist.hib, hib.ps@sam_data[["sex"]]))
## Analysis of Variance Table
## 
## Response: Distances
##           Df   Sum Sq   Mean Sq F value Pr(>F)
## Groups     1 0.009066 0.0090664  1.8728 0.1768
## Residuals 54 0.261421 0.0048411
anova(betadisper(a.dist.hib, hib.ps@sam_data[["svl"]]))
## Analysis of Variance Table
## 
## Response: Distances
##           Df Sum Sq   Mean Sq F value   Pr(>F)   
## Groups    16 0.1766 0.0110377  2.7453 0.005109 **
## Residuals 39 0.1568 0.0040206                    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
set.seed(1)
adonis2(a.dist.hib ~ month * sex * svl, data = hib.meta)
## Permutation test for adonis under reduced model
## Terms added sequentially (first to last)
## Permutation: free
## Number of permutations: 999
## 
## adonis2(formula = a.dist.hib ~ month * sex * svl, data = hib.meta)
##               Df SumOfSqs      R2      F Pr(>F)   
## month          1  0.01101 0.00781 0.5317  0.663   
## sex            1  0.13501 0.09573 6.5215  0.002 **
## svl            1  0.10639 0.07544 5.1391  0.009 **
## month:sex      1  0.00974 0.00690 0.4704  0.719   
## month:svl      1  0.01486 0.01054 0.7177  0.514   
## sex:svl        1  0.09031 0.06404 4.3623  0.015 * 
## month:sex:svl  1  0.04930 0.03496 2.3813  0.071 . 
## Residual      48  0.99372 0.70460                 
## Total         55  1.41034 1.00000                 
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
adonis2(a.dist.hib ~ month + sex + svl, data = hib.meta)
## Permutation test for adonis under reduced model
## Terms added sequentially (first to last)
## Permutation: free
## Number of permutations: 999
## 
## adonis2(formula = a.dist.hib ~ month + sex + svl, data = hib.meta)
##          Df SumOfSqs      R2      F Pr(>F)   
## month     1  0.01101 0.00781 0.4943  0.688   
## sex       1  0.13501 0.09573 6.0630  0.006 **
## svl       1  0.10639 0.07544 4.7778  0.011 * 
## Residual 52  1.15793 0.82103                 
## Total    55  1.41034 1.00000                 
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
anova(betadisper(b.dist.hib, hib.ps@sam_data[["month"]]))
## Analysis of Variance Table
## 
## Response: Distances
##           Df  Sum Sq  Mean Sq F value Pr(>F)
## Groups     1 0.01813 0.018135  1.1809  0.282
## Residuals 54 0.82922 0.015356
anova(betadisper(b.dist.hib, hib.ps@sam_data[["sex"]]))
## Analysis of Variance Table
## 
## Response: Distances
##           Df  Sum Sq   Mean Sq F value Pr(>F)
## Groups     1 0.00100 0.0009992  0.0596 0.8081
## Residuals 54 0.90582 0.0167745
anova(betadisper(b.dist.hib, hib.ps@sam_data[["svl"]]))
## Analysis of Variance Table
## 
## Response: Distances
##           Df  Sum Sq  Mean Sq F value   Pr(>F)   
## Groups    16 0.91054 0.056908  3.1598 0.001698 **
## Residuals 39 0.70240 0.018010                    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
set.seed(1)
adonis2(b.dist.hib ~ month * sex * svl, data = hib.meta)
## Permutation test for adonis under reduced model
## Terms added sequentially (first to last)
## Permutation: free
## Number of permutations: 999
## 
## adonis2(formula = b.dist.hib ~ month * sex * svl, data = hib.meta)
##               Df SumOfSqs      R2      F Pr(>F)  
## month          1   0.1889 0.01778 1.0252  0.367  
## sex            1   0.2467 0.02322 1.3387  0.191  
## svl            1   0.3857 0.03631 2.0928  0.023 *
## month:sex      1   0.2251 0.02119 1.2214  0.242  
## month:svl      1   0.2279 0.02145 1.2365  0.254  
## sex:svl        1   0.3611 0.03399 1.9593  0.031 *
## month:sex:svl  1   0.1419 0.01335 0.7697  0.663  
## Residual      48   8.8459 0.83270                
## Total         55  10.6232 1.00000                
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
adonis2(b.dist.hib ~ month + sex + svl, data = hib.meta)
## Permutation test for adonis under reduced model
## Terms added sequentially (first to last)
## Permutation: free
## Number of permutations: 999
## 
## adonis2(formula = b.dist.hib ~ month + sex + svl, data = hib.meta)
##          Df SumOfSqs      R2      F Pr(>F)  
## month     1   0.1889 0.01778 1.0023  0.404  
## sex       1   0.2467 0.02322 1.3088  0.202  
## svl       1   0.3857 0.03631 2.0461  0.027 *
## Residual 52   9.8018 0.92269                
## Total    55  10.6232 1.00000                
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Multivariate model

all.aov1 <- aov(Shannon ~ season * sex * svl, data = meta)
plot(density(all.aov1$residuals))

qqnorm(all.aov1$residuals)
qqline(all.aov1$residuals, datax = FALSE, distribution = qnorm, probs = c(0.25, 0.75))

plot(all.aov1$residuals~all.aov1$fitted.values)
lines(lowess(all.aov1$fitted.values,all.aov1$residuals), col="blue")

summary(aov(Shannon ~ season * sex * svl + Error(toe.clip), data = meta))
## 
## Error: toe.clip
##                 Df Sum Sq Mean Sq F value   Pr(>F)    
## season           2   1.27   0.635   3.650   0.0278 *  
## sex              1   3.25   3.252  18.702 2.44e-05 ***
## svl              1   0.08   0.084   0.483   0.4880    
## season:sex       2   0.00   0.000   0.000   0.9997    
## season:svl       2   0.29   0.144   0.828   0.4386    
## sex:svl          1   0.02   0.015   0.087   0.7689    
## season:sex:svl   2   0.34   0.169   0.971   0.3807    
## Residuals      194  33.73   0.174                     
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Error: Within
##                Df Sum Sq Mean Sq F value Pr(>F)
## season          2  0.095 0.04759   0.190  0.827
## svl             1  0.120 0.11978   0.479  0.493
## season:sex      2  0.008 0.00390   0.016  0.985
## season:svl      2  0.146 0.07284   0.292  0.749
## sex:svl         1  0.041 0.04150   0.166  0.686
## season:sex:svl  2  0.621 0.31037   1.242  0.301
## Residuals      36  8.994 0.24983
summary(aov(Shannon ~ season + sex + svl + Error(toe.clip), data = meta))
## 
## Error: toe.clip
##            Df Sum Sq Mean Sq F value   Pr(>F)    
## season      2   1.27   0.635   3.712   0.0261 *  
## sex         1   3.25   3.252  19.016 2.07e-05 ***
## svl         1   0.08   0.084   0.491   0.4843    
## Residuals 201  34.37   0.171                     
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Error: Within
##           Df Sum Sq Mean Sq F value Pr(>F)
## season     2  0.095 0.04759   0.209  0.813
## svl        1  0.120 0.11978   0.525  0.473
## Residuals 43  9.810 0.22813
all.aov2 <- aov(Observed ~ season * sex * svl, data = meta)
plot(density(all.aov2$residuals))

qqnorm(all.aov2$residuals)
qqline(all.aov2$residuals, datax = FALSE, distribution = qnorm, probs = c(0.25, 0.75))

plot(all.aov2$residuals~all.aov2$fitted.values)
lines(lowess(all.aov2$fitted.values,all.aov2$residuals), col="blue")

all.aov2 <- aov(log10(Observed + 1) ~ season * sex *  svl, data = meta)
plot(density(all.aov2$residuals))

qqnorm(all.aov2$residuals)
qqline(all.aov2$residuals, datax = FALSE, distribution = qnorm, probs = c(0.25, 0.75))

plot(all.aov2$residuals~all.aov2$fitted.values)
lines(lowess(all.aov2$fitted.values,all.aov2$residuals), col="blue")

summary(aov(log10(Observed + 1) ~ season * sex * svl + Error(toe.clip), data = meta))
## 
## Error: toe.clip
##                 Df Sum Sq Mean Sq F value   Pr(>F)    
## season           2  0.237  0.1187   3.729   0.0258 *  
## sex              1  0.591  0.5912  18.565 2.61e-05 ***
## svl              1  0.016  0.0163   0.511   0.4755    
## season:sex       2  0.000  0.0000   0.000   0.9999    
## season:svl       2  0.050  0.0248   0.779   0.4604    
## sex:svl          1  0.003  0.0035   0.110   0.7409    
## season:sex:svl   2  0.059  0.0294   0.923   0.3989    
## Residuals      194  6.178  0.0318                     
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Error: Within
##                Df Sum Sq Mean Sq F value Pr(>F)
## season          2 0.0162 0.00812   0.177  0.839
## svl             1 0.0241 0.02408   0.524  0.474
## season:sex      2 0.0010 0.00050   0.011  0.989
## season:svl      2 0.0283 0.01413   0.307  0.737
## sex:svl         1 0.0075 0.00750   0.163  0.689
## season:sex:svl  2 0.1128 0.05641   1.227  0.305
## Residuals      36 1.6548 0.04597
summary(aov(log10(Observed + 1) ~ season + sex + svl + Error(toe.clip), data = meta))
## 
## Error: toe.clip
##            Df Sum Sq Mean Sq F value  Pr(>F)    
## season      2  0.237  0.1187   3.794  0.0241 *  
## sex         1  0.591  0.5912  18.892 2.2e-05 ***
## svl         1  0.016  0.0163   0.520  0.4716    
## Residuals 201  6.290  0.0313                    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Error: Within
##           Df Sum Sq Mean Sq F value Pr(>F)
## season     2 0.0162 0.00812   0.194  0.825
## svl        1 0.0241 0.02408   0.574  0.453
## Residuals 43 1.8044 0.04196
all.aov3 <- aov(log10(PD + 1) ~ season * sex * svl, data = meta)
plot(density(all.aov3$residuals))

qqnorm(all.aov3$residuals)
qqline(all.aov3$residuals, datax = FALSE, distribution = qnorm, probs = c(0.25, 0.75))

plot(all.aov3$residuals~all.aov3$fitted.values)
lines(lowess(all.aov3$fitted.values,all.aov3$residuals), col="blue")

summary(aov(log10(PD + 1) ~ season * sex * svl + Error(toe.clip), data = meta))
## 
## Error: toe.clip
##                 Df Sum Sq Mean Sq F value  Pr(>F)   
## season           2  0.113 0.05636   1.934 0.14742   
## sex              1  0.297 0.29716  10.194 0.00164 **
## svl              1  0.044 0.04352   1.493 0.22325   
## season:sex       2  0.023 0.01129   0.387 0.67953   
## season:svl       2  0.002 0.00121   0.042 0.95930   
## sex:svl          1  0.024 0.02383   0.818 0.36700   
## season:sex:svl   2  0.024 0.01201   0.412 0.66296   
## Residuals      194  5.655 0.02915                   
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Error: Within
##                Df Sum Sq Mean Sq F value Pr(>F)
## season          2 0.0007 0.00033   0.008  0.992
## svl             1 0.0361 0.03612   0.898  0.350
## season:sex      2 0.0427 0.02133   0.530  0.593
## season:svl      2 0.0349 0.01743   0.433  0.652
## sex:svl         1 0.0041 0.00412   0.102  0.751
## season:sex:svl  2 0.1691 0.08453   2.101  0.137
## Residuals      36 1.4481 0.04023
summary(aov(log10(PD + 1) ~ season + sex +svl + Error(toe.clip), data = meta))
## 
## Error: toe.clip
##            Df Sum Sq Mean Sq F value  Pr(>F)   
## season      2  0.113 0.05636   1.978 0.14106   
## sex         1  0.297 0.29716  10.427 0.00145 **
## svl         1  0.044 0.04352   1.527 0.21799   
## Residuals 201  5.728 0.02850                   
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Error: Within
##           Df Sum Sq Mean Sq F value Pr(>F)
## season     2 0.0007 0.00033   0.008  0.992
## svl        1 0.0361 0.03612   0.914  0.344
## Residuals 43 1.6989 0.03951
set.seed(1)
dist <- vegdist(ps@otu_table, method = "bray")
a.dist <- UniFrac(ps, weighted = TRUE)
b.dist <- UniFrac(ps, weighted = FALSE)
anova(betadisper(dist, ps@sam_data[["season"]]))
## Analysis of Variance Table
## 
## Response: Distances
##            Df Sum Sq  Mean Sq F value  Pr(>F)  
## Groups      2 0.0821 0.041044  2.4919 0.08481 .
## Residuals 249 4.1012 0.016471                  
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
anova(betadisper(dist, ps@sam_data[["sex"]]))
## Analysis of Variance Table
## 
## Response: Distances
##            Df Sum Sq Mean Sq F value    Pr(>F)    
## Groups      1 0.3335 0.33349  19.957 1.201e-05 ***
## Residuals 250 4.1776 0.01671                      
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
anova(betadisper(dist, ps@sam_data[["svl"]]))
## Analysis of Variance Table
## 
## Response: Distances
##            Df Sum Sq  Mean Sq F value    Pr(>F)    
## Groups     20 1.7781 0.088905   4.075 7.252e-08 ***
## Residuals 231 5.0397 0.021817                      
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
set.seed(1)
adonis2(dist ~ season * sex * svl, data = meta)
## Permutation test for adonis under reduced model
## Terms added sequentially (first to last)
## Permutation: free
## Number of permutations: 999
## 
## adonis2(formula = dist ~ season * sex * svl, data = meta)
##                 Df SumOfSqs      R2      F Pr(>F)   
## season           2    1.546 0.02127 2.7498  0.007 **
## sex              1    0.795 0.01093 2.8265  0.032 * 
## svl              1    0.890 0.01225 3.1661  0.014 * 
## season:sex       2    0.412 0.00567 0.7323  0.666   
## season:svl       2    0.929 0.01278 1.6525  0.101   
## sex:svl          1    0.317 0.00436 1.1270  0.363   
## season:sex:svl   2    0.321 0.00442 0.5710  0.815   
## Residual       240   67.484 0.92832                 
## Total          251   72.695 1.00000                 
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

removing interaction term

set.seed(1)
adonis2(dist ~ season + sex + svl, data = meta)
## Permutation test for adonis under reduced model
## Terms added sequentially (first to last)
## Permutation: free
## Number of permutations: 999
## 
## adonis2(formula = dist ~ season + sex + svl, data = meta)
##           Df SumOfSqs      R2      F Pr(>F)   
## season     2    1.546 0.02127 2.7494  0.007 **
## sex        1    0.795 0.01093 2.8260  0.032 * 
## svl        1    0.890 0.01225 3.1657  0.014 * 
## Residual 247   69.463 0.95555                 
## Total    251   72.695 1.00000                 
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
anova(betadisper(a.dist, ps@sam_data[["season"]]))
## Analysis of Variance Table
## 
## Response: Distances
##            Df  Sum Sq   Mean Sq F value Pr(>F)
## Groups      2 0.02152 0.0107583   1.626 0.1988
## Residuals 249 1.64750 0.0066165
anova(betadisper(a.dist, ps@sam_data[["sex"]]))
## Analysis of Variance Table
## 
## Response: Distances
##            Df Sum Sq  Mean Sq F value Pr(>F)  
## Groups      1 0.0379 0.037900  6.0239 0.0148 *
## Residuals 250 1.5729 0.006292                 
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
anova(betadisper(a.dist, ps@sam_data[["svl"]]))
## Analysis of Variance Table
## 
## Response: Distances
##            Df  Sum Sq  Mean Sq F value    Pr(>F)    
## Groups     20 0.33118 0.016559  2.4089 0.0009663 ***
## Residuals 231 1.58789 0.006874                      
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
set.seed(1)
adonis2(a.dist ~ season * sex * svl, data = meta)
## Permutation test for adonis under reduced model
## Terms added sequentially (first to last)
## Permutation: free
## Number of permutations: 999
## 
## adonis2(formula = a.dist ~ season * sex * svl, data = meta)
##                 Df SumOfSqs      R2      F Pr(>F)  
## season           2   0.1204 0.01643 2.1057  0.071 .
## sex              1   0.0890 0.01213 3.1108  0.034 *
## svl              1   0.0835 0.01139 2.9214  0.045 *
## season:sex       2   0.0586 0.00800 1.0252  0.370  
## season:svl       2   0.0572 0.00780 0.9993  0.369  
## sex:svl          1   0.0211 0.00288 0.7387  0.496  
## season:sex:svl   2   0.0387 0.00528 0.6766  0.664  
## Residual       240   6.8628 0.93609                
## Total          251   7.3314 1.00000                
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
set.seed(1)
adonis2(a.dist ~ season + sex + svl, data = meta)
## Permutation test for adonis under reduced model
## Terms added sequentially (first to last)
## Permutation: free
## Number of permutations: 999
## 
## adonis2(formula = a.dist ~ season + sex + svl, data = meta)
##           Df SumOfSqs      R2      F Pr(>F)  
## season     2   0.1204 0.01643 2.1130  0.071 .
## sex        1   0.0890 0.01213 3.1216  0.034 *
## svl        1   0.0835 0.01139 2.9316  0.044 *
## Residual 247   7.0384 0.96005                
## Total    251   7.3314 1.00000                
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
anova(betadisper(b.dist, ps@sam_data[["season"]]))
## Analysis of Variance Table
## 
## Response: Distances
##            Df Sum Sq  Mean Sq F value Pr(>F)
## Groups      2 0.0323 0.016158  1.0246 0.3604
## Residuals 249 3.9266 0.015769
anova(betadisper(b.dist, ps@sam_data[["sex"]]))
## Analysis of Variance Table
## 
## Response: Distances
##            Df Sum Sq   Mean Sq F value Pr(>F)
## Groups      1 0.0056 0.0056164  0.3573 0.5505
## Residuals 250 3.9295 0.0157182
anova(betadisper(b.dist, ps@sam_data[["svl"]]))
## Analysis of Variance Table
## 
## Response: Distances
##            Df Sum Sq  Mean Sq F value    Pr(>F)    
## Groups     20 0.9502 0.047512  2.8651 7.779e-05 ***
## Residuals 231 3.8308 0.016583                      
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
set.seed(1)
adonis2(b.dist ~ season * sex * svl, data = meta)
## Permutation test for adonis under reduced model
## Terms added sequentially (first to last)
## Permutation: free
## Number of permutations: 999
## 
## adonis2(formula = b.dist ~ season * sex * svl, data = meta)
##                 Df SumOfSqs      R2      F Pr(>F)    
## season           2    0.990 0.01859 2.4028  0.002 ** 
## sex              1    0.601 0.01129 2.9173  0.006 ** 
## svl              1    1.042 0.01955 5.0539  0.001 ***
## season:sex       2    0.283 0.00531 0.6866  0.848    
## season:svl       2    0.401 0.00753 0.9737  0.460    
## sex:svl          1    0.206 0.00387 0.9996  0.393    
## season:sex:svl   2    0.280 0.00526 0.6797  0.864    
## Residual       240   49.465 0.92859                  
## Total          251   53.269 1.00000                  
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
set.seed(1)
adonis2(b.dist ~ season + sex + svl, data = meta)
## Permutation test for adonis under reduced model
## Terms added sequentially (first to last)
## Permutation: free
## Number of permutations: 999
## 
## adonis2(formula = b.dist ~ season + sex + svl, data = meta)
##           Df SumOfSqs      R2      F Pr(>F)    
## season     2    0.990 0.01859 2.4157  0.002 ** 
## sex        1    0.601 0.01129 2.9330  0.006 ** 
## svl        1    1.042 0.01955 5.0811  0.001 ***
## Residual 247   50.635 0.95056                  
## Total    251   53.269 1.00000                  
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Common Core

ps.core <- core(ps.real, detection = 0, prevalence = .5)
ps.core@tax_table
## Taxonomy Table:     [9 taxa by 6 taxonomic ranks]:
##        Kingdom    Phylum               Class                
## ASV_19 "Bacteria" "Proteobacteria"     "Gammaproteobacteria"
## ASV_6  "Bacteria" "Proteobacteria"     "Gammaproteobacteria"
## ASV_22 "Bacteria" "Proteobacteria"     "Gammaproteobacteria"
## ASV_18 "Bacteria" "Proteobacteria"     "Gammaproteobacteria"
## ASV_23 "Bacteria" "Proteobacteria"     "Gammaproteobacteria"
## ASV_4  "Bacteria" "Proteobacteria"     "Gammaproteobacteria"
## ASV_10 "Bacteria" "Proteobacteria"     "Gammaproteobacteria"
## ASV_7  "Bacteria" "Epsilonbacteraeota" "Campylobacteria"    
## ASV_12 "Bacteria" "Epsilonbacteraeota" "Campylobacteria"    
##        Order               Family               Genus         
## ASV_19 "Enterobacteriales" "Enterobacteriaceae" "Izhakiella"  
## ASV_6  "Enterobacteriales" "Enterobacteriaceae" NA            
## ASV_22 "Enterobacteriales" "Enterobacteriaceae" "Izhakiella"  
## ASV_18 "Enterobacteriales" "Enterobacteriaceae" "Izhakiella"  
## ASV_23 "Enterobacteriales" "Enterobacteriaceae" "Izhakiella"  
## ASV_4  "Enterobacteriales" "Enterobacteriaceae" NA            
## ASV_10 "Enterobacteriales" "Enterobacteriaceae" "Izhakiella"  
## ASV_7  "Campylobacterales" "Helicobacteraceae"  "Helicobacter"
## ASV_12 "Campylobacterales" "Helicobacteraceae"  "Helicobacter"
f.ps <- subset_samples(ps.real, sex == "F")
f.ps.core <- microbiome::core(f.ps, detection = 0, prevalence = .4)
m.ps <- subset_samples(ps.real, sex == "M")
m.ps.core <- microbiome::core(m.ps, detection = 0, prevalence = .4)
f.ps.fam <- subset_samples(fam.ps, sex == "F")
f.ps.core.fam <- microbiome::core(f.ps.fam , detection = 0, prevalence = .5)
m.ps.fam <- subset_samples(fam.ps, sex == "M")
m.ps.core.fam <- microbiome::core(m.ps.fam, detection = 0, prevalence = .5)
pre.core <- subset_samples(ps, season == "pre")
pre.core <- core(pre.core, detection = 0, prevalence = 0.5)

breeding.core <- subset_samples(ps, season == "breeding")
breeding.core <- core(breeding.core, detection = 0, prevalence = 0.5)

post.core <- subset_samples(ps, season == "post")
post.core <- core(post.core, detection = 0, prevalence = 0.5)
pre.core.fam <- subset_samples(fam.ps, season == "pre")
pre.core.fam <- core(pre.core.fam, detection = 0, prevalence = 0.5)

breeding.core.fam <- subset_samples(fam.ps, season == "breeding")
breeding.core.fam <- core(breeding.core.fam, detection = 0, prevalence = 0.5)

post.core.fam <- subset_samples(fam.ps, season == "post")
post.core.fam <- core(post.core.fam, detection = 0, prevalence = 0.5)

Temporal Core

year.venn <- get_vennlist(year.ps, "year")
shared.year <- Reduce(intersect, year.venn)

sex.venn <- get_vennlist(ps, "sex")
shared.sex <- Reduce(intersect, sex.venn)

season.venn <- get_vennlist(ps, "season")
shared.season <- Reduce(intersect, season.venn)

core.taxa <- colnames(counts)[colnames(counts) %in% shared.year & colnames(counts) %in% shared.sex & colnames(counts) %in% shared.season]
ps.core <- prune_taxa(core.taxa, ps)
n.core <- vegdist(ps.core@otu_table, method = "bray")
a.core <- UniFrac(ps.core, weighted = TRUE)
b.core <- UniFrac(ps.core, weighted = FALSE)
anova(betadisper(n.core, ps.core@sam_data[["season"]]))
## Analysis of Variance Table
## 
## Response: Distances
##            Df Sum Sq  Mean Sq F value  Pr(>F)  
## Groups      2 0.1651 0.082572  4.1715 0.01652 *
## Residuals 249 4.9288 0.019794                  
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
anova(betadisper(n.core, ps.core@sam_data[["sex"]]))
## Analysis of Variance Table
## 
## Response: Distances
##            Df Sum Sq Mean Sq F value    Pr(>F)    
## Groups      1 0.4398 0.43979   20.86 7.763e-06 ***
## Residuals 250 5.2708 0.02108                      
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
anova(betadisper(n.core, ps.core@sam_data[["svl"]]))
## Analysis of Variance Table
## 
## Response: Distances
##            Df Sum Sq  Mean Sq F value    Pr(>F)    
## Groups     20 1.8631 0.093153  3.3812 4.077e-06 ***
## Residuals 231 6.3640 0.027550                      
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
set.seed(1)
adonis2(n.core ~ season * sex * svl, data = meta)
## Permutation test for adonis under reduced model
## Terms added sequentially (first to last)
## Permutation: free
## Number of permutations: 999
## 
## adonis2(formula = n.core ~ season * sex * svl, data = meta)
##                 Df SumOfSqs      R2      F Pr(>F)  
## season           2    1.483 0.02204 2.8517  0.012 *
## sex              1    0.809 0.01202 3.1114  0.033 *
## svl              1    0.890 0.01322 3.4223  0.017 *
## season:sex       2    0.304 0.00452 0.5852  0.730  
## season:svl       2    0.783 0.01164 1.5060  0.164  
## sex:svl          1    0.319 0.00474 1.2255  0.334  
## season:sex:svl   2    0.303 0.00451 0.5833  0.761  
## Residual       240   62.425 0.92732                
## Total          251   67.318 1.00000                
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
set.seed(1)
adonis2(n.core ~ season + sex + svl, data = meta)
## Permutation test for adonis under reduced model
## Terms added sequentially (first to last)
## Permutation: free
## Number of permutations: 999
## 
## adonis2(formula = n.core ~ season + sex + svl, data = meta)
##           Df SumOfSqs      R2      F Pr(>F)  
## season     2    1.483 0.02204 2.8566  0.011 *
## sex        1    0.809 0.01202 3.1168  0.032 *
## svl        1    0.890 0.01322 3.4282  0.015 *
## Residual 247   64.135 0.95272                
## Total    251   67.318 1.00000                
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
anova(betadisper(a.core, ps.core@sam_data[["season"]]))
## Analysis of Variance Table
## 
## Response: Distances
##            Df Sum Sq  Mean Sq F value Pr(>F)
## Groups      2 0.0443 0.022146  0.8689 0.4207
## Residuals 249 6.3462 0.025487
anova(betadisper(a.core, ps.core@sam_data[["sex"]]))
## Analysis of Variance Table
## 
## Response: Distances
##            Df Sum Sq Mean Sq F value   Pr(>F)    
## Groups      1 0.3168 0.31676  14.621 0.000166 ***
## Residuals 250 5.4162 0.02166                     
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
anova(betadisper(a.core, ps.core@sam_data[["svl"]]))
## Analysis of Variance Table
## 
## Response: Distances
##            Df Sum Sq  Mean Sq F value   Pr(>F)   
## Groups     20 1.2626 0.063129  2.2897 0.001827 **
## Residuals 231 6.3689 0.027571                    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
set.seed(1)
adonis2(a.core ~ season * sex * svl, data = meta)
## Permutation test for adonis under reduced model
## Terms added sequentially (first to last)
## Permutation: free
## Number of permutations: 999
## 
## adonis2(formula = a.core ~ season * sex * svl, data = meta)
##                 Df SumOfSqs      R2      F Pr(>F)  
## season           2   0.2704 0.01086 1.3920  0.267  
## sex              1   0.3100 0.01245 3.1908  0.068 .
## svl              1   0.4630 0.01859 4.7657  0.033 *
## season:sex       2   0.1049 0.00421 0.5402  0.602  
## season:svl       2   0.1932 0.00776 0.9943  0.364  
## sex:svl          1   0.0404 0.00162 0.4161  0.598  
## season:sex:svl   2   0.2046 0.00822 1.0530  0.380  
## Residual       240  23.3141 0.93629                
## Total          251  24.9006 1.00000                
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
set.seed(1)
adonis2(a.core ~ season + sex + svl, data = meta)
## Permutation test for adonis under reduced model
## Terms added sequentially (first to last)
## Permutation: free
## Number of permutations: 999
## 
## adonis2(formula = a.core ~ season + sex + svl, data = meta)
##           Df SumOfSqs      R2      F Pr(>F)  
## season     2   0.2704 0.01086 1.3999  0.264  
## sex        1   0.3100 0.01245 3.2091  0.066 .
## svl        1   0.4630 0.01859 4.7931  0.030 *
## Residual 247  23.8573 0.95810                
## Total    251  24.9006 1.00000                
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
anova(betadisper(b.core, ps.core@sam_data[["season"]]))
## Analysis of Variance Table
## 
## Response: Distances
##            Df Sum Sq  Mean Sq F value Pr(>F)
## Groups      2 0.0671 0.033533  1.5253 0.2196
## Residuals 249 5.4742 0.021985
anova(betadisper(b.core, ps.core@sam_data[["sex"]]))
## Analysis of Variance Table
## 
## Response: Distances
##            Df Sum Sq  Mean Sq F value  Pr(>F)  
## Groups      1 0.1413 0.141283   6.059 0.01451 *
## Residuals 250 5.8295 0.023318                  
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
anova(betadisper(b.core, ps.core@sam_data[["svl"]]))
## Analysis of Variance Table
## 
## Response: Distances
##            Df Sum Sq  Mean Sq F value   Pr(>F)   
## Groups     20 1.1031 0.055154  2.2534 0.002213 **
## Residuals 231 5.6540 0.024476                    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
set.seed(1)
adonis2(b.core ~ season * sex * svl, data = meta)
## Permutation test for adonis under reduced model
## Terms added sequentially (first to last)
## Permutation: free
## Number of permutations: 999
## 
## adonis2(formula = b.core ~ season * sex * svl, data = meta)
##                 Df SumOfSqs      R2      F Pr(>F)   
## season           2    0.560 0.01417 1.8139  0.107   
## sex              1    0.413 0.01044 2.6738  0.044 * 
## svl              1    0.612 0.01547 3.9604  0.007 **
## season:sex       2    0.194 0.00490 0.6270  0.719   
## season:svl       2    0.266 0.00673 0.8622  0.520   
## sex:svl          1    0.083 0.00209 0.5342  0.711   
## season:sex:svl   2    0.355 0.00897 1.1485  0.336   
## Residual       240   37.067 0.93724                 
## Total          251   39.550 1.00000                 
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
set.seed(1)
adonis2(b.core ~ season + sex + svl, data = meta)
## Permutation test for adonis under reduced model
## Terms added sequentially (first to last)
## Permutation: free
## Number of permutations: 999
## 
## adonis2(formula = b.core ~ season + sex + svl, data = meta)
##           Df SumOfSqs      R2      F Pr(>F)   
## season     2    0.560 0.01417 1.8227  0.104   
## sex        1    0.413 0.01044 2.6867  0.043 * 
## svl        1    0.612 0.01547 3.9796  0.006 **
## Residual 247   37.965 0.95993                 
## Total    251   39.550 1.00000                 
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Female reproductive State

meta.f <- meta.full[meta.full$sex == "F",]
ps.f <- subset_samples(ps.full, sex == "F")
aov.rs.shan <- aov(Shannon ~ RS, data = meta.f)

plot(density(aov.rs.shan$residuals))

qqnorm(aov.rs.shan$residuals)
qqline(aov.rs.shan$residuals, datax = FALSE, distribution = qnorm, probs = c(0.25, 0.75))

plot(aov.rs.shan$residuals~aov.rs.shan$fitted.values)
lines(lowess(aov.rs.shan$fitted.values,aov.rs.shan$residuals), col="blue")

aov.rs.ob <- aov(Observed ~ RS, data = meta.f)

plot(density(aov.rs.ob$residuals))

qqnorm(aov.rs.ob$residuals)
qqline(aov.rs.ob$residuals, datax = FALSE, distribution = qnorm, probs = c(0.25, 0.75))

plot(aov.rs.ob$residuals~aov.rs.ob$fitted.values)
lines(lowess(aov.rs.ob$fitted.values,aov.rs.ob$residuals), col="blue")

aov.rs.ob <- aov(log10(Observed) ~ RS, data = meta.f)

plot(density(aov.rs.ob$residuals))

qqnorm(aov.rs.ob$residuals)
qqline(aov.rs.ob$residuals, datax = FALSE, distribution = qnorm, probs = c(0.25, 0.75))

plot(aov.rs.ob$residuals~aov.rs.ob$fitted.values)
lines(lowess(aov.rs.ob$fitted.values,aov.rs.ob$residuals), col="blue")

aov.rs.pd <- aov(PD ~ RS, data = meta.f)

plot(density(aov.rs.pd$residuals))

qqnorm(aov.rs.pd$residuals)
qqline(aov.rs.pd$residuals, datax = FALSE, distribution = qnorm, probs = c(0.25, 0.75))

plot(aov.rs.pd$residuals~aov.rs.pd$fitted.values)
lines(lowess(aov.rs.pd$fitted.values,aov.rs.pd$residuals), col="blue")

aov.rs.pd <- aov(log10(PD) ~ RS, data = meta.f)

plot(density(aov.rs.pd$residuals))

qqnorm(aov.rs.pd$residuals)
qqline(aov.rs.pd$residuals, datax = FALSE, distribution = qnorm, probs = c(0.25, 0.75))

plot(aov.rs.pd$residuals~aov.rs.pd$fitted.values)
lines(lowess(aov.rs.pd$fitted.values,aov.rs.pd$residuals), col="blue")

aov.rs.shan <- aov(Shannon ~ RS + Error(toe.clip), data = meta.f)
summary(aov.rs.shan)
## 
## Error: toe.clip
##            Df Sum Sq Mean Sq F value Pr(>F)
## RS          3  1.093  0.3642   1.869  0.139
## Residuals 103 20.068  0.1948               
## 
## Error: Within
##           Df Sum Sq Mean Sq F value Pr(>F)
## RS         3  0.102 0.03405   0.146  0.932
## Residuals 29  6.778 0.23373
aov.rs.ob <- aov(log10(Observed) ~ RS + Error(toe.clip), data = meta.f)
summary(aov.rs.ob)
## 
## Error: toe.clip
##            Df Sum Sq Mean Sq F value Pr(>F)
## RS          3  0.211 0.07045   1.892  0.136
## Residuals 103  3.836 0.03724               
## 
## Error: Within
##           Df Sum Sq Mean Sq F value Pr(>F)
## RS         3 0.0191 0.00635   0.142  0.934
## Residuals 29 1.2966 0.04471
aov.rs.pd <- aov(log10(PD) ~ RS + Error(toe.clip), data = meta.f)
summary(aov.rs.pd)
## 
## Error: toe.clip
##            Df Sum Sq Mean Sq F value Pr(>F)
## RS          3  0.363 0.12111   1.612  0.191
## Residuals 103  7.738 0.07513               
## 
## Error: Within
##           Df Sum Sq Mean Sq F value Pr(>F)
## RS         3 0.0709 0.02362   0.273  0.844
## Residuals 29 2.5110 0.08659
set.seed(1)
dist.f <- vegdist(ps.f@otu_table, method = "bray")
a.dist.f <- UniFrac(ps.f, weighted = TRUE)
b.dist.f <- UniFrac(ps.f, weighted = FALSE)
anova(betadisper(dist.f, ps.f@sam_data[["RS"]]))
## Analysis of Variance Table
## 
## Response: Distances
##            Df  Sum Sq  Mean Sq F value Pr(>F)
## Groups      3 0.05634 0.018782  0.9517 0.4177
## Residuals 135 2.66427 0.019735
set.seed(1)
adonis2(dist.f ~ RS, data = meta.f)
## Permutation test for adonis under reduced model
## Terms added sequentially (first to last)
## Permutation: free
## Number of permutations: 999
## 
## adonis2(formula = dist.f ~ RS, data = meta.f)
##           Df SumOfSqs      R2      F Pr(>F)  
## RS         3    1.407 0.03952 1.8518  0.032 *
## Residual 135   34.189 0.96048                
## Total    138   35.595 1.00000                
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
anova(betadisper(a.dist.f, ps.f@sam_data[["RS"]]))
## Analysis of Variance Table
## 
## Response: Distances
##            Df  Sum Sq   Mean Sq F value Pr(>F)
## Groups      3 0.01966 0.0065539  1.3326 0.2664
## Residuals 135 0.66392 0.0049180
set.seed(1)
adonis2(a.dist.f ~ RS, data = meta.f)
## Permutation test for adonis under reduced model
## Terms added sequentially (first to last)
## Permutation: free
## Number of permutations: 999
## 
## adonis2(formula = a.dist.f ~ RS, data = meta.f)
##           Df SumOfSqs      R2      F Pr(>F)
## RS         3   0.1009 0.02953 1.3691  0.201
## Residual 135   3.3153 0.97047              
## Total    138   3.4162 1.00000
anova(betadisper(b.dist.f, ps.f@sam_data[["RS"]]))
## Analysis of Variance Table
## 
## Response: Distances
##            Df  Sum Sq  Mean Sq F value Pr(>F)
## Groups      3 0.07637 0.025457  1.3964 0.2467
## Residuals 135 2.46108 0.018230
set.seed(1)
adonis2(b.dist.f ~ RS, data = meta.f)
## Permutation test for adonis under reduced model
## Terms added sequentially (first to last)
## Permutation: free
## Number of permutations: 999
## 
## adonis2(formula = b.dist.f ~ RS, data = meta.f)
##           Df SumOfSqs      R2      F Pr(>F)  
## RS         3   0.9114 0.03069 1.4247   0.07 .
## Residual 135  28.7874 0.96931                
## Total    138  29.6987 1.00000                
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1