The purpose of this code is to Run NMDS ordinations for each metabarcoding marker to determine which species are influential and may be interesting to include in mock community analysis. This file is for the vertical tows. There is another file for the oblique tows. I decided to remove stations that were not strictly WOAC stations. Replicates were also combined so that any species that was found in either of the replicates was counted. NMDS plots are made using presence-absence data due to concerns about amplification bias. For taxon-specific markers, I decided to subset the data to that specific taxon.
library(stringr)
library(vegan)
library(EcolUtils)
library(ggplot2)
library(ggrepel)
library(dplyr)
library(reshape2)
Import ASV count tables - I downloaded the tsv and csv files from google drive into the data directory
files_to_read <- list.files(path = "/Users/hailaschultz/Dropbox/Schultz_Dissertation/Data_Analysis/Schultz_dissertation-3/data/",
pattern = "\\.tsv$", full.names = TRUE)
# Read each file and assign to a variable named after the file
for (file in files_to_read) {
# Read the file into a data frame
df <- read.table(file = file, sep = '\t', header = TRUE)
# Rename the column "x" to "ASV" if it exists
if ("x" %in% colnames(df)) {
colnames(df)[colnames(df) == "x"] <- "ASV"
}
# Create a variable name from the filename
# Remove the directory path and file extension, replace spaces with underscores
var_name <- gsub("\\.tsv$", "", basename(file))
var_name <- gsub(" ", "_", var_name)
# Assign the data frame to a variable with the created name
assign(var_name, df)
}
Import ASV to taxonomy tables
files_to_read <- list.files(path = "/Users/hailaschultz/Dropbox/Schultz_Dissertation/Data_Analysis/Schultz_dissertation-3/data/",
pattern = "\\.txt$", full.names = TRUE)
# Read each file and assign to a variable named after the file
for (file in files_to_read) {
# Read the file into a data frame
df <- read.table(file = file, sep = '\t', header = TRUE)
# Create a variable name from the filename
# Remove the directory path and file extension, replace spaces with underscores
var_name <- gsub("\\.txt$", "", basename(file))
var_name <- gsub(" ", "_", var_name)
# Assign the data frame to a variable with the created name
assign(var_name, df)
}
add taxa ids to count data
M28S_counts <- merge(RV_28S_asvTaxonomyTable, marker_28S_ASVs_counts, by = "ASV", all = TRUE)
COI_counts <- merge(RV_COI_asvTaxonomyTable, COI_ASVs_counts, by = "ASV", all = TRUE)
Cop16S_counts <- merge(RV_Cop16S_asvTaxonomyTable, Cop16S_ASVs_counts, by = "ASV", all = TRUE)
Fishcytb_counts <- merge(RV_Fishcytb_asvTaxonomyTable, Fishcytb_ASVs_counts, by = "ASV", all = TRUE)
Machida18S_counts <- merge(RV_Machida18S_asvTaxonomyTable, Machida18S_ASVs_counts, by = "ASV", all = TRUE)
Mol16S_counts <- merge(RV_Mol16S_asvTaxonomyTable, Mol16S_ASVs_counts, by = "ASV", all = TRUE)
Remove non-zooplanton phyla
unique(COI_counts$Phylum)
## [1] "Arthropoda" "Bacillariophyta"
## [3] "Bryozoa" "Mollusca"
## [5] "Rhodophyta" NA
## [7] "Echinodermata" "Annelida"
## [9] "Cnidaria" "Platyhelminthes"
## [11] "Oomycota" "Chordata"
## [13] "Chaetognatha" "Nemertea"
## [15] "Ctenophora" "Ascomycota"
## [17] "Onychophora" "Cryptophyceae__p"
## [19] "Zoopagomycota" "Rotifera"
## [21] "Phaeophyceae__p" "Haptophyta"
## [23] "Basidiomycota" "Chlorophyta"
## [25] "Dinophyceae__p" "Phoronida"
## [27] "Discosea" "Porifera"
## [29] "Tubulinea" "Dictyochophyceae__p"
## [31] "Bacteroidota" "Blastocladiomycota"
## [33] "Pseudomonadota" "Chrysophyceae__p"
## [35] "Nematoda" "Malawimonadida__c__p"
## [37] "Prasinodermophyta" "Chrysoparadoxa__f__o__c__p"
## [39] "Apusomonadida__c__p" "Streptophyta"
## [41] "Pelagophyceae__p" "Eustigmatophyceae__p"
levels_to_remove <- c('Bacillariophyta', 'Rhodophyta',NA,'Oomycota','Ascomycota','Onychophora','Cryptophyceae__p','Zoopagomycota','Phaeophyceae__p','Haptophyta','Basidiomycota','Chlorophyta','Dinophyceae__p','Discosea','Tubulinea','Dictyochophyceae__p','Bacteroidota','Blastocladiomycota','Pseudomonadota','Chrysophyceae__p','Malawimonadida__c__p','Prasinodermophyta','Chrysoparadoxa__f__o__c__p','Apusomonadida__c__p','Streptophyta','Pelagophyceae__p','Eustigmatophyceae__p')
# Remove those levels and drop them from the factor
COI_counts <- droplevels(COI_counts[!COI_counts$Phylum %in% levels_to_remove,])
remove non-species rows
COI_comp<- COI_counts[complete.cases(COI_counts), ]
convert to presence-absence
COI_comp_pa<-COI_comp %>%
mutate(across(where(is.numeric), ~ifelse(.x >0, 1, 0)))
remove excess columns
COI_comp_pa <- COI_comp_pa[ -c(1:7) ]
wide to long format
COI_long<-melt(COI_comp_pa, id.vars=c("Species"))
add up multiple lines per station and convert back to presence-absence
COI_long_sum <- COI_long %>%
group_by(Species,variable) %>%
summarise(
value = sum(value))
COI_long_sum<-COI_long_sum %>%
mutate(across(where(is.numeric), ~ifelse(.x >0, 1, 0)))
split code string up to extract metadata
COI_long_sum$variable<-str_split_fixed(COI_long_sum$variable,"_",4)
remove samples of non-interest
unique(COI_long_sum$variable[,3])
## [1] "P12" "P22" "P28" "P38" "P402" "P4" "P8" "CA042" "P105"
## [10] "P123" "P132" "P136" "P381" "P7" ""
unique(COI_long_sum$variable[,2])
## [1] "1804" "1806" "1807" "1809" "1904" "1907"
## [7] "1909" "2007" "2009" "2010" "Control1" "Control2"
remove excess stations
levels_to_remove <- c('CA042','',"P105","P123","P132","P136","P381","P7")
COI_long_sum <- droplevels(COI_long_sum[!COI_long_sum$variable[,3] %in% levels_to_remove,])
split up replicate columns
unique(COI_long_sum$variable[,4])
## [1] "VeA" "Ve" "ObB" "ObA" "Ob" "VeB"
COI_long_sum <- COI_long_sum %>%
mutate(
tow_type = substr(variable[,4], 1, 2),
replicate = substr(variable[,4], 3, nchar(variable[,4]))
)
split up year and month columns
COI_long_sum <- COI_long_sum %>%
mutate(
Year = substr(variable[,2], 1, 2),
Month = substr(variable[,2], 3, 4)
)
make station column
COI_long_sum$station<-COI_long_sum$variable[,3]
remove oblique samples
COI_long_sum<-subset(COI_long_sum,tow_type=="Ve")
merge replicates
colnames(COI_long_sum)
## [1] "Species" "variable" "value" "tow_type" "replicate" "Year"
## [7] "Month" "station"
COI_long_sum$sample<-paste(COI_long_sum$Year,COI_long_sum$Month,COI_long_sum$station,COI_long_sum$tow_type,sep="")
COI_long_sum <- COI_long_sum %>%
group_by(Year,Month,station,sample,Species) %>%
summarise(
value = sum(value))
#convert back to presence-absence
COI_long_sum<-COI_long_sum %>%
mutate(across(where(is.numeric), ~ifelse(.x >0, 1, 0)))
back to wide format
COI_wide<-dcast(COI_long_sum, sample+Year+Month+station ~ Species )
remove any columns with all zeroes
target_cols <- 6:ncol(COI_wide)
non_zero_cols <- target_cols[colSums(COI_wide[, target_cols]) != 0]
COI_wide <- COI_wide[, c(1:5, non_zero_cols)]
remove environmental data
COI_wide_simple<-COI_wide[ , 5:231]
Make environmental columns categorical
# Specify the columns to convert to factors
cols_to_factor <- c("station", "Year", "Month")
# Convert the specified columns to factors
COI_wide <- COI_wide %>%
mutate_at(vars(one_of(cols_to_factor)), as.factor)
dist<-vegdist(COI_wide_simple, method='bray')
perm<-adonis2(dist~station*Month, data=COI_wide, permutations = 999, method="bray")
perm
## Permutation test for adonis under reduced model
## Terms added sequentially (first to last)
## Permutation: free
## Number of permutations: 999
##
## adonis2(formula = dist ~ station * Month, data = COI_wide, permutations = 999, method = "bray")
## Df SumOfSqs R2 F Pr(>F)
## station 6 3.4039 0.36352 6.5875 0.001 ***
## Month 3 1.1864 0.12671 4.5922 0.001 ***
## station:Month 13 1.8453 0.19707 1.6482 0.001 ***
## Residual 34 2.9281 0.31271
## Total 56 9.3636 1.00000
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
station comparisons
adonis.pair(vegdist(COI_wide_simple),COI_wide$station)
## combination SumsOfSqs MeanSqs F.Model R2 P.value
## 1 P12 <-> P22 0.8514436 0.8514436 6.989626 0.31786015 0.000999001
## 2 P12 <-> P28 0.5132586 0.5132586 4.346908 0.22468229 0.000999001
## 3 P12 <-> P38 0.3347530 0.3347530 2.600489 0.15665133 0.011988012
## 4 P12 <-> P4 0.5237424 0.5237424 4.174794 0.22970241 0.000999001
## 5 P12 <-> P402 0.4388448 0.4388448 3.219377 0.18696244 0.005994006
## 6 P12 <-> P8 0.5850319 0.5850319 4.712679 0.26606245 0.000999001
## 7 P22 <-> P28 0.5972459 0.5972459 5.586253 0.25878752 0.000999001
## 8 P22 <-> P38 0.6258227 0.6258227 5.389828 0.26433907 0.000999001
## 9 P22 <-> P4 0.7427737 0.7427737 6.569929 0.30458741 0.000999001
## 10 P22 <-> P402 0.9995103 0.9995103 8.113390 0.35102552 0.000999001
## 11 P22 <-> P8 0.1585177 0.1585177 1.428713 0.09260091 0.125874126
## 12 P28 <-> P38 0.2742498 0.2742498 2.440577 0.13993670 0.011988012
## 13 P28 <-> P4 0.6554607 0.6554607 5.996037 0.28557946 0.000999001
## 14 P28 <-> P402 0.8303377 0.8303377 6.951239 0.31666727 0.000999001
## 15 P28 <-> P8 0.4544121 0.4544121 4.249094 0.23283862 0.001998002
## 16 P38 <-> P4 0.4886476 0.4886476 4.094496 0.22628405 0.000999001
## 17 P38 <-> P402 0.6404996 0.6404996 4.919250 0.26001297 0.000999001
## 18 P38 <-> P8 0.4005043 0.4005043 3.406837 0.20764737 0.001998002
## 19 P4 <-> P402 0.4895482 0.4895482 3.856860 0.21598757 0.000999001
## 20 P4 <-> P8 0.5424880 0.5424880 4.757259 0.26790504 0.001998002
## 21 P402 <-> P8 0.7004905 0.7004905 5.571420 0.29999969 0.000999001
## P.value.corrected
## 1 0.001498501
## 2 0.001498501
## 3 0.012587413
## 4 0.001498501
## 5 0.006993007
## 6 0.001498501
## 7 0.001498501
## 8 0.001498501
## 9 0.001498501
## 10 0.001498501
## 11 0.125874126
## 12 0.012587413
## 13 0.001498501
## 14 0.001498501
## 15 0.002468120
## 16 0.001498501
## 17 0.001498501
## 18 0.002468120
## 19 0.001498501
## 20 0.002468120
## 21 0.001498501
month comparisons
adonis.pair(vegdist(COI_wide_simple),COI_wide$Month)
## combination SumsOfSqs MeanSqs F.Model R2 P.value
## 1 04 <-> 07 0.5004131 0.5004131 3.3722456 0.09271480 0.000999001
## 2 04 <-> 09 0.8577564 0.8577564 5.3035647 0.14217313 0.000999001
## 3 04 <-> 10 0.2728710 0.2728710 1.6277785 0.10415930 0.075924076
## 4 07 <-> 09 0.3295915 0.3295915 2.2333001 0.05416254 0.017982018
## 5 07 <-> 10 0.1954991 0.1954991 1.4025823 0.06260806 0.144855145
## 6 09 <-> 10 0.1285995 0.1285995 0.8023453 0.03856994 0.637362637
## P.value.corrected
## 1 0.002997003
## 2 0.002997003
## 3 0.113886114
## 4 0.035964036
## 5 0.173826174
## 6 0.637362637
COI_NMDSmodel <- metaMDS(COI_wide_simple, distance = "bray",trymax = 999)
## Run 0 stress 0.2086798
## Run 1 stress 0.2136233
## Run 2 stress 0.2086798
## ... Procrustes: rmse 6.672573e-05 max resid 0.0003693697
## ... Similar to previous best
## Run 3 stress 0.2812641
## Run 4 stress 0.2086798
## ... Procrustes: rmse 1.833055e-05 max resid 0.0001008649
## ... Similar to previous best
## Run 5 stress 0.2086798
## ... Procrustes: rmse 1.322603e-05 max resid 6.422964e-05
## ... Similar to previous best
## Run 6 stress 0.2371512
## Run 7 stress 0.2329433
## Run 8 stress 0.291843
## Run 9 stress 0.2135708
## Run 10 stress 0.2632098
## Run 11 stress 0.2649501
## Run 12 stress 0.2086799
## ... Procrustes: rmse 0.0001501565 max resid 0.0008328826
## ... Similar to previous best
## Run 13 stress 0.2574746
## Run 14 stress 0.2586504
## Run 15 stress 0.2136233
## Run 16 stress 0.2086798
## ... Procrustes: rmse 1.433252e-05 max resid 5.638743e-05
## ... Similar to previous best
## Run 17 stress 0.2136234
## Run 18 stress 0.2086798
## ... Procrustes: rmse 4.876089e-05 max resid 0.0002630983
## ... Similar to previous best
## Run 19 stress 0.2086798
## ... Procrustes: rmse 4.394956e-05 max resid 0.0002066043
## ... Similar to previous best
## Run 20 stress 0.2086798
## ... Procrustes: rmse 1.573043e-05 max resid 8.352934e-05
## ... Similar to previous best
## *** Best solution repeated 8 times
COI_NMDSmodel
##
## Call:
## metaMDS(comm = COI_wide_simple, distance = "bray", trymax = 999)
##
## global Multidimensional Scaling using monoMDS
##
## Data: COI_wide_simple
## Distance: bray
##
## Dimensions: 2
## Stress: 0.2086798
## Stress type 1, weak ties
## Best solution was repeated 8 times in 20 tries
## The best solution was from try 0 (metric scaling or null solution)
## Scaling: centring, PC rotation, halfchange scaling
## Species: expanded scores based on 'COI_wide_simple'
get datascores
COI.data.scores<-scores(COI_NMDSmodel,display="sites")
COI.data.scores<- as.data.frame(COI.data.scores)
add environmental variables back in
# Extract the first 5 columns from df1
first_5_columns <- COI_wide[, 1:4]
# Combine the first 5 columns from df1 with df2
COI.data.scores <- cbind(first_5_columns, COI.data.scores)
plot datascores
xx <- ggplot(COI.data.scores, aes(x = NMDS1, y = NMDS2,colour = station)) +geom_point(aes(colour = station))+theme_bw()+theme(panel.grid.major = element_blank(),
panel.grid.minor = element_blank(), axis.line = element_line(colour = "black"))
xx
extract hulls
unique(COI.data.scores$station)
## [1] P12 P22 P28 P38 P402 P4 P8
## Levels: P12 P22 P28 P38 P4 P402 P8
P12 <- COI.data.scores[COI.data.scores$station == "P12", ][chull(COI.data.scores[COI.data.scores$station == "P12", c("NMDS1", "NMDS2")]), ]
P22 <- COI.data.scores[COI.data.scores$station == "P22", ][chull(COI.data.scores[COI.data.scores$station == "P22", c("NMDS1", "NMDS2")]), ]
P28 <- COI.data.scores[COI.data.scores$station == "P28", ][chull(COI.data.scores[COI.data.scores$station == "P28", c("NMDS1", "NMDS2")]), ]
P38 <- COI.data.scores[COI.data.scores$station == "P38", ][chull(COI.data.scores[COI.data.scores$station == "P38", c("NMDS1", "NMDS2")]), ]
P4 <- COI.data.scores[COI.data.scores$station == "P4", ][chull(COI.data.scores[COI.data.scores$station == "P4", c("NMDS1", "NMDS2")]), ]
P402 <- COI.data.scores[COI.data.scores$station == "P402", ][chull(COI.data.scores[COI.data.scores$station == "P402", c("NMDS1", "NMDS2")]), ]
P8 <- COI.data.scores[COI.data.scores$station == "P8", ][chull(COI.data.scores[COI.data.scores$station == "P8", c("NMDS1", "NMDS2")]), ]
get hull data
hull.data <- rbind(P12,P22,P28,P38,P402,P4,P8) #combine grp.a and grp.b
hull.data
## sample Year Month station NMDS1 NMDS2
## 15 1809P12Ve 18 09 P12 0.71414654 -0.26439066
## 49 2009P12Ve 20 09 P12 0.44968104 -0.31025034
## 1 1804P12Ve 18 04 P12 -0.27872157 0.55496316
## 21 1904P12Ve 19 04 P12 -0.09006101 0.49702359
## 8 1807P12Ve 18 07 P12 0.38076090 0.14882530
## 36 1909P22Ve 19 09 P22 -0.17337924 -0.35251660
## 2 1804P22Ve 18 04 P22 -0.70042395 -0.35602025
## 50 2009P22Ve 20 09 P22 -0.61772743 0.06757416
## 16 1809P22Ve 18 09 P22 -0.10024805 -0.07969401
## 57 2010P28Ve 20 10 P28 0.37173899 -0.33504845
## 37 1909P28Ve 19 09 P28 0.19865030 -0.44150025
## 23 1904P28Ve 19 04 P28 -0.35954323 -0.47055504
## 3 1804P28Ve 18 04 P28 -0.26003603 -0.27661728
## 44 2007P28Ve 20 07 P28 0.00892815 -0.18156600
## 51 2009P28Ve 20 09 P28 0.16278986 -0.15841233
## 17 1809P28Ve 18 09 P28 0.28648947 -0.23075895
## 18 1809P38Ve 18 09 P38 0.60017194 -0.47771963
## 4 1804P38Ve 18 04 P38 0.06745979 -0.43565937
## 24 1904P38Ve 19 04 P38 -0.02677226 -0.28338728
## 52 2009P38Ve 20 09 P38 -0.11633706 0.25090955
## 19 1809P402Ve 18 09 P402 0.70781904 0.04817124
## 53 2009P402Ve 20 09 P402 0.27715821 0.23057306
## 32 1907P402Ve 19 07 P402 0.22894335 0.25627122
## 5 1804P402Ve 18 04 P402 -0.28894561 0.78225605
## 12 1807P402Ve 18 07 P402 0.37094108 0.51939384
## 39 1909P402Ve 19 09 P402 0.43037448 0.48255716
## 20 1809P4Ve 18 09 P4 0.52728338 0.04686876
## 40 1909P4Ve 19 09 P4 0.13563071 0.09580324
## 6 1804P4Ve 18 04 P4 -0.38949384 0.23412560
## 47 2007P4Ve 20 07 P4 -0.23373933 0.40208605
## 13 1807P4Ve 18 07 P4 0.15962741 0.48271626
## 34 1907P8Ve 19 07 P8 -0.15643578 -0.20448930
## 7 1804P8Ve 18 04 P8 -0.42385599 -0.32060246
## 27 1904P8Ve 19 04 P8 -0.43703833 -0.05139096
## 48 2007P8Ve 20 07 P8 -0.42205328 0.03858691
## 14 1807P8Ve 18 07 P8 -0.21396920 0.14509020
vf <- envfit(COI_NMDSmodel, COI_wide, perm = 999)
spp.scrs <- as.data.frame(scores(vf, display = "vectors"))
spp.scrs <- cbind(spp.scrs, Species = rownames(spp.scrs))
####for ggplot
arrow_factor <- ordiArrowMul(vf)
spp.scrs <- as.data.frame(scores(vf, display = "vectors")) * arrow_factor
spp.scrs <- cbind(spp.scrs, Species = rownames(spp.scrs), Pvalues = vf$vectors$pvals, R_squared = vf$vectors$r)
# select significance similarly to `plot(vf, p.max = 0.01)`
spp.scrs <- subset(spp.scrs, Pvalues < 0.05)
spp.scrs <- subset(spp.scrs, R_squared > 0.3)
spp.scrs
## NMDS1 NMDS2 Species
## Balanus crenatus -0.50827890 0.27368939 Balanus crenatus
## Balanus glandula -0.60729674 0.28365373 Balanus glandula
## Balanus rostratus -0.46182659 -0.34750774 Balanus rostratus
## Calanus marshallae -0.42349781 -0.45990307 Calanus marshallae
## Clytia gregaria -0.76274808 0.14975629 Clytia gregaria
## Evadne nordmanni -0.11418206 0.55069976 Evadne nordmanni
## Fabia subquadrata -0.66438218 -0.28723938 Fabia subquadrata
## Glebocarcinus oregonensis -0.55299598 -0.05862999 Glebocarcinus oregonensis
## Glycinde armigera 0.05061572 0.67325798 Glycinde armigera
## Lepidasthenia berkeleyae 0.03003786 0.75000000 Lepidasthenia berkeleyae
## Littorina plena 0.06057087 0.55486642 Littorina plena
## Mesochaetopterus taylori -0.15420520 0.58831226 Mesochaetopterus taylori
## Orthione mesoamericana 0.42397353 0.40960087 Orthione mesoamericana
## Pectinaria californiensis 0.27159658 0.55854802 Pectinaria californiensis
## Phoronopsis harmeri -0.12667266 0.56282010 Phoronopsis harmeri
## Placida dendritica 0.57894420 0.10991445 Placida dendritica
## Pseudocalanus mimus -0.40993805 -0.36884831 Pseudocalanus mimus
## Pseudocalanus moultoni -0.55814262 -0.51455855 Pseudocalanus moultoni
## Rathkea octopunctata -0.08248292 0.55103039 Rathkea octopunctata
## Scyra acutifrons -0.50647969 -0.26720700 Scyra acutifrons
## Pvalues R_squared
## Balanus crenatus 0.001 0.3401421
## Balanus glandula 0.001 0.4585557
## Balanus rostratus 0.001 0.3409506
## Calanus marshallae 0.001 0.3989408
## Clytia gregaria 0.001 0.6167014
## Evadne nordmanni 0.001 0.3228463
## Fabia subquadrata 0.001 0.5347400
## Glebocarcinus oregonensis 0.001 0.3156345
## Glycinde armigera 0.001 0.4652610
## Lepidasthenia berkeleyae 0.001 0.5750485
## Littorina plena 0.001 0.3179856
## Mesochaetopterus taylori 0.001 0.3775367
## Orthione mesoamericana 0.001 0.3547102
## Pectinaria californiensis 0.001 0.3937143
## Phoronopsis harmeri 0.001 0.3396921
## Placida dendritica 0.001 0.3544358
## Pseudocalanus mimus 0.001 0.3103844
## Pseudocalanus moultoni 0.001 0.5882064
## Rathkea octopunctata 0.001 0.3168551
## Scyra acutifrons 0.001 0.3346998
COI_Species_plot <- ggplot(COI.data.scores, aes(x = NMDS1, y = NMDS2)) +geom_point(aes(colour = station))+theme_bw()+theme(panel.grid.major = element_blank(),
panel.grid.minor = element_blank(), axis.line = element_line(colour = "black"))+
geom_segment(data = spp.scrs,size=0.4,
aes(x = 0, xend = NMDS1, y = 0, yend = NMDS2),
arrow = arrow(length = unit(0.2, "cm")), colour = "darkgrey")+
geom_polygon(data=hull.data,aes(x=NMDS1,y=NMDS2,fill=station,group=station),alpha=0.20, size=0.1, linetype=1, colour="black") +
annotate("text", label = "2D Stress: 0.209", x = 0.55, y = 0.8, size = 5, colour = "black")+
geom_label_repel(data = spp.scrs, aes(x = NMDS1, y = NMDS2, label = Species),
size = 3, fontface="bold", fill="white", label.padding = unit(0.15, "lines"), box.padding = unit(0.16, "lines"), label.size = 0.05)
COI_Species_plot
save plot
setwd("/Users/hailaschultz/Dropbox/Schultz_Dissertation/Data_Analysis/Schultz_dissertation-3/output")
ggsave(filename = "COI_NMDS_vert.png", plot = COI_Species_plot, height = 170, width = 200, units="mm", device='png', dpi=300)
Remove non-zooplanton phyla
unique(Cop16S_counts$Phylum)
## [1] "Arthropoda" NA "Mollusca" "Phoronida"
## [5] "Annelida" "Nemertea" "Cnidaria" "Chaetognatha"
## [9] "Echinodermata" "Nematoda" "Bryozoa" "Acanthocephala"
## [13] "Platyhelminthes"
levels_to_remove <- c('Bacillariophyta', 'Rhodophyta',NA,'Oomycota','Ascomycota','Onychophora','Cryptophyceae__p','Zoopagomycota','Phaeophyceae__p','Haptophyta','Basidiomycota','Chlorophyta','Dinophyceae__p','Discosea','Tubulinea','Dictyochophyceae__p','Bacteroidota','Blastocladiomycota','Pseudomonadota','Chrysophyceae__p','Malawimonadida__c__p','Prasinodermophyta','Chrysoparadoxa__f__o__c__p','Apusomonadida__c__p','Streptophyta','Pelagophyceae__p','Eustigmatophyceae__p')
# Remove those levels and drop them from the factor
Cop16S_counts <- droplevels(Cop16S_counts[!Cop16S_counts$Phylum %in% levels_to_remove,])
subset to copepods only
Cop16S_counts<-subset(Cop16S_counts,Class=="Hexanauplia")
remove non-species rows
Cop16S_comp<- Cop16S_counts[complete.cases(Cop16S_counts), ]
convert to presence-absence
Cop16S_comp_pa<-Cop16S_comp %>%
mutate(across(where(is.numeric), ~ifelse(.x >0, 1, 0)))
remove excess columns
Cop16S_comp_pa <- Cop16S_comp_pa[ -c(1:7) ]
wide to long format
Cop16S_long<-melt(Cop16S_comp_pa, id.vars=c("Species"))
add up multiple lines per station and convert back to presence-absence
Cop16S_long_sum <- Cop16S_long %>%
group_by(Species,variable) %>%
summarise(
value = sum(value))
Cop16S_long_sum<-Cop16S_long_sum %>%
mutate(across(where(is.numeric), ~ifelse(.x >0, 1, 0)))
split code string up to extract metadata
Cop16S_long_sum$variable<-str_split_fixed(Cop16S_long_sum$variable,"_",4)
remove samples of non-interest
unique(Cop16S_long_sum$variable[,3])
## [1] "P12" "P22" "P28" "P38" "P402" "P4" "P8" "CA042" "P105"
## [10] "P123" "P132" "P136" "P381" "P7" ""
unique(Cop16S_long_sum$variable[,2])
## [1] "1804" "1806" "1807" "1809" "1904" "1907"
## [7] "1909" "2007" "2009" "2010" "Control1" "Control2"
#remove excess stations
levels_to_remove <- c('CA042','',"P105","P123","P132","P136","P381","P7")
Cop16S_long_sum <- droplevels(Cop16S_long_sum[!Cop16S_long_sum$variable[,3] %in% levels_to_remove,])
split up replicate columns
unique(Cop16S_long_sum$variable[,4])
## [1] "Ob" "Ve" "ObB" "VeA" "ObA" "VeB"
Cop16S_long_sum <- Cop16S_long_sum %>%
mutate(
tow_type = substr(variable[,4], 1, 2),
replicate = substr(variable[,4], 3, nchar(variable[,4]))
)
split up year and month columns
Cop16S_long_sum <- Cop16S_long_sum %>%
mutate(
Year = substr(variable[,2], 1, 2),
Month = substr(variable[,2], 3, 4)
)
make station column
Cop16S_long_sum$station<-Cop16S_long_sum$variable[,3]
remove oblique samples
Cop16S_long_sum<-subset(Cop16S_long_sum,tow_type=="Ve")
merge replicates (and oblique and vertical tows)
colnames(Cop16S_long_sum)
## [1] "Species" "variable" "value" "tow_type" "replicate" "Year"
## [7] "Month" "station"
Cop16S_long_sum$sample<-paste(Cop16S_long_sum$Year,Cop16S_long_sum$Month,Cop16S_long_sum$station,Cop16S_long_sum$tow_type,sep="")
Cop16S_long_sum <- Cop16S_long_sum %>%
group_by(Year,Month,station,sample,Species) %>%
summarise(
value = sum(value))
#convert back to presence-absence
Cop16S_long_sum<-Cop16S_long_sum %>%
mutate(across(where(is.numeric), ~ifelse(.x >0, 1, 0)))
back to wide format
Cop16S_wide<-dcast(Cop16S_long_sum, sample+Year+Month+station ~ Species )
remove any columns with all zeroes
target_cols <- 6:ncol(Cop16S_wide)
non_zero_cols <- target_cols[colSums(Cop16S_wide[, target_cols]) != 0]
Cop16S_wide <- Cop16S_wide[, c(1:5, non_zero_cols)]
remove environmental data
Cop16S_wide_simple<-Cop16S_wide[ , 5:17]
Make environmental columns categorical
# Specify the columns to convert to factors
cols_to_factor <- c("station", "Year", "Month")
# Convert the specified columns to factors
Cop16S_wide <- Cop16S_wide %>%
mutate_at(vars(one_of(cols_to_factor)), as.factor)
dist<-vegdist(Cop16S_wide_simple, method='bray')
perm<-adonis2(dist~station*Month, data=Cop16S_wide, permutations = 999, method="bray")
perm
## Permutation test for adonis under reduced model
## Terms added sequentially (first to last)
## Permutation: free
## Number of permutations: 999
##
## adonis2(formula = dist ~ station * Month, data = Cop16S_wide, permutations = 999, method = "bray")
## Df SumOfSqs R2 F Pr(>F)
## station 6 1.13125 0.39052 5.1580 0.001 ***
## Month 3 0.08324 0.02873 0.7591 0.639
## station:Month 13 0.58570 0.20219 1.2326 0.250
## Residual 30 1.09659 0.37856
## Total 52 2.89677 1.00000
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
station comparisons
adonis.pair(vegdist(Cop16S_wide_simple),Cop16S_wide$station)
## combination SumsOfSqs MeanSqs F.Model R2 P.value
## 1 P12 <-> P22 0.538335929 0.538335929 17.5340328 0.55603522 0.000999001
## 2 P12 <-> P28 0.141285628 0.141285628 3.1565032 0.17384973 0.035964036
## 3 P12 <-> P38 0.118992076 0.118992076 2.9962973 0.18731193 0.071928072
## 4 P12 <-> P4 -0.006391537 -0.006391537 -0.1374440 -0.01158637 0.899100899
## 5 P12 <-> P402 0.111137212 0.111137212 3.7792507 0.21256524 0.041958042
## 6 P12 <-> P8 0.197097286 0.197097286 4.1277471 0.24099767 0.025974026
## 7 P22 <-> P28 0.152439967 0.152439967 4.3616517 0.22527271 0.014985015
## 8 P22 <-> P38 0.227501809 0.227501809 8.0124118 0.38131804 0.001998002
## 9 P22 <-> P4 0.324773608 0.324773608 9.4851552 0.44147483 0.000999001
## 10 P22 <-> P402 0.694613242 0.694613242 36.7590873 0.72418732 0.000999001
## 11 P22 <-> P8 0.117233227 0.117233227 3.2180413 0.19842355 0.045954046
## 12 P28 <-> P38 0.025918189 0.025918189 0.5941740 0.04071309 0.629370629
## 13 P28 <-> P4 0.088654455 0.088654455 1.7664252 0.11962443 0.201798202
## 14 P28 <-> P402 0.209140676 0.209140676 6.1983658 0.29239829 0.010989011
## 15 P28 <-> P8 0.036712341 0.036712341 0.7186825 0.04882791 0.572427572
## 16 P38 <-> P4 0.070983462 0.070983462 1.5700545 0.12490435 0.264735265
## 17 P38 <-> P402 0.109840051 0.109840051 4.0683141 0.23835477 0.076923077
## 18 P38 <-> P8 0.112343479 0.112343479 2.4072458 0.16708577 0.092907093
## 19 P4 <-> P402 0.160283255 0.160283255 4.8972545 0.28982546 0.018981019
## 20 P4 <-> P8 0.121364351 0.121364351 2.2183903 0.16782605 0.150849151
## 21 P402 <-> P8 0.349030149 0.349030149 9.9622618 0.43385368 0.000999001
## P.value.corrected
## 1 0.005244755
## 2 0.075524476
## 3 0.115384615
## 4 0.899100899
## 5 0.080101716
## 6 0.060606061
## 7 0.044955045
## 8 0.008391608
## 9 0.005244755
## 10 0.005244755
## 11 0.080419580
## 12 0.660839161
## 13 0.249280132
## 14 0.038461538
## 15 0.632683106
## 16 0.308857809
## 17 0.115384615
## 18 0.130069930
## 19 0.049825175
## 20 0.197989510
## 21 0.005244755
month comparisons
adonis.pair(vegdist(Cop16S_wide_simple),Cop16S_wide$Month)
## combination SumsOfSqs MeanSqs F.Model R2 P.value
## 1 04 <-> 07 0.046222070 0.046222070 0.7727720 0.02357970 0.5124875
## 2 04 <-> 09 0.037550255 0.037550255 0.6104254 0.02061522 0.5794206
## 3 04 <-> 10 0.047496660 0.047496660 0.6289373 0.04299268 0.5734266
## 4 07 <-> 09 0.006663864 0.006663864 0.1337796 0.00380772 0.8441558
## 5 07 <-> 10 0.038451029 0.038451029 0.7563428 0.03643912 0.4185814
## 6 09 <-> 10 0.026517774 0.026517774 0.5084233 0.02903878 0.7012987
## P.value.corrected
## 1 0.8415584
## 2 0.8415584
## 3 0.8415584
## 4 0.8441558
## 5 0.8415584
## 6 0.8415584
Cop16S_NMDSmodel <- metaMDS(Cop16S_wide_simple, distance = "bray",trymax = 999)
## Run 0 stress 0.1199203
## Run 1 stress 0.1199203
## ... Procrustes: rmse 9.019748e-06 max resid 3.607527e-05
## ... Similar to previous best
## Run 2 stress 0.1199203
## ... New best solution
## ... Procrustes: rmse 1.382083e-05 max resid 6.032683e-05
## ... Similar to previous best
## Run 3 stress 0.1674734
## Run 4 stress 0.120238
## ... Procrustes: rmse 0.006288509 max resid 0.03412902
## Run 5 stress 0.1199203
## ... Procrustes: rmse 2.001655e-05 max resid 7.344373e-05
## ... Similar to previous best
## Run 6 stress 0.1204568
## Run 7 stress 0.1335715
## Run 8 stress 0.1652751
## Run 9 stress 0.1296745
## Run 10 stress 0.1296745
## Run 11 stress 0.1204998
## Run 12 stress 0.1199203
## ... New best solution
## ... Procrustes: rmse 1.386062e-05 max resid 6.831871e-05
## ... Similar to previous best
## Run 13 stress 0.1632008
## Run 14 stress 0.120457
## Run 15 stress 0.1625208
## Run 16 stress 0.1204997
## Run 17 stress 0.1204569
## Run 18 stress 0.1832634
## Run 19 stress 0.120457
## Run 20 stress 0.1199203
## ... Procrustes: rmse 4.092937e-05 max resid 0.0001950439
## ... Similar to previous best
## *** Best solution repeated 2 times
Cop16S_NMDSmodel
##
## Call:
## metaMDS(comm = Cop16S_wide_simple, distance = "bray", trymax = 999)
##
## global Multidimensional Scaling using monoMDS
##
## Data: Cop16S_wide_simple
## Distance: bray
##
## Dimensions: 2
## Stress: 0.1199203
## Stress type 1, weak ties
## Best solution was repeated 2 times in 20 tries
## The best solution was from try 12 (random start)
## Scaling: centring, PC rotation, halfchange scaling
## Species: expanded scores based on 'Cop16S_wide_simple'
get datascores
Cop16S.data.scores<-scores(Cop16S_NMDSmodel,display="sites")
Cop16S.data.scores<- as.data.frame(Cop16S.data.scores)
add environmental variables back in
# Extract the first 5 columns from df1
first_5_columns <- Cop16S_wide[, 1:4]
# Combine the first 5 columns from df1 with df2
Cop16S.data.scores <- cbind(first_5_columns, Cop16S.data.scores)
plot datascores
xx <- ggplot(Cop16S.data.scores, aes(x = NMDS1, y = NMDS2,colour = station)) +geom_point(aes(colour = station))+theme_bw()+theme(panel.grid.major = element_blank(),
panel.grid.minor = element_blank(), axis.line = element_line(colour = "black"))
xx
extract hulls
unique(Cop16S.data.scores$station)
## [1] P12 P22 P28 P38 P402 P4 P8
## Levels: P12 P22 P28 P38 P4 P402 P8
P12 <- Cop16S.data.scores[Cop16S.data.scores$station == "P12", ][chull(Cop16S.data.scores[Cop16S.data.scores$station == "P12", c("NMDS1", "NMDS2")]), ]
P22 <- Cop16S.data.scores[Cop16S.data.scores$station == "P22", ][chull(Cop16S.data.scores[Cop16S.data.scores$station == "P22", c("NMDS1", "NMDS2")]), ]
P28 <- Cop16S.data.scores[Cop16S.data.scores$station == "P28", ][chull(Cop16S.data.scores[Cop16S.data.scores$station == "P28", c("NMDS1", "NMDS2")]), ]
P38 <- Cop16S.data.scores[Cop16S.data.scores$station == "P38", ][chull(Cop16S.data.scores[Cop16S.data.scores$station == "P38", c("NMDS1", "NMDS2")]), ]
P4 <- Cop16S.data.scores[Cop16S.data.scores$station == "P4", ][chull(Cop16S.data.scores[Cop16S.data.scores$station == "P4", c("NMDS1", "NMDS2")]), ]
P402 <- Cop16S.data.scores[Cop16S.data.scores$station == "P402", ][chull(Cop16S.data.scores[Cop16S.data.scores$station == "P402", c("NMDS1", "NMDS2")]), ]
P8 <- Cop16S.data.scores[Cop16S.data.scores$station == "P8", ][chull(Cop16S.data.scores[Cop16S.data.scores$station == "P8", c("NMDS1", "NMDS2")]), ]
get hull data
hull.data <- rbind(P12,P22,P28,P38,P402,P4,P8) #combine grp.a and grp.b
hull.data
## sample Year Month station NMDS1 NMDS2
## 39 2007P12Ve 20 07 P12 0.04971215 -0.18608338
## 45 2009P12Ve 20 09 P12 -0.07289592 -0.34000143
## 1 1804P12Ve 18 04 P12 -0.28624816 -0.55408526
## 18 1904P12Ve 19 04 P12 -0.59459396 -0.27292947
## 8 1807P12Ve 18 07 P12 -0.55469273 0.13250484
## 25 1907P12Ve 19 07 P12 -0.12800216 0.11946044
## 15 1809P12Ve 18 09 P12 0.06703442 0.08579329
## 19 1904P22Ve 19 04 P22 0.48450682 -0.12812982
## 40 2007P22Ve 20 07 P22 0.35890107 -0.29764932
## 33 1909P22Ve 19 09 P22 0.33100057 -0.04567245
## 26 1907P22Ve 19 07 P22 0.30977544 0.35655185
## 52 2010P22Ve 20 10 P22 0.58781768 0.20018146
## 3 1804P28Ve 18 04 P28 0.60413885 -0.17121253
## 41 2007P28Ve 20 07 P28 0.35890107 -0.29764932
## 20 1904P28Ve 19 04 P28 0.04971215 -0.18608338
## 47 2009P28Ve 20 09 P28 -0.12800216 0.11946044
## 16 1809P28Ve 18 09 P28 -0.13563631 0.47990797
## 34 1909P28Ve 19 09 P28 0.28146479 0.14676281
## 28 1907P38Ve 19 07 P38 0.27732822 -0.38781027
## 48 2009P38Ve 20 09 P38 -0.55469239 0.13250468
## 4 1804P38Ve 18 04 P38 0.28146479 0.14676281
## 29 1907P402Ve 19 07 P402 -0.12800216 0.11946044
## 49 2009P402Ve 20 09 P402 -0.12800216 0.11946044
## 36 1909P402Ve 19 09 P402 -0.55469239 0.13250468
## 17 1809P402Ve 18 09 P402 -0.55469239 0.13250468
## 22 1904P402Ve 19 04 P402 -0.55469239 0.13250468
## 5 1804P402Ve 18 04 P402 -0.55469273 0.13250484
## 43 2007P402Ve 20 07 P402 -0.22561857 0.26527896
## 50 2009P4Ve 20 09 P4 0.11575897 -0.35840105
## 13 1807P4Ve 18 07 P4 -0.40246722 -0.41803649
## 23 1904P4Ve 19 04 P4 -0.55469239 0.13250468
## 37 1909P4Ve 19 09 P4 0.23964431 -0.05757636
## 24 1904P8Ve 19 04 P8 0.48450682 -0.12812982
## 14 1807P8Ve 18 07 P8 -0.28624816 -0.55408526
## 38 1909P8Ve 19 09 P8 0.17190683 0.43726863
## 7 1804P8Ve 18 04 P8 0.63424515 0.01508721
vf <- envfit(Cop16S_NMDSmodel, Cop16S_wide, perm = 999)
spp.scrs <- as.data.frame(scores(vf, display = "vectors"))
spp.scrs <- cbind(spp.scrs, Species = rownames(spp.scrs))
####for ggplot
arrow_factor <- ordiArrowMul(vf)
spp.scrs <- as.data.frame(scores(vf, display = "vectors")) * arrow_factor
spp.scrs <- cbind(spp.scrs, Species = rownames(spp.scrs), Pvalues = vf$vectors$pvals, R_squared = vf$vectors$r)
# select significance similarly to `plot(vf, p.max = 0.01)`
spp.scrs <- subset(spp.scrs, Pvalues < 0.05)
spp.scrs <- subset(spp.scrs, R_squared > 0.3)
spp.scrs
## NMDS1 NMDS2 Species Pvalues R_squared
## Acartia longiremis 0.6746035 0.51226790 Acartia longiremis 0.001 0.6535278
## Calanus glacialis 0.5166403 -0.32274783 Calanus glacialis 0.001 0.3379937
## Calanus marshallae 0.7500000 0.11618120 Calanus marshallae 0.001 0.5246361
## Candacia columbiae -0.2209984 -0.62950015 Candacia columbiae 0.001 0.4054201
## Eucalanus bungii 0.3591065 -0.81006118 Eucalanus bungii 0.001 0.7151439
## Metridia lucens 0.6711172 -0.09825249 Metridia lucens 0.001 0.4190289
Cop16S_Species_plot <- ggplot(Cop16S.data.scores, aes(x = NMDS1, y = NMDS2)) +geom_point(aes(colour = station))+theme_bw()+theme(panel.grid.major = element_blank(),
panel.grid.minor = element_blank(), axis.line = element_line(colour = "black"))+
geom_segment(data = spp.scrs,size=0.4,
aes(x = 0, xend = NMDS1, y = 0, yend = NMDS2),
arrow = arrow(length = unit(0.2, "cm")), colour = "darkgrey")+
geom_polygon(data=hull.data,aes(x=NMDS1,y=NMDS2,fill=station,group=station),alpha=0.20, size=0.1, linetype=1, colour="black") +
annotate("text", label = "2D Stress: 0.12", x = 0.55, y = 0.8, size = 5, colour = "black")+
geom_label_repel(data = spp.scrs, aes(x = NMDS1, y = NMDS2, label = Species),
size = 3, fontface="bold", fill="white", label.padding = unit(0.15, "lines"), box.padding = unit(0.16, "lines"), label.size = 0.05)
Cop16S_Species_plot
save plot
setwd("/Users/hailaschultz/Dropbox/Schultz_Dissertation/Data_Analysis/Schultz_dissertation-3/output")
ggsave(filename = "Cop16S_NMDS_vert.png", plot = Cop16S_Species_plot, height = 170, width = 200, units="mm", device='png', dpi=300)
Remove non-zooplanton phyla
unique(Mol16S_counts$Phylum)
## [1] "Arthropoda" "Nemertea" "Mollusca"
## [4] "Chordata" "Annelida" "Cnidaria"
## [7] "Echinodermata" NA "Rotifera"
## [10] "Chlorophyta" "Bacillariophyta" "Bryozoa"
## [13] "Gastrotricha" "Phoronida" "Entoprocta"
## [16] "Hemichordata" "Bacteroidota" "Platyhelminthes"
## [19] "Choanoflagellata__p"
levels_to_remove <- c('Bacillariophyta', 'Rhodophyta',NA,'Oomycota','Ascomycota','Onychophora','Cryptophyceae__p','Zoopagomycota','Phaeophyceae__p','Haptophyta','Basidiomycota','Chlorophyta','Dinophyceae__p','Discosea','Tubulinea','Dictyochophyceae__p','Bacteroidota','Blastocladiomycota','Pseudomonadota','Chrysophyceae__p','Malawimonadida__c__p','Prasinodermophyta','Chrysoparadoxa__f__o__c__p','Apusomonadida__c__p','Streptophyta','Pelagophyceae__p','Eustigmatophyceae__p')
# Remove those levels and drop them from the factor
Mol16S_counts <- droplevels(Mol16S_counts[!Mol16S_counts$Phylum %in% levels_to_remove,])
subset to copepods only
Mol16S_counts<-subset(Mol16S_counts,Phylum=="Mollusca")
remove non-species rows
Mol16S_comp<- Mol16S_counts[complete.cases(Mol16S_counts), ]
convert to presence-absence
Mol16S_comp_pa<-Mol16S_comp %>%
mutate(across(where(is.numeric), ~ifelse(.x >0, 1, 0)))
remove excess columns
Mol16S_comp_pa <- Mol16S_comp_pa[ -c(1:7) ]
wide to long format
Mol16S_long<-melt(Mol16S_comp_pa, id.vars=c("Species"))
add up multiple lines per station and convert back to presence-absence
Mol16S_long_sum <- Mol16S_long %>%
group_by(Species,variable) %>%
summarise(
value = sum(value))
Mol16S_long_sum<-Mol16S_long_sum %>%
mutate(across(where(is.numeric), ~ifelse(.x >0, 1, 0)))
split code string up to extract metadata
Mol16S_long_sum$variable<-str_split_fixed(Mol16S_long_sum$variable,"_",4)
remove samples of non-interest
unique(Mol16S_long_sum$variable[,3])
## [1] "P12" "P22" "P28" "P38" "P402" "P4" "P8" "CA042" "P105"
## [10] "P123" "P132" "P136" "P381" "P7" ""
unique(Mol16S_long_sum$variable[,2])
## [1] "1804" "1806" "1807" "1809" "1904" "1907"
## [7] "1909" "2007" "2009" "2010" "Control2"
#remove excess stations
levels_to_remove <- c('CA042','',"P105","P123","P132","P136","P381","P7")
Mol16S_long_sum <- droplevels(Mol16S_long_sum[!Mol16S_long_sum$variable[,3] %in% levels_to_remove,])
split up replicate columns
unique(Mol16S_long_sum$variable[,4])
## [1] "Ob" "VeA" "Ve" "ObB" "ObA" "VeB"
Mol16S_long_sum <- Mol16S_long_sum %>%
mutate(
tow_type = substr(variable[,4], 1, 2),
replicate = substr(variable[,4], 3, nchar(variable[,4]))
)
split up year and month columns
Mol16S_long_sum <- Mol16S_long_sum %>%
mutate(
Year = substr(variable[,2], 1, 2),
Month = substr(variable[,2], 3, 4)
)
make station column
Mol16S_long_sum$station<-Mol16S_long_sum$variable[,3]
remove oblique samples
Mol16S_long_sum<-subset(Mol16S_long_sum,tow_type=="Ve")
merge replicates
colnames(Mol16S_long_sum)
## [1] "Species" "variable" "value" "tow_type" "replicate" "Year"
## [7] "Month" "station"
Mol16S_long_sum$sample<-paste(Mol16S_long_sum$Year,Mol16S_long_sum$Month,Mol16S_long_sum$station,Mol16S_long_sum$tow_type,sep="")
Mol16S_long_sum <- Mol16S_long_sum %>%
group_by(Year,Month,station,sample,Species) %>%
summarise(
value = sum(value))
#convert back to presence-absence
Mol16S_long_sum<-Mol16S_long_sum %>%
mutate(across(where(is.numeric), ~ifelse(.x >0, 1, 0)))
back to wide format
Mol16S_wide<-dcast(Mol16S_long_sum, sample+Year+Month+station ~ Species )
remove any columns with all zeroes
target_cols <- 6:ncol(Mol16S_wide)
non_zero_cols <- target_cols[colSums(Mol16S_wide[, target_cols]) != 0]
Mol16S_wide <- Mol16S_wide[, c(1:5, non_zero_cols)]
remove environmental data
Mol16S_wide_simple<-Mol16S_wide[ , 5:44]
Make environmental columns categorical
# Specify the columns to convert to factors
cols_to_factor <- c("station", "Year", "Month")
# Convert the specified columns to factors
Mol16S_wide <- Mol16S_wide %>%
mutate_at(vars(one_of(cols_to_factor)), as.factor)
dist<-vegdist(Mol16S_wide_simple, method='bray')
perm<-adonis2(dist~station*Month, data=Mol16S_wide, permutations = 999, method="bray")
perm
## Permutation test for adonis under reduced model
## Terms added sequentially (first to last)
## Permutation: free
## Number of permutations: 999
##
## adonis2(formula = dist ~ station * Month, data = Mol16S_wide, permutations = 999, method = "bray")
## Df SumOfSqs R2 F Pr(>F)
## station 6 3.0124 0.22524 3.0094 0.001 ***
## Month 3 1.9787 0.14795 3.9534 0.001 ***
## station:Month 13 2.5439 0.19021 1.1729 0.182
## Residual 35 5.8392 0.43660
## Total 57 13.3742 1.00000
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
station comparisons
adonis.pair(vegdist(Mol16S_wide_simple),Mol16S_wide$station)
## combination SumsOfSqs MeanSqs F.Model R2 P.value
## 1 P12 <-> P22 0.9127341 0.9127341 3.9254348 0.20741583 0.005994006
## 2 P12 <-> P28 0.6181994 0.6181994 3.1385120 0.17303029 0.021978022
## 3 P12 <-> P38 0.3291027 0.3291027 1.3796029 0.08970341 0.235764236
## 4 P12 <-> P4 0.9157360 0.9157360 3.4738704 0.19880372 0.006993007
## 5 P12 <-> P402 0.1928326 0.1928326 0.7679469 0.05200093 0.570429570
## 6 P12 <-> P8 0.3747440 0.3747440 1.6818022 0.10724547 0.076923077
## 7 P22 <-> P28 0.3390156 0.3390156 2.1321250 0.11758826 0.047952048
## 8 P22 <-> P38 0.4312227 0.4312227 2.2082574 0.12832545 0.049950050
## 9 P22 <-> P4 0.7534688 0.7534688 3.4457706 0.18680546 0.003996004
## 10 P22 <-> P402 0.7438819 0.7438819 3.5937518 0.19327739 0.011988012
## 11 P22 <-> P8 0.5059327 0.5059327 2.8014027 0.15736977 0.012987013
## 12 P28 <-> P38 0.3734112 0.3734112 2.3377428 0.13483548 0.061938062
## 13 P28 <-> P4 0.6429326 0.6429326 3.5110104 0.18967146 0.007992008
## 14 P28 <-> P402 0.4806031 0.4806031 2.8032117 0.15745539 0.027972028
## 15 P28 <-> P8 0.2495594 0.2495594 1.7204594 0.10289546 0.103896104
## 16 P38 <-> P4 0.8554226 0.8554226 3.8238661 0.21453629 0.001998002
## 17 P38 <-> P402 0.2076131 0.2076131 0.9830124 0.06560846 0.438561439
## 18 P38 <-> P8 0.3155158 0.3155158 1.7248630 0.10969018 0.114885115
## 19 P4 <-> P402 0.6522328 0.6522328 2.7606706 0.16471122 0.019980020
## 20 P4 <-> P8 0.3937107 0.3937107 1.8930196 0.11911013 0.053946054
## 21 P402 <-> P8 0.2327987 0.2327987 1.1909391 0.07839799 0.303696304
## P.value.corrected
## 1 0.03356643
## 2 0.05128205
## 3 0.27505828
## 4 0.03356643
## 5 0.57042957
## 6 0.10769231
## 7 0.08714363
## 8 0.08714363
## 9 0.03356643
## 10 0.03896104
## 11 0.03896104
## 12 0.09290709
## 13 0.03356643
## 14 0.05874126
## 15 0.13636364
## 16 0.03356643
## 17 0.46048951
## 18 0.14191691
## 19 0.05128205
## 20 0.08714363
## 21 0.33566434
month comparisons
adonis.pair(vegdist(Mol16S_wide_simple),Mol16S_wide$Month)
## combination SumsOfSqs MeanSqs F.Model R2 P.value
## 1 04 <-> 07 0.9086773 0.9086773 4.871109 0.12862335 0.000999001
## 2 04 <-> 09 0.8670457 0.8670457 3.951357 0.10693401 0.000999001
## 3 04 <-> 10 0.4136049 0.4136049 2.500098 0.15152021 0.015984016
## 4 07 <-> 09 0.7584481 0.7584481 3.336961 0.07700034 0.002997003
## 5 07 <-> 10 0.3030749 0.3030749 1.527597 0.06781004 0.189810190
## 6 09 <-> 10 0.2812382 0.2812382 1.124606 0.05083055 0.312687313
## P.value.corrected
## 1 0.002997003
## 2 0.002997003
## 3 0.023976024
## 4 0.005994006
## 5 0.227772228
## 6 0.312687313
Mol16S_NMDSmodel <- metaMDS(Mol16S_wide_simple, distance = "bray",trymax = 999)
## Run 0 stress 0.1907707
## Run 1 stress 0.2026659
## Run 2 stress 0.2085577
## Run 3 stress 0.1931091
## Run 4 stress 0.1903017
## ... New best solution
## ... Procrustes: rmse 0.01036142 max resid 0.06077119
## Run 5 stress 0.1946583
## Run 6 stress 0.2014332
## Run 7 stress 0.1933827
## Run 8 stress 0.209636
## Run 9 stress 0.1950175
## Run 10 stress 0.1903021
## ... Procrustes: rmse 0.0003483263 max resid 0.002075324
## ... Similar to previous best
## Run 11 stress 0.2052475
## Run 12 stress 0.2047116
## Run 13 stress 0.2066229
## Run 14 stress 0.1938868
## Run 15 stress 0.1959781
## Run 16 stress 0.193872
## Run 17 stress 0.1904242
## ... Procrustes: rmse 0.003925854 max resid 0.02248426
## Run 18 stress 0.1979184
## Run 19 stress 0.1905763
## ... Procrustes: rmse 0.01210107 max resid 0.08235916
## Run 20 stress 0.1934097
## *** Best solution repeated 1 times
Mol16S_NMDSmodel
##
## Call:
## metaMDS(comm = Mol16S_wide_simple, distance = "bray", trymax = 999)
##
## global Multidimensional Scaling using monoMDS
##
## Data: Mol16S_wide_simple
## Distance: bray
##
## Dimensions: 2
## Stress: 0.1903017
## Stress type 1, weak ties
## Best solution was repeated 1 time in 20 tries
## The best solution was from try 4 (random start)
## Scaling: centring, PC rotation, halfchange scaling
## Species: expanded scores based on 'Mol16S_wide_simple'
get datascores
Mol16S.data.scores<-scores(Mol16S_NMDSmodel,display="sites")
Mol16S.data.scores<- as.data.frame(Mol16S.data.scores)
add environmental variables back in
# Extract the first 5 columns from df1
first_5_columns <- Mol16S_wide[, 1:4]
# Combine the first 5 columns from df1 with df2
Mol16S.data.scores <- cbind(first_5_columns, Mol16S.data.scores)
plot datascores
xx <- ggplot(Mol16S.data.scores, aes(x = NMDS1, y = NMDS2,colour = station)) +geom_point(aes(colour = station))+theme_bw()+theme(panel.grid.major = element_blank(),
panel.grid.minor = element_blank(), axis.line = element_line(colour = "black"))
xx
extract hulls
unique(Mol16S.data.scores$station)
## [1] P12 P22 P28 P38 P402 P4 P8
## Levels: P12 P22 P28 P38 P4 P402 P8
P12 <- Mol16S.data.scores[Mol16S.data.scores$station == "P12", ][chull(Mol16S.data.scores[Mol16S.data.scores$station == "P12", c("NMDS1", "NMDS2")]), ]
P22 <- Mol16S.data.scores[Mol16S.data.scores$station == "P22", ][chull(Mol16S.data.scores[Mol16S.data.scores$station == "P22", c("NMDS1", "NMDS2")]), ]
P28 <- Mol16S.data.scores[Mol16S.data.scores$station == "P28", ][chull(Mol16S.data.scores[Mol16S.data.scores$station == "P28", c("NMDS1", "NMDS2")]), ]
P38 <- Mol16S.data.scores[Mol16S.data.scores$station == "P38", ][chull(Mol16S.data.scores[Mol16S.data.scores$station == "P38", c("NMDS1", "NMDS2")]), ]
P4 <- Mol16S.data.scores[Mol16S.data.scores$station == "P4", ][chull(Mol16S.data.scores[Mol16S.data.scores$station == "P4", c("NMDS1", "NMDS2")]), ]
P402 <- Mol16S.data.scores[Mol16S.data.scores$station == "P402", ][chull(Mol16S.data.scores[Mol16S.data.scores$station == "P402", c("NMDS1", "NMDS2")]), ]
P8 <- Mol16S.data.scores[Mol16S.data.scores$station == "P8", ][chull(Mol16S.data.scores[Mol16S.data.scores$station == "P8", c("NMDS1", "NMDS2")]), ]
get hull data
hull.data <- rbind(P12,P22,P28,P38,P402,P4,P8) #combine grp.a and grp.b
hull.data
## sample Year Month station NMDS1 NMDS2
## 15 1809P12Ve 18 09 P12 0.8869696338 -0.009059184
## 1 1804P12Ve 18 04 P12 -0.1015761368 -0.049928461
## 29 1907P12Ve 19 07 P12 -1.7474330671 0.213565877
## 50 2009P12Ve 20 09 P12 -0.4207546361 0.546882995
## 2 1804P22Ve 18 04 P22 0.9131823060 -0.555700738
## 57 2010P22Ve 20 10 P22 -0.2157024321 -0.602882528
## 51 2009P22Ve 20 09 P22 -0.5589272005 -0.397855519
## 9 1807P22Ve 18 07 P22 0.4796764640 0.383143497
## 23 1904P22Ve 19 04 P22 0.8233778583 -0.226441762
## 3 1804P28Ve 18 04 P28 0.6594245319 -0.243991447
## 45 2007P28Ve 20 07 P28 0.2303106271 -0.204647915
## 58 2010P28Ve 20 10 P28 -0.2067690957 -0.124748597
## 31 1907P28Ve 19 07 P28 -0.0866650527 0.070354547
## 10 1807P28Ve 18 07 P28 0.4431095588 0.273594744
## 18 1809P38Ve 18 09 P38 1.0109704349 0.076094869
## 39 1909P38Ve 19 09 P38 0.4141064497 0.085944690
## 11 1807P38Ve 18 07 P38 -0.1834928053 0.162767768
## 46 2007P38Ve 20 07 P38 -0.4437529153 0.199989466
## 32 1907P38Ve 19 07 P38 0.0301794527 0.813212245
## 19 1809P402Ve 18 09 P402 0.8373239097 0.019536433
## 33 1907P402Ve 19 07 P402 -0.5239615111 -0.014675702
## 54 2009P402Ve 20 09 P402 -0.5678334804 0.405379184
## 40 1909P402Ve 19 09 P402 -0.5522985851 0.545740211
## 26 1904P402Ve 19 04 P402 0.1487360678 0.515145684
## 20 1809P4Ve 18 09 P4 -0.6374371719 -1.703606477
## 41 1909P4Ve 19 09 P4 -1.1244775293 -0.600108637
## 27 1904P4Ve 19 04 P4 -0.0511490462 -0.130688490
## 6 1804P4Ve 18 04 P4 0.6347199515 -0.202262938
## 28 1904P8Ve 19 04 P8 0.0113308913 -0.452013625
## 21 1809P8Ve 18 09 P8 -0.6655688596 -0.292424160
## 35 1907P8Ve 19 07 P8 -0.0001597884 0.284281929
## 49 2007P8Ve 20 07 P8 0.2472504357 0.482700638
vf <- envfit(Mol16S_NMDSmodel, Mol16S_wide, perm = 999)
spp.scrs <- as.data.frame(scores(vf, display = "vectors"))
spp.scrs <- cbind(spp.scrs, Species = rownames(spp.scrs))
####for ggplot
arrow_factor <- ordiArrowMul(vf)
spp.scrs <- as.data.frame(scores(vf, display = "vectors")) * arrow_factor
spp.scrs <- cbind(spp.scrs, Species = rownames(spp.scrs), Pvalues = vf$vectors$pvals, R_squared = vf$vectors$r)
# select significance similarly to `plot(vf, p.max = 0.01)`
spp.scrs <- subset(spp.scrs, Pvalues < 0.05)
spp.scrs <- subset(spp.scrs, R_squared > 0.3)
spp.scrs
## NMDS1 NMDS2 Species Pvalues
## Clinocardium nuttallii -0.2038409 -0.6953735 Clinocardium nuttallii 0.001
## Lacuna vincta 0.7500000 -0.1715897 Lacuna vincta 0.001
## Littorina plena -0.2254875 0.6591345 Littorina plena 0.001
## Olea hansineensis -0.5979556 0.1074788 Olea hansineensis 0.001
## R_squared
## Clinocardium nuttallii 0.4884096
## Lacuna vincta 0.5505869
## Littorina plena 0.4513971
## Olea hansineensis 0.3433152
Mol16S_Species_plot <- ggplot(Mol16S.data.scores, aes(x = NMDS1, y = NMDS2)) +geom_point(aes(colour = station))+theme_bw()+theme(panel.grid.major = element_blank(),
panel.grid.minor = element_blank(), axis.line = element_line(colour = "black"))+
geom_segment(data = spp.scrs,size=0.4,
aes(x = 0, xend = NMDS1, y = 0, yend = NMDS2),
arrow = arrow(length = unit(0.2, "cm")), colour = "darkgrey")+
geom_polygon(data=hull.data,aes(x=NMDS1,y=NMDS2,fill=station,group=station),alpha=0.20, size=0.1, linetype=1, colour="black") +
annotate("text", label = "2D Stress: 0.19", x = -0.55, y = 0.8, size = 5, colour = "black")+
geom_label_repel(data = spp.scrs, aes(x = NMDS1, y = NMDS2, label = Species),
size = 3, fontface="bold", fill="white", label.padding = unit(0.15, "lines"), box.padding = unit(0.16, "lines"), label.size = 0.05)
Mol16S_Species_plot
save plot
setwd("/Users/hailaschultz/Dropbox/Schultz_Dissertation/Data_Analysis/Schultz_dissertation-3/output")
ggsave(filename = "Mol16S_NMDS_vert.png", plot = Mol16S_Species_plot, height = 170, width = 200, units="mm", device='png', dpi=300)
Remove non-zooplanton phyla
unique(M28S_counts$Phylum)
## [1] "Arthropoda" NA "Cnidaria"
## [4] "Dinophyceae__p" "Raphidophyceae__p" "Bacillariophyta"
## [7] "Chordata" "Ctenophora" "Chytridiomycota"
## [10] "Annelida" "Streptophyta" "Acantharea__p"
levels_to_remove <- c('Bacillariophyta', 'Rhodophyta',NA,'Oomycota','Ascomycota','Onychophora','Cryptophyceae__p','Zoopagomycota','Phaeophyceae__p','Haptophyta','Basidiomycota','Chlorophyta','Dinophyceae__p','Discosea','Tubulinea','Dictyochophyceae__p','Bacteroidota','Blastocladiomycota','Pseudomonadota','Chrysophyceae__p','Malawimonadida__c__p','Prasinodermophyta','Chrysoparadoxa__f__o__c__p','Apusomonadida__c__p','Streptophyta','Pelagophyceae__p','Eustigmatophyceae__p','Raphidophyceae__p','Chytridiomycota','Acantharea__p')
# Remove those levels and drop them from the factor
M28S_counts <- droplevels(M28S_counts[!M28S_counts$Phylum %in% levels_to_remove,])
remove non-species rows
M28S_comp<- M28S_counts[complete.cases(M28S_counts), ]
convert to presence-absence
M28S_comp_pa<-M28S_comp %>%
mutate(across(where(is.numeric), ~ifelse(.x >0, 1, 0)))
remove excess columns
M28S_comp_pa <- M28S_comp_pa[ -c(1:7) ]
wide to long format
M28S_long<-melt(M28S_comp_pa, id.vars=c("Species"))
add up multiple lines per station and convert back to presence-absence
M28S_long_sum <- M28S_long %>%
group_by(Species,variable) %>%
summarise(
value = sum(value))
M28S_long_sum<-M28S_long_sum %>%
mutate(across(where(is.numeric), ~ifelse(.x >0, 1, 0)))
split code string up to extract metadata
M28S_long_sum$variable<-str_split_fixed(M28S_long_sum$variable,"_",4)
remove samples of non-interest
unique(M28S_long_sum$variable[,3])
## [1] "P12" "P22" "P28" "P38" "P402" "P4" "P8" "CA042" "P105"
## [10] "P123" "P132" "P136" "P381" "P7" ""
unique(M28S_long_sum$variable[,2])
## [1] "1804" "1806" "1807" "1809" "1904" "1907"
## [7] "1909" "2007" "2009" "2010" "Control1" "Control2"
#remove excess stations
levels_to_remove <- c('CA042','',"P105","P123","P132","P136","P381","P7")
M28S_long_sum <- droplevels(M28S_long_sum[!M28S_long_sum$variable[,3] %in% levels_to_remove,])
split up replicate columns
unique(M28S_long_sum$variable[,4])
## [1] "Ob" "Ve" "ObB" "VeA" "ObA" "VeB"
M28S_long_sum <- M28S_long_sum %>%
mutate(
tow_type = substr(variable[,4], 1, 2),
replicate = substr(variable[,4], 3, nchar(variable[,4]))
)
split up year and month columns
M28S_long_sum <- M28S_long_sum %>%
mutate(
Year = substr(variable[,2], 1, 2),
Month = substr(variable[,2], 3, 4)
)
make station column
M28S_long_sum$station<-M28S_long_sum$variable[,3]
remove oblique samples
M28S_long_sum<-subset(M28S_long_sum,tow_type=="Ve")
merge replicates (and oblique and vertical tows)
colnames(M28S_long_sum)
## [1] "Species" "variable" "value" "tow_type" "replicate" "Year"
## [7] "Month" "station"
M28S_long_sum$sample<-paste(M28S_long_sum$Year,M28S_long_sum$Month,M28S_long_sum$station,M28S_long_sum$tow_type,sep="")
M28S_long_sum <- M28S_long_sum %>%
group_by(Year,Month,station,sample,Species) %>%
summarise(
value = sum(value))
#convert back to presence-absence
M28S_long_sum<-M28S_long_sum %>%
mutate(across(where(is.numeric), ~ifelse(.x >0, 1, 0)))
back to wide format
M28S_wide<-dcast(M28S_long_sum, sample+Year+Month+station ~ Species )
remove any columns with all zeroes
target_cols <- 6:ncol(M28S_wide)
non_zero_cols <- target_cols[colSums(M28S_wide[, target_cols]) != 0]
M28S_wide <- M28S_wide[, c(1:5, non_zero_cols)]
remove environmental data
M28S_wide_simple<-M28S_wide[ , 5:31]
Make environmental columns categorical
# Specify the columns to convert to factors
cols_to_factor <- c("station", "Year", "Month")
# Convert the specified columns to factors
M28S_wide <- M28S_wide %>%
mutate_at(vars(one_of(cols_to_factor)), as.factor)
dist<-vegdist(M28S_wide_simple, method='bray')
perm<-adonis2(dist~station*Month, data=M28S_wide, permutations = 999, method="bray")
perm
## Permutation test for adonis under reduced model
## Terms added sequentially (first to last)
## Permutation: free
## Number of permutations: 999
##
## adonis2(formula = dist ~ station * Month, data = M28S_wide, permutations = 999, method = "bray")
## Df SumOfSqs R2 F Pr(>F)
## station 6 2.0558 0.38585 6.7331 0.001 ***
## Month 3 0.3721 0.06984 2.4375 0.012 *
## station:Month 13 1.1189 0.21001 1.6914 0.007 **
## Residual 35 1.7811 0.33429
## Total 57 5.3280 1.00000
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
station comparisons
adonis.pair(vegdist(M28S_wide_simple),M28S_wide$station)
## combination SumsOfSqs MeanSqs F.Model R2 P.value
## 1 P12 <-> P22 0.65919123 0.65919123 11.9272965 0.44294445 0.000999001
## 2 P12 <-> P28 0.35693732 0.35693732 9.9172241 0.39800678 0.000999001
## 3 P12 <-> P38 0.19821347 0.19821347 3.3179437 0.19158993 0.019980020
## 4 P12 <-> P4 0.16112868 0.16112868 2.6487358 0.15909531 0.032967033
## 5 P12 <-> P402 0.21653871 0.21653871 4.2195211 0.23159341 0.004995005
## 6 P12 <-> P8 0.44181325 0.44181325 5.9746725 0.29911241 0.000999001
## 7 P22 <-> P28 0.49852694 0.49852694 10.5856321 0.39817117 0.000999001
## 8 P22 <-> P38 0.44398844 0.44398844 6.3427042 0.29718372 0.000999001
## 9 P22 <-> P4 0.55468753 0.55468753 7.8103577 0.34240400 0.000999001
## 10 P22 <-> P402 0.84600075 0.84600075 13.6144834 0.47578994 0.000999001
## 11 P22 <-> P8 0.16359089 0.16359089 1.9648076 0.11581667 0.113886114
## 12 P28 <-> P38 0.04697845 0.04697845 0.9261569 0.05815319 0.448551449
## 13 P28 <-> P4 0.20662937 0.20662937 3.9933253 0.21024887 0.003996004
## 14 P28 <-> P402 0.38121330 0.38121330 8.8935604 0.37221579 0.001998002
## 15 P28 <-> P8 0.17272475 0.17272475 2.6994685 0.15251693 0.044955045
## 16 P38 <-> P4 0.19407334 0.19407334 2.5330313 0.15321034 0.045954046
## 17 P38 <-> P402 0.31652900 0.31652900 4.7170584 0.25201922 0.000999001
## 18 P38 <-> P8 0.20728848 0.20728848 2.3100733 0.14163476 0.064935065
## 19 P4 <-> P402 0.21557087 0.21557087 3.1610723 0.18420016 0.018981019
## 20 P4 <-> P8 0.20314164 0.20314164 2.2366301 0.13775211 0.097902098
## 21 P402 <-> P8 0.66584034 0.66584034 8.1888215 0.36905166 0.000999001
## P.value.corrected
## 1 0.002331002
## 2 0.002331002
## 3 0.029970030
## 4 0.046153846
## 5 0.008741259
## 6 0.002331002
## 7 0.002331002
## 8 0.002331002
## 9 0.002331002
## 10 0.002331002
## 11 0.119580420
## 12 0.448551449
## 13 0.007628735
## 14 0.004195804
## 15 0.056766763
## 16 0.056766763
## 17 0.002331002
## 18 0.075757576
## 19 0.029970030
## 20 0.108207582
## 21 0.002331002
month comparisons
adonis.pair(vegdist(M28S_wide_simple),M28S_wide$Month)
## combination SumsOfSqs MeanSqs F.Model R2 P.value
## 1 04 <-> 07 0.24487359 0.24487359 2.9794605 0.082810039 0.04095904
## 2 04 <-> 09 0.26545398 0.26545398 2.7811955 0.077727853 0.03196803
## 3 04 <-> 10 0.08921457 0.08921457 1.1485010 0.075816149 0.28271728
## 4 07 <-> 09 0.03595778 0.03595778 0.3757829 0.009307136 0.83816184
## 5 07 <-> 10 0.08535235 0.08535235 1.0153537 0.046120255 0.40059940
## 6 09 <-> 10 0.05186136 0.05186136 0.4944032 0.023001485 0.81318681
## P.value.corrected
## 1 0.1228771
## 2 0.1228771
## 3 0.5654346
## 4 0.8381618
## 5 0.6008991
## 6 0.8381618
M28S_NMDSmodel <- metaMDS(M28S_wide_simple, distance = "bray",trymax = 999)
## Run 0 stress 0.1893752
## Run 1 stress 0.1891942
## ... New best solution
## ... Procrustes: rmse 0.007595203 max resid 0.03154682
## Run 2 stress 0.2156529
## Run 3 stress 0.1986823
## Run 4 stress 0.1885547
## ... New best solution
## ... Procrustes: rmse 0.03319748 max resid 0.2165163
## Run 5 stress 0.188067
## ... New best solution
## ... Procrustes: rmse 0.01412458 max resid 0.09721519
## Run 6 stress 0.2050817
## Run 7 stress 0.2315544
## Run 8 stress 0.196449
## Run 9 stress 0.2020022
## Run 10 stress 0.2252864
## Run 11 stress 0.188067
## ... Procrustes: rmse 3.580427e-05 max resid 0.0002310747
## ... Similar to previous best
## Run 12 stress 0.1964484
## Run 13 stress 0.2274157
## Run 14 stress 0.2202868
## Run 15 stress 0.188556
## ... Procrustes: rmse 0.01353188 max resid 0.09393867
## Run 16 stress 0.1893752
## Run 17 stress 0.1986823
## Run 18 stress 0.1986822
## Run 19 stress 0.1987499
## Run 20 stress 0.188067
## ... Procrustes: rmse 2.967986e-05 max resid 0.000143822
## ... Similar to previous best
## *** Best solution repeated 2 times
M28S_NMDSmodel
##
## Call:
## metaMDS(comm = M28S_wide_simple, distance = "bray", trymax = 999)
##
## global Multidimensional Scaling using monoMDS
##
## Data: M28S_wide_simple
## Distance: bray
##
## Dimensions: 2
## Stress: 0.188067
## Stress type 1, weak ties
## Best solution was repeated 2 times in 20 tries
## The best solution was from try 5 (random start)
## Scaling: centring, PC rotation, halfchange scaling
## Species: expanded scores based on 'M28S_wide_simple'
get datascores
M28S.data.scores<-scores(M28S_NMDSmodel,display="sites")
M28S.data.scores<- as.data.frame(M28S.data.scores)
add environmental variables back in
# Extract the first 5 columns from df1
first_5_columns <- M28S_wide[, 1:4]
# Combine the first 5 columns from df1 with df2
M28S.data.scores <- cbind(first_5_columns, M28S.data.scores)
plot datascores
xx <- ggplot(M28S.data.scores, aes(x = NMDS1, y = NMDS2,colour = station)) +geom_point(aes(colour = station))+theme_bw()+theme(panel.grid.major = element_blank(),
panel.grid.minor = element_blank(), axis.line = element_line(colour = "black"))
xx
extract hulls
unique(M28S.data.scores$station)
## [1] P12 P22 P28 P38 P402 P4 P8
## Levels: P12 P22 P28 P38 P4 P402 P8
P12 <- M28S.data.scores[M28S.data.scores$station == "P12", ][chull(M28S.data.scores[M28S.data.scores$station == "P12", c("NMDS1", "NMDS2")]), ]
P22 <- M28S.data.scores[M28S.data.scores$station == "P22", ][chull(M28S.data.scores[M28S.data.scores$station == "P22", c("NMDS1", "NMDS2")]), ]
P28 <- M28S.data.scores[M28S.data.scores$station == "P28", ][chull(M28S.data.scores[M28S.data.scores$station == "P28", c("NMDS1", "NMDS2")]), ]
P38 <- M28S.data.scores[M28S.data.scores$station == "P38", ][chull(M28S.data.scores[M28S.data.scores$station == "P38", c("NMDS1", "NMDS2")]), ]
P4 <- M28S.data.scores[M28S.data.scores$station == "P4", ][chull(M28S.data.scores[M28S.data.scores$station == "P4", c("NMDS1", "NMDS2")]), ]
P402 <- M28S.data.scores[M28S.data.scores$station == "P402", ][chull(M28S.data.scores[M28S.data.scores$station == "P402", c("NMDS1", "NMDS2")]), ]
P8 <- M28S.data.scores[M28S.data.scores$station == "P8", ][chull(M28S.data.scores[M28S.data.scores$station == "P8", c("NMDS1", "NMDS2")]), ]
get hull data
hull.data <- rbind(P12,P22,P28,P38,P402,P4,P8) #combine grp.a and grp.b
hull.data
## sample Year Month station NMDS1 NMDS2
## 50 2009P12Ve 20 09 P12 0.361869723 -0.578347287
## 15 1809P12Ve 18 09 P12 -0.279037503 -0.364952535
## 29 1907P12Ve 19 07 P12 -0.300360957 -0.281683343
## 1 1804P12Ve 18 04 P12 -0.366710561 0.033582169
## 22 1904P12Ve 19 04 P12 -0.245045209 -0.027770940
## 36 1909P12Ve 19 09 P12 -0.051293262 -0.183489561
## 44 2007P22Ve 20 07 P22 0.707362765 -0.062854025
## 2 1804P22Ve 18 04 P22 0.770906567 -0.339996178
## 51 2009P22Ve 20 09 P22 -0.050424088 0.356400036
## 16 1809P22Ve 18 09 P22 0.254921799 0.542145113
## 30 1907P22Ve 19 07 P22 0.514404633 0.247898969
## 24 1904P28Ve 19 04 P28 0.191115185 -0.108946556
## 3 1804P28Ve 18 04 P28 0.175215184 -0.229067100
## 17 1809P28Ve 18 09 P28 -0.365930613 0.277294512
## 58 2010P28Ve 20 10 P28 0.059688334 0.216249830
## 18 1809P38Ve 18 09 P38 0.127527774 -0.752404155
## 11 1807P38Ve 18 07 P38 -0.205863700 -0.007823704
## 53 2009P38Ve 20 09 P38 -0.274931151 0.392347802
## 46 2007P38Ve 20 07 P38 0.145707767 0.602043380
## 4 1804P38Ve 18 04 P38 0.255169592 0.070496694
## 47 2007P402Ve 20 07 P402 -0.159147727 -0.092021552
## 40 1909P402Ve 19 09 P402 -0.893323703 0.042065001
## 54 2009P402Ve 20 09 P402 -0.123534004 0.326303996
## 20 1809P4Ve 18 09 P4 -0.009008168 -0.620577537
## 34 1907P4Ve 19 07 P4 -0.544717691 -0.338433223
## 13 1807P4Ve 18 07 P4 -0.545346413 -0.188624455
## 27 1904P4Ve 19 04 P4 0.052268186 0.161409765
## 41 1909P4Ve 19 09 P4 0.126493315 -0.103829414
## 7 1804P8Ve 18 04 P8 0.549383970 -0.194627463
## 28 1904P8Ve 19 04 P8 0.510547017 -0.241520622
## 14 1807P8Ve 18 07 P8 -0.245973479 -0.529259296
## 21 1809P8Ve 18 09 P8 -0.491140124 0.386320052
## 42 1909P8Ve 19 09 P8 0.399063617 0.464139369
## 56 2009P8Ve 20 09 P8 0.477811810 0.453402241
vf <- envfit(M28S_NMDSmodel, M28S_wide, perm = 999)
spp.scrs <- as.data.frame(scores(vf, display = "vectors"))
spp.scrs <- cbind(spp.scrs, Species = rownames(spp.scrs))
####for ggplot
arrow_factor <- ordiArrowMul(vf)
spp.scrs <- as.data.frame(scores(vf, display = "vectors")) * arrow_factor
spp.scrs <- cbind(spp.scrs, Species = rownames(spp.scrs), Pvalues = vf$vectors$pvals, R_squared = vf$vectors$r)
# select significance similarly to `plot(vf, p.max = 0.01)`
spp.scrs <- subset(spp.scrs, Pvalues < 0.05)
spp.scrs <- subset(spp.scrs, R_squared > 0.3)
spp.scrs
## NMDS1 NMDS2 Species Pvalues
## Calanus finmarchicus 0.7041827 -0.21822741 Calanus finmarchicus 0.001
## Calanus glacialis 0.7500000 -0.25666998 Calanus glacialis 0.001
## Chiridius poppei -0.1061340 -0.67991633 Chiridius poppei 0.001
## Eucalanus bungii 0.3354639 -0.63435100 Eucalanus bungii 0.001
## Eucalanus californicus 0.5469875 -0.27069661 Eucalanus californicus 0.001
## Microcalanus pygmaeus -0.4468494 -0.47811202 Microcalanus pygmaeus 0.001
## Neocalanus plumchrus 0.4776263 -0.37219518 Neocalanus plumchrus 0.001
## Oithona atlantica -0.3709758 -0.51036144 Oithona atlantica 0.001
## Paracalanus parvus -0.5415864 0.31883240 Paracalanus parvus 0.001
## Pseudocalanus minutus 0.6966303 -0.05885922 Pseudocalanus minutus 0.001
## Scolecithricella minor 0.4380372 0.48114255 Scolecithricella minor 0.001
## R_squared
## Calanus finmarchicus 0.4462258
## Calanus glacialis 0.5159170
## Chiridius poppei 0.3887982
## Eucalanus bungii 0.4227777
## Eucalanus californicus 0.3058098
## Microcalanus pygmaeus 0.3516179
## Neocalanus plumchrus 0.3010349
## Oithona atlantica 0.3268444
## Paracalanus parvus 0.3242812
## Pseudocalanus minutus 0.4012841
## Scolecithricella minor 0.3476025
M28S_Species_plot <- ggplot(M28S.data.scores, aes(x = NMDS1, y = NMDS2)) +geom_point(aes(colour = station))+theme_bw()+theme(panel.grid.major = element_blank(),
panel.grid.minor = element_blank(), axis.line = element_line(colour = "black"))+
geom_segment(data = spp.scrs,size=0.4,
aes(x = 0, xend = NMDS1, y = 0, yend = NMDS2),
arrow = arrow(length = unit(0.2, "cm")), colour = "darkgrey")+
geom_polygon(data=hull.data,aes(x=NMDS1,y=NMDS2,fill=station,group=station),alpha=0.20, size=0.1, linetype=1, colour="black") +
annotate("text", label = "2D Stress: 0.19", x = 0.6, y = 0.8, size = 5, colour = "black")+
geom_label_repel(data = spp.scrs, aes(x = NMDS1, y = NMDS2, label = Species),
size = 3, fontface="bold", fill="white", label.padding = unit(0.15, "lines"), box.padding = unit(0.16, "lines"), label.size = 0.05)
M28S_Species_plot
save plot
setwd("/Users/hailaschultz/Dropbox/Schultz_Dissertation/Data_Analysis/Schultz_dissertation-3/output")
ggsave(filename = "M28S_NMDS_vert.png", plot = M28S_Species_plot, height = 170, width = 200, units="mm", device='png', dpi=300)
Remove non-zooplanton phyla
unique(Machida18S_counts$Phylum)
## [1] "Arthropoda" "Cnidaria" "Bacillariophyta"
## [4] "Mollusca" "Ctenophora" "Chaetognatha"
## [7] NA "Annelida" "Dinophyceae__p"
## [10] "Nemertea" "Chordata" "Ciliophora"
## [13] "Oomycota" "Acantharea__p" "Bryozoa"
## [16] "Echinodermata" "Apicomplexa" "Platyhelminthes"
## [19] "Chlorophyta" "Synurophyceae__p" "Endomyxa"
## [22] "Cercozoa" "Streptophyta" "Ascomycota"
## [25] "Blastocladiomycota" "Bigyra__p" "Chytridiomycota"
## [28] "Nematoda" "Rotifera" "Phoronida"
## [31] "Polycystinea__p" "Choanoflagellata__p" "Cryptophyceae__p"
## [34] "Phaeophyceae__p" "Rhodophyta" "Raphidophyceae__p"
## [37] "Basidiomycota" "Pirsoniales__c__p" "Porifera"
## [40] "Ichthyosporea__p" "Colponemida__c__p" "Dictyochophyceae__p"
## [43] "Entoprocta"
levels_to_remove <- c('Bacillariophyta', 'Rhodophyta',NA,'Oomycota','Ascomycota','Onychophora','Cryptophyceae__p','Zoopagomycota','Phaeophyceae__p','Haptophyta','Basidiomycota','Chlorophyta','Dinophyceae__p','Discosea','Tubulinea','Dictyochophyceae__p','Bacteroidota','Blastocladiomycota','Pseudomonadota','Chrysophyceae__p','Malawimonadida__c__p','Prasinodermophyta','Chrysoparadoxa__f__o__c__p','Apusomonadida__c__p','Streptophyta','Pelagophyceae__p','Eustigmatophyceae__p','Ciliophora','Acantharea__p','Apicomplexa','Synurophyceae__p','Endomyxa','Cercozoa','Bigyra__p','Chytridiomycota','Polycystinea__p','Choanoflagellata__p','Raphidophyceae__p','Pirsoniales__c__p','Colponemida__c__p','Ichthyosporea__p')
# Remove those levels and drop them from the factor
Machida18S_counts <- droplevels(Machida18S_counts[!Machida18S_counts$Phylum %in% levels_to_remove,])
remove non-species rows
Machida18S_comp<- Machida18S_counts[complete.cases(Machida18S_counts), ]
convert to presence-absence
Machida18S_comp_pa<-Machida18S_comp %>%
mutate(across(where(is.numeric), ~ifelse(.x >0, 1, 0)))
remove excess columns
Machida18S_comp_pa <- Machida18S_comp_pa[ -c(1:7) ]
wide to long format
Machida18S_long<-melt(Machida18S_comp_pa, id.vars=c("Species"))
add up multiple lines per station and convert back to presence-absence
Machida18S_long_sum <- Machida18S_long %>%
group_by(Species,variable) %>%
summarise(
value = sum(value))
Machida18S_long_sum<-Machida18S_long_sum %>%
mutate(across(where(is.numeric), ~ifelse(.x >0, 1, 0)))
split code string up to extract metadata
Machida18S_long_sum$variable<-str_split_fixed(Machida18S_long_sum$variable,"_",4)
remove samples of non-interest
unique(Machida18S_long_sum$variable[,3])
## [1] "P12" "P22" "P28" "P38" "P402" "P4" "P8" "CA042" "P105"
## [10] "P123" "P132" "P136" "P381" "P7" ""
unique(Machida18S_long_sum$variable[,2])
## [1] "1804" "1806" "1807" "1809" "1904" "1907"
## [7] "1909" "2007" "2009" "2010" "Control1"
#remove excess stations
levels_to_remove <- c('CA042','',"P105","P123","P132","P136","P381","P7")
Machida18S_long_sum <- droplevels(Machida18S_long_sum[!Machida18S_long_sum$variable[,3] %in% levels_to_remove,])
split up replicate columns
unique(Machida18S_long_sum$variable[,4])
## [1] "Ob" "Ve" "ObB" "VeA" "ObA" "VeB"
Machida18S_long_sum <- Machida18S_long_sum %>%
mutate(
tow_type = substr(variable[,4], 1, 2),
replicate = substr(variable[,4], 3, nchar(variable[,4]))
)
split up year and month columns
Machida18S_long_sum <- Machida18S_long_sum %>%
mutate(
Year = substr(variable[,2], 1, 2),
Month = substr(variable[,2], 3, 4)
)
make station column
Machida18S_long_sum$station<-Machida18S_long_sum$variable[,3]
remove oblique samples
Machida18S_long_sum<-subset(Machida18S_long_sum,tow_type=="Ve")
merge replicates (and oblique and vertical tows)
colnames(Machida18S_long_sum)
## [1] "Species" "variable" "value" "tow_type" "replicate" "Year"
## [7] "Month" "station"
Machida18S_long_sum$sample<-paste(Machida18S_long_sum$Year,Machida18S_long_sum$Month,Machida18S_long_sum$station,Machida18S_long_sum$tow_type,sep="")
Machida18S_long_sum <- Machida18S_long_sum %>%
group_by(Year,Month,station,sample,Species) %>%
summarise(
value = sum(value))
#convert back to presence-absence
Machida18S_long_sum<-Machida18S_long_sum %>%
mutate(across(where(is.numeric), ~ifelse(.x >0, 1, 0)))
back to wide format
Machida18S_wide<-dcast(Machida18S_long_sum, sample+Year+Month+station ~ Species )
remove any columns with all zeroes
target_cols <- 6:ncol(Machida18S_wide)
non_zero_cols <- target_cols[colSums(Machida18S_wide[, target_cols]) != 0]
Machida18S_wide <- Machida18S_wide[, c(1:5, non_zero_cols)]
remove environmental data
Machida18S_wide_simple<-Machida18S_wide[ , 5:122]
Make environmental columns categorical
# Specify the columns to convert to factors
cols_to_factor <- c("station", "Year", "Month")
# Convert the specified columns to factors
Machida18S_wide <- Machida18S_wide %>%
mutate_at(vars(one_of(cols_to_factor)), as.factor)
dist<-vegdist(Machida18S_wide_simple, method='bray')
perm<-adonis2(dist~station*Month, data=Machida18S_wide, permutations = 999, method="bray")
perm
## Permutation test for adonis under reduced model
## Terms added sequentially (first to last)
## Permutation: free
## Number of permutations: 999
##
## adonis2(formula = dist ~ station * Month, data = Machida18S_wide, permutations = 999, method = "bray")
## Df SumOfSqs R2 F Pr(>F)
## station 6 1.9527 0.28004 4.4887 0.001 ***
## Month 3 1.0313 0.14789 4.7411 0.001 ***
## station:Month 13 1.4515 0.20815 1.5399 0.002 **
## Residual 35 2.5377 0.36392
## Total 57 6.9732 1.00000
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
station comparisons
adonis.pair(vegdist(Machida18S_wide_simple),Machida18S_wide$station)
## combination SumsOfSqs MeanSqs F.Model R2 P.value
## 1 P12 <-> P22 0.3826891 0.3826891 4.467383 0.22948039 0.001998002
## 2 P12 <-> P28 0.2750693 0.2750693 2.997385 0.16654560 0.010989011
## 3 P12 <-> P38 0.2219694 0.2219694 2.433960 0.14810553 0.013986014
## 4 P12 <-> P4 0.4147770 0.4147770 4.811898 0.25579013 0.002997003
## 5 P12 <-> P402 0.2283132 0.2283132 2.243123 0.13809679 0.039960040
## 6 P12 <-> P8 0.2639636 0.2639636 2.475251 0.15024057 0.015984016
## 7 P22 <-> P28 0.3708033 0.3708033 4.107283 0.20426843 0.010989011
## 8 P22 <-> P38 0.2675489 0.2675489 2.984526 0.16594964 0.002997003
## 9 P22 <-> P4 0.5200086 0.5200086 6.119188 0.28974541 0.000999001
## 10 P22 <-> P402 0.4158457 0.4158457 4.178246 0.21786382 0.001998002
## 11 P22 <-> P8 0.1156393 0.1156393 1.111275 0.06897499 0.360639361
## 12 P28 <-> P38 0.1754484 0.1754484 1.832318 0.10885714 0.054945055
## 13 P28 <-> P4 0.6517839 0.6517839 7.155635 0.32297133 0.001998002
## 14 P28 <-> P402 0.3533728 0.3533728 3.345282 0.18235109 0.010989011
## 15 P28 <-> P8 0.3706299 0.3706299 3.364260 0.18319604 0.007992008
## 16 P38 <-> P4 0.4402794 0.4402794 4.866843 0.25795746 0.000999001
## 17 P38 <-> P402 0.2256635 0.2256635 2.127888 0.13193839 0.028971029
## 18 P38 <-> P8 0.2982173 0.2982173 2.688871 0.16111759 0.000999001
## 19 P4 <-> P402 0.3086109 0.3086109 3.053984 0.17907746 0.000999001
## 20 P4 <-> P8 0.2546457 0.2546457 2.404373 0.14656904 0.018981019
## 21 P402 <-> P8 0.2565349 0.2565349 2.111488 0.13105483 0.031968032
## P.value.corrected
## 1 0.005994006
## 2 0.017751479
## 3 0.020979021
## 4 0.006993007
## 5 0.044166360
## 6 0.022377622
## 7 0.017751479
## 8 0.006993007
## 9 0.005244755
## 10 0.005994006
## 11 0.360639361
## 12 0.057692308
## 13 0.005994006
## 14 0.017751479
## 15 0.016783217
## 16 0.005244755
## 17 0.035787742
## 18 0.005244755
## 19 0.005244755
## 20 0.024912587
## 21 0.037296037
month comparisons
adonis.pair(vegdist(Machida18S_wide_simple),Machida18S_wide$Month)
## combination SumsOfSqs MeanSqs F.Model R2 P.value
## 1 04 <-> 07 0.6105921 0.6105921 5.566933 0.14434472 0.000999001
## 2 04 <-> 09 0.7056029 0.7056029 6.664692 0.16802582 0.000999001
## 3 04 <-> 10 0.1667650 0.1667650 1.486058 0.09596103 0.113886114
## 4 07 <-> 09 0.1811657 0.1811657 1.673153 0.04014943 0.084915085
## 5 07 <-> 10 0.1285248 0.1285248 1.120657 0.05066111 0.287712288
## 6 09 <-> 10 0.1224121 0.1224121 1.126149 0.05089676 0.337662338
## P.value.corrected
## 1 0.002997003
## 2 0.002997003
## 3 0.170829171
## 4 0.169830170
## 5 0.337662338
## 6 0.337662338
Machida18S_NMDSmodel <- metaMDS(Machida18S_wide_simple, distance = "bray",trymax = 999)
## Run 0 stress 0.216649
## Run 1 stress 0.2163793
## ... New best solution
## ... Procrustes: rmse 0.006633881 max resid 0.04100922
## Run 2 stress 0.2165763
## ... Procrustes: rmse 0.01358117 max resid 0.09586161
## Run 3 stress 0.2165763
## ... Procrustes: rmse 0.01358174 max resid 0.09585753
## Run 4 stress 0.221458
## Run 5 stress 0.2199488
## Run 6 stress 0.2375465
## Run 7 stress 0.2163793
## ... Procrustes: rmse 6.744436e-06 max resid 2.708761e-05
## ... Similar to previous best
## Run 8 stress 0.2163793
## ... Procrustes: rmse 1.091758e-05 max resid 6.010459e-05
## ... Similar to previous best
## Run 9 stress 0.219756
## Run 10 stress 0.2467463
## Run 11 stress 0.2165763
## ... Procrustes: rmse 0.01358207 max resid 0.09586317
## Run 12 stress 0.2454007
## Run 13 stress 0.216649
## ... Procrustes: rmse 0.006628819 max resid 0.04091403
## Run 14 stress 0.221446
## Run 15 stress 0.2629595
## Run 16 stress 0.2618729
## Run 17 stress 0.2613695
## Run 18 stress 0.2165763
## ... Procrustes: rmse 0.01357982 max resid 0.09585555
## Run 19 stress 0.2444657
## Run 20 stress 0.2166483
## ... Procrustes: rmse 0.007033385 max resid 0.04152159
## *** Best solution repeated 2 times
Machida18S_NMDSmodel
##
## Call:
## metaMDS(comm = Machida18S_wide_simple, distance = "bray", trymax = 999)
##
## global Multidimensional Scaling using monoMDS
##
## Data: Machida18S_wide_simple
## Distance: bray
##
## Dimensions: 2
## Stress: 0.2163793
## Stress type 1, weak ties
## Best solution was repeated 2 times in 20 tries
## The best solution was from try 1 (random start)
## Scaling: centring, PC rotation, halfchange scaling
## Species: expanded scores based on 'Machida18S_wide_simple'
get datascores
Machida18S.data.scores<-scores(Machida18S_NMDSmodel,display="sites")
Machida18S.data.scores<- as.data.frame(Machida18S.data.scores)
add environmental variables back in
# Extract the first 5 columns from df1
first_5_columns <- Machida18S_wide[, 1:4]
# Combine the first 5 columns from df1 with df2
Machida18S.data.scores <- cbind(first_5_columns, Machida18S.data.scores)
plot datascores
xx <- ggplot(Machida18S.data.scores, aes(x = NMDS1, y = NMDS2,colour = station)) +geom_point(aes(colour = station))+theme_bw()+theme(panel.grid.major = element_blank(),
panel.grid.minor = element_blank(), axis.line = element_line(colour = "black"))
xx
extract hulls
unique(Machida18S.data.scores$station)
## [1] P12 P22 P28 P38 P402 P4 P8
## Levels: P12 P22 P28 P38 P4 P402 P8
P12 <- Machida18S.data.scores[Machida18S.data.scores$station == "P12", ][chull(Machida18S.data.scores[Machida18S.data.scores$station == "P12", c("NMDS1", "NMDS2")]), ]
P22 <- Machida18S.data.scores[Machida18S.data.scores$station == "P22", ][chull(Machida18S.data.scores[Machida18S.data.scores$station == "P22", c("NMDS1", "NMDS2")]), ]
P28 <- Machida18S.data.scores[Machida18S.data.scores$station == "P28", ][chull(Machida18S.data.scores[Machida18S.data.scores$station == "P28", c("NMDS1", "NMDS2")]), ]
P38 <- Machida18S.data.scores[Machida18S.data.scores$station == "P38", ][chull(Machida18S.data.scores[Machida18S.data.scores$station == "P38", c("NMDS1", "NMDS2")]), ]
P4 <- Machida18S.data.scores[Machida18S.data.scores$station == "P4", ][chull(Machida18S.data.scores[Machida18S.data.scores$station == "P4", c("NMDS1", "NMDS2")]), ]
P402 <- Machida18S.data.scores[Machida18S.data.scores$station == "P402", ][chull(Machida18S.data.scores[Machida18S.data.scores$station == "P402", c("NMDS1", "NMDS2")]), ]
P8 <- Machida18S.data.scores[Machida18S.data.scores$station == "P8", ][chull(Machida18S.data.scores[Machida18S.data.scores$station == "P8", c("NMDS1", "NMDS2")]), ]
get hull data
hull.data <- rbind(P12,P22,P28,P38,P402,P4,P8) #combine grp.a and grp.b
hull.data
## sample Year Month station NMDS1 NMDS2
## 29 1907P12Ve 19 07 P12 0.285632321 0.003671575
## 43 2007P12Ve 20 07 P12 0.080497975 0.007615974
## 22 1904P12Ve 19 04 P12 -0.415356582 0.025930785
## 1 1804P12Ve 18 04 P12 -0.436836617 0.175839515
## 8 1807P12Ve 18 07 P12 0.127018893 0.294534201
## 15 1809P12Ve 18 09 P12 0.187192503 0.301463881
## 36 1909P12Ve 19 09 P12 0.249314963 0.255855882
## 50 2009P12Ve 20 09 P12 0.284637221 0.210947319
## 16 1809P22Ve 18 09 P22 0.172969670 -0.322878502
## 44 2007P22Ve 20 07 P22 0.076654235 -0.404326330
## 23 1904P22Ve 19 04 P22 -0.144131685 -0.427195821
## 57 2010P22Ve 20 10 P22 -0.286700575 -0.311911951
## 51 2009P22Ve 20 09 P22 -0.225557848 -0.126888368
## 37 1909P22Ve 19 09 P22 0.267036386 0.048181939
## 45 2007P28Ve 20 07 P28 0.622695147 -0.110176087
## 58 2010P28Ve 20 10 P28 0.499286622 -0.182269509
## 3 1804P28Ve 18 04 P28 -0.502986562 -0.158503186
## 10 1807P28Ve 18 07 P28 0.267363454 0.083354826
## 17 1809P28Ve 18 09 P28 0.373217095 0.077533646
## 31 1907P28Ve 19 07 P28 0.505872368 0.025819039
## 53 2009P38Ve 20 09 P38 0.356903278 -0.289913829
## 46 2007P38Ve 20 07 P38 -0.129960063 -0.032679488
## 11 1807P38Ve 18 07 P38 0.092598508 0.261858292
## 18 1809P38Ve 18 09 P38 0.346863849 0.170714255
## 39 1909P38Ve 19 09 P38 0.389149836 0.150181105
## 19 1809P402Ve 18 09 P402 0.603555216 0.129285096
## 5 1804P402Ve 18 04 P402 -0.579608798 -0.069047538
## 26 1904P402Ve 19 04 P402 -0.567012241 0.040559030
## 47 2007P402Ve 20 07 P402 -0.009323803 0.541579183
## 55 2009P4Ve 20 09 P4 -0.140147422 0.092028973
## 6 1804P4Ve 18 04 P4 -0.470206160 -0.238264494
## 48 2007P4Ve 20 07 P4 -0.545946886 0.297874497
## 13 1807P4Ve 18 07 P4 -0.397604463 0.308384525
## 20 1809P4Ve 18 09 P4 -0.073224489 0.194903571
## 35 1907P8Ve 19 07 P8 0.124048964 -0.207604475
## 56 2009P8Ve 20 09 P8 0.180682894 -0.392350193
## 7 1804P8Ve 18 04 P8 -0.400921351 -0.560704335
## 28 1904P8Ve 19 04 P8 -0.374429720 -0.174329516
## 14 1807P8Ve 18 07 P8 -0.302581429 0.403424438
## 21 1809P8Ve 18 09 P8 -0.117115805 0.164399174
vf <- envfit(Machida18S_NMDSmodel, Machida18S_wide, perm = 999)
spp.scrs <- as.data.frame(scores(vf, display = "vectors"))
spp.scrs <- cbind(spp.scrs, Species = rownames(spp.scrs))
####for ggplot
arrow_factor <- ordiArrowMul(vf)
spp.scrs <- as.data.frame(scores(vf, display = "vectors")) * arrow_factor
spp.scrs <- cbind(spp.scrs, Species = rownames(spp.scrs), Pvalues = vf$vectors$pvals, R_squared = vf$vectors$r)
# select significance similarly to `plot(vf, p.max = 0.01)`
spp.scrs <- subset(spp.scrs, Pvalues < 0.05)
spp.scrs <- subset(spp.scrs, R_squared > 0.3)
spp.scrs
## NMDS1 NMDS2 Species
## Clytia gracilis -0.61855596 -0.54329049 Clytia gracilis
## Cyerce nigricans 0.13815638 0.75000000 Cyerce nigricans
## Diphyes chamissonis -0.74109561 -0.07156108 Diphyes chamissonis
## Dryodora glandiformis -0.34627917 0.50839213 Dryodora glandiformis
## Glycinde armigera -0.21641888 0.57027309 Glycinde armigera
## Lacuna vincta -0.36738020 -0.50819965 Lacuna vincta
## Leuckartiara octona -0.74684486 0.24316325 Leuckartiara octona
## Mesochaetopterus taylori -0.63560681 0.06607504 Mesochaetopterus taylori
## Microcalanus pygmaeus -0.01130659 0.66790154 Microcalanus pygmaeus
## Neosabellaria cementarium -0.25725010 -0.55560778 Neosabellaria cementarium
## Oikopleura dioica -0.62286782 -0.15292846 Oikopleura dioica
## Phoronopsis harmeri -0.56006021 0.48617058 Phoronopsis harmeri
## Spiophanes berkeleyorum -0.57072655 0.28271566 Spiophanes berkeleyorum
## Pvalues R_squared
## Clytia gracilis 0.001 0.5695546
## Cyerce nigricans 0.001 0.4887244
## Diphyes chamissonis 0.001 0.4658309
## Dryodora glandiformis 0.001 0.3179567
## Glycinde armigera 0.001 0.3126430
## Lacuna vincta 0.001 0.3304467
## Leuckartiara octona 0.001 0.5184035
## Mesochaetopterus taylori 0.001 0.3431582
## Microcalanus pygmaeus 0.001 0.3749717
## Neosabellaria cementarium 0.001 0.3150204
## Oikopleura dioica 0.001 0.3456704
## Phoronopsis harmeri 0.001 0.4622054
## Spiophanes berkeleyorum 0.001 0.3408851
Machida18S_Species_plot <- ggplot(Machida18S.data.scores, aes(x = NMDS1, y = NMDS2)) +geom_point(aes(colour = station))+theme_bw()+theme(panel.grid.major = element_blank(),
panel.grid.minor = element_blank(), axis.line = element_line(colour = "black"))+
geom_segment(data = spp.scrs,size=0.4,
aes(x = 0, xend = NMDS1, y = 0, yend = NMDS2),
arrow = arrow(length = unit(0.2, "cm")), colour = "darkgrey")+
geom_polygon(data=hull.data,aes(x=NMDS1,y=NMDS2,fill=station,group=station),alpha=0.20, size=0.1, linetype=1, colour="black") +
annotate("text", label = "2D Stress: 0.216", x =-0.6, y = 0.8, size = 5, colour = "black")+
geom_label_repel(data = spp.scrs, aes(x = NMDS1, y = NMDS2, label = Species),
size = 3, fontface="bold", fill="white", label.padding = unit(0.15, "lines"), box.padding = unit(0.16, "lines"), label.size = 0.05)
Machida18S_Species_plot
save plot
setwd("/Users/hailaschultz/Dropbox/Schultz_Dissertation/Data_Analysis/Schultz_dissertation-3/output")
ggsave(filename = "Machida18S_NMDS_vert.png", plot = Machida18S_Species_plot, height = 170, width = 200, units="mm", device='png', dpi=300)
Remove non-zooplanton phyla
unique(Fishcytb_counts$Phylum)
## [1] NA "Chordata" "Arthropoda" "Mollusca"
## [5] "Annelida" "Echinodermata" "Pseudomonadota"
levels_to_remove <- c('Bacillariophyta', 'Rhodophyta',NA,'Oomycota','Ascomycota','Onychophora','Cryptophyceae__p','Zoopagomycota','Phaeophyceae__p','Haptophyta','Basidiomycota','Chlorophyta','Dinophyceae__p','Discosea','Tubulinea','Dictyochophyceae__p','Bacteroidota','Blastocladiomycota','Pseudomonadota','Chrysophyceae__p','Malawimonadida__c__p','Prasinodermophyta','Chrysoparadoxa__f__o__c__p','Apusomonadida__c__p','Streptophyta','Pelagophyceae__p','Eustigmatophyceae__p','Pseudomonadota')
# Remove those levels and drop them from the factor
Fishcytb_counts <- droplevels(Fishcytb_counts[!Fishcytb_counts$Phylum %in% levels_to_remove,])
subset to fish only
Fishcytb_counts<-subset(Fishcytb_counts,Class=="Actinopteri")
remove non-species rows
Fishcytb_comp<- Fishcytb_counts[complete.cases(Fishcytb_counts), ]
convert to presence-absence
Fishcytb_comp_pa<-Fishcytb_comp %>%
mutate(across(where(is.numeric), ~ifelse(.x >0, 1, 0)))
remove excess columns
Fishcytb_comp_pa <- Fishcytb_comp_pa[ -c(1:7) ]
wide to long format
Fishcytb_long<-melt(Fishcytb_comp_pa, id.vars=c("Species"))
add up multiple lines per station and convert back to presence-absence
Fishcytb_long_sum <- Fishcytb_long %>%
group_by(Species,variable) %>%
summarise(
value = sum(value))
Fishcytb_long_sum<-Fishcytb_long_sum %>%
mutate(across(where(is.numeric), ~ifelse(.x >0, 1, 0)))
split code string up to extract metadata
Fishcytb_long_sum$variable<-str_split_fixed(Fishcytb_long_sum$variable,"_",4)
remove samples of non-interest
unique(Fishcytb_long_sum$variable[,3])
## [1] "P12" "P22" "P28" "P38" "P402" "P4" "P8" "CA042" "P105"
## [10] "P123" "P132" "P136" "P7" ""
unique(Fishcytb_long_sum$variable[,2])
## [1] "1804" "1806" "1807" "1809" "1904" "1907"
## [7] "1909" "2007" "2009" "2010" "Control1"
#remove excess stations
levels_to_remove <- c('CA042','',"P105","P123","P132","P136","P381","P7")
Fishcytb_long_sum <- droplevels(Fishcytb_long_sum[!Fishcytb_long_sum$variable[,3] %in% levels_to_remove,])
split up replicate columns
unique(Fishcytb_long_sum$variable[,4])
## [1] "Ob" "VeA" "Ve" "ObB" "ObA" "VeB"
Fishcytb_long_sum <- Fishcytb_long_sum %>%
mutate(
tow_type = substr(variable[,4], 1, 2),
replicate = substr(variable[,4], 3, nchar(variable[,4]))
)
split up year and month columns
Fishcytb_long_sum <- Fishcytb_long_sum %>%
mutate(
Year = substr(variable[,2], 1, 2),
Month = substr(variable[,2], 3, 4)
)
make station column
Fishcytb_long_sum$station<-Fishcytb_long_sum$variable[,3]
remove oblique samples
Fishcytb_long_sum<-subset(Fishcytb_long_sum,tow_type=="Ve")
merge replicates
colnames(Fishcytb_long_sum)
## [1] "Species" "variable" "value" "tow_type" "replicate" "Year"
## [7] "Month" "station"
Fishcytb_long_sum$sample<-paste(Fishcytb_long_sum$Year,Fishcytb_long_sum$Month,Fishcytb_long_sum$station,Fishcytb_long_sum$tow_type,sep="")
Fishcytb_long_sum <- Fishcytb_long_sum %>%
group_by(Year,Month,station,sample,Species) %>%
summarise(
value = sum(value))
#convert back to presence-absence
Fishcytb_long_sum<-Fishcytb_long_sum %>%
mutate(across(where(is.numeric), ~ifelse(.x >0, 1, 0)))
back to wide format
Fishcytb_wide<-dcast(Fishcytb_long_sum, sample+Year+Month+station ~ Species )
remove any columns with all zeroes
target_cols <- 6:ncol(Fishcytb_wide)
non_zero_cols <- target_cols[colSums(Fishcytb_wide[, target_cols]) != 0]
Fishcytb_wide <- Fishcytb_wide[, c(1:5, non_zero_cols)]
remove rows with all zeroes
row_sums <- rowSums(Fishcytb_wide[, 5:32])
# Create a logical vector to identify rows where the sum is not zero
non_zero_rows <- row_sums != 0
# Subset the data frame to keep only rows with a non-zero sum
Fishcytb_wide <- Fishcytb_wide[non_zero_rows, ]
remove environmental data
Fishcytb_wide_simple<-Fishcytb_wide[ , 5:32]
Make environmental columns categorical
# Specify the columns to convert to factors
cols_to_factor <- c("station", "Year", "Month")
# Convert the specified columns to factors
Fishcytb_wide <- Fishcytb_wide %>%
mutate_at(vars(one_of(cols_to_factor)), as.factor)
dist<-vegdist(Fishcytb_wide_simple, method='bray')
perm<-adonis2(dist~station*Month, data=Fishcytb_wide, permutations = 999, method="bray")
perm
## Permutation test for adonis under reduced model
## Terms added sequentially (first to last)
## Permutation: free
## Number of permutations: 999
##
## adonis2(formula = dist ~ station * Month, data = Fishcytb_wide, permutations = 999, method = "bray")
## Df SumOfSqs R2 F Pr(>F)
## station 6 3.0463 0.18841 1.6458 0.027 *
## Month 3 2.1318 0.13185 2.3035 0.001 ***
## station:Month 12 3.5869 0.22184 0.9689 0.566
## Residual 24 7.4037 0.45790
## Total 45 16.1688 1.00000
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
station comparisons
adonis.pair(vegdist(Fishcytb_wide_simple),Fishcytb_wide$station)
## combination SumsOfSqs MeanSqs F.Model R2 P.value
## 1 P12 <-> P22 1.00072446 1.00072446 3.1970897 0.22519332 0.00999001
## 2 P12 <-> P28 0.38349786 0.38349786 1.0807378 0.11901432 0.38061938
## 3 P12 <-> P38 0.19507430 0.19507430 0.6105907 0.05258912 0.64135864
## 4 P12 <-> P4 0.60159503 0.60159503 1.8160236 0.14169946 0.13286713
## 5 P12 <-> P402 0.13610450 0.13610450 0.3991343 0.03219050 0.93206793
## 6 P12 <-> P8 0.97416594 0.97416594 2.8495125 0.20574822 0.00999001
## 7 P22 <-> P28 0.64095358 0.64095358 1.9140820 0.17537728 0.07092907
## 8 P22 <-> P38 0.71634957 0.71634957 2.3300318 0.16259781 0.04295704
## 9 P22 <-> P4 1.03125801 1.03125801 3.2404455 0.21262144 0.01298701
## 10 P22 <-> P402 1.10540608 1.10540608 3.3677992 0.20575761 0.01898102
## 11 P22 <-> P8 0.36114998 0.36114998 1.1011914 0.08405277 0.36363636
## 12 P28 <-> P38 0.23085341 0.23085341 0.6734854 0.06962180 0.69930070
## 13 P28 <-> P4 0.12095108 0.12095108 0.3386285 0.03626106 0.91208791
## 14 P28 <-> P402 0.35319187 0.35319187 0.9643127 0.08795012 0.53046953
## 15 P28 <-> P8 0.30673635 0.30673635 0.8287137 0.08431558 0.53746254
## 16 P38 <-> P4 0.27063623 0.27063623 0.8348338 0.06504438 0.50749251
## 17 P38 <-> P402 0.06877409 0.06877409 0.2060921 0.01560584 0.96703297
## 18 P38 <-> P8 0.43841720 0.43841720 1.3130313 0.09862752 0.29370629
## 19 P4 <-> P402 0.42189443 0.42189443 1.2275853 0.08628205 0.31468531
## 20 P4 <-> P8 0.31886594 0.31886594 0.9250514 0.07157042 0.48351648
## 21 P402 <-> P8 0.79824206 0.79824206 2.2635658 0.14829862 0.03796204
## P.value.corrected
## 1 0.09090909
## 2 0.66608392
## 3 0.79226656
## 4 0.34877622
## 5 0.96703297
## 6 0.09090909
## 7 0.21278721
## 8 0.15034965
## 9 0.09090909
## 10 0.09965035
## 11 0.66608392
## 12 0.81585082
## 13 0.96703297
## 14 0.70541958
## 15 0.70541958
## 16 0.70541958
## 17 0.96703297
## 18 0.66083916
## 19 0.66083916
## 20 0.70541958
## 21 0.15034965
month comparisons
adonis.pair(vegdist(Fishcytb_wide_simple),Fishcytb_wide$Year)
## combination SumsOfSqs MeanSqs F.Model R2 P.value
## 1 18 <-> 19 0.3132739 0.3132739 0.8299108 0.02691902 0.5734266
## 2 18 <-> 20 0.5719989 0.5719989 1.7102817 0.05569085 0.1408591
## 3 19 <-> 20 0.2435216 0.2435216 0.6709058 0.02424589 0.6653347
## P.value.corrected
## 1 0.6653347
## 2 0.4225774
## 3 0.6653347
Fishcytb_NMDSmodel <- metaMDS(Fishcytb_wide_simple, distance = "bray",trymax = 999)
## Run 0 stress 9.96715e-05
## Run 1 stress 9.75349e-05
## ... New best solution
## ... Procrustes: rmse 0.09430559 max resid 0.5264682
## Run 2 stress 9.958194e-05
## ... Procrustes: rmse 0.1247713 max resid 0.6298247
## Run 3 stress 9.973775e-05
## ... Procrustes: rmse 0.03265459 max resid 0.1863039
## Run 4 stress 9.969515e-05
## ... Procrustes: rmse 0.05187731 max resid 0.2403079
## Run 5 stress 8.273728e-05
## ... New best solution
## ... Procrustes: rmse 0.1296592 max resid 0.7339514
## Run 6 stress 9.344582e-05
## ... Procrustes: rmse 0.06284471 max resid 0.3282738
## Run 7 stress 9.931674e-05
## ... Procrustes: rmse 0.0762488 max resid 0.4006294
## Run 8 stress 9.775671e-05
## ... Procrustes: rmse 0.1285796 max resid 0.5242158
## Run 9 stress 9.830201e-05
## ... Procrustes: rmse 0.1095635 max resid 0.5394174
## Run 10 stress 9.392837e-05
## ... Procrustes: rmse 0.129269 max resid 0.696586
## Run 11 stress 9.669906e-05
## ... Procrustes: rmse 0.08536242 max resid 0.467002
## Run 12 stress 9.854856e-05
## ... Procrustes: rmse 0.1031584 max resid 0.4692604
## Run 13 stress 9.919992e-05
## ... Procrustes: rmse 0.04583251 max resid 0.2204744
## Run 14 stress 9.649161e-05
## ... Procrustes: rmse 0.09384754 max resid 0.4784585
## Run 15 stress 9.543744e-05
## ... Procrustes: rmse 0.05841074 max resid 0.3025211
## Run 16 stress 9.579453e-05
## ... Procrustes: rmse 0.04862104 max resid 0.279127
## Run 17 stress 9.734579e-05
## ... Procrustes: rmse 0.09149968 max resid 0.4382632
## Run 18 stress 9.860336e-05
## ... Procrustes: rmse 0.07700855 max resid 0.3609093
## Run 19 stress 9.070296e-05
## ... Procrustes: rmse 0.07266025 max resid 0.396419
## Run 20 stress 9.952852e-05
## ... Procrustes: rmse 0.1296747 max resid 0.6479447
## Run 21 stress 9.512282e-05
## ... Procrustes: rmse 0.1328264 max resid 0.686675
## Run 22 stress 9.739848e-05
## ... Procrustes: rmse 0.06855957 max resid 0.3421457
## Run 23 stress 8.874257e-05
## ... Procrustes: rmse 0.06419484 max resid 0.2752779
## Run 24 stress 9.576999e-05
## ... Procrustes: rmse 0.1189964 max resid 0.6311046
## Run 25 stress 9.553193e-05
## ... Procrustes: rmse 0.06275402 max resid 0.3331681
## Run 26 stress 9.843738e-05
## ... Procrustes: rmse 0.1324294 max resid 0.7060374
## Run 27 stress 9.894548e-05
## ... Procrustes: rmse 0.118082 max resid 0.6638971
## Run 28 stress 9.403177e-05
## ... Procrustes: rmse 0.125089 max resid 0.5364074
## Run 29 stress 9.769695e-05
## ... Procrustes: rmse 0.05520166 max resid 0.3319527
## Run 30 stress 9.544365e-05
## ... Procrustes: rmse 0.1309602 max resid 0.6507916
## Run 31 stress 9.090805e-05
## ... Procrustes: rmse 0.1148325 max resid 0.5663596
## Run 32 stress 9.600007e-05
## ... Procrustes: rmse 0.1028325 max resid 0.582182
## Run 33 stress 9.46122e-05
## ... Procrustes: rmse 0.142758 max resid 0.5852639
## Run 34 stress 9.758168e-05
## ... Procrustes: rmse 0.09654126 max resid 0.4421842
## Run 35 stress 9.560847e-05
## ... Procrustes: rmse 0.09388391 max resid 0.460163
## Run 36 stress 9.921027e-05
## ... Procrustes: rmse 0.1162486 max resid 0.5600381
## Run 37 stress 9.746339e-05
## ... Procrustes: rmse 0.1059962 max resid 0.5676365
## Run 38 stress 9.909799e-05
## ... Procrustes: rmse 0.1289224 max resid 0.6878097
## Run 39 stress 9.37889e-05
## ... Procrustes: rmse 0.12323 max resid 0.765839
## Run 40 stress 9.718613e-05
## ... Procrustes: rmse 0.07737252 max resid 0.4586744
## Run 41 stress 9.119705e-05
## ... Procrustes: rmse 0.09078855 max resid 0.5574966
## Run 42 stress 9.778634e-05
## ... Procrustes: rmse 0.09837851 max resid 0.6315403
## Run 43 stress 9.251664e-05
## ... Procrustes: rmse 0.114049 max resid 0.5338618
## Run 44 stress 9.46984e-05
## ... Procrustes: rmse 0.1176502 max resid 0.6172387
## Run 45 stress 9.697375e-05
## ... Procrustes: rmse 0.1213547 max resid 0.6424515
## Run 46 stress 9.940132e-05
## ... Procrustes: rmse 0.1208353 max resid 0.5525615
## Run 47 stress 9.671236e-05
## ... Procrustes: rmse 0.08079754 max resid 0.482363
## Run 48 stress 9.177386e-05
## ... Procrustes: rmse 0.1160546 max resid 0.5021645
## Run 49 stress 9.582192e-05
## ... Procrustes: rmse 0.09333844 max resid 0.4939013
## Run 50 stress 9.578441e-05
## ... Procrustes: rmse 0.0967547 max resid 0.5273107
## Run 51 stress 9.736007e-05
## ... Procrustes: rmse 0.07162394 max resid 0.4120993
## Run 52 stress 9.866079e-05
## ... Procrustes: rmse 0.08569844 max resid 0.4272956
## Run 53 stress 9.441312e-05
## ... Procrustes: rmse 0.1368498 max resid 0.6068444
## Run 54 stress 7.654569e-05
## ... New best solution
## ... Procrustes: rmse 0.09447945 max resid 0.5922589
## Run 55 stress 9.862594e-05
## ... Procrustes: rmse 0.09848941 max resid 0.4290333
## Run 56 stress 9.909308e-05
## ... Procrustes: rmse 0.1264894 max resid 0.6045184
## Run 57 stress 9.563956e-05
## ... Procrustes: rmse 0.1089863 max resid 0.507262
## Run 58 stress 9.275881e-05
## ... Procrustes: rmse 0.0543158 max resid 0.2572836
## Run 59 stress 9.475322e-05
## ... Procrustes: rmse 0.1238916 max resid 0.6089966
## Run 60 stress 9.784636e-05
## ... Procrustes: rmse 0.121621 max resid 0.5591331
## Run 61 stress 9.469208e-05
## ... Procrustes: rmse 0.1200632 max resid 0.6400296
## Run 62 stress 9.572298e-05
## ... Procrustes: rmse 0.1412343 max resid 0.6775698
## Run 63 stress 7.327085e-05
## ... New best solution
## ... Procrustes: rmse 0.1439532 max resid 0.6328702
## Run 64 stress 9.961301e-05
## ... Procrustes: rmse 0.1182992 max resid 0.6461115
## Run 65 stress 9.856205e-05
## ... Procrustes: rmse 0.1398348 max resid 0.5955722
## Run 66 stress 9.56079e-05
## ... Procrustes: rmse 0.1373493 max resid 0.7267581
## Run 67 stress 9.654724e-05
## ... Procrustes: rmse 0.1391696 max resid 0.6044573
## Run 68 stress 9.616437e-05
## ... Procrustes: rmse 0.1133907 max resid 0.5574505
## Run 69 stress 9.756814e-05
## ... Procrustes: rmse 0.1085085 max resid 0.4700647
## Run 70 stress 9.828909e-05
## ... Procrustes: rmse 0.06365127 max resid 0.3258589
## Run 71 stress 9.294552e-05
## ... Procrustes: rmse 0.1422372 max resid 0.6848019
## Run 72 stress 9.735298e-05
## ... Procrustes: rmse 0.1424317 max resid 0.7002058
## Run 73 stress 9.796792e-05
## ... Procrustes: rmse 0.1252596 max resid 0.5254391
## Run 74 stress 9.895538e-05
## ... Procrustes: rmse 0.1096951 max resid 0.6119103
## Run 75 stress 9.381724e-05
## ... Procrustes: rmse 0.1297873 max resid 0.589601
## Run 76 stress 8.893093e-05
## ... Procrustes: rmse 0.107187 max resid 0.5802412
## Run 77 stress 9.394178e-05
## ... Procrustes: rmse 0.1398469 max resid 0.6776492
## Run 78 stress 9.830192e-05
## ... Procrustes: rmse 0.08555688 max resid 0.4963664
## Run 79 stress 9.944401e-05
## ... Procrustes: rmse 0.05745935 max resid 0.2587292
## Run 80 stress 9.500845e-05
## ... Procrustes: rmse 0.1322577 max resid 0.5722952
## Run 81 stress 9.778754e-05
## ... Procrustes: rmse 0.1431271 max resid 0.6450261
## Run 82 stress 9.288355e-05
## ... Procrustes: rmse 0.128594 max resid 0.6069907
## Run 83 stress 9.363447e-05
## ... Procrustes: rmse 0.1089433 max resid 0.5096521
## Run 84 stress 9.383311e-05
## ... Procrustes: rmse 0.1044262 max resid 0.5653977
## Run 85 stress 9.042208e-05
## ... Procrustes: rmse 0.09492574 max resid 0.5441837
## Run 86 stress 7.942336e-05
## ... Procrustes: rmse 0.1097058 max resid 0.6228815
## Run 87 stress 9.367233e-05
## ... Procrustes: rmse 0.1412062 max resid 0.5737656
## Run 88 stress 9.653428e-05
## ... Procrustes: rmse 0.1287088 max resid 0.6231385
## Run 89 stress 9.699859e-05
## ... Procrustes: rmse 0.1047207 max resid 0.5583689
## Run 90 stress 9.941579e-05
## ... Procrustes: rmse 0.1376131 max resid 0.604738
## Run 91 stress 9.964806e-05
## ... Procrustes: rmse 0.09380279 max resid 0.5607533
## Run 92 stress 9.634176e-05
## ... Procrustes: rmse 0.1261403 max resid 0.6673482
## Run 93 stress 9.593268e-05
## ... Procrustes: rmse 0.1418879 max resid 0.6963708
## Run 94 stress 9.922093e-05
## ... Procrustes: rmse 0.1115366 max resid 0.474904
## Run 95 stress 9.253149e-05
## ... Procrustes: rmse 0.1113668 max resid 0.5644933
## Run 96 stress 9.885921e-05
## ... Procrustes: rmse 0.1378043 max resid 0.6846926
## Run 97 stress 9.345996e-05
## ... Procrustes: rmse 0.1011218 max resid 0.5984547
## Run 98 stress 9.750194e-05
## ... Procrustes: rmse 0.07818538 max resid 0.4138954
## Run 99 stress 9.163249e-05
## ... Procrustes: rmse 0.1428086 max resid 0.7560296
## Run 100 stress 9.885203e-05
## ... Procrustes: rmse 0.110061 max resid 0.5655507
## Run 101 stress 9.949834e-05
## ... Procrustes: rmse 0.08134256 max resid 0.4046848
## Run 102 stress 9.100031e-05
## ... Procrustes: rmse 0.08238185 max resid 0.4699018
## Run 103 stress 9.986165e-05
## ... Procrustes: rmse 0.1287566 max resid 0.5624157
## Run 104 stress 9.910446e-05
## ... Procrustes: rmse 0.1051665 max resid 0.5473797
## Run 105 stress 8.168464e-05
## ... Procrustes: rmse 0.1244541 max resid 0.7020407
## Run 106 stress 9.529976e-05
## ... Procrustes: rmse 0.1179017 max resid 0.6974942
## Run 107 stress 9.575484e-05
## ... Procrustes: rmse 0.1175783 max resid 0.5846994
## Run 108 stress 9.90271e-05
## ... Procrustes: rmse 0.07794535 max resid 0.4483445
## Run 109 stress 9.65721e-05
## ... Procrustes: rmse 0.09138343 max resid 0.4531438
## Run 110 stress 9.918346e-05
## ... Procrustes: rmse 0.1240639 max resid 0.5225935
## Run 111 stress 9.470268e-05
## ... Procrustes: rmse 0.1158568 max resid 0.5383242
## Run 112 stress 9.322149e-05
## ... Procrustes: rmse 0.05089734 max resid 0.2741764
## Run 113 stress 9.758626e-05
## ... Procrustes: rmse 0.08005744 max resid 0.4347551
## Run 114 stress 9.250553e-05
## ... Procrustes: rmse 0.120379 max resid 0.6483421
## Run 115 stress 9.74674e-05
## ... Procrustes: rmse 0.08130857 max resid 0.4397889
## Run 116 stress 9.391136e-05
## ... Procrustes: rmse 0.07518872 max resid 0.3589781
## Run 117 stress 9.356553e-05
## ... Procrustes: rmse 0.1088761 max resid 0.5566732
## Run 118 stress 9.835208e-05
## ... Procrustes: rmse 0.09435505 max resid 0.4586083
## Run 119 stress 9.232045e-05
## ... Procrustes: rmse 0.1218116 max resid 0.6252972
## Run 120 stress 9.720461e-05
## ... Procrustes: rmse 0.05579754 max resid 0.2958394
## Run 121 stress 9.945436e-05
## ... Procrustes: rmse 0.06911879 max resid 0.3532765
## Run 122 stress 9.479227e-05
## ... Procrustes: rmse 0.1349042 max resid 0.5744012
## Run 123 stress 9.384024e-05
## ... Procrustes: rmse 0.1440119 max resid 0.6552111
## Run 124 stress 9.96354e-05
## ... Procrustes: rmse 0.1007094 max resid 0.4717648
## Run 125 stress 9.812292e-05
## ... Procrustes: rmse 0.1284599 max resid 0.5950112
## Run 126 stress 9.72994e-05
## ... Procrustes: rmse 0.1296738 max resid 0.5919943
## Run 127 stress 9.742965e-05
## ... Procrustes: rmse 0.08683925 max resid 0.3872349
## Run 128 stress 9.619206e-05
## ... Procrustes: rmse 0.05803052 max resid 0.3496762
## Run 129 stress 9.515014e-05
## ... Procrustes: rmse 0.1379924 max resid 0.7461915
## Run 130 stress 8.989503e-05
## ... Procrustes: rmse 0.07297234 max resid 0.3612064
## Run 131 stress 9.34496e-05
## ... Procrustes: rmse 0.1051397 max resid 0.4571336
## Run 132 stress 9.399703e-05
## ... Procrustes: rmse 0.1402787 max resid 0.7185469
## Run 133 stress 9.62578e-05
## ... Procrustes: rmse 0.1178929 max resid 0.6261235
## Run 134 stress 8.872857e-05
## ... Procrustes: rmse 0.1003151 max resid 0.5300573
## Run 135 stress 9.317596e-05
## ... Procrustes: rmse 0.1127878 max resid 0.5876389
## Run 136 stress 9.210276e-05
## ... Procrustes: rmse 0.09771741 max resid 0.5402262
## Run 137 stress 9.675004e-05
## ... Procrustes: rmse 0.05627763 max resid 0.3155264
## Run 138 stress 9.981371e-05
## ... Procrustes: rmse 0.08091857 max resid 0.419735
## Run 139 stress 9.790113e-05
## ... Procrustes: rmse 0.1402376 max resid 0.6946299
## Run 140 stress 9.835982e-05
## ... Procrustes: rmse 0.0614662 max resid 0.3216811
## Run 141 stress 9.798141e-05
## ... Procrustes: rmse 0.110695 max resid 0.6210509
## Run 142 stress 9.628963e-05
## ... Procrustes: rmse 0.1136742 max resid 0.5987257
## Run 143 stress 9.536186e-05
## ... Procrustes: rmse 0.09440331 max resid 0.4812174
## Run 144 stress 9.683879e-05
## ... Procrustes: rmse 0.07018767 max resid 0.34141
## Run 145 stress 9.736379e-05
## ... Procrustes: rmse 0.06342456 max resid 0.3314063
## Run 146 stress 9.115004e-05
## ... Procrustes: rmse 0.1152759 max resid 0.6371821
## Run 147 stress 9.56826e-05
## ... Procrustes: rmse 0.1320726 max resid 0.560562
## Run 148 stress 9.767038e-05
## ... Procrustes: rmse 0.05831339 max resid 0.2434712
## Run 149 stress 9.370485e-05
## ... Procrustes: rmse 0.09777932 max resid 0.5194319
## Run 150 stress 9.278302e-05
## ... Procrustes: rmse 0.1073665 max resid 0.5054621
## Run 151 stress 9.123359e-05
## ... Procrustes: rmse 0.08072102 max resid 0.4478038
## Run 152 stress 9.156754e-05
## ... Procrustes: rmse 0.09207418 max resid 0.3910434
## Run 153 stress 9.982587e-05
## ... Procrustes: rmse 0.1336986 max resid 0.5802313
## Run 154 stress 9.732734e-05
## ... Procrustes: rmse 0.1222572 max resid 0.6534221
## Run 155 stress 9.891791e-05
## ... Procrustes: rmse 0.0493275 max resid 0.2604717
## Run 156 stress 9.631087e-05
## ... Procrustes: rmse 0.1326154 max resid 0.7658346
## Run 157 stress 9.767522e-05
## ... Procrustes: rmse 0.1302556 max resid 0.7577407
## Run 158 stress 9.719721e-05
## ... Procrustes: rmse 0.1312026 max resid 0.5996647
## Run 159 stress 9.878918e-05
## ... Procrustes: rmse 0.11687 max resid 0.5903779
## Run 160 stress 9.432599e-05
## ... Procrustes: rmse 0.05486775 max resid 0.3079096
## Run 161 stress 9.342908e-05
## ... Procrustes: rmse 0.1421457 max resid 0.6132945
## Run 162 stress 9.468885e-05
## ... Procrustes: rmse 0.1396842 max resid 0.6737434
## Run 163 stress 9.001979e-05
## ... Procrustes: rmse 0.08503317 max resid 0.3737083
## Run 164 stress 8.77514e-05
## ... Procrustes: rmse 0.09615989 max resid 0.5775061
## Run 165 stress 9.962668e-05
## ... Procrustes: rmse 0.06288752 max resid 0.3801943
## Run 166 stress 9.75619e-05
## ... Procrustes: rmse 0.1407755 max resid 0.7365237
## Run 167 stress 9.500923e-05
## ... Procrustes: rmse 0.1298091 max resid 0.5480323
## Run 168 stress 9.912566e-05
## ... Procrustes: rmse 0.1325516 max resid 0.7394301
## Run 169 stress 9.463623e-05
## ... Procrustes: rmse 0.05629619 max resid 0.2582185
## Run 170 stress 9.53721e-05
## ... Procrustes: rmse 0.06094657 max resid 0.3724713
## Run 171 stress 9.792743e-05
## ... Procrustes: rmse 0.1037827 max resid 0.5228265
## Run 172 stress 9.776929e-05
## ... Procrustes: rmse 0.06285902 max resid 0.3279133
## Run 173 stress 9.582871e-05
## ... Procrustes: rmse 0.1127387 max resid 0.5431126
## Run 174 stress 9.514932e-05
## ... Procrustes: rmse 0.1163973 max resid 0.4924373
## Run 175 stress 9.329654e-05
## ... Procrustes: rmse 0.1195379 max resid 0.7236514
## Run 176 stress 8.993174e-05
## ... Procrustes: rmse 0.1295518 max resid 0.6140557
## Run 177 stress 9.601624e-05
## ... Procrustes: rmse 0.09108979 max resid 0.4699937
## Run 178 stress 9.323281e-05
## ... Procrustes: rmse 0.1171357 max resid 0.48967
## Run 179 stress 9.891583e-05
## ... Procrustes: rmse 0.1282472 max resid 0.6468975
## Run 180 stress 9.089202e-05
## ... Procrustes: rmse 0.03104347 max resid 0.1525612
## Run 181 stress 9.539974e-05
## ... Procrustes: rmse 0.1174953 max resid 0.5817028
## Run 182 stress 9.029126e-05
## ... Procrustes: rmse 0.104949 max resid 0.4777966
## Run 183 stress 9.534219e-05
## ... Procrustes: rmse 0.1119135 max resid 0.5720301
## Run 184 stress 9.615899e-05
## ... Procrustes: rmse 0.1103782 max resid 0.5238648
## Run 185 stress 9.598422e-05
## ... Procrustes: rmse 0.1378947 max resid 0.6465008
## Run 186 stress 8.668635e-05
## ... Procrustes: rmse 0.1037371 max resid 0.5686971
## Run 187 stress 9.763623e-05
## ... Procrustes: rmse 0.1369366 max resid 0.5477898
## Run 188 stress 9.70142e-05
## ... Procrustes: rmse 0.1102999 max resid 0.6210505
## Run 189 stress 8.239601e-05
## ... Procrustes: rmse 0.07344165 max resid 0.3844313
## Run 190 stress 9.553607e-05
## ... Procrustes: rmse 0.1170427 max resid 0.6407372
## Run 191 stress 9.918769e-05
## ... Procrustes: rmse 0.1268943 max resid 0.6210398
## Run 192 stress 8.471616e-05
## ... Procrustes: rmse 0.106659 max resid 0.5414456
## Run 193 stress 9.633478e-05
## ... Procrustes: rmse 0.135487 max resid 0.7276001
## Run 194 stress 8.964612e-05
## ... Procrustes: rmse 0.1229991 max resid 0.6831705
## Run 195 stress 9.707769e-05
## ... Procrustes: rmse 0.1241657 max resid 0.607378
## Run 196 stress 9.055323e-05
## ... Procrustes: rmse 0.09380704 max resid 0.4604519
## Run 197 stress 8.673142e-05
## ... Procrustes: rmse 0.136572 max resid 0.7088472
## Run 198 stress 9.985331e-05
## ... Procrustes: rmse 0.06647277 max resid 0.3339458
## Run 199 stress 9.77144e-05
## ... Procrustes: rmse 0.04038893 max resid 0.2106804
## Run 200 stress 9.337122e-05
## ... Procrustes: rmse 0.1083033 max resid 0.4853429
## Run 201 stress 9.769055e-05
## ... Procrustes: rmse 0.1365715 max resid 0.6602458
## Run 202 stress 9.324339e-05
## ... Procrustes: rmse 0.09291796 max resid 0.4532865
## Run 203 stress 8.743882e-05
## ... Procrustes: rmse 0.1357394 max resid 0.5793048
## Run 204 stress 9.657468e-05
## ... Procrustes: rmse 0.05444799 max resid 0.346794
## Run 205 stress 8.930917e-05
## ... Procrustes: rmse 0.1363594 max resid 0.6136228
## Run 206 stress 9.32604e-05
## ... Procrustes: rmse 0.1391728 max resid 0.6707893
## Run 207 stress 9.791209e-05
## ... Procrustes: rmse 0.1254533 max resid 0.6944022
## Run 208 stress 9.009416e-05
## ... Procrustes: rmse 0.142582 max resid 0.5848495
## Run 209 stress 9.755132e-05
## ... Procrustes: rmse 0.1332762 max resid 0.7540113
## Run 210 stress 9.248339e-05
## ... Procrustes: rmse 0.1345057 max resid 0.6505188
## Run 211 stress 9.625145e-05
## ... Procrustes: rmse 0.08376379 max resid 0.4915709
## Run 212 stress 9.755635e-05
## ... Procrustes: rmse 0.1327678 max resid 0.5875122
## Run 213 stress 9.95109e-05
## ... Procrustes: rmse 0.1348676 max resid 0.6221652
## Run 214 stress 9.986477e-05
## ... Procrustes: rmse 0.1403876 max resid 0.6795223
## Run 215 stress 9.795613e-05
## ... Procrustes: rmse 0.1222911 max resid 0.5232345
## Run 216 stress 8.934798e-05
## ... Procrustes: rmse 0.121759 max resid 0.5793099
## Run 217 stress 9.675672e-05
## ... Procrustes: rmse 0.08693072 max resid 0.4418413
## Run 218 stress 9.82727e-05
## ... Procrustes: rmse 0.0583244 max resid 0.2812002
## Run 219 stress 9.441796e-05
## ... Procrustes: rmse 0.1272251 max resid 0.5788156
## Run 220 stress 9.616275e-05
## ... Procrustes: rmse 0.09560179 max resid 0.5049806
## Run 221 stress 9.250305e-05
## ... Procrustes: rmse 0.1061227 max resid 0.4962865
## Run 222 stress 9.46851e-05
## ... Procrustes: rmse 0.1220671 max resid 0.581807
## Run 223 stress 9.256184e-05
## ... Procrustes: rmse 0.1213342 max resid 0.6736182
## Run 224 stress 8.731078e-05
## ... Procrustes: rmse 0.1124582 max resid 0.5233933
## Run 225 stress 9.891088e-05
## ... Procrustes: rmse 0.08202076 max resid 0.3985643
## Run 226 stress 9.54543e-05
## ... Procrustes: rmse 0.107178 max resid 0.4749042
## Run 227 stress 9.287484e-05
## ... Procrustes: rmse 0.1267047 max resid 0.6888745
## Run 228 stress 9.88107e-05
## ... Procrustes: rmse 0.1439411 max resid 0.6470049
## Run 229 stress 9.060329e-05
## ... Procrustes: rmse 0.1359754 max resid 0.6549927
## Run 230 stress 9.6465e-05
## ... Procrustes: rmse 0.1151147 max resid 0.6013988
## Run 231 stress 8.320121e-05
## ... Procrustes: rmse 0.1103197 max resid 0.5136143
## Run 232 stress 9.601129e-05
## ... Procrustes: rmse 0.1129601 max resid 0.6703097
## Run 233 stress 9.74122e-05
## ... Procrustes: rmse 0.1186793 max resid 0.6118331
## Run 234 stress 8.34078e-05
## ... Procrustes: rmse 0.04101282 max resid 0.2093611
## Run 235 stress 9.647096e-05
## ... Procrustes: rmse 0.0793849 max resid 0.4958281
## Run 236 stress 9.947416e-05
## ... Procrustes: rmse 0.1023564 max resid 0.5712998
## Run 237 stress 9.076539e-05
## ... Procrustes: rmse 0.1159653 max resid 0.6040264
## Run 238 stress 9.771647e-05
## ... Procrustes: rmse 0.02870513 max resid 0.1246208
## Run 239 stress 9.458949e-05
## ... Procrustes: rmse 0.1126257 max resid 0.5560182
## Run 240 stress 9.740382e-05
## ... Procrustes: rmse 0.084618 max resid 0.472157
## Run 241 stress 8.963113e-05
## ... Procrustes: rmse 0.09132368 max resid 0.5192529
## Run 242 stress 9.376294e-05
## ... Procrustes: rmse 0.1005676 max resid 0.4612832
## Run 243 stress 9.659678e-05
## ... Procrustes: rmse 0.06887047 max resid 0.3403922
## Run 244 stress 9.399637e-05
## ... Procrustes: rmse 0.1409735 max resid 0.7228716
## Run 245 stress 9.615338e-05
## ... Procrustes: rmse 0.0830649 max resid 0.4201042
## Run 246 stress 9.989886e-05
## ... Procrustes: rmse 0.13295 max resid 0.7833237
## Run 247 stress 9.116397e-05
## ... Procrustes: rmse 0.1064682 max resid 0.5000923
## Run 248 stress 8.784918e-05
## ... Procrustes: rmse 0.1354732 max resid 0.658496
## Run 249 stress 9.98938e-05
## ... Procrustes: rmse 0.1150746 max resid 0.5230309
## Run 250 stress 9.851947e-05
## ... Procrustes: rmse 0.09315033 max resid 0.4833164
## Run 251 stress 9.762838e-05
## ... Procrustes: rmse 0.1056884 max resid 0.5638554
## Run 252 stress 9.664042e-05
## ... Procrustes: rmse 0.1269441 max resid 0.7457451
## Run 253 stress 9.80115e-05
## ... Procrustes: rmse 0.0976648 max resid 0.5112527
## Run 254 stress 9.32905e-05
## ... Procrustes: rmse 0.1226982 max resid 0.5012736
## Run 255 stress 9.2918e-05
## ... Procrustes: rmse 0.133937 max resid 0.5819929
## Run 256 stress 9.409283e-05
## ... Procrustes: rmse 0.06811463 max resid 0.2965241
## Run 257 stress 9.808667e-05
## ... Procrustes: rmse 0.1283918 max resid 0.5619365
## Run 258 stress 9.823741e-05
## ... Procrustes: rmse 0.03451195 max resid 0.1559731
## Run 259 stress 9.542857e-05
## ... Procrustes: rmse 0.04391601 max resid 0.2151104
## Run 260 stress 9.808248e-05
## ... Procrustes: rmse 0.1316382 max resid 0.6189441
## Run 261 stress 9.172487e-05
## ... Procrustes: rmse 0.1240851 max resid 0.7189595
## Run 262 stress 9.810213e-05
## ... Procrustes: rmse 0.05498895 max resid 0.3322111
## Run 263 stress 9.339753e-05
## ... Procrustes: rmse 0.1300435 max resid 0.6040862
## Run 264 stress 9.532309e-05
## ... Procrustes: rmse 0.1360962 max resid 0.6518638
## Run 265 stress 9.73917e-05
## ... Procrustes: rmse 0.06523861 max resid 0.3853051
## Run 266 stress 9.224839e-05
## ... Procrustes: rmse 0.1294742 max resid 0.7049621
## Run 267 stress 9.485385e-05
## ... Procrustes: rmse 0.1221672 max resid 0.6165804
## Run 268 stress 9.486626e-05
## ... Procrustes: rmse 0.1284961 max resid 0.5839982
## Run 269 stress 9.007206e-05
## ... Procrustes: rmse 0.1359397 max resid 0.7618579
## Run 270 stress 9.246428e-05
## ... Procrustes: rmse 0.1306635 max resid 0.6666094
## Run 271 stress 9.630698e-05
## ... Procrustes: rmse 0.1301116 max resid 0.6999843
## Run 272 stress 9.963483e-05
## ... Procrustes: rmse 0.05521511 max resid 0.2880312
## Run 273 stress 9.929217e-05
## ... Procrustes: rmse 0.0898618 max resid 0.4239108
## Run 274 stress 9.863444e-05
## ... Procrustes: rmse 0.09290785 max resid 0.5780838
## Run 275 stress 9.89296e-05
## ... Procrustes: rmse 0.1365966 max resid 0.7598131
## Run 276 stress 9.557948e-05
## ... Procrustes: rmse 0.137715 max resid 0.6059507
## Run 277 stress 9.817481e-05
## ... Procrustes: rmse 0.1100828 max resid 0.5455952
## Run 278 stress 9.506325e-05
## ... Procrustes: rmse 0.08989958 max resid 0.4264511
## Run 279 stress 9.79055e-05
## ... Procrustes: rmse 0.1327093 max resid 0.5607231
## Run 280 stress 9.953264e-05
## ... Procrustes: rmse 0.1127256 max resid 0.5799718
## Run 281 stress 9.892072e-05
## ... Procrustes: rmse 0.1417193 max resid 0.6780589
## Run 282 stress 9.628487e-05
## ... Procrustes: rmse 0.132015 max resid 0.6028866
## Run 283 stress 9.386623e-05
## ... Procrustes: rmse 0.117608 max resid 0.5763305
## Run 284 stress 9.679591e-05
## ... Procrustes: rmse 0.05995476 max resid 0.3037161
## Run 285 stress 9.934997e-05
## ... Procrustes: rmse 0.08111637 max resid 0.4584156
## Run 286 stress 9.831703e-05
## ... Procrustes: rmse 0.1135803 max resid 0.5772043
## Run 287 stress 9.353379e-05
## ... Procrustes: rmse 0.07829812 max resid 0.3632307
## Run 288 stress 9.871875e-05
## ... Procrustes: rmse 0.09937798 max resid 0.495021
## Run 289 stress 9.564151e-05
## ... Procrustes: rmse 0.1332557 max resid 0.5566207
## Run 290 stress 9.275332e-05
## ... Procrustes: rmse 0.08123864 max resid 0.3328222
## Run 291 stress 8.928955e-05
## ... Procrustes: rmse 0.05117687 max resid 0.2155563
## Run 292 stress 9.194355e-05
## ... Procrustes: rmse 0.1147056 max resid 0.6510856
## Run 293 stress 9.38352e-05
## ... Procrustes: rmse 0.1287429 max resid 0.6140713
## Run 294 stress 9.370347e-05
## ... Procrustes: rmse 0.1286998 max resid 0.7742802
## Run 295 stress 9.820122e-05
## ... Procrustes: rmse 0.1239426 max resid 0.574019
## Run 296 stress 9.778802e-05
## ... Procrustes: rmse 0.1137334 max resid 0.5892874
## Run 297 stress 9.508464e-05
## ... Procrustes: rmse 0.1218785 max resid 0.5940166
## Run 298 stress 9.761874e-05
## ... Procrustes: rmse 0.1331526 max resid 0.5395226
## Run 299 stress 9.494333e-05
## ... Procrustes: rmse 0.1130753 max resid 0.6588989
## Run 300 stress 9.735035e-05
## ... Procrustes: rmse 0.1253795 max resid 0.7287606
## Run 301 stress 9.740178e-05
## ... Procrustes: rmse 0.09615049 max resid 0.4074795
## Run 302 stress 9.652803e-05
## ... Procrustes: rmse 0.1434446 max resid 0.6133614
## Run 303 stress 9.48416e-05
## ... Procrustes: rmse 0.1233956 max resid 0.5356111
## Run 304 stress 9.735396e-05
## ... Procrustes: rmse 0.1226446 max resid 0.703006
## Run 305 stress 9.809919e-05
## ... Procrustes: rmse 0.1356011 max resid 0.767065
## Run 306 stress 9.360648e-05
## ... Procrustes: rmse 0.1341348 max resid 0.7736119
## Run 307 stress 9.82179e-05
## ... Procrustes: rmse 0.1223576 max resid 0.7294438
## Run 308 stress 9.657967e-05
## ... Procrustes: rmse 0.1244974 max resid 0.6145611
## Run 309 stress 8.956675e-05
## ... Procrustes: rmse 0.09126289 max resid 0.4931538
## Run 310 stress 9.672088e-05
## ... Procrustes: rmse 0.1250788 max resid 0.6846125
## Run 311 stress 9.143703e-05
## ... Procrustes: rmse 0.1008046 max resid 0.4968863
## Run 312 stress 9.752226e-05
## ... Procrustes: rmse 0.1248917 max resid 0.5136188
## Run 313 stress 9.672029e-05
## ... Procrustes: rmse 0.1005042 max resid 0.5353857
## Run 314 stress 9.545714e-05
## ... Procrustes: rmse 0.1361808 max resid 0.5865522
## Run 315 stress 9.697711e-05
## ... Procrustes: rmse 0.1103527 max resid 0.5933938
## Run 316 stress 9.9928e-05
## ... Procrustes: rmse 0.0755534 max resid 0.3895803
## Run 317 stress 9.067206e-05
## ... Procrustes: rmse 0.04952124 max resid 0.21317
## Run 318 stress 9.768466e-05
## ... Procrustes: rmse 0.1319218 max resid 0.6363263
## Run 319 stress 9.579721e-05
## ... Procrustes: rmse 0.08331163 max resid 0.5071928
## Run 320 stress 9.047146e-05
## ... Procrustes: rmse 0.1193455 max resid 0.7067933
## Run 321 stress 9.815379e-05
## ... Procrustes: rmse 0.09124584 max resid 0.4953266
## Run 322 stress 9.564815e-05
## ... Procrustes: rmse 0.1077941 max resid 0.5216217
## Run 323 stress 9.750636e-05
## ... Procrustes: rmse 0.1325311 max resid 0.7258633
## Run 324 stress 8.970075e-05
## ... Procrustes: rmse 0.1357068 max resid 0.6729905
## Run 325 stress 9.202365e-05
## ... Procrustes: rmse 0.123143 max resid 0.5456208
## Run 326 stress 9.649969e-05
## ... Procrustes: rmse 0.02650673 max resid 0.1474228
## Run 327 stress 9.578272e-05
## ... Procrustes: rmse 0.1068178 max resid 0.4911979
## Run 328 stress 9.497833e-05
## ... Procrustes: rmse 0.1347869 max resid 0.6567122
## Run 329 stress 9.654355e-05
## ... Procrustes: rmse 0.1329596 max resid 0.6348034
## Run 330 stress 9.53519e-05
## ... Procrustes: rmse 0.1414644 max resid 0.671175
## Run 331 stress 9.785607e-05
## ... Procrustes: rmse 0.1341932 max resid 0.6873309
## Run 332 stress 9.279099e-05
## ... Procrustes: rmse 0.07445258 max resid 0.3623903
## Run 333 stress 9.063398e-05
## ... Procrustes: rmse 0.1216903 max resid 0.622784
## Run 334 stress 9.903578e-05
## ... Procrustes: rmse 0.1187496 max resid 0.5577147
## Run 335 stress 9.598899e-05
## ... Procrustes: rmse 0.05530817 max resid 0.2307087
## Run 336 stress 9.727338e-05
## ... Procrustes: rmse 0.1432395 max resid 0.6830772
## Run 337 stress 9.901863e-05
## ... Procrustes: rmse 0.1121812 max resid 0.563745
## Run 338 stress 9.831902e-05
## ... Procrustes: rmse 0.07366617 max resid 0.3836651
## Run 339 stress 9.555731e-05
## ... Procrustes: rmse 0.1017586 max resid 0.5344678
## Run 340 stress 9.339686e-05
## ... Procrustes: rmse 0.09858084 max resid 0.5369858
## Run 341 stress 8.750882e-05
## ... Procrustes: rmse 0.08552002 max resid 0.4339809
## Run 342 stress 9.982018e-05
## ... Procrustes: rmse 0.07368726 max resid 0.3623216
## Run 343 stress 9.327905e-05
## ... Procrustes: rmse 0.111818 max resid 0.5344433
## Run 344 stress 9.772893e-05
## ... Procrustes: rmse 0.1026161 max resid 0.4814782
## Run 345 stress 9.116191e-05
## ... Procrustes: rmse 0.1031294 max resid 0.5130447
## Run 346 stress 9.981168e-05
## ... Procrustes: rmse 0.09183544 max resid 0.4940757
## Run 347 stress 9.534975e-05
## ... Procrustes: rmse 0.1236058 max resid 0.5328982
## Run 348 stress 9.831995e-05
## ... Procrustes: rmse 0.1215966 max resid 0.6586395
## Run 349 stress 9.58244e-05
## ... Procrustes: rmse 0.1310235 max resid 0.6518259
## Run 350 stress 9.242854e-05
## ... Procrustes: rmse 0.1279926 max resid 0.6659363
## Run 351 stress 9.980357e-05
## ... Procrustes: rmse 0.07325353 max resid 0.4085568
## Run 352 stress 9.093181e-05
## ... Procrustes: rmse 0.1266446 max resid 0.5399009
## Run 353 stress 9.808404e-05
## ... Procrustes: rmse 0.1292841 max resid 0.7407364
## Run 354 stress 9.081119e-05
## ... Procrustes: rmse 0.1225588 max resid 0.6702313
## Run 355 stress 9.934367e-05
## ... Procrustes: rmse 0.1144235 max resid 0.6300175
## Run 356 stress 9.754054e-05
## ... Procrustes: rmse 0.1219978 max resid 0.6111889
## Run 357 stress 9.986789e-05
## ... Procrustes: rmse 0.1369069 max resid 0.7552544
## Run 358 stress 9.640377e-05
## ... Procrustes: rmse 0.1312716 max resid 0.6134773
## Run 359 stress 8.751788e-05
## ... Procrustes: rmse 0.139164 max resid 0.6778968
## Run 360 stress 9.763541e-05
## ... Procrustes: rmse 0.1069006 max resid 0.5155132
## Run 361 stress 9.760334e-05
## ... Procrustes: rmse 0.1404165 max resid 0.5616295
## Run 362 stress 9.942798e-05
## ... Procrustes: rmse 0.06311537 max resid 0.3040285
## Run 363 stress 9.249432e-05
## ... Procrustes: rmse 0.128034 max resid 0.6600314
## Run 364 stress 9.896439e-05
## ... Procrustes: rmse 0.1419931 max resid 0.5720679
## Run 365 stress 9.764396e-05
## ... Procrustes: rmse 0.1362108 max resid 0.6150035
## Run 366 stress 8.352727e-05
## ... Procrustes: rmse 0.0883723 max resid 0.5563886
## Run 367 stress 9.862659e-05
## ... Procrustes: rmse 0.1182246 max resid 0.568584
## Run 368 stress 9.327753e-05
## ... Procrustes: rmse 0.05693184 max resid 0.3123018
## Run 369 stress 9.929113e-05
## ... Procrustes: rmse 0.07912939 max resid 0.3808468
## Run 370 stress 8.984089e-05
## ... Procrustes: rmse 0.06700872 max resid 0.3291642
## Run 371 stress 9.893768e-05
## ... Procrustes: rmse 0.1301601 max resid 0.6605912
## Run 372 stress 9.065789e-05
## ... Procrustes: rmse 0.03524657 max resid 0.1739881
## Run 373 stress 9.417501e-05
## ... Procrustes: rmse 0.1209788 max resid 0.6045326
## Run 374 stress 9.099072e-05
## ... Procrustes: rmse 0.1244915 max resid 0.6671365
## Run 375 stress 9.396659e-05
## ... Procrustes: rmse 0.09443156 max resid 0.4034279
## Run 376 stress 9.825288e-05
## ... Procrustes: rmse 0.1098461 max resid 0.536561
## Run 377 stress 8.401977e-05
## ... Procrustes: rmse 0.1402599 max resid 0.7200856
## Run 378 stress 9.579656e-05
## ... Procrustes: rmse 0.1317033 max resid 0.5523281
## Run 379 stress 9.793289e-05
## ... Procrustes: rmse 0.13477 max resid 0.6873667
## Run 380 stress 9.229514e-05
## ... Procrustes: rmse 0.1232106 max resid 0.6101637
## Run 381 stress 8.876616e-05
## ... Procrustes: rmse 0.1267742 max resid 0.5712485
## Run 382 stress 9.903146e-05
## ... Procrustes: rmse 0.1389263 max resid 0.5622608
## Run 383 stress 9.63114e-05
## ... Procrustes: rmse 0.1412235 max resid 0.7063958
## Run 384 stress 8.986914e-05
## ... Procrustes: rmse 0.132007 max resid 0.7655157
## Run 385 stress 9.967062e-05
## ... Procrustes: rmse 0.1246165 max resid 0.7262614
## Run 386 stress 9.566425e-05
## ... Procrustes: rmse 0.1161287 max resid 0.551228
## Run 387 stress 9.798515e-05
## ... Procrustes: rmse 0.09882639 max resid 0.5404176
## Run 388 stress 9.816975e-05
## ... Procrustes: rmse 0.1189957 max resid 0.5562541
## Run 389 stress 9.348701e-05
## ... Procrustes: rmse 0.1191694 max resid 0.6104617
## Run 390 stress 9.996841e-05
## ... Procrustes: rmse 0.08869451 max resid 0.4885367
## Run 391 stress 9.35588e-05
## ... Procrustes: rmse 0.1397084 max resid 0.7552083
## Run 392 stress 9.42968e-05
## ... Procrustes: rmse 0.07768785 max resid 0.4190442
## Run 393 stress 9.855283e-05
## ... Procrustes: rmse 0.1174417 max resid 0.5532065
## Run 394 stress 9.777169e-05
## ... Procrustes: rmse 0.09398537 max resid 0.5542574
## Run 395 stress 9.66304e-05
## ... Procrustes: rmse 0.1005421 max resid 0.5012141
## Run 396 stress 9.266504e-05
## ... Procrustes: rmse 0.1118653 max resid 0.5654414
## Run 397 stress 9.695896e-05
## ... Procrustes: rmse 0.1034569 max resid 0.5126059
## Run 398 stress 9.337657e-05
## ... Procrustes: rmse 0.1160969 max resid 0.6137153
## Run 399 stress 9.069531e-05
## ... Procrustes: rmse 0.0961829 max resid 0.4811818
## Run 400 stress 9.535471e-05
## ... Procrustes: rmse 0.1141056 max resid 0.5265306
## Run 401 stress 9.192184e-05
## ... Procrustes: rmse 0.1369104 max resid 0.6118274
## Run 402 stress 9.551899e-05
## ... Procrustes: rmse 0.1193894 max resid 0.5773125
## Run 403 stress 9.934102e-05
## ... Procrustes: rmse 0.127677 max resid 0.6604834
## Run 404 stress 9.833781e-05
## ... Procrustes: rmse 0.1005961 max resid 0.5840986
## Run 405 stress 9.546329e-05
## ... Procrustes: rmse 0.09304625 max resid 0.5730618
## Run 406 stress 9.565334e-05
## ... Procrustes: rmse 0.07622678 max resid 0.4498822
## Run 407 stress 9.189831e-05
## ... Procrustes: rmse 0.1182391 max resid 0.5997504
## Run 408 stress 9.509274e-05
## ... Procrustes: rmse 0.1413674 max resid 0.6732883
## Run 409 stress 9.451968e-05
## ... Procrustes: rmse 0.1162624 max resid 0.5161694
## Run 410 stress 9.59909e-05
## ... Procrustes: rmse 0.1170204 max resid 0.5232321
## Run 411 stress 8.61344e-05
## ... Procrustes: rmse 0.1335012 max resid 0.6202835
## Run 412 stress 9.817324e-05
## ... Procrustes: rmse 0.1305383 max resid 0.7212328
## Run 413 stress 9.278203e-05
## ... Procrustes: rmse 0.08892063 max resid 0.5237012
## Run 414 stress 8.877892e-05
## ... Procrustes: rmse 0.07899835 max resid 0.4719645
## Run 415 stress 8.580057e-05
## ... Procrustes: rmse 0.1195243 max resid 0.5816493
## Run 416 stress 9.887283e-05
## ... Procrustes: rmse 0.1361719 max resid 0.7623436
## Run 417 stress 9.13576e-05
## ... Procrustes: rmse 0.1293422 max resid 0.5436075
## Run 418 stress 9.768137e-05
## ... Procrustes: rmse 0.1380936 max resid 0.5972111
## Run 419 stress 9.556861e-05
## ... Procrustes: rmse 0.07382709 max resid 0.3711304
## Run 420 stress 9.760117e-05
## ... Procrustes: rmse 0.1079011 max resid 0.5639894
## Run 421 stress 9.625142e-05
## ... Procrustes: rmse 0.0936667 max resid 0.4404215
## Run 422 stress 8.290341e-05
## ... Procrustes: rmse 0.1028131 max resid 0.6157022
## Run 423 stress 9.533581e-05
## ... Procrustes: rmse 0.1023809 max resid 0.5060918
## Run 424 stress 9.782154e-05
## ... Procrustes: rmse 0.123641 max resid 0.5542826
## Run 425 stress 9.933952e-05
## ... Procrustes: rmse 0.1044616 max resid 0.5296247
## Run 426 stress 9.981236e-05
## ... Procrustes: rmse 0.1226567 max resid 0.5926184
## Run 427 stress 8.328406e-05
## ... Procrustes: rmse 0.1026753 max resid 0.4750102
## Run 428 stress 9.999949e-05
## ... Procrustes: rmse 0.1218177 max resid 0.6363223
## Run 429 stress 9.874062e-05
## ... Procrustes: rmse 0.1026513 max resid 0.5316615
## Run 430 stress 9.458093e-05
## ... Procrustes: rmse 0.1138907 max resid 0.6533098
## Run 431 stress 9.801086e-05
## ... Procrustes: rmse 0.02811843 max resid 0.1356243
## Run 432 stress 8.144891e-05
## ... Procrustes: rmse 0.1005018 max resid 0.4511746
## Run 433 stress 9.730793e-05
## ... Procrustes: rmse 0.1088823 max resid 0.6374296
## Run 434 stress 9.268467e-05
## ... Procrustes: rmse 0.1136796 max resid 0.5764873
## Run 435 stress 9.568899e-05
## ... Procrustes: rmse 0.08636596 max resid 0.4817167
## Run 436 stress 9.960319e-05
## ... Procrustes: rmse 0.03931657 max resid 0.2064424
## Run 437 stress 9.592202e-05
## ... Procrustes: rmse 0.1244617 max resid 0.6600013
## Run 438 stress 9.218539e-05
## ... Procrustes: rmse 0.1337173 max resid 0.5874531
## Run 439 stress 9.735946e-05
## ... Procrustes: rmse 0.1162641 max resid 0.6091147
## Run 440 stress 9.975917e-05
## ... Procrustes: rmse 0.06174203 max resid 0.3098812
## Run 441 stress 9.710593e-05
## ... Procrustes: rmse 0.1135064 max resid 0.4747501
## Run 442 stress 9.723399e-05
## ... Procrustes: rmse 0.06466311 max resid 0.2909075
## Run 443 stress 9.734825e-05
## ... Procrustes: rmse 0.08999032 max resid 0.5399446
## Run 444 stress 9.402739e-05
## ... Procrustes: rmse 0.09103985 max resid 0.4105907
## Run 445 stress 9.987687e-05
## ... Procrustes: rmse 0.08814469 max resid 0.4858503
## Run 446 stress 9.921167e-05
## ... Procrustes: rmse 0.131277 max resid 0.5620346
## Run 447 stress 9.874126e-05
## ... Procrustes: rmse 0.1049222 max resid 0.6098475
## Run 448 stress 9.779907e-05
## ... Procrustes: rmse 0.1287396 max resid 0.7653749
## Run 449 stress 9.072966e-05
## ... Procrustes: rmse 0.1323949 max resid 0.5761377
## Run 450 stress 9.772975e-05
## ... Procrustes: rmse 0.06839852 max resid 0.3778055
## Run 451 stress 8.96752e-05
## ... Procrustes: rmse 0.09269351 max resid 0.4457899
## Run 452 stress 7.99772e-05
## ... Procrustes: rmse 0.1156762 max resid 0.6303955
## Run 453 stress 9.98291e-05
## ... Procrustes: rmse 0.1009438 max resid 0.6153727
## Run 454 stress 9.465363e-05
## ... Procrustes: rmse 0.07887667 max resid 0.404411
## Run 455 stress 9.428936e-05
## ... Procrustes: rmse 0.1247196 max resid 0.779627
## Run 456 stress 9.227516e-05
## ... Procrustes: rmse 0.07974654 max resid 0.373401
## Run 457 stress 9.760492e-05
## ... Procrustes: rmse 0.1020061 max resid 0.5930662
## Run 458 stress 9.144469e-05
## ... Procrustes: rmse 0.1154152 max resid 0.7151954
## Run 459 stress 9.413825e-05
## ... Procrustes: rmse 0.1141438 max resid 0.674457
## Run 460 stress 9.083265e-05
## ... Procrustes: rmse 0.1340339 max resid 0.6141349
## Run 461 stress 9.921746e-05
## ... Procrustes: rmse 0.1350895 max resid 0.6898184
## Run 462 stress 9.000427e-05
## ... Procrustes: rmse 0.04235811 max resid 0.1980825
## Run 463 stress 9.640225e-05
## ... Procrustes: rmse 0.1388305 max resid 0.5543901
## Run 464 stress 9.628377e-05
## ... Procrustes: rmse 0.05027508 max resid 0.2757382
## Run 465 stress 8.838763e-05
## ... Procrustes: rmse 0.08314864 max resid 0.4241174
## Run 466 stress 9.693445e-05
## ... Procrustes: rmse 0.07054791 max resid 0.3902519
## Run 467 stress 9.803527e-05
## ... Procrustes: rmse 0.08640898 max resid 0.4095799
## Run 468 stress 9.351006e-05
## ... Procrustes: rmse 0.1095425 max resid 0.6304433
## Run 469 stress 9.870163e-05
## ... Procrustes: rmse 0.0726795 max resid 0.4041128
## Run 470 stress 9.920689e-05
## ... Procrustes: rmse 0.123546 max resid 0.6368385
## Run 471 stress 9.982641e-05
## ... Procrustes: rmse 0.09733528 max resid 0.534536
## Run 472 stress 9.794748e-05
## ... Procrustes: rmse 0.1067876 max resid 0.4986706
## Run 473 stress 9.818075e-05
## ... Procrustes: rmse 0.08511482 max resid 0.4515028
## Run 474 stress 9.614643e-05
## ... Procrustes: rmse 0.1275919 max resid 0.7259134
## Run 475 stress 9.43488e-05
## ... Procrustes: rmse 0.1118723 max resid 0.5370932
## Run 476 stress 9.579584e-05
## ... Procrustes: rmse 0.02024597 max resid 0.1021998
## Run 477 stress 9.248205e-05
## ... Procrustes: rmse 0.09134967 max resid 0.4345199
## Run 478 stress 9.508354e-05
## ... Procrustes: rmse 0.1008892 max resid 0.4440781
## Run 479 stress 9.529186e-05
## ... Procrustes: rmse 0.09881207 max resid 0.5124389
## Run 480 stress 9.625375e-05
## ... Procrustes: rmse 0.1133541 max resid 0.6934464
## Run 481 stress 9.951145e-05
## ... Procrustes: rmse 0.1362048 max resid 0.6409663
## Run 482 stress 9.557771e-05
## ... Procrustes: rmse 0.1035398 max resid 0.5461805
## Run 483 stress 9.83576e-05
## ... Procrustes: rmse 0.1338756 max resid 0.7587259
## Run 484 stress 9.531343e-05
## ... Procrustes: rmse 0.09361726 max resid 0.3998748
## Run 485 stress 9.927247e-05
## ... Procrustes: rmse 0.1020885 max resid 0.5465685
## Run 486 stress 8.717258e-05
## ... Procrustes: rmse 0.1273867 max resid 0.6510289
## Run 487 stress 9.195072e-05
## ... Procrustes: rmse 0.1258883 max resid 0.6516583
## Run 488 stress 9.652606e-05
## ... Procrustes: rmse 0.1403858 max resid 0.7216154
## Run 489 stress 9.141979e-05
## ... Procrustes: rmse 0.08659774 max resid 0.3615145
## Run 490 stress 9.572959e-05
## ... Procrustes: rmse 0.1308677 max resid 0.7818984
## Run 491 stress 9.841248e-05
## ... Procrustes: rmse 0.1069114 max resid 0.5453931
## Run 492 stress 9.611446e-05
## ... Procrustes: rmse 0.1238853 max resid 0.5769224
## Run 493 stress 8.953737e-05
## ... Procrustes: rmse 0.1368027 max resid 0.56403
## Run 494 stress 8.699062e-05
## ... Procrustes: rmse 0.0326998 max resid 0.1382865
## Run 495 stress 9.498598e-05
## ... Procrustes: rmse 0.1301124 max resid 0.6064643
## Run 496 stress 9.732587e-05
## ... Procrustes: rmse 0.08628595 max resid 0.450715
## Run 497 stress 9.444707e-05
## ... Procrustes: rmse 0.05996973 max resid 0.3183823
## Run 498 stress 9.651943e-05
## ... Procrustes: rmse 0.1097959 max resid 0.5331301
## Run 499 stress 9.223697e-05
## ... Procrustes: rmse 0.1213531 max resid 0.5557559
## Run 500 stress 9.888259e-05
## ... Procrustes: rmse 0.077256 max resid 0.3617031
## Run 501 stress 9.797361e-05
## ... Procrustes: rmse 0.1180172 max resid 0.5903942
## Run 502 stress 9.582191e-05
## ... Procrustes: rmse 0.06302574 max resid 0.3840622
## Run 503 stress 8.20733e-05
## ... Procrustes: rmse 0.1073417 max resid 0.4666858
## Run 504 stress 9.645547e-05
## ... Procrustes: rmse 0.1391219 max resid 0.6334359
## Run 505 stress 9.937268e-05
## ... Procrustes: rmse 0.1181973 max resid 0.5848759
## Run 506 stress 9.420916e-05
## ... Procrustes: rmse 0.09614716 max resid 0.5644213
## Run 507 stress 9.14968e-05
## ... Procrustes: rmse 0.1355488 max resid 0.6866441
## Run 508 stress 9.958939e-05
## ... Procrustes: rmse 0.1384017 max resid 0.6504428
## Run 509 stress 9.613572e-05
## ... Procrustes: rmse 0.07749593 max resid 0.3612009
## Run 510 stress 9.972696e-05
## ... Procrustes: rmse 0.1319046 max resid 0.6718024
## Run 511 stress 9.988592e-05
## ... Procrustes: rmse 0.06160679 max resid 0.2970848
## Run 512 stress 9.984471e-05
## ... Procrustes: rmse 0.1391612 max resid 0.7671991
## Run 513 stress 9.730935e-05
## ... Procrustes: rmse 0.07611407 max resid 0.3589653
## Run 514 stress 9.461304e-05
## ... Procrustes: rmse 0.09963822 max resid 0.5340054
## Run 515 stress 9.497522e-05
## ... Procrustes: rmse 0.04272458 max resid 0.219416
## Run 516 stress 9.668655e-05
## ... Procrustes: rmse 0.05051215 max resid 0.2422381
## Run 517 stress 9.184731e-05
## ... Procrustes: rmse 0.1013887 max resid 0.5006488
## Run 518 stress 9.934391e-05
## ... Procrustes: rmse 0.06880371 max resid 0.3884722
## Run 519 stress 9.366695e-05
## ... Procrustes: rmse 0.1263778 max resid 0.5407309
## Run 520 stress 9.590462e-05
## ... Procrustes: rmse 0.1204692 max resid 0.5578333
## Run 521 stress 9.7575e-05
## ... Procrustes: rmse 0.1045255 max resid 0.6265488
## Run 522 stress 9.466276e-05
## ... Procrustes: rmse 0.1122612 max resid 0.5939661
## Run 523 stress 9.165558e-05
## ... Procrustes: rmse 0.1188971 max resid 0.5662334
## Run 524 stress 9.570103e-05
## ... Procrustes: rmse 0.1059409 max resid 0.4787336
## Run 525 stress 9.884051e-05
## ... Procrustes: rmse 0.04570898 max resid 0.2269475
## Run 526 stress 8.857491e-05
## ... Procrustes: rmse 0.07261579 max resid 0.4069897
## Run 527 stress 9.497072e-05
## ... Procrustes: rmse 0.1169772 max resid 0.5172125
## Run 528 stress 9.572717e-05
## ... Procrustes: rmse 0.07651286 max resid 0.3581145
## Run 529 stress 9.334758e-05
## ... Procrustes: rmse 0.1028038 max resid 0.5206514
## Run 530 stress 9.881218e-05
## ... Procrustes: rmse 0.08334126 max resid 0.5074325
## Run 531 stress 9.935165e-05
## ... Procrustes: rmse 0.1083262 max resid 0.5619312
## Run 532 stress 9.845168e-05
## ... Procrustes: rmse 0.08692256 max resid 0.4845652
## Run 533 stress 9.504539e-05
## ... Procrustes: rmse 0.123029 max resid 0.5206946
## Run 534 stress 9.509065e-05
## ... Procrustes: rmse 0.1349639 max resid 0.5675801
## Run 535 stress 9.612657e-05
## ... Procrustes: rmse 0.1325085 max resid 0.7224551
## Run 536 stress 9.433104e-05
## ... Procrustes: rmse 0.1289538 max resid 0.65089
## Run 537 stress 9.606461e-05
## ... Procrustes: rmse 0.1417385 max resid 0.6992653
## Run 538 stress 9.497222e-05
## ... Procrustes: rmse 0.1085533 max resid 0.5247165
## Run 539 stress 9.672482e-05
## ... Procrustes: rmse 0.1373497 max resid 0.7012863
## Run 540 stress 9.553288e-05
## ... Procrustes: rmse 0.1042239 max resid 0.5019315
## Run 541 stress 9.505233e-05
## ... Procrustes: rmse 0.1211795 max resid 0.5482367
## Run 542 stress 8.686603e-05
## ... Procrustes: rmse 0.1266371 max resid 0.5624408
## Run 543 stress 9.565532e-05
## ... Procrustes: rmse 0.09187321 max resid 0.4069859
## Run 544 stress 9.286699e-05
## ... Procrustes: rmse 0.08180524 max resid 0.4402856
## Run 545 stress 9.560398e-05
## ... Procrustes: rmse 0.04788513 max resid 0.2221164
## Run 546 stress 8.560609e-05
## ... Procrustes: rmse 0.09870307 max resid 0.5189261
## Run 547 stress 9.935719e-05
## ... Procrustes: rmse 0.1328334 max resid 0.5708575
## Run 548 stress 9.968783e-05
## ... Procrustes: rmse 0.125823 max resid 0.6941852
## Run 549 stress 9.599751e-05
## ... Procrustes: rmse 0.1359402 max resid 0.7466277
## Run 550 stress 9.673609e-05
## ... Procrustes: rmse 0.1206752 max resid 0.5489132
## Run 551 stress 9.157821e-05
## ... Procrustes: rmse 0.09322737 max resid 0.5071977
## Run 552 stress 9.973023e-05
## ... Procrustes: rmse 0.1321938 max resid 0.59695
## Run 553 stress 9.740562e-05
## ... Procrustes: rmse 0.1156091 max resid 0.5903716
## Run 554 stress 9.644947e-05
## ... Procrustes: rmse 0.1018225 max resid 0.5031875
## Run 555 stress 9.837951e-05
## ... Procrustes: rmse 0.1236989 max resid 0.5901239
## Run 556 stress 9.659169e-05
## ... Procrustes: rmse 0.08465876 max resid 0.4639887
## Run 557 stress 9.919208e-05
## ... Procrustes: rmse 0.1096302 max resid 0.4966784
## Run 558 stress 8.408988e-05
## ... Procrustes: rmse 0.1045298 max resid 0.4585453
## Run 559 stress 9.718022e-05
## ... Procrustes: rmse 0.09552035 max resid 0.5411723
## Run 560 stress 9.739735e-05
## ... Procrustes: rmse 0.08771158 max resid 0.3843201
## Run 561 stress 9.643292e-05
## ... Procrustes: rmse 0.1229512 max resid 0.723206
## Run 562 stress 8.584872e-05
## ... Procrustes: rmse 0.08296772 max resid 0.3801879
## Run 563 stress 9.252348e-05
## ... Procrustes: rmse 0.1241483 max resid 0.674316
## Run 564 stress 8.699311e-05
## ... Procrustes: rmse 0.09835112 max resid 0.5277054
## Run 565 stress 9.923874e-05
## ... Procrustes: rmse 0.1281244 max resid 0.642857
## Run 566 stress 9.720476e-05
## ... Procrustes: rmse 0.1397067 max resid 0.742435
## Run 567 stress 9.69329e-05
## ... Procrustes: rmse 0.04943891 max resid 0.2977122
## Run 568 stress 9.925693e-05
## ... Procrustes: rmse 0.1119821 max resid 0.4800141
## Run 569 stress 9.738582e-05
## ... Procrustes: rmse 0.1028935 max resid 0.6350565
## Run 570 stress 9.519786e-05
## ... Procrustes: rmse 0.109491 max resid 0.6020626
## Run 571 stress 9.27299e-05
## ... Procrustes: rmse 0.1294988 max resid 0.6312981
## Run 572 stress 9.608662e-05
## ... Procrustes: rmse 0.1057272 max resid 0.4298845
## Run 573 stress 9.760206e-05
## ... Procrustes: rmse 0.09040236 max resid 0.5375158
## Run 574 stress 8.696424e-05
## ... Procrustes: rmse 0.1346618 max resid 0.7075841
## Run 575 stress 9.190169e-05
## ... Procrustes: rmse 0.03578414 max resid 0.1686328
## Run 576 stress 9.65085e-05
## ... Procrustes: rmse 0.06888072 max resid 0.4235419
## Run 577 stress 9.514668e-05
## ... Procrustes: rmse 0.1098403 max resid 0.5610648
## Run 578 stress 8.956584e-05
## ... Procrustes: rmse 0.06398492 max resid 0.3853911
## Run 579 stress 9.832299e-05
## ... Procrustes: rmse 0.1317857 max resid 0.6311987
## Run 580 stress 9.812936e-05
## ... Procrustes: rmse 0.1323459 max resid 0.6287416
## Run 581 stress 9.425164e-05
## ... Procrustes: rmse 0.1226726 max resid 0.6611976
## Run 582 stress 9.289714e-05
## ... Procrustes: rmse 0.1103467 max resid 0.6409948
## Run 583 stress 8.880901e-05
## ... Procrustes: rmse 0.1346302 max resid 0.7565485
## Run 584 stress 8.563707e-05
## ... Procrustes: rmse 0.1189956 max resid 0.7099166
## Run 585 stress 9.571859e-05
## ... Procrustes: rmse 0.05733298 max resid 0.270441
## Run 586 stress 9.833383e-05
## ... Procrustes: rmse 0.1117393 max resid 0.5196064
## Run 587 stress 9.972416e-05
## ... Procrustes: rmse 0.0860366 max resid 0.5383533
## Run 588 stress 9.94968e-05
## ... Procrustes: rmse 0.08955143 max resid 0.5071129
## Run 589 stress 9.541921e-05
## ... Procrustes: rmse 0.1181134 max resid 0.6121867
## Run 590 stress 9.823336e-05
## ... Procrustes: rmse 0.1051244 max resid 0.5703407
## Run 591 stress 9.14581e-05
## ... Procrustes: rmse 0.08578058 max resid 0.4960423
## Run 592 stress 9.917043e-05
## ... Procrustes: rmse 0.1234731 max resid 0.7457518
## Run 593 stress 9.545253e-05
## ... Procrustes: rmse 0.1179188 max resid 0.4908106
## Run 594 stress 9.914262e-05
## ... Procrustes: rmse 0.08392887 max resid 0.3754517
## Run 595 stress 9.287813e-05
## ... Procrustes: rmse 0.1173377 max resid 0.4925735
## Run 596 stress 9.499098e-05
## ... Procrustes: rmse 0.1084829 max resid 0.5389128
## Run 597 stress 9.745942e-05
## ... Procrustes: rmse 0.1097405 max resid 0.5788056
## Run 598 stress 9.305748e-05
## ... Procrustes: rmse 0.1439405 max resid 0.685763
## Run 599 stress 9.993963e-05
## ... Procrustes: rmse 0.1020262 max resid 0.5012803
## Run 600 stress 9.506523e-05
## ... Procrustes: rmse 0.1250368 max resid 0.6329894
## Run 601 stress 8.975393e-05
## ... Procrustes: rmse 0.07715842 max resid 0.3496764
## Run 602 stress 9.878091e-05
## ... Procrustes: rmse 0.09144159 max resid 0.5417333
## Run 603 stress 9.419553e-05
## ... Procrustes: rmse 0.07477666 max resid 0.4167283
## Run 604 stress 9.680356e-05
## ... Procrustes: rmse 0.1075995 max resid 0.5502399
## Run 605 stress 9.840266e-05
## ... Procrustes: rmse 0.1174126 max resid 0.5829194
## Run 606 stress 9.679434e-05
## ... Procrustes: rmse 0.1306741 max resid 0.6446969
## Run 607 stress 9.5168e-05
## ... Procrustes: rmse 0.117877 max resid 0.6453379
## Run 608 stress 9.147667e-05
## ... Procrustes: rmse 0.07037731 max resid 0.4611239
## Run 609 stress 9.814418e-05
## ... Procrustes: rmse 0.1298776 max resid 0.6512224
## Run 610 stress 9.792625e-05
## ... Procrustes: rmse 0.06775823 max resid 0.4058177
## Run 611 stress 9.922054e-05
## ... Procrustes: rmse 0.1105366 max resid 0.6567
## Run 612 stress 9.808587e-05
## ... Procrustes: rmse 0.1328431 max resid 0.580406
## Run 613 stress 9.70446e-05
## ... Procrustes: rmse 0.1032091 max resid 0.4934845
## Run 614 stress 9.682873e-05
## ... Procrustes: rmse 0.09866057 max resid 0.4090073
## Run 615 stress 9.340482e-05
## ... Procrustes: rmse 0.1278192 max resid 0.6284036
## Run 616 stress 9.008675e-05
## ... Procrustes: rmse 0.04320779 max resid 0.2067014
## Run 617 stress 9.96567e-05
## ... Procrustes: rmse 0.1355299 max resid 0.7931075
## Run 618 stress 9.865454e-05
## ... Procrustes: rmse 0.1258938 max resid 0.5869102
## Run 619 stress 9.729902e-05
## ... Procrustes: rmse 0.1228703 max resid 0.6760514
## Run 620 stress 9.630671e-05
## ... Procrustes: rmse 0.1425823 max resid 0.6335766
## Run 621 stress 9.976381e-05
## ... Procrustes: rmse 0.1338446 max resid 0.785138
## Run 622 stress 9.995202e-05
## ... Procrustes: rmse 0.08386498 max resid 0.4463303
## Run 623 stress 9.792296e-05
## ... Procrustes: rmse 0.1132149 max resid 0.5565841
## Run 624 stress 9.813786e-05
## ... Procrustes: rmse 0.1270013 max resid 0.7466572
## Run 625 stress 9.770696e-05
## ... Procrustes: rmse 0.1290626 max resid 0.6712051
## Run 626 stress 9.905901e-05
## ... Procrustes: rmse 0.07160617 max resid 0.3791207
## Run 627 stress 9.859491e-05
## ... Procrustes: rmse 0.1243218 max resid 0.7125665
## Run 628 stress 9.557728e-05
## ... Procrustes: rmse 0.1052167 max resid 0.490216
## Run 629 stress 8.958731e-05
## ... Procrustes: rmse 0.1323714 max resid 0.6667983
## Run 630 stress 9.927502e-05
## ... Procrustes: rmse 0.1119094 max resid 0.604455
## Run 631 stress 9.959904e-05
## ... Procrustes: rmse 0.1044246 max resid 0.4930839
## Run 632 stress 9.69455e-05
## ... Procrustes: rmse 0.124974 max resid 0.6582785
## Run 633 stress 8.792904e-05
## ... Procrustes: rmse 0.1029008 max resid 0.5724549
## Run 634 stress 9.798751e-05
## ... Procrustes: rmse 0.1174758 max resid 0.6866905
## Run 635 stress 9.377903e-05
## ... Procrustes: rmse 0.0673956 max resid 0.3971212
## Run 636 stress 9.992313e-05
## ... Procrustes: rmse 0.0842273 max resid 0.4281352
## Run 637 stress 9.681335e-05
## ... Procrustes: rmse 0.1414434 max resid 0.7366155
## Run 638 stress 9.015212e-05
## ... Procrustes: rmse 0.1399771 max resid 0.697714
## Run 639 stress 9.884187e-05
## ... Procrustes: rmse 0.1343093 max resid 0.7807231
## Run 640 stress 9.729044e-05
## ... Procrustes: rmse 0.1378763 max resid 0.6217905
## Run 641 stress 9.627542e-05
## ... Procrustes: rmse 0.1391784 max resid 0.6746818
## Run 642 stress 9.663814e-05
## ... Procrustes: rmse 0.1193416 max resid 0.6217222
## Run 643 stress 9.604047e-05
## ... Procrustes: rmse 0.04535572 max resid 0.2254721
## Run 644 stress 9.551403e-05
## ... Procrustes: rmse 0.05310827 max resid 0.2612599
## Run 645 stress 9.672887e-05
## ... Procrustes: rmse 0.1070268 max resid 0.571504
## Run 646 stress 8.734239e-05
## ... Procrustes: rmse 0.1114964 max resid 0.510701
## Run 647 stress 9.473944e-05
## ... Procrustes: rmse 0.08237687 max resid 0.3712917
## Run 648 stress 9.476268e-05
## ... Procrustes: rmse 0.1352429 max resid 0.6499225
## Run 649 stress 9.925842e-05
## ... Procrustes: rmse 0.1015482 max resid 0.5321456
## Run 650 stress 9.707738e-05
## ... Procrustes: rmse 0.05734186 max resid 0.2775043
## Run 651 stress 9.53836e-05
## ... Procrustes: rmse 0.1198191 max resid 0.6500862
## Run 652 stress 9.740824e-05
## ... Procrustes: rmse 0.09413684 max resid 0.4802279
## Run 653 stress 9.980259e-05
## ... Procrustes: rmse 0.05491954 max resid 0.3376059
## Run 654 stress 9.555986e-05
## ... Procrustes: rmse 0.03799231 max resid 0.2273066
## Run 655 stress 9.492066e-05
## ... Procrustes: rmse 0.08817134 max resid 0.4734684
## Run 656 stress 9.898815e-05
## ... Procrustes: rmse 0.08697785 max resid 0.4715641
## Run 657 stress 9.651487e-05
## ... Procrustes: rmse 0.1340717 max resid 0.5694927
## Run 658 stress 9.305114e-05
## ... Procrustes: rmse 0.03930929 max resid 0.1801482
## Run 659 stress 9.517563e-05
## ... Procrustes: rmse 0.1117346 max resid 0.5241783
## Run 660 stress 9.287485e-05
## ... Procrustes: rmse 0.05339528 max resid 0.2792646
## Run 661 stress 9.116348e-05
## ... Procrustes: rmse 0.1137801 max resid 0.5415726
## Run 662 stress 9.464508e-05
## ... Procrustes: rmse 0.1380011 max resid 0.6086221
## Run 663 stress 9.26272e-05
## ... Procrustes: rmse 0.06267218 max resid 0.3710561
## Run 664 stress 9.557538e-05
## ... Procrustes: rmse 0.1232249 max resid 0.7481438
## Run 665 stress 9.137321e-05
## ... Procrustes: rmse 0.1137563 max resid 0.4972997
## Run 666 stress 9.861194e-05
## ... Procrustes: rmse 0.1244182 max resid 0.770156
## Run 667 stress 9.804365e-05
## ... Procrustes: rmse 0.1270159 max resid 0.5662396
## Run 668 stress 9.761983e-05
## ... Procrustes: rmse 0.09246013 max resid 0.45416
## Run 669 stress 9.989299e-05
## ... Procrustes: rmse 0.1148292 max resid 0.5670815
## Run 670 stress 9.5316e-05
## ... Procrustes: rmse 0.1440049 max resid 0.6226963
## Run 671 stress 9.843586e-05
## ... Procrustes: rmse 0.06090854 max resid 0.2954206
## Run 672 stress 9.636976e-05
## ... Procrustes: rmse 0.1133442 max resid 0.5027111
## Run 673 stress 9.809108e-05
## ... Procrustes: rmse 0.09340421 max resid 0.393064
## Run 674 stress 9.903678e-05
## ... Procrustes: rmse 0.1275282 max resid 0.7808794
## Run 675 stress 9.520393e-05
## ... Procrustes: rmse 0.09987596 max resid 0.6033202
## Run 676 stress 9.765956e-05
## ... Procrustes: rmse 0.1354811 max resid 0.5559696
## Run 677 stress 9.978277e-05
## ... Procrustes: rmse 0.1156538 max resid 0.6495883
## Run 678 stress 9.954762e-05
## ... Procrustes: rmse 0.09435004 max resid 0.5496774
## Run 679 stress 9.222547e-05
## ... Procrustes: rmse 0.1289273 max resid 0.5750494
## Run 680 stress 9.410911e-05
## ... Procrustes: rmse 0.09192916 max resid 0.359617
## Run 681 stress 9.831862e-05
## ... Procrustes: rmse 0.1405583 max resid 0.7552919
## Run 682 stress 9.221476e-05
## ... Procrustes: rmse 0.1293048 max resid 0.5972277
## Run 683 stress 9.628183e-05
## ... Procrustes: rmse 0.1394401 max resid 0.6039135
## Run 684 stress 9.4456e-05
## ... Procrustes: rmse 0.1376464 max resid 0.6874547
## Run 685 stress 9.61738e-05
## ... Procrustes: rmse 0.09789341 max resid 0.4675593
## Run 686 stress 9.518713e-05
## ... Procrustes: rmse 0.05721292 max resid 0.2835252
## Run 687 stress 9.732804e-05
## ... Procrustes: rmse 0.1385187 max resid 0.5780402
## Run 688 stress 9.799111e-05
## ... Procrustes: rmse 0.1253338 max resid 0.6210224
## Run 689 stress 9.959027e-05
## ... Procrustes: rmse 0.1351567 max resid 0.7181484
## Run 690 stress 9.457918e-05
## ... Procrustes: rmse 0.09805558 max resid 0.4493529
## Run 691 stress 8.782416e-05
## ... Procrustes: rmse 0.1232156 max resid 0.5943609
## Run 692 stress 9.681283e-05
## ... Procrustes: rmse 0.09108869 max resid 0.5163907
## Run 693 stress 9.592978e-05
## ... Procrustes: rmse 0.1237508 max resid 0.5249113
## Run 694 stress 9.959002e-05
## ... Procrustes: rmse 0.07657839 max resid 0.4268617
## Run 695 stress 9.598795e-05
## ... Procrustes: rmse 0.114142 max resid 0.5313419
## Run 696 stress 9.547759e-05
## ... Procrustes: rmse 0.1097565 max resid 0.6275924
## Run 697 stress 9.416887e-05
## ... Procrustes: rmse 0.08362033 max resid 0.4231884
## Run 698 stress 9.504613e-05
## ... Procrustes: rmse 0.09443533 max resid 0.4282344
## Run 699 stress 9.632469e-05
## ... Procrustes: rmse 0.08587389 max resid 0.4841768
## Run 700 stress 9.67118e-05
## ... Procrustes: rmse 0.1298668 max resid 0.5957182
## Run 701 stress 9.614144e-05
## ... Procrustes: rmse 0.09997794 max resid 0.5236056
## Run 702 stress 9.962519e-05
## ... Procrustes: rmse 0.143687 max resid 0.6297608
## Run 703 stress 9.205282e-05
## ... Procrustes: rmse 0.1434605 max resid 0.6962279
## Run 704 stress 9.442607e-05
## ... Procrustes: rmse 0.1207801 max resid 0.703923
## Run 705 stress 9.843e-05
## ... Procrustes: rmse 0.05625562 max resid 0.2263776
## Run 706 stress 9.582724e-05
## ... Procrustes: rmse 0.09589767 max resid 0.493651
## Run 707 stress 9.736778e-05
## ... Procrustes: rmse 0.0498582 max resid 0.2912317
## Run 708 stress 9.566344e-05
## ... Procrustes: rmse 0.07245212 max resid 0.4417438
## Run 709 stress 9.427668e-05
## ... Procrustes: rmse 0.1333734 max resid 0.698421
## Run 710 stress 9.636061e-05
## ... Procrustes: rmse 0.1407683 max resid 0.700883
## Run 711 stress 9.157082e-05
## ... Procrustes: rmse 0.1458508 max resid 0.6672982
## Run 712 stress 9.92656e-05
## ... Procrustes: rmse 0.1141025 max resid 0.5150569
## Run 713 stress 9.599986e-05
## ... Procrustes: rmse 0.06416048 max resid 0.3217215
## Run 714 stress 9.274842e-05
## ... Procrustes: rmse 0.07135266 max resid 0.3393882
## Run 715 stress 9.7006e-05
## ... Procrustes: rmse 0.0901683 max resid 0.4622043
## Run 716 stress 9.715816e-05
## ... Procrustes: rmse 0.1054946 max resid 0.5868932
## Run 717 stress 9.06722e-05
## ... Procrustes: rmse 0.1350854 max resid 0.7900781
## Run 718 stress 9.253644e-05
## ... Procrustes: rmse 0.1354946 max resid 0.7839159
## Run 719 stress 9.615045e-05
## ... Procrustes: rmse 0.1243483 max resid 0.576684
## Run 720 stress 9.675546e-05
## ... Procrustes: rmse 0.1016316 max resid 0.5679596
## Run 721 stress 9.933271e-05
## ... Procrustes: rmse 0.05993782 max resid 0.2680298
## Run 722 stress 9.938873e-05
## ... Procrustes: rmse 0.1317647 max resid 0.6059432
## Run 723 stress 9.784924e-05
## ... Procrustes: rmse 0.1082456 max resid 0.4610153
## Run 724 stress 9.512046e-05
## ... Procrustes: rmse 0.09358541 max resid 0.4936686
## Run 725 stress 9.98445e-05
## ... Procrustes: rmse 0.1327389 max resid 0.7945093
## Run 726 stress 8.573032e-05
## ... Procrustes: rmse 0.1404365 max resid 0.5570388
## Run 727 stress 9.593559e-05
## ... Procrustes: rmse 0.09628469 max resid 0.513597
## Run 728 stress 9.902931e-05
## ... Procrustes: rmse 0.1362928 max resid 0.6134877
## Run 729 stress 9.903558e-05
## ... Procrustes: rmse 0.131589 max resid 0.6247477
## Run 730 stress 9.319911e-05
## ... Procrustes: rmse 0.1104579 max resid 0.534672
## Run 731 stress 9.61351e-05
## ... Procrustes: rmse 0.1291341 max resid 0.7053398
## Run 732 stress 8.944801e-05
## ... Procrustes: rmse 0.1297578 max resid 0.6442252
## Run 733 stress 9.722636e-05
## ... Procrustes: rmse 0.1261324 max resid 0.6581049
## Run 734 stress 9.82441e-05
## ... Procrustes: rmse 0.1180803 max resid 0.6539671
## Run 735 stress 9.966186e-05
## ... Procrustes: rmse 0.09357231 max resid 0.5051585
## Run 736 stress 9.563635e-05
## ... Procrustes: rmse 0.09130412 max resid 0.5328884
## Run 737 stress 9.902831e-05
## ... Procrustes: rmse 0.1322632 max resid 0.6648395
## Run 738 stress 9.76834e-05
## ... Procrustes: rmse 0.1040306 max resid 0.5496079
## Run 739 stress 9.545106e-05
## ... Procrustes: rmse 0.1263152 max resid 0.6288086
## Run 740 stress 9.855876e-05
## ... Procrustes: rmse 0.1150043 max resid 0.6024184
## Run 741 stress 9.167403e-05
## ... Procrustes: rmse 0.1145222 max resid 0.6226112
## Run 742 stress 8.423409e-05
## ... Procrustes: rmse 0.07679451 max resid 0.372045
## Run 743 stress 9.368884e-05
## ... Procrustes: rmse 0.1065192 max resid 0.5760895
## Run 744 stress 9.663461e-05
## ... Procrustes: rmse 0.04109072 max resid 0.1791786
## Run 745 stress 9.631974e-05
## ... Procrustes: rmse 0.1210158 max resid 0.7296302
## Run 746 stress 8.987655e-05
## ... Procrustes: rmse 0.1145174 max resid 0.7222387
## Run 747 stress 9.595166e-05
## ... Procrustes: rmse 0.1370067 max resid 0.5881774
## Run 748 stress 9.649167e-05
## ... Procrustes: rmse 0.07845759 max resid 0.3561024
## Run 749 stress 9.946206e-05
## ... Procrustes: rmse 0.1054646 max resid 0.5353367
## Run 750 stress 9.802265e-05
## ... Procrustes: rmse 0.02677142 max resid 0.1608552
## Run 751 stress 9.875694e-05
## ... Procrustes: rmse 0.1170022 max resid 0.5724296
## Run 752 stress 9.867956e-05
## ... Procrustes: rmse 0.09089277 max resid 0.3739679
## Run 753 stress 9.815915e-05
## ... Procrustes: rmse 0.0806082 max resid 0.4894387
## Run 754 stress 9.717464e-05
## ... Procrustes: rmse 0.09781562 max resid 0.4564429
## Run 755 stress 9.671177e-05
## ... Procrustes: rmse 0.09258534 max resid 0.437357
## Run 756 stress 9.87009e-05
## ... Procrustes: rmse 0.1012492 max resid 0.494571
## Run 757 stress 9.836662e-05
## ... Procrustes: rmse 0.1280885 max resid 0.7568481
## Run 758 stress 9.429583e-05
## ... Procrustes: rmse 0.1439615 max resid 0.6894816
## Run 759 stress 9.638995e-05
## ... Procrustes: rmse 0.1442288 max resid 0.7001137
## Run 760 stress 9.917723e-05
## ... Procrustes: rmse 0.1367497 max resid 0.769666
## Run 761 stress 9.877502e-05
## ... Procrustes: rmse 0.02238613 max resid 0.1208209
## Run 762 stress 9.628311e-05
## ... Procrustes: rmse 0.1289843 max resid 0.6588702
## Run 763 stress 9.570755e-05
## ... Procrustes: rmse 0.0843576 max resid 0.4498155
## Run 764 stress 9.103642e-05
## ... Procrustes: rmse 0.08101088 max resid 0.4333617
## Run 765 stress 9.804965e-05
## ... Procrustes: rmse 0.09124825 max resid 0.4392755
## Run 766 stress 9.324633e-05
## ... Procrustes: rmse 0.09688222 max resid 0.4962959
## Run 767 stress 9.825588e-05
## ... Procrustes: rmse 0.1049223 max resid 0.4841434
## Run 768 stress 9.997939e-05
## ... Procrustes: rmse 0.05820292 max resid 0.304606
## Run 769 stress 9.996223e-05
## ... Procrustes: rmse 0.1295669 max resid 0.7590337
## Run 770 stress 9.893217e-05
## ... Procrustes: rmse 0.1429261 max resid 0.6903853
## Run 771 stress 9.537709e-05
## ... Procrustes: rmse 0.1347833 max resid 0.7288972
## Run 772 stress 9.624345e-05
## ... Procrustes: rmse 0.05777076 max resid 0.2753537
## Run 773 stress 9.133759e-05
## ... Procrustes: rmse 0.1407702 max resid 0.7041245
## Run 774 stress 9.961427e-05
## ... Procrustes: rmse 0.1437755 max resid 0.628431
## Run 775 stress 9.689419e-05
## ... Procrustes: rmse 0.1179369 max resid 0.6322189
## Run 776 stress 9.898808e-05
## ... Procrustes: rmse 0.1450749 max resid 0.6783624
## Run 777 stress 9.882346e-05
## ... Procrustes: rmse 0.1094261 max resid 0.5686575
## Run 778 stress 9.122431e-05
## ... Procrustes: rmse 0.09074195 max resid 0.5621816
## Run 779 stress 9.504637e-05
## ... Procrustes: rmse 0.1100704 max resid 0.4861888
## Run 780 stress 9.875853e-05
## ... Procrustes: rmse 0.1090203 max resid 0.4956415
## Run 781 stress 9.711889e-05
## ... Procrustes: rmse 0.143052 max resid 0.6820583
## Run 782 stress 9.909684e-05
## ... Procrustes: rmse 0.1283345 max resid 0.6281022
## Run 783 stress 9.370745e-05
## ... Procrustes: rmse 0.1147505 max resid 0.702654
## Run 784 stress 9.782632e-05
## ... Procrustes: rmse 0.1245958 max resid 0.5456474
## Run 785 stress 9.823352e-05
## ... Procrustes: rmse 0.1301148 max resid 0.6415377
## Run 786 stress 9.642036e-05
## ... Procrustes: rmse 0.09016173 max resid 0.4857513
## Run 787 stress 9.670199e-05
## ... Procrustes: rmse 0.1135688 max resid 0.5471167
## Run 788 stress 9.776228e-05
## ... Procrustes: rmse 0.09032988 max resid 0.4999749
## Run 789 stress 9.874534e-05
## ... Procrustes: rmse 0.1389272 max resid 0.7536412
## Run 790 stress 9.696878e-05
## ... Procrustes: rmse 0.1163212 max resid 0.5518241
## Run 791 stress 9.435979e-05
## ... Procrustes: rmse 0.1346683 max resid 0.6860881
## Run 792 stress 9.383225e-05
## ... Procrustes: rmse 0.1238 max resid 0.5977472
## Run 793 stress 9.990599e-05
## ... Procrustes: rmse 0.1217383 max resid 0.5187998
## Run 794 stress 9.930151e-05
## ... Procrustes: rmse 0.1294581 max resid 0.6244489
## Run 795 stress 9.7106e-05
## ... Procrustes: rmse 0.05940677 max resid 0.3017585
## Run 796 stress 9.660162e-05
## ... Procrustes: rmse 0.1407313 max resid 0.5904714
## Run 797 stress 9.935062e-05
## ... Procrustes: rmse 0.1391197 max resid 0.6468576
## Run 798 stress 9.596629e-05
## ... Procrustes: rmse 0.04666548 max resid 0.2468838
## Run 799 stress 9.836388e-05
## ... Procrustes: rmse 0.03333808 max resid 0.1539942
## Run 800 stress 9.706608e-05
## ... Procrustes: rmse 0.1311621 max resid 0.7503785
## Run 801 stress 9.273051e-05
## ... Procrustes: rmse 0.1227645 max resid 0.6327246
## Run 802 stress 9.550858e-05
## ... Procrustes: rmse 0.1380818 max resid 0.6444401
## Run 803 stress 9.57952e-05
## ... Procrustes: rmse 0.1366577 max resid 0.7181241
## Run 804 stress 9.786985e-05
## ... Procrustes: rmse 0.07370557 max resid 0.3400542
## Run 805 stress 9.661437e-05
## ... Procrustes: rmse 0.1095421 max resid 0.4920785
## Run 806 stress 8.81043e-05
## ... Procrustes: rmse 0.08748883 max resid 0.4562728
## Run 807 stress 9.442306e-05
## ... Procrustes: rmse 0.06263837 max resid 0.3214455
## Run 808 stress 9.947041e-05
## ... Procrustes: rmse 0.14283 max resid 0.6058801
## Run 809 stress 9.706409e-05
## ... Procrustes: rmse 0.138917 max resid 0.6585785
## Run 810 stress 9.064466e-05
## ... Procrustes: rmse 0.1157008 max resid 0.5858784
## Run 811 stress 9.799241e-05
## ... Procrustes: rmse 0.1271243 max resid 0.6191473
## Run 812 stress 9.930651e-05
## ... Procrustes: rmse 0.1333005 max resid 0.7832014
## Run 813 stress 9.949341e-05
## ... Procrustes: rmse 0.04504434 max resid 0.2816401
## Run 814 stress 9.955029e-05
## ... Procrustes: rmse 0.09954865 max resid 0.6406672
## Run 815 stress 9.981566e-05
## ... Procrustes: rmse 0.05816335 max resid 0.3233207
## Run 816 stress 9.616108e-05
## ... Procrustes: rmse 0.1404865 max resid 0.5793235
## Run 817 stress 9.228295e-05
## ... Procrustes: rmse 0.1020766 max resid 0.5072579
## Run 818 stress 9.654968e-05
## ... Procrustes: rmse 0.06505342 max resid 0.334393
## Run 819 stress 9.714531e-05
## ... Procrustes: rmse 0.1302643 max resid 0.6200475
## Run 820 stress 9.954058e-05
## ... Procrustes: rmse 0.1178515 max resid 0.7029164
## Run 821 stress 9.45358e-05
## ... Procrustes: rmse 0.1330742 max resid 0.6261921
## Run 822 stress 9.158167e-05
## ... Procrustes: rmse 0.1074027 max resid 0.513189
## Run 823 stress 9.964302e-05
## ... Procrustes: rmse 0.04988628 max resid 0.2013648
## Run 824 stress 9.96272e-05
## ... Procrustes: rmse 0.131255 max resid 0.7257421
## Run 825 stress 9.858113e-05
## ... Procrustes: rmse 0.1180405 max resid 0.5700352
## Run 826 stress 9.826171e-05
## ... Procrustes: rmse 0.1436397 max resid 0.6248295
## Run 827 stress 9.809668e-05
## ... Procrustes: rmse 0.1241264 max resid 0.5515244
## Run 828 stress 9.463335e-05
## ... Procrustes: rmse 0.1283708 max resid 0.6812575
## Run 829 stress 9.959823e-05
## ... Procrustes: rmse 0.04746721 max resid 0.2708095
## Run 830 stress 9.390365e-05
## ... Procrustes: rmse 0.03511227 max resid 0.1688559
## Run 831 stress 9.995108e-05
## ... Procrustes: rmse 0.125478 max resid 0.6387202
## Run 832 stress 9.910168e-05
## ... Procrustes: rmse 0.1227142 max resid 0.649958
## Run 833 stress 9.336541e-05
## ... Procrustes: rmse 0.1301941 max resid 0.7096378
## Run 834 stress 9.406049e-05
## ... Procrustes: rmse 0.05573204 max resid 0.2609423
## Run 835 stress 9.428598e-05
## ... Procrustes: rmse 0.1017806 max resid 0.4821233
## Run 836 stress 9.674173e-05
## ... Procrustes: rmse 0.1177259 max resid 0.491613
## Run 837 stress 9.223996e-05
## ... Procrustes: rmse 0.09521847 max resid 0.4762516
## Run 838 stress 9.142992e-05
## ... Procrustes: rmse 0.07610669 max resid 0.3533936
## Run 839 stress 9.783934e-05
## ... Procrustes: rmse 0.1328407 max resid 0.5364382
## Run 840 stress 9.363345e-05
## ... Procrustes: rmse 0.03564709 max resid 0.1755501
## Run 841 stress 9.72452e-05
## ... Procrustes: rmse 0.1035789 max resid 0.4895084
## Run 842 stress 9.674679e-05
## ... Procrustes: rmse 0.08697928 max resid 0.5279133
## Run 843 stress 9.005208e-05
## ... Procrustes: rmse 0.1429296 max resid 0.698603
## Run 844 stress 9.436867e-05
## ... Procrustes: rmse 0.05006419 max resid 0.2719386
## Run 845 stress 9.573644e-05
## ... Procrustes: rmse 0.1419455 max resid 0.6341543
## Run 846 stress 9.85203e-05
## ... Procrustes: rmse 0.1219465 max resid 0.6213666
## Run 847 stress 9.989744e-05
## ... Procrustes: rmse 0.1071443 max resid 0.5559819
## Run 848 stress 9.4511e-05
## ... Procrustes: rmse 0.131838 max resid 0.6339063
## Run 849 stress 9.791976e-05
## ... Procrustes: rmse 0.05782042 max resid 0.2969143
## Run 850 stress 9.534178e-05
## ... Procrustes: rmse 0.03948838 max resid 0.2194461
## Run 851 stress 9.353074e-05
## ... Procrustes: rmse 0.1426585 max resid 0.6400454
## Run 852 stress 9.94642e-05
## ... Procrustes: rmse 0.1251465 max resid 0.5860678
## Run 853 stress 9.576043e-05
## ... Procrustes: rmse 0.1187153 max resid 0.6046834
## Run 854 stress 9.999346e-05
## ... Procrustes: rmse 0.1237698 max resid 0.6412577
## Run 855 stress 9.85182e-05
## ... Procrustes: rmse 0.1078151 max resid 0.5689577
## Run 856 stress 9.604858e-05
## ... Procrustes: rmse 0.107148 max resid 0.4385674
## Run 857 stress 9.772599e-05
## ... Procrustes: rmse 0.1080073 max resid 0.4755259
## Run 858 stress 9.914702e-05
## ... Procrustes: rmse 0.06917067 max resid 0.322591
## Run 859 stress 9.782229e-05
## ... Procrustes: rmse 0.09058312 max resid 0.4468527
## Run 860 stress 8.646194e-05
## ... Procrustes: rmse 0.1433234 max resid 0.6608161
## Run 861 stress 9.697472e-05
## ... Procrustes: rmse 0.1284275 max resid 0.6928261
## Run 862 stress 9.98277e-05
## ... Procrustes: rmse 0.1256653 max resid 0.5597088
## Run 863 stress 9.678636e-05
## ... Procrustes: rmse 0.1426693 max resid 0.6515759
## Run 864 stress 9.554467e-05
## ... Procrustes: rmse 0.1120776 max resid 0.4707165
## Run 865 stress 9.022261e-05
## ... Procrustes: rmse 0.1389855 max resid 0.7612314
## Run 866 stress 9.879704e-05
## ... Procrustes: rmse 0.1193446 max resid 0.5258649
## Run 867 stress 9.730595e-05
## ... Procrustes: rmse 0.1324918 max resid 0.6814864
## Run 868 stress 8.831671e-05
## ... Procrustes: rmse 0.1133296 max resid 0.6370265
## Run 869 stress 9.968364e-05
## ... Procrustes: rmse 0.0875287 max resid 0.4400494
## Run 870 stress 9.498867e-05
## ... Procrustes: rmse 0.1317917 max resid 0.7772521
## Run 871 stress 9.376669e-05
## ... Procrustes: rmse 0.09159746 max resid 0.432867
## Run 872 stress 9.575369e-05
## ... Procrustes: rmse 0.1227651 max resid 0.5846033
## Run 873 stress 9.527452e-05
## ... Procrustes: rmse 0.1437952 max resid 0.6689977
## Run 874 stress 9.156608e-05
## ... Procrustes: rmse 0.1316002 max resid 0.7405265
## Run 875 stress 9.782739e-05
## ... Procrustes: rmse 0.1158815 max resid 0.6076898
## Run 876 stress 9.99084e-05
## ... Procrustes: rmse 0.07663131 max resid 0.3693731
## Run 877 stress 9.701722e-05
## ... Procrustes: rmse 0.130067 max resid 0.7405159
## Run 878 stress 9.929993e-05
## ... Procrustes: rmse 0.07292367 max resid 0.4142107
## Run 879 stress 9.833307e-05
## ... Procrustes: rmse 0.133924 max resid 0.5745054
## Run 880 stress 9.496949e-05
## ... Procrustes: rmse 0.1137712 max resid 0.586138
## Run 881 stress 9.398945e-05
## ... Procrustes: rmse 0.08890154 max resid 0.4411269
## Run 882 stress 9.827678e-05
## ... Procrustes: rmse 0.1060687 max resid 0.6077091
## Run 883 stress 9.899508e-05
## ... Procrustes: rmse 0.1344344 max resid 0.7925295
## Run 884 stress 9.112388e-05
## ... Procrustes: rmse 0.1440546 max resid 0.62579
## Run 885 stress 9.405819e-05
## ... Procrustes: rmse 0.1427184 max resid 0.6392512
## Run 886 stress 8.810252e-05
## ... Procrustes: rmse 0.14119 max resid 0.6737043
## Run 887 stress 9.760382e-05
## ... Procrustes: rmse 0.1442898 max resid 0.6569634
## Run 888 stress 9.785725e-05
## ... Procrustes: rmse 0.1367859 max resid 0.6277682
## Run 889 stress 9.562961e-05
## ... Procrustes: rmse 0.06621321 max resid 0.3275121
## Run 890 stress 9.042246e-05
## ... Procrustes: rmse 0.08707446 max resid 0.4929428
## Run 891 stress 9.498124e-05
## ... Procrustes: rmse 0.04103255 max resid 0.1947284
## Run 892 stress 9.390253e-05
## ... Procrustes: rmse 0.1376842 max resid 0.6695542
## Run 893 stress 9.807549e-05
## ... Procrustes: rmse 0.1387494 max resid 0.5963905
## Run 894 stress 9.794045e-05
## ... Procrustes: rmse 0.1421816 max resid 0.6563714
## Run 895 stress 9.650132e-05
## ... Procrustes: rmse 0.09306642 max resid 0.4366679
## Run 896 stress 9.841537e-05
## ... Procrustes: rmse 0.1041043 max resid 0.570329
## Run 897 stress 9.39598e-05
## ... Procrustes: rmse 0.09372343 max resid 0.5044934
## Run 898 stress 9.307183e-05
## ... Procrustes: rmse 0.08670133 max resid 0.44846
## Run 899 stress 9.459758e-05
## ... Procrustes: rmse 0.1359789 max resid 0.651303
## Run 900 stress 9.486967e-05
## ... Procrustes: rmse 0.08270721 max resid 0.4303468
## Run 901 stress 9.894443e-05
## ... Procrustes: rmse 0.08693301 max resid 0.4462103
## Run 902 stress 9.512611e-05
## ... Procrustes: rmse 0.04522248 max resid 0.2077338
## Run 903 stress 9.42214e-05
## ... Procrustes: rmse 0.1322257 max resid 0.7080454
## Run 904 stress 8.917817e-05
## ... Procrustes: rmse 0.1453637 max resid 0.6892364
## Run 905 stress 9.559766e-05
## ... Procrustes: rmse 0.07233235 max resid 0.3651588
## Run 906 stress 9.194773e-05
## ... Procrustes: rmse 0.08912292 max resid 0.4095563
## Run 907 stress 9.651178e-05
## ... Procrustes: rmse 0.03398072 max resid 0.1387391
## Run 908 stress 9.919211e-05
## ... Procrustes: rmse 0.107781 max resid 0.6060931
## Run 909 stress 9.637196e-05
## ... Procrustes: rmse 0.1007212 max resid 0.5474282
## Run 910 stress 9.301656e-05
## ... Procrustes: rmse 0.1210905 max resid 0.6525515
## Run 911 stress 9.016523e-05
## ... Procrustes: rmse 0.1434523 max resid 0.6322782
## Run 912 stress 9.495537e-05
## ... Procrustes: rmse 0.1264605 max resid 0.5889615
## Run 913 stress 9.891339e-05
## ... Procrustes: rmse 0.1053062 max resid 0.5061057
## Run 914 stress 9.813857e-05
## ... Procrustes: rmse 0.05196476 max resid 0.2892624
## Run 915 stress 9.760568e-05
## ... Procrustes: rmse 0.1382354 max resid 0.7422587
## Run 916 stress 9.596921e-05
## ... Procrustes: rmse 0.1136743 max resid 0.4865001
## Run 917 stress 9.856987e-05
## ... Procrustes: rmse 0.1169744 max resid 0.5717189
## Run 918 stress 9.410758e-05
## ... Procrustes: rmse 0.1173394 max resid 0.6698417
## Run 919 stress 9.422597e-05
## ... Procrustes: rmse 0.06126961 max resid 0.2623502
## Run 920 stress 9.532282e-05
## ... Procrustes: rmse 0.1287214 max resid 0.6691233
## Run 921 stress 9.759369e-05
## ... Procrustes: rmse 0.1445613 max resid 0.6282268
## Run 922 stress 9.264865e-05
## ... Procrustes: rmse 0.1101157 max resid 0.5282698
## Run 923 stress 9.624759e-05
## ... Procrustes: rmse 0.138738 max resid 0.7386304
## Run 924 stress 9.749395e-05
## ... Procrustes: rmse 0.1209386 max resid 0.5904118
## Run 925 stress 9.614679e-05
## ... Procrustes: rmse 0.09457725 max resid 0.5467725
## Run 926 stress 9.202379e-05
## ... Procrustes: rmse 0.1160208 max resid 0.5518938
## Run 927 stress 9.704556e-05
## ... Procrustes: rmse 0.08856657 max resid 0.4419517
## Run 928 stress 9.746201e-05
## ... Procrustes: rmse 0.06734452 max resid 0.3090197
## Run 929 stress 9.921994e-05
## ... Procrustes: rmse 0.125745 max resid 0.54857
## Run 930 stress 9.941541e-05
## ... Procrustes: rmse 0.08553617 max resid 0.5175357
## Run 931 stress 9.438474e-05
## ... Procrustes: rmse 0.1371404 max resid 0.5986602
## Run 932 stress 9.884396e-05
## ... Procrustes: rmse 0.116245 max resid 0.4763903
## Run 933 stress 9.979167e-05
## ... Procrustes: rmse 0.1142401 max resid 0.5190099
## Run 934 stress 9.239917e-05
## ... Procrustes: rmse 0.1179729 max resid 0.5817208
## Run 935 stress 9.726349e-05
## ... Procrustes: rmse 0.06230883 max resid 0.3516136
## Run 936 stress 9.194965e-05
## ... Procrustes: rmse 0.1398802 max resid 0.6399242
## Run 937 stress 9.810267e-05
## ... Procrustes: rmse 0.04115051 max resid 0.2315015
## Run 938 stress 9.827662e-05
## ... Procrustes: rmse 0.09592652 max resid 0.4483335
## Run 939 stress 9.917031e-05
## ... Procrustes: rmse 0.07598793 max resid 0.4294538
## Run 940 stress 9.984775e-05
## ... Procrustes: rmse 0.1081412 max resid 0.5812286
## Run 941 stress 9.796303e-05
## ... Procrustes: rmse 0.1298068 max resid 0.6148063
## Run 942 stress 9.812394e-05
## ... Procrustes: rmse 0.1316213 max resid 0.6475278
## Run 943 stress 9.616326e-05
## ... Procrustes: rmse 0.08787881 max resid 0.4562389
## Run 944 stress 9.633935e-05
## ... Procrustes: rmse 0.1286841 max resid 0.6417467
## Run 945 stress 9.820455e-05
## ... Procrustes: rmse 0.1255771 max resid 0.5540498
## Run 946 stress 9.58859e-05
## ... Procrustes: rmse 0.08494858 max resid 0.4333278
## Run 947 stress 9.46252e-05
## ... Procrustes: rmse 0.134758 max resid 0.68509
## Run 948 stress 9.148822e-05
## ... Procrustes: rmse 0.1427307 max resid 0.7188752
## Run 949 stress 9.280184e-05
## ... Procrustes: rmse 0.1203198 max resid 0.5679255
## Run 950 stress 9.065377e-05
## ... Procrustes: rmse 0.1261904 max resid 0.5784626
## Run 951 stress 9.489855e-05
## ... Procrustes: rmse 0.1423109 max resid 0.5816855
## Run 952 stress 9.46057e-05
## ... Procrustes: rmse 0.1061747 max resid 0.5733851
## Run 953 stress 9.703349e-05
## ... Procrustes: rmse 0.1154932 max resid 0.5844506
## Run 954 stress 9.86154e-05
## ... Procrustes: rmse 0.1007879 max resid 0.5618952
## Run 955 stress 9.976062e-05
## ... Procrustes: rmse 0.1133081 max resid 0.6195598
## Run 956 stress 9.957872e-05
## ... Procrustes: rmse 0.02579664 max resid 0.1085732
## Run 957 stress 9.882727e-05
## ... Procrustes: rmse 0.1071937 max resid 0.6073372
## Run 958 stress 9.692647e-05
## ... Procrustes: rmse 0.1334241 max resid 0.5589173
## Run 959 stress 9.943794e-05
## ... Procrustes: rmse 0.126224 max resid 0.5484232
## Run 960 stress 9.64754e-05
## ... Procrustes: rmse 0.1319253 max resid 0.6365642
## Run 961 stress 9.820125e-05
## ... Procrustes: rmse 0.07339253 max resid 0.3648639
## Run 962 stress 7.229357e-05
## ... New best solution
## ... Procrustes: rmse 0.1195022 max resid 0.6330615
## Run 963 stress 9.619245e-05
## ... Procrustes: rmse 0.119586 max resid 0.642231
## Run 964 stress 9.608804e-05
## ... Procrustes: rmse 0.1306753 max resid 0.6686307
## Run 965 stress 9.98396e-05
## ... Procrustes: rmse 0.1327542 max resid 0.628649
## Run 966 stress 9.824598e-05
## ... Procrustes: rmse 0.07701028 max resid 0.4581597
## Run 967 stress 9.470024e-05
## ... Procrustes: rmse 0.05166974 max resid 0.2487532
## Run 968 stress 9.838355e-05
## ... Procrustes: rmse 0.09593451 max resid 0.4150594
## Run 969 stress 9.687099e-05
## ... Procrustes: rmse 0.1085058 max resid 0.51413
## Run 970 stress 9.720692e-05
## ... Procrustes: rmse 0.1106491 max resid 0.5367901
## Run 971 stress 9.779112e-05
## ... Procrustes: rmse 0.09715535 max resid 0.5289982
## Run 972 stress 9.70299e-05
## ... Procrustes: rmse 0.118105 max resid 0.50269
## Run 973 stress 9.332147e-05
## ... Procrustes: rmse 0.1093494 max resid 0.4878376
## Run 974 stress 9.997872e-05
## ... Procrustes: rmse 0.1292351 max resid 0.580801
## Run 975 stress 9.611434e-05
## ... Procrustes: rmse 0.1086579 max resid 0.5237937
## Run 976 stress 9.867881e-05
## ... Procrustes: rmse 0.126438 max resid 0.6927411
## Run 977 stress 8.938787e-05
## ... Procrustes: rmse 0.07292716 max resid 0.4308419
## Run 978 stress 9.774227e-05
## ... Procrustes: rmse 0.1332251 max resid 0.5506737
## Run 979 stress 9.821674e-05
## ... Procrustes: rmse 0.06077253 max resid 0.2804834
## Run 980 stress 9.90532e-05
## ... Procrustes: rmse 0.08686582 max resid 0.4630577
## Run 981 stress 8.993395e-05
## ... Procrustes: rmse 0.1010706 max resid 0.5622036
## Run 982 stress 9.540147e-05
## ... Procrustes: rmse 0.106592 max resid 0.5340276
## Run 983 stress 9.994062e-05
## ... Procrustes: rmse 0.1253104 max resid 0.6654489
## Run 984 stress 9.790161e-05
## ... Procrustes: rmse 0.08233517 max resid 0.3950112
## Run 985 stress 9.331986e-05
## ... Procrustes: rmse 0.05442191 max resid 0.2577177
## Run 986 stress 9.733496e-05
## ... Procrustes: rmse 0.122606 max resid 0.6128088
## Run 987 stress 9.163111e-05
## ... Procrustes: rmse 0.1261904 max resid 0.6039626
## Run 988 stress 9.507128e-05
## ... Procrustes: rmse 0.07545072 max resid 0.4787759
## Run 989 stress 9.927224e-05
## ... Procrustes: rmse 0.1292429 max resid 0.5414162
## Run 990 stress 9.550689e-05
## ... Procrustes: rmse 0.1014061 max resid 0.5349006
## Run 991 stress 9.366558e-05
## ... Procrustes: rmse 0.1194979 max resid 0.6278103
## Run 992 stress 9.567026e-05
## ... Procrustes: rmse 0.1285295 max resid 0.6842082
## Run 993 stress 9.189494e-05
## ... Procrustes: rmse 0.1135553 max resid 0.5062501
## Run 994 stress 9.357012e-05
## ... Procrustes: rmse 0.133799 max resid 0.6807082
## Run 995 stress 9.75015e-05
## ... Procrustes: rmse 0.1325859 max resid 0.6559115
## Run 996 stress 8.780842e-05
## ... Procrustes: rmse 0.0534672 max resid 0.2777782
## Run 997 stress 9.909493e-05
## ... Procrustes: rmse 0.1070371 max resid 0.5085635
## Run 998 stress 8.525977e-05
## ... Procrustes: rmse 0.06669069 max resid 0.3367896
## Run 999 stress 9.037163e-05
## ... Procrustes: rmse 0.1129424 max resid 0.492407
## *** Best solution was not repeated -- monoMDS stopping criteria:
## 999: stress < smin
Fishcytb_NMDSmodel
##
## Call:
## metaMDS(comm = Fishcytb_wide_simple, distance = "bray", trymax = 999)
##
## global Multidimensional Scaling using monoMDS
##
## Data: Fishcytb_wide_simple
## Distance: bray
##
## Dimensions: 2
## Stress: 7.229357e-05
## Stress type 1, weak ties
## Best solution was not repeated after 999 tries
## The best solution was from try 962 (random start)
## Scaling: centring, PC rotation, halfchange scaling
## Species: expanded scores based on 'Fishcytb_wide_simple'
get datascores
Fishcytb.data.scores<-scores(Fishcytb_NMDSmodel,display="sites")
Fishcytb.data.scores<- as.data.frame(Fishcytb.data.scores)
add environmental variables back in
# Extract the first 5 columns from df1
first_5_columns <- Fishcytb_wide[, 1:4]
# Combine the first 5 columns from df1 with df2
Fishcytb.data.scores <- cbind(first_5_columns, Fishcytb.data.scores)
plot datascores
xx <- ggplot(Fishcytb.data.scores, aes(x = NMDS1, y = NMDS2,colour = station)) +geom_point(aes(colour = station))+theme_bw()+theme(panel.grid.major = element_blank(),
panel.grid.minor = element_blank(), axis.line = element_line(colour = "black"))+scale_x_continuous(limits = c(-30, -20))+scale_y_continuous(limits = c(60, 70))
xx
for the plot I had to zoom way in, because there were 3 outliers. I
think there isn’t enough data for nmds here
extract hulls
unique(Fishcytb.data.scores$station)
## [1] P12 P22 P28 P38 P402 P4 P8
## Levels: P12 P22 P28 P38 P4 P402 P8
P12 <- Fishcytb.data.scores[Fishcytb.data.scores$station == "P12", ][chull(Fishcytb.data.scores[Fishcytb.data.scores$station == "P12", c("NMDS1", "NMDS2")]), ]
P22 <- Fishcytb.data.scores[Fishcytb.data.scores$station == "P22", ][chull(Fishcytb.data.scores[Fishcytb.data.scores$station == "P22", c("NMDS1", "NMDS2")]), ]
P28 <- Fishcytb.data.scores[Fishcytb.data.scores$station == "P28", ][chull(Fishcytb.data.scores[Fishcytb.data.scores$station == "P28", c("NMDS1", "NMDS2")]), ]
P38 <- Fishcytb.data.scores[Fishcytb.data.scores$station == "P38", ][chull(Fishcytb.data.scores[Fishcytb.data.scores$station == "P38", c("NMDS1", "NMDS2")]), ]
P4 <- Fishcytb.data.scores[Fishcytb.data.scores$station == "P4", ][chull(Fishcytb.data.scores[Fishcytb.data.scores$station == "P4", c("NMDS1", "NMDS2")]), ]
P402 <- Fishcytb.data.scores[Fishcytb.data.scores$station == "P402", ][chull(Fishcytb.data.scores[Fishcytb.data.scores$station == "P402", c("NMDS1", "NMDS2")]), ]
P8 <- Fishcytb.data.scores[Fishcytb.data.scores$station == "P8", ][chull(Fishcytb.data.scores[Fishcytb.data.scores$station == "P8", c("NMDS1", "NMDS2")]), ]
get hull data
hull.data <- rbind(P12,P22,P28,P38,P402,P4,P8) #combine grp.a and grp.b
hull.data
## sample Year Month station NMDS1 NMDS2
## 1 1804P12Ve 18 04 P12 -178.0565 -91.23799
## 20 1904P12Ve 19 04 P12 -177.9685 -90.37474
## 40 2007P12Ve 20 07 P12 -177.2824 -90.06131
## 14 1809P12Ve 18 09 P12 6587.4608 2559.60750
## 2 1804P22Ve 18 04 P22 4323.9944 -1742.15125
## 41 2007P22Ve 20 07 P22 -178.7962 -90.79103
## 21 1904P22Ve 19 04 P22 -178.9742 -90.47192
## 48 2009P22Ve 20 09 P22 -178.5052 -90.04232
## 27 1907P22Ve 19 07 P22 -177.2716 -89.81666
## 49 2009P28Ve 20 09 P28 -178.4999 -89.71447
## 35 1909P28Ve 19 09 P28 -177.7276 -90.63829
## 3 1804P28Ve 18 04 P28 -177.8578 -90.84520
## 28 1907P28Ve 19 07 P28 -3264.0067 3069.71982
## 29 1907P38Ve 19 07 P38 -177.0627 -90.45004
## 50 2009P38Ve 20 09 P38 -177.8628 -91.46905
## 4 1804P38Ve 18 04 P38 -178.1200 -90.30005
## 36 1909P38Ve 19 09 P38 -177.6326 -89.73425
## 10 1807P38Ve 18 07 P38 -177.2824 -90.06131
## 17 1809P402Ve 18 09 P402 -177.0627 -90.45004
## 51 2009P402Ve 20 09 P402 -177.3602 -90.98712
## 5 1804P402Ve 18 04 P402 -178.4874 -91.24981
## 24 1904P402Ve 19 04 P402 -178.4999 -89.71447
## 37 1909P402Ve 19 09 P402 -178.0678 -87.26822
## 25 1904P4Ve 19 04 P4 -177.2042 -91.34216
## 31 1907P4Ve 19 07 P4 -177.8628 -91.46905
## 52 2009P4Ve 20 09 P4 -178.1697 -90.82015
## 6 1804P4Ve 18 04 P4 -178.1548 -90.68834
## 45 2007P4Ve 20 07 P4 -177.6548 -89.99608
## 18 1809P4Ve 18 09 P4 -177.0627 -90.45004
## 19 1809P8Ve 18 09 P8 -177.6191 -90.87260
## 13 1807P8Ve 18 07 P8 -177.8628 -91.46905
## 53 2009P8Ve 20 09 P8 -178.7585 -90.52287
## 7 1804P8Ve 18 04 P8 -178.9385 -90.20712
## 32 1907P8Ve 19 07 P8 -178.4999 -89.71447
## 39 1909P8Ve 19 09 P8 -177.8701 -89.62581
vf <- envfit(Fishcytb_NMDSmodel, Fishcytb_wide, perm = 999)
spp.scrs <- as.data.frame(scores(vf, display = "vectors"))
spp.scrs <- cbind(spp.scrs, Species = rownames(spp.scrs))
####for ggplot
arrow_factor <- ordiArrowMul(vf)
spp.scrs <- as.data.frame(scores(vf, display = "vectors")) * arrow_factor
spp.scrs <- cbind(spp.scrs, Species = rownames(spp.scrs), Pvalues = vf$vectors$pvals, R_squared = vf$vectors$r)
# select significance similarly to `plot(vf, p.max = 0.01)`
spp.scrs <- subset(spp.scrs, Pvalues < 0.05)
spp.scrs <- subset(spp.scrs, R_squared > 0.3)
spp.scrs
## NMDS1 NMDS2 Species Pvalues
## Artedius lateralis -0.1998296 0.7193219 Artedius lateralis 0.036
## Gymnocephalus cernua 0.5043014 0.7500000 Gymnocephalus cernua 0.025
## Notemigonus crysoleucas 0.5043014 0.7500000 Notemigonus crysoleucas 0.025
## R_squared
## Artedius lateralis 0.6444774
## Gymnocephalus cernua 0.9444988
## Notemigonus crysoleucas 0.9444988
Fishcytb_Species_plot <- ggplot(Fishcytb.data.scores, aes(x = NMDS1, y = NMDS2)) +geom_point(aes(colour = station))+theme_bw()+theme(panel.grid.major = element_blank(),
panel.grid.minor = element_blank(), axis.line = element_line(colour = "black"))+
geom_segment(data = spp.scrs,size=0.4,
aes(x = 0, xend = NMDS1, y = 0, yend = NMDS2),
arrow = arrow(length = unit(0.2, "cm")), colour = "darkgrey")+
geom_polygon(data=hull.data,aes(x=NMDS1,y=NMDS2,fill=station,group=station),alpha=0.20, size=0.1, linetype=1, colour="black") +
annotate("text", label = "2D Stress: 0.2", x = 0.55, y = 0.67, size = 5, colour = "black")+
geom_label_repel(data = spp.scrs, aes(x = NMDS1, y = NMDS2, label = Species),
size = 3, fontface="bold", fill="white", label.padding = unit(0.15, "lines"), box.padding = unit(0.16, "lines"), label.size = 0.05)
Fishcytb_Species_plot
okay it looks like this fish one didn’t work, but that’s okay