...
Jaccard, P. (1908). “Nouvellesrecherches sur la distribution florale.” Bull. Soc. V and. Sci. Nat., (44):223-270.
Significance tests
For each beta diversity method, both overall significance and pairwise significance can be calculated using a Permutational Multivariate Analysis of Variance (PERMANOVA), a non-parametric multivariate statistical test. The R-squared value represents the percentage of variance explained by the examined groups. E.g. if R = 0.23 then 23% of the total diversity is explained by groupwise differences. PERMANOVA is based on groupwise differences, thus cannot be applied to continuous data.
5a. Choosing a variable to analyse
...
To compare the overall differences between groups within your chosen variable, a PERMANOVA test can be performed and similarly a pairwise Permutational Multivariate Analysis of Variance (PERMANOVA) test can be performed to compare differences between each group.
The R-squared value represents the percentage of variance explained by the examined groups. E.g. if R = 0.23 then 23% of the total diversity is explained by groupwise differences. PERMANOVA is based on groupwise differences, thus cannot be applied to continuous data.
PERMANOVA:
Code Block |
---|
# Need to remove rows (from ASV abundance table) with all 0 counts first asvmatrix <- ampvisdata$abund asvmatrix <- asvmatrix[rowSums(asvmatrix) > 0, ] # Also need to transpose (samples need to be as rows, asv's as columns) asvmatrix <- t(asvmatrix) # Then generate pairwise distance matrix sampdist <- vegdist(asvmatrix, method="bray") # Subset samples table by samples in ampvis2 object (in case some were filtered out) samples_table_filt <- samples_table[samples_table$ID %in% ampvisdata$metadata$ID, ] # Use adonis function (vegan package: "Permutational Multivariate Analysis of Variance Using Distance Matrices") to run PERMANOVA on distances pathotype.adonis <- adonis2(sampdist ~ get(group), data = samples_table_filt) # Output the r squared and p values as variables r2 <- pathotype.adonis$R2[1] pval <- pathotype.adonis$`Pr(>F)`[1] |
PERMANOVA R squared =
Code Block |
---|
round(r2, 2) |
PERMANOVA significance (p) =
Code Block |
---|
pval |
Pairwise PERMANOVA:
Calculate the pairwise PERMANOVA. This is a bit complex, as each group within the variable has to be compared to each other group in a variety of ways. Code comments (#) explain what each line of code does.
Code Block |
---|
# The combn function creates every combination of provided elements
# Below it takes all group names and combines them pairwise (2)
# Creates a matrix where each column = a combination
comb_pair <- data.frame(combn(unique(samples_table_filt[[group]]),2))
# Convert scores to relative abundance
# Use sweep function to divide ("/") each column (2) by its total (colSums)
comm <- sweep(ampvisdata$abund,2,colSums(ampvisdata$abund),"/")
# Using adonis function (vegan package: "Permutational Multivariate Analysis of Variance Using Distance Matrices")
tabstat_adonis <- c()
# Loop through each pair (i.e. column in 'comb_pair')
for (i in 1:ncol(comb_pair)) {
# Pull out pair data
# From samples table
samples_table_SB_pair <- samples_table_filt[samples_table_filt[[group]] %in% comb_pair[[i]], ]
# From ASV matrix
asvmatrix_pair <- comm[samples_table_SB_pair$ID]
# Transpose
asvmatrix_pair <- asvmatrix_pair[rowSums(asvmatrix_pair) > 0, ]
# Also need to transpose (samples need to be as rows, asv's as columns)
asvmatrix_pair <- t(asvmatrix_pair)
# Then generate pairwise distance matrix
sampdist_pair <- vegdist(asvmatrix_pair, method="bray")
# Use anosim (vegan): Analysis of Similarities
x2 <- adonis2(sampdist_pair ~ get(group), data = samples_table_SB_pair)
# Pull out just r squared and p value
r2_adonis <- x2$R2[1]
pval_adonis <- x2$`Pr(>F)`[1]
# Combine into data frame
tabstat_adonis <- cbind(tabstat_adonis, c(r2_adonis, pval_adonis))
# Name vector with group combinations
colnames(tabstat_adonis)[i] <- paste(comb_pair[[i]], collapse=' Vs ')
}
row.names(tabstat_adonis) <- c("R squared", "p") |
Now output these results as a table.
Code Block |
---|
tabstat_adonis <- t(tabstat_adonis)
tabstat_adonis <- data.frame(tabstat_adonis)
tabstat_adonis |
You can export this table as a csv file:
Code Block |
---|
write_csv(tabstat_adonis, paste0("beta_div_pairwise_PERMANOVA", group, "_", index, "_samples_.csv")) |