diff --git a/CSV_data/README-Stats.md b/CSV_data/README-Stats.md deleted file mode 100644 index 521dd8a536857b03e5f1057ae4d0464bbfd94113..0000000000000000000000000000000000000000 --- a/CSV_data/README-Stats.md +++ /dev/null @@ -1,39 +0,0 @@ -# Description of CSV data - -"Fichier Audio" Name of the recording (format si "ddmmyyyy/hydrophoneID_yyyymmdd_hhmmss.wav") -"Date" Date (format is "dd/mm/yyyy") -"Heure" Time at the beginning of the record -"T" "Test" or "Control" sequences -"AV" Before beacon's activation (translates to "BEF") -"AV+D" At the beginning of beacon's emission sequence (translates to "BEF+DUR") -"D" During beacon's emission sequence (translates to "DUR") -"D+AP" At the end of beacon's emission (translates to "DUR+AFT") -"AP" After beacon's emission (translates to "AFT") -"AP+AV" Between emissions (translates to "AFT+BEF") -"F" Presence of a fishing net -"SSF" Absence of a fishing net -"NSP" Doubt on the presence of a fishing net -"CHAS" "Foraging" -"SOCI" "Socialising" -"DEPL" "Travelling" -"SONAR" Presence of a SONAR during sequences (nearby boat or experiment boat) -"SIGNAL" Type of signal used during emission sequence -"C-GR" Count of dolphin observed in group -"FILET" Type of fishing net - -*In cells, 0 = absence or false, 1 = presence of true* -*Lines at the end enabled us to verify that there was no missing data* - -## Fishing net types -"tremail" monkfish gillnet, nylon, mesh 220 mm -"grand_filet" hake and pollack gillnet, stretched mesh 136 mm, tread 0.6mm, with a weighted 12 mm-diameter bottom rope -"chalut_vert" trawl net, mesh 12 mm, thread 210/24/413, reinforced nylon -"chalut_blanc" trawl net, mesh 40 mm, thread 4mm, polyethylene PE - -*See publication for more details* - -## Signal types - -See table S1 in supplementary material - - diff --git a/CSV_data/README.md b/CSV_data/README.md new file mode 100644 index 0000000000000000000000000000000000000000..bd15e053ee4971b4b688716af956b256e1adcaa3 --- /dev/null +++ b/CSV_data/README.md @@ -0,0 +1,39 @@ +# Description of CSV data + +"Fichier Audio" Name of the recording (format si "ddmmyyyy/hydrophoneID_yyyymmdd_hhmmss.wav") +"Date" Date (format is "dd/mm/yyyy") +"Heure" Time at the beginning of the record +"T" "Test" or "Control" sequences +"AV" Before beacon's activation (translates to "BEF") +"AV+D" At the beginning of beacon's emission sequence (translates to "BEF+DUR") +"D" During beacon's emission sequence (translates to "DUR") +"D+AP" At the end of beacon's emission (translates to "DUR+AFT") +"AP" After beacon's emission (translates to "AFT") +"AP+AV" Between emissions (translates to "AFT+BEF") +"F" Presence of a fishing net +"SSF" Absence of a fishing net +"NSP" Doubt on the presence of a fishing net +"CHAS" "Foraging" +"SOCI" "Socialising" +"DEPL" "Travelling" +"SONAR" Presence of a SONAR during sequences (nearby boat or experiment boat) +"SIGNAL" Type of signal used during emission sequence +"C-GR" Count of dolphin observed in group +"FILET" Type of fishing net + +*In cells, 0 = absence or false, 1 = presence of true* +*Lines at the end enabled us to verify that there was no missing data* + +## Fishing net types +"tremail" monkfish gillnet, nylon, mesh 220 mm +"grand_filet" hake and pollack gillnet, stretched mesh 136 mm, tread 0.6mm, with a weighted 12 mm-diameter bottom rope +"chalut_vert" trawl net, mesh 12 mm, thread 210/24/413, reinforced nylon +"chalut_blanc" trawl net, mesh 40 mm, thread 4mm, polyethylene PE + +*See publication for more details* + +## Signal types + +See table S1 in supplementary material + + diff --git a/Stats/.Rhistory b/Stats/.Rhistory index f9082116b6b3cecedaba1c77c2a57be6e559431c..71822073a651d165594ae8f22cb4e75c77793eb3 100644 --- a/Stats/.Rhistory +++ b/Stats/.Rhistory @@ -1,11 +1,23 @@ -kruskal.test(acoustic.dta$BBPs_per_dolphin ~ acoustic.dta$beacon) +numb_stats_b %>% +ggplot(aes(x=number, y=mean, group=1)) + +geom_errorbar(aes(x=number, ymin=mean-ic, ymax=mean+ic), +color="red", width=.1, show.legend = FALSE)+ +geom_point() + geom_line() + +theme_classic() + theme(text=element_text(size=12)) + +ylab("Number of BBPs per min")+ +xlab("Number of dolphins in group") # Clicks -#KW test -kruskal.test(acoustic.dta$clicks_per_dolphin ~ acoustic.dta$beacon) -#### : Beacon plots + KW analysis (letters not shown for lisibility) #### -# Whistles -#KW test -kruskal.test(acoustic.dta$whistling_time_per_dolphin ~ acoustic.dta$beacon) +numb_stats_c <- computeStats(acoustic.dta, number, number_of_clicks) +numb_stats_c[is.na(numb_stats_c)] <- 0 +numb_stats_c$number <- as.factor(numb_stats_c$number) +numb_stats_c %>% +ggplot(aes(x=number, y=mean, group=1)) + +geom_errorbar(aes(x=number, ymin=mean-ic, ymax=mean+ic), +color="red", width=.1)+ +geom_point() + geom_line() + +theme_classic() + theme(text=element_text(size=12)) + +ylab("Mean number of clicks per min")+ +xlab("Number of echolocation clicks in group") #### Nets plots + KW analysis #### # Whistles #KW test @@ -16,9 +28,9 @@ kruskalmc(acoustic.dta$whistling_time_per_dolphin, acoustic.dta$net) myletters_df <- data.frame(net=c("SSF", "chalut_blanc", "chalut_vert", "tremail", "grand_filet"), letter = c("a","ad","bd","cd","a")) barPlot(computeStats(acoustic.dta, net, whistling_time_per_dolphin/375), -myletters_df, +NULL, net, old_names = c("SSF", "chalut_blanc", "chalut_vert", "tremail", "grand_filet"), -new_names = c("Absent", "Nylon trawl net", "PE trawl net", "Gill net", "Long gill net"), +new_names = c("Absent", "Nylon trawl net", "PE trawl net", "Nylon gill net", "Long nylon gill net"), xname="Fishing nets", height=.6, ytitle="Mean whistling time per dolphin per min")+ theme(axis.text.x=element_text(size=8.5)) @@ -26,14 +38,14 @@ theme(axis.text.x=element_text(size=8.5)) #KW test kruskal.test(acoustic.dta$BBPs_per_dolphin ~ acoustic.dta$net) # p<0.05 so post-hoc -kruskalmc(acoustic.dta$BBPs_per_dolphin, acoustic.dta$net,) +kruskalmc(acoustic.dta$BBPs_per_dolphin, acoustic.dta$net) # DIY : letters myletters_df <- data.frame(net=c("SSF", "chalut_blanc", "chalut_vert", "tremail", "grand_filet"), letter = c("a","a","a","a","a")) barPlot(computeStats(acoustic.dta, net, BBPs_per_dolphin), -myletters_df, +NULL, net, old_names = c("SSF", "chalut_blanc", "chalut_vert", "tremail", "grand_filet"), -new_names = c("Absent", "Nylon trawl net", "PE trawl net", "Gill net", "Long gill net"), +new_names = c("Absent", "Nylon trawl net", "PE trawl net", "Nylon gill net", "Long nylon gill net"), xname="Fishing nets", height=.8, ytitle="Mean number of BBPs per dolphin per min")+ theme(axis.text.x=element_text(size=8.5)) @@ -46,14 +58,113 @@ kruskalmc(acoustic.dta$clicks_per_dolphin, acoustic.dta$net) myletters_df <- data.frame(net=c("SSF", "chalut_blanc", "chalut_vert", "tremail", "grand_filet"), letter = c("ae","ad","bd","cd","e")) barPlot(computeStats(acoustic.dta, net, clicks_per_dolphin), -myletters_df, +NULL, net, old_names = c("SSF", "chalut_blanc", "chalut_vert", "tremail", "grand_filet"), -new_names = c("Absent", "Nylon trawl net", "PE trawl net", "Gill net", "Long gill net"), +new_names = c("Absent", "Nylon trawl net", "PE trawl net", "Nylon gill net", "Long nylon gill net"), xname="Fishing nets", height=120, ytitle="Mean number of clicks per dolphin per min")+ theme(axis.text.x=element_text(size=8.5)) -# p<0.05 so post-hoc -kruskalmc(acoustic.dta$clicks_per_dolphin, acoustic.dta$net) +#### : Beacon plots + KW analysis (letters not shown for lisibility) #### +# Whistles +#KW test +kruskal.test(acoustic.dta$whistling_time_per_dolphin ~ acoustic.dta$beacon) +barPlot(computeStats(acoustic.dta, beacon, whistling_time_per_dolphin/375), +NULL, +beacon, old_names = names(letters$Letters), new_names = names(letters$Letters), +xname="Signals from bio-inspired beacon", height=0.9, size=3, +ytitle="Mean whistling time per dolphin per min")+ +theme(axis.text.x=element_text(size=8))+ +scale_x_discrete(guide=guide_axis(n.dodge = 2)) +#### : Beacon plots + KW analysis (letters not shown for lisibility) #### +# Whistles +#KW test +kruskal.test(acoustic.dta$whistling_time_per_dolphin ~ acoustic.dta$beacon) +barPlot(computeStats(acoustic.dta, beacon, whistling_time_per_dolphin/375), +NULL, +beacon, old_names = names(letters$Letters), new_names = names(letters$Letters), +xname="Signals from bio-inspired beacon", height=0.9, size=3, +ytitle="Mean whistling time per dolphin per min")+ +theme(axis.text.x=element_text(size=8))+ +scale_x_discrete(guide=guide_axis(n.dodge = 2)) +barPlot(computeStats(acoustic.dta, beacon, whistling_time_per_dolphin/375), +NULL, +beacon, +xname="Signals from bio-inspired beacon", height=0.9, size=3, +ytitle="Mean whistling time per dolphin per min")+ +theme(axis.text.x=element_text(size=8))+ +scale_x_discrete(guide=guide_axis(n.dodge = 2)) +beacon +computeStats(acoustic.dta, beacon, whistling_time_per_dolphin/375) +names(computeStats(acoustic.dta, beacon, whistling_time_per_dolphin/375)) +factor(acoustic.dta$beacon) +unique(acoustic.dta$beacon) +computeStats(acoustic.dta, beacon, whistling_time_per_dolphin/375) +computeStats(acoustic.dta, beacon, whistling_time_per_dolphin/375) +computeStats(acoustic.dta, beacon, whistling_time_per_dolphin/375)["beacon"] +#### : Beacon plots + KW analysis (letters not shown for readability) #### +# Whistles +#KW test +kruskal.test(acoustic.dta$whistling_time_per_dolphin ~ acoustic.dta$beacon) +names = computeStats(acoustic.dta, beacon, whistling_time_per_dolphin/375)["beacon"] +barPlot(computeStats(acoustic.dta, beacon, whistling_time_per_dolphin/375), +NULL, +beacon, old_names = names, new_names = names, +xname="Signals from bio-inspired beacon", height=0.9, size=3, +ytitle="Mean whistling time per dolphin per min")+ +theme(axis.text.x=element_text(size=8))+ +scale_x_discrete(guide=guide_axis(n.dodge = 2)) +names = list(computeStats(acoustic.dta, beacon, whistling_time_per_dolphin/375)["beacon"]) +names +names +names = computeStats(acoustic.dta, beacon, whistling_time_per_dolphin/375)["beacon"] +names +unlist(names) +#### Beacon plots + KW analysis (letters not shown for readability) #### +# Whistles +#KW test +kruskal.test(acoustic.dta$whistling_time_per_dolphin ~ acoustic.dta$beacon) +names = computeStats(acoustic.dta, beacon, whistling_time_per_dolphin/375)["beacon"] +barPlot(computeStats(acoustic.dta, beacon, whistling_time_per_dolphin/375), +NULL, +beacon, old_names = unlist(names), new_names = unlist(names), +xname="Signals from bio-inspired beacon", height=0.9, size=3, +ytitle="Mean whistling time per dolphin per min")+ +theme(axis.text.x=element_text(size=8))+ +scale_x_discrete(guide=guide_axis(n.dodge = 2)) +#### Beacon plots + KW analysis (letters not shown for readability) #### +# Whistles +#KW test +kruskal.test(acoustic.dta$whistling_time_per_dolphin ~ acoustic.dta$beacon) +names = computeStats(acoustic.dta, beacon, whistling_time_per_dolphin/375)["beacon"] +barPlot(computeStats(acoustic.dta, beacon, whistling_time_per_dolphin/375), +NULL, +beacon, old_names = unlist(names), new_names = unlist(names), +xname="Signals from bio-inspired beacon", height=0.9, size=3, +ytitle="Mean whistling time per dolphin per min")+ +theme(axis.text.x=element_text(size=8))+ +scale_x_discrete(guide=guide_axis(n.dodge = 2)) +# BBPs +#KW test +kruskal.test(acoustic.dta$BBPs_per_dolphin ~ acoustic.dta$beacon) +names = computeStats(acoustic.dta, beacon, whistling_time_per_dolphin/375)["beacon"] +barPlot(computeStats(acoustic.dta, beacon, BBPs_per_dolphin), +NULL, +beacon, old_names = unlist(names), new_names = unlist(names), +xname="Signals from bio-inspired beacon", height=0.5, size=3, +ytitle="Mean number of BBPs per dolphin per min")+ +theme(axis.text.x=element_text(size=8))+ +scale_x_discrete(guide=guide_axis(n.dodge = 2)) +# Clicks +#KW test +kruskal.test(acoustic.dta$clicks_per_dolphin ~ acoustic.dta$beacon) +names = computeStats(acoustic.dta, beacon, whistling_time_per_dolphin/375)["beacon"] +barPlot(computeStats(acoustic.dta, beacon, clicks_per_dolphin), +NULL, +beacon, old_names = unlist(names), unlist(names), +xname="Signals from bio-inspired beacon", height=150, size=3, +ytitle="Mean number of clicks per dolphin per min")+ +theme(axis.text.x=element_text(size=8))+ +scale_x_discrete(guide=guide_axis(n.dodge = 2)) ######################################################################## # STATISTICS # Author : Loic LEHNHOFF @@ -71,46 +182,32 @@ library(stringr) # "gsub" function library(rcompanion) # "fullPTable" function library(multcompView) # "multcompLetters" function library(ggplot2) -library(pgirmess) #library(tidyquant) # geom_ma() if rolling average needed ################# DATASET IMPORTS ##################################### folder <- './../' -whistles.dta <-read.table(file=paste0(folder, -'Whistles/Evaluation/whistles_durations.csv'), -sep = ',', header=TRUE) -whistles.dta <- whistles.dta[order(whistles.dta$audio_names),] bbp.dta <-read.table(file=paste0(folder, 'BBPs/Results/16-06-22_14h00_number_of_BBP.csv'), sep = ',', header=TRUE) bbp.dta <- bbp.dta[order(bbp.dta$audio_names),] -clicks.dta <-read.table(file=paste0(folder, -'Clicks/Results/projection_updated_number_of_clicks_02052022.csv'), #number_of_clicks_02052022.csv -sep = ',', header=TRUE) -clicks.dta <- clicks.dta[order(clicks.dta$audio_names),] -# Merge files into 1 dataset -acoustic.dta <- clicks.dta -acoustic.dta$number_of_bbp <- bbp.dta$number_of_BBP -acoustic.dta$total_whistles_duration <- whistles.dta$total_whistles_duration -rm(whistles.dta, bbp.dta, clicks.dta) # suppress "T" acoustic data (other groups not tested on our variables) -acoustic.dta <- acoustic.dta[acoustic.dta$acoustic!="T",] +bbp.dta <- bbp.dta[bbp.dta$acoustic!="T",] # shuffle dataframe -acoustic.dta <- acoustic.dta[sample(1:nrow(acoustic.dta)), ] -acoustic.dta$acoustic <- factor(acoustic.dta$acoustic) +bbp.dta <- bbp.dta[sample(1:nrow(bbp.dta)), ] +bbp.dta$acoustic <- factor(bbp.dta$acoustic) #################### DATA INSPECTION ################################# # Data description -names(acoustic.dta) +names(bbp.dta) # self explenatory except acoustic : correspond to the activation sequence. # Look for obvious correlations -plot(acoustic.dta) # nothing that we can see +plot(bbp.dta) # nothing that we can see # Look for zero-inflation -100*sum(acoustic.dta$number_of_clicks == 0)/nrow(acoustic.dta) -100*sum(acoustic.dta$number_of_bbp == 0)/nrow(acoustic.dta) -100*sum(acoustic.dta$total_whistles_duration == 0)/nrow(acoustic.dta) -# 3.6%, 53.7% & 24.7% of our data are zeros. Will have to be dealt with. +100*sum(bbp.dta$number_of_BBP == 0)/nrow(bbp.dta) +100*sum(bbp.dta$Buzz == 0)/nrow(bbp.dta) +100*sum(bbp.dta$Burst.pulse == 0)/nrow(bbp.dta) +# 53.7%, 60.1% & 73.6% of data are zeroes # QUESTION: This study is aimed at understanding if dolphin's acoustic activity # is influenced bytheir behavior, the emission of a pinger or a fishing net. -# Dependent variables (Y): number_of_clicks, number_of_bbp, total_whistles_duration. +# Dependent variables (Y): number_of_BBP, Buzz & Burst.pulse # Explanatory variables (X): acoustic, fishing_net, behavior, beacon, net, number. # What are the H0/ H1 hypotheses ? # H0 : No influence of any of the explanatory variables on a dependant one. @@ -118,47 +215,47 @@ plot(acoustic.dta) # nothing that we can see ##################### DATA EXPLORATION ################################ # Y Outlier detection par(mfrow=c(2,3)) -boxplot(acoustic.dta$total_whistles_duration, col='red', -ylab='total_whistles_duration') -boxplot(acoustic.dta$number_of_bbp, col='red', -ylab='number_of_bbp') -boxplot(acoustic.dta$number_of_clicks, col='red', -ylab='number_of_clicks') -dotchart(acoustic.dta$total_whistles_duration, pch=16, -xlab='total_whistles_duration', col='red') -dotchart(acoustic.dta$number_of_bbp, pch=16, -xlab='number_of_bbp', col='red') -dotchart(acoustic.dta$number_of_clicks, pch=16, -xlab='number_of_clicks', col='red') +boxplot(bbp.dta$number_of_BBP, col='red', +ylab='number_of_BBP') +boxplot(bbp.dta$Buzz, col='red', +ylab='Buzz') +boxplot(bbp.dta$Burst.pulse, col='red', +ylab='Burst.pulse') +dotchart(bbp.dta$number_of_BBP, pch=16, +xlab='number_of_BBP', col='red') +dotchart(bbp.dta$Buzz, pch=16, +xlab='Buzz', col='red') +dotchart(bbp.dta$Burst.pulse, pch=16, +xlab='Burst.pulse', col='red') # Y distribution par(mfrow=c(2,3)) -hist(acoustic.dta$total_whistles_duration, col='red', breaks=8, -xlab='total_whistles_duration', ylab='number') -hist(acoustic.dta$number_of_bbp, col='red', breaks=8, -xlab='number_of_bbp', ylab='number') -hist(acoustic.dta$number_of_clicks, col='red', breaks=8, -xlab='number_of_clicks', ylab='number') -qqnorm(acoustic.dta$total_whistles_duration, col='red', pch=16) -qqline(acoustic.dta$total_whistles_duration) -qqnorm(acoustic.dta$number_of_bbp, col='red', pch=16) -qqline(acoustic.dta$number_of_bbp) -qqnorm(acoustic.dta$number_of_clicks, col='red', pch=16) -qqline(acoustic.dta$number_of_clicks) -shapiro.test(acoustic.dta$total_whistles_duration) -shapiro.test(acoustic.dta$number_of_bbp) -shapiro.test(acoustic.dta$number_of_clicks) +hist(bbp.dta$number_of_BBP, col='red', breaks=8, +xlab='number_of_BBP', ylab='number') +hist(bbp.dta$Buzz, col='red', breaks=8, +xlab='Buzz', ylab='number') +hist(bbp.dta$Burst.pulse, col='red', breaks=8, +xlab='Burst.pulse', ylab='number') +qqnorm(bbp.dta$number_of_BBP, col='red', pch=16) +qqline(bbp.dta$number_of_BBP) +qqnorm(bbp.dta$Buzz, col='red', pch=16) +qqline(bbp.dta$Buzz) +qqnorm(bbp.dta$Burst.pulse, col='red', pch=16) +qqline(bbp.dta$Burst.pulse) +shapiro.test(bbp.dta$number_of_BBP) +shapiro.test(bbp.dta$Buzz) +shapiro.test(bbp.dta$Burst.pulse) # p-values are significant => they do not follow normal distributions -# will need a transformation or the use of a glm model +# we will need transformations or the use of glm models # X Number of individuals per level -summary(factor(acoustic.dta$acoustic)) -summary(factor(acoustic.dta$fishing_net)) -summary(factor(acoustic.dta$behavior)) -summary(factor(acoustic.dta$beacon)) -summary(factor(acoustic.dta$net)) -table(factor(acoustic.dta$acoustic),factor(acoustic.dta$fishing_net)) -table(factor(acoustic.dta$acoustic),factor(acoustic.dta$behavior)) -table(factor(acoustic.dta$behavior),factor(acoustic.dta$acoustic)) -ftable(factor(acoustic.dta$fishing_net), factor(acoustic.dta$behavior), factor(acoustic.dta$acoustic)) +summary(factor(bbp.dta$acoustic)) +summary(factor(bbp.dta$fishing_net)) +summary(factor(bbp.dta$behavior)) +summary(factor(bbp.dta$beacon)) +summary(factor(bbp.dta$net)) +table(factor(bbp.dta$acoustic),factor(bbp.dta$fishing_net)) +table(factor(bbp.dta$acoustic),factor(bbp.dta$behavior)) +table(factor(bbp.dta$behavior),factor(bbp.dta$acoustic)) +ftable(factor(bbp.dta$fishing_net), factor(bbp.dta$behavior), factor(bbp.dta$acoustic)) # => unbalanced, no big deal but will need more work (no orthogonality): # Effects can depend on the order of the variables # => Beacon and net have modalities with <10 individuals => analysis impossible @@ -176,54 +273,45 @@ ftable(factor(acoustic.dta$fishing_net), factor(acoustic.dta$behavior), factor(a # (using kruskall-Wallis non-parametric test) # fishing_net, behavior and acoustic where tested with their interactions. # If a variable is it in a model, it is because it had no significant effect. -par(mfrow=c(1,1)) -### Model for whistles -# Residual hypotheses not verified for LM -# Overdipsersion when using GLM (negative binomial) -# Using ZINB: -zero.whi <- zeroinfl(total_whistles_duration ~ -acoustic + fishing_net + behavior + offset(log(number)), -data=acoustic.dta, dist='negbin') -nb.whi <- glm.nb(total_whistles_duration ~ -acoustic + fishing_net + behavior + offset(log(number)), -data=acoustic.dta) -# comparison ZINB VS NB model -vuong(zero.whi, nb.whi) #(if p-value<0.05 then first model in comparison is better) -mod.whi <- zero.whi # => zeroinflated model is indeed better suited -car::Anova(mod.whi, type=3) -shapiro.test(residuals(mod.whi)) # H0 : normality -> not rejected if p>0.05 -dwtest(mod.whi) # H0 -> independent if p>0.05 (autocorrelation if p<0.05) -bptest(mod.whi) # H0 -> homoscedasticity if p<0.05 -# No normality but we do not need it ### Model for BBP # No normality of residuals for LM # overdispersion with GLM quasipoisson #try with glm NB: -mod.bbp <- glm.nb(number_of_bbp ~ acoustic + fishing_net + behavior +mod.bbp <- glm.nb(number_of_BBP ~ acoustic + fishing_net + behavior + offset(log(number)), -data=acoustic.dta) +data=bbp.dta) car::Anova(mod.bbp, type=3) dwtest(mod.bbp) # H0 -> independent if p>0.05 (autocorrelation if p<0.05) bptest(mod.bbp) # H0 -> homoscedasticity if p<0.05 # Normality not needed in GLM, hypotheses verified ! mod.bbp$deviance/mod.bbp$df.residual -# slight underdispersion, not improved with ZINB so we keep this -### Model for clicks -# Using NB model: -mod.cli <- glm.nb(number_of_clicks ~ acoustic + fishing_net + acoustic:fishing_net + offset(log(number)), -data=acoustic.dta) -car::Anova(mod.cli, type=3) -shapiro.test(residuals(mod.cli)) # H0 : normality -> cannot be rejected if p > 0.05 -dwtest(mod.cli) # H0 -> independent if p>0.05 (autocorrelation if p<0.05) -bptest(mod.cli) # H0 -> homoscedasticity if p<0.05 -# Normality not needed in GLM, hypotheses verified ! -mod.cli$deviance/mod.cli$df.residual -# slight overdispersion. (ZINB does not clearly improve results so we keep this) -# FYI1: Comparison of combination of explanatory variables between models -# were compared based on BIC criterion. -# The model with the lowest BIC was kept (and is the one shown) -# FYI2: log(number of dolphin per group) does have an effect on data but we have -# no interest in investigating it, that is why we use it as an offset. +# slight underdispersion +### Model for Buzzes +# No normality of residuals for LM +# overdispersion with GLM quasipoisson +# underdispersion with glm NB +# Try with ZINB: +mod.buzz <- glm.nb(Buzz ~ behavior + fishing_net + acoustic ++ offset(log(number)), +data=bbp.dta) +car::Anova(mod.buzz, type=3) +dwtest(mod.buzz) # H0 -> independent if p>0.05 (autocorrelation if p<0.05) +bptest(mod.buzz) # H0 -> homoscedasticity if p<0.05 +mod.buzz$df.null/mod.buzz$df.residual +# No overdispersion +### Model for Burst-pulses +# No normality of residuals for LM +# overdispersion with quasipoisson +# underdispersion with NB +# ZINB is working : +mod.burst.pulse <- zeroinfl(Burst.pulse ~ fishing_net + acoustic + behavior ++ offset(log(number)), dist="negbin", +data=bbp.dta) +car::Anova(mod.burst.pulse, type=3) +dwtest(mod.burst.pulse) # H0 -> independent if p>0.05 (autocorrelation if p<0.05) +bptest(mod.burst.pulse) # H0 -> homoscedasticity if p<0.05 +mod.burst.pulse$df.null/mod.burst.pulse$df.residual # -> Overdispersion of != 1 +# no overdispersion ##################### Boxplots and comparisons ##################### ### Functions to compute stats computeLetters <- function(temp, category) { @@ -251,10 +339,10 @@ height, xname="", colours="black", legend_title="", legend_labs="",ytitle=""){ if (!is.null(signif)){colnames(signif)[1] <- "use"} dta %>% mutate(use=fct_relevel({{category}}, old_names)) %>% -ggplot(aes(x=use, y=mean, group={{fill}}, fill={{fill}},color={{fill}})) + +ggplot(aes(x=use, y=mean, group={{fill}}, fill={{fill}},color={{fill}}, na.rm = TRUE)) + {if(length(colours)==1)geom_point(color=colours, position=position_dodge(.5))}+ -{if(length(colours)==2)geom_point(position=position_dodge(.5), show.legend = FALSE)}+ -{if(length(colours)==2)scale_color_manual(values=colours, name=legend_title, labels=legend_labs)}+ +{if(length(colours)>=2)geom_point(position=position_dodge(.5), show.legend = FALSE)}+ +{if(length(colours)>=2)scale_color_manual(values=colours, name=legend_title, labels=legend_labs)}+ scale_x_discrete(breaks=old_names, labels=new_names)+ ylab(ytitle)+ @@ -266,247 +354,159 @@ geom_errorbar(aes(x=use, ymin=mean-ic, ymax=mean+ic), position=position_dodge(.5 } ####Introducing variables averaged per dolphins #### # since we introduced an offset, variables can be divided by the number of dolphins -acoustic.dta$whistling_time_per_dolphin <- acoustic.dta$total_whistles_duration/acoustic.dta$number -acoustic.dta$BBPs_per_dolphin <- acoustic.dta$number_of_bbp/acoustic.dta$number -acoustic.dta$clicks_per_dolphin <- acoustic.dta$number_of_clicks/acoustic.dta$number -#### Fishing net #### -# whistles -table <- cld(emmeans(mod.whi, pairwise~fishing_net, adjust="tukey"), Letters = letters) +bbp.dta$BBPs_per_dolphin <- bbp.dta$number_of_BBP/bbp.dta$number +bbp.dta$Buzz_per_dolphin <- bbp.dta$Buzz/bbp.dta$number +bbp.dta$Burst.pulse_per_dolphin <- bbp.dta$Burst.pulse/bbp.dta$number +#### Fishing nets plots #### +par(mfrow=c(3, 1)) +# BBPs +table <- cld(emmeans(mod.bbp, pairwise~fishing_net, adjust="tukey"), Letters = letters) myletters_df <- data.frame(fishing_net=table$fishing_net, letter = trimws(table$.group)) -barPlot(computeStats(acoustic.dta, fishing_net, whistling_time_per_dolphin/375), # 375 bins = 1 sec +barPlot(computeStats(bbp.dta, fishing_net, BBPs_per_dolphin), myletters_df, fishing_net, old_names = c("SSF","F"), new_names = c("Absent", "Present"), -xname="Presence/Asence of fishing net", height=.5, -ytitle="Mean whistling time per dolphin per min") -# BBP -table <- cld(emmeans(mod.bbp, pairwise~fishing_net, adjust="tukey"), Letters = letters) +xname="Presence/Asence of fishing net", height=.6, +ytitle="Mean number of BBP per dolphin per min") +# Buzz +table <- cld(emmeans(mod.buzz, pairwise~fishing_net, adjust="tukey"), Letters = letters) myletters_df <- data.frame(fishing_net=table$fishing_net, letter = trimws(table$.group)) -barPlot(computeStats(acoustic.dta, fishing_net, BBPs_per_dolphin), +barPlot(computeStats(bbp.dta, fishing_net, Buzz_per_dolphin), myletters_df, fishing_net, +ytitle="Mean number of Buzzes per dolphin per min", old_names = c("SSF","F"), new_names = c("Absent", "Present"), -xname="Presence/Asence of fishing net", height=.6, -ytitle="Mean number of BBPs per dolphin per min") -# Clicks -table <- cld(emmeans(mod.cli, pairwise~fishing_net, adjust="tukey"), Letters = letters) +xname="Presence/Asence of fishing net", height=.45) +# Burst-pulse +table <- cld(emmeans(mod.burst.pulse, pairwise~fishing_net, adjust="tukey"), Letters = letters) myletters_df <- data.frame(fishing_net=table$fishing_net, letter = trimws(table$.group)) -barPlot(computeStats(acoustic.dta, fishing_net, clicks_per_dolphin), +barPlot(computeStats(bbp.dta, fishing_net, Burst.pulse_per_dolphin), myletters_df, fishing_net, +ytitle="Mean number of Burst-pulses per dolphin per min", old_names = c("SSF","F"), new_names = c("Absent", "Present"), -xname="Presence/Asence of fishing net", height=100, -ytitle="Mean number of clicks per dolphin per min") +xname="Presence/Asence of fishing net", height=.18, ) #### Acoustic plots #### -# Whistles -table <- cld(emmeans(mod.whi, pairwise~acoustic, adjust="tukey"), Letters = letters) -myletters_df <- data.frame(acoustic=table$acoustic,letter = trimws(table$.group)) -barPlot(computeStats(acoustic.dta, acoustic, whistling_time_per_dolphin/375), -myletters_df, acoustic, height=0.65, ytitle="Mean whistling time per dolphin per min", +# BBPs +table <- cld(emmeans(mod.bbp, pairwise~acoustic, adjust="tukey"), Letters = letters) +myletters_df <- data.frame(acoustic=table$acoustic, +letter = trimws(table$.group)) +barPlot(computeStats(bbp.dta, acoustic, BBPs_per_dolphin), +myletters_df, acoustic, height=.9, ytitle="Mean number of BBPs per dolphin per min", old_names = c("AV","AV+D","D","D+AP","AP"), new_names = c("BEF","BEF+DUR","DUR", "DUR+AFT", "AFT"), xname="Activation sequence") -# BBPs -table <- cld(emmeans(mod.bbp, pairwise~acoustic, adjust="tukey"), Letters = letters) -myletters_df <- data.frame(acoustic=table$acoustic,letter = trimws(table$.group)) -barPlot(computeStats(acoustic.dta, acoustic, BBPs_per_dolphin), -myletters_df, acoustic, height=1.2, ytitle="Mean number of BBPs per dolphin per min", +# Buzz +table <- cld(emmeans(mod.buzz, pairwise~acoustic, adjust="tukey"), Letters = letters) +myletters_df <- data.frame(acoustic=table$acoustic, +letter = trimws(table$.group))myletters_df <- data.frame(acoustic=c("AP","AV","AV+D","D","D+AP"), letter = c("a","a","a","a","a")) +#error, no acoustic in model: +myletters_df <- data.frame(acoustic=c("AP","AV","AV+D","D","D+AP"), +letter = c("a","a","a","a","a")) +barPlot(computeStats(bbp.dta, acoustic, Buzz_per_dolphin), +myletters_df, acoustic, height=0.45, ytitle="Mean number of Buzzes per dolphin per min", old_names = c("AV","AV+D","D","D+AP","AP"), new_names = c("BEF","BEF+DUR","DUR", "DUR+AFT", "AFT"), xname="Activation sequence") -# Clicks -table <- cld(emmeans(mod.cli, pairwise~acoustic, adjust="tukey"), Letters = letters) -myletters_df <- data.frame(acoustic=table$acoustic,letter = trimws(table$.group)) -barPlot(computeStats(acoustic.dta, acoustic, clicks_per_dolphin), -myletters_df, acoustic, height=155, ytitle="Mean number of clicks per dolphin per min", +# Burst-pulse +table <- cld(emmeans(mod.burst.pulse, pairwise~acoustic, adjust="tukey"), Letters = letters) +myletters_df <- data.frame(acoustic=table$acoustic, +letter = trimws(table$.group)) +barPlot(computeStats(bbp.dta, acoustic, Burst.pulse_per_dolphin), +myletters_df, acoustic, height=0.5, ytitle="Mean number of Burst-pulses per dolphin per min", old_names = c("AV","AV+D","D","D+AP","AP"), new_names = c("BEF","BEF+DUR","DUR", "DUR+AFT", "AFT"), xname="Activation sequence") -#### Interaction fishing_net:acoustic plots #### -# Whistles -letters_df <- computeLetters(emmeans(mod.whi, pairwise~fishing_net:acoustic, adjust="tukey"), +#### Behaviour plots #### +# BBPs +table <- cld(emmeans(mod.bbp, pairwise~behavior, adjust="tukey"), Letters = letters) +myletters_df <- data.frame(acoustic=table$behavior,letter = trimws(table$.group)) +barPlot(computeStats(bbp.dta, behavior, BBPs_per_dolphin), +myletters_df, behavior, height=1.2, ytitle="Mean number of BBPs per dolphin per min", +old_names = c("CHAS", "DEPL", "SOCI"), +new_names = c("Foraging", "Travelling", "Socialising"), +xname="Behaviours of dolphins") +# Buzz +table <- cld(emmeans(mod.buzz, pairwise~behavior, adjust="tukey"), Letters = letters) +myletters_df <- data.frame(acoustic=table$behavior,letter = trimws(table$.group)) +barPlot(computeStats(bbp.dta, behavior, Buzz_per_dolphin), +myletters_df, behavior, height=1, ytitle="Mean number of Buzzes per dolphin per min", +old_names = c("CHAS", "DEPL", "SOCI"), +new_names = c("Foraging", "Travelling", "Socialising"), +xname="Behaviours of dolphins") +# Burst-pulse +table <- cld(emmeans(mod.burst.pulse, pairwise~behavior, adjust="tukey"), Letters = letters) +myletters_df <- data.frame(acoustic=table$behavior,letter = trimws(table$.group)) +barPlot(computeStats(bbp.dta, behavior, Burst.pulse_per_dolphin), +myletters_df, behavior, height=0.4, ytitle="Mean number of Burst-pulses per dolphin per min", +old_names = c("CHAS", "DEPL", "SOCI"), +new_names = c("Foraging", "Travelling", "Socialising"), +xname="Behaviours of dolphins") +#### Interaction : acoustic:fishing_net plots #### +# BBP +letters_df <- computeLetters(emmeans(mod.bbp, pairwise~acoustic:fishing_net, adjust="tukey"), "fishing_net") -letters_df$acoustic <- computeLetters(emmeans(mod.whi, pairwise~fishing_net:acoustic, adjust="tukey"), +letters_df$acoustic <- computeLetters(emmeans(mod.bbp, pairwise~acoustic:fishing_net, adjust="tukey"), "acoustic")$acoustic letters_df <- letters_df[, c("acoustic","fishing_net","letter")] letters_df$letter <- gsub(" ", "", letters_df$letter) -barPlot(computeStats(acoustic.dta, fishing_net, whistling_time_per_dolphin/375, two=acoustic), +barPlot(computeStats(bbp.dta, fishing_net, BBPs_per_dolphin, two=acoustic), NULL, acoustic, fill=fishing_net, -old_names = c("AV","AV+D","D","D+AP","AP"), ytitle="Mean whistling time per dolphin per min", +old_names = c("AV","AV+D","D","D+AP","AP"), ytitle="Mean number of BBPs per dolphin per min", new_names = c("BEF","BEF+DUR","DUR", "DUR+AFT", "AFT"), -xname="Activation sequence", height=c(.95,.95,.95,1,.95,1,.95,1,1,1), +xname="Activation sequence", height=c(1.6), colours=c("#E69F00","#999999"), size=5, legend_title="Fishing net", legend_labs=c("Present", "Absent")) -# BBPs -letters_df <- computeLetters(emmeans(mod.bbp, pairwise~fishing_net:acoustic, adjust="tukey"), +# Buzz +letters_df <- computeLetters(emmeans(mod.buzz, pairwise~acoustic:fishing_net, adjust="tukey"), "fishing_net") -letters_df$acoustic <- computeLetters(emmeans(mod.bbp, pairwise~fishing_net:acoustic, adjust="tukey"), +letters_df$acoustic <- computeLetters(emmeans(mod.buzz, pairwise~acoustic:fishing_net, adjust="tukey"), "acoustic")$acoustic letters_df <- letters_df[, c("acoustic","fishing_net","letter")] letters_df$letter <- gsub(" ", "", letters_df$letter) -barPlot(computeStats(acoustic.dta, fishing_net, BBPs_per_dolphin, two=acoustic), +barPlot(computeStats(bbp.dta, fishing_net, Buzz_per_dolphin, two=acoustic), NULL, acoustic, fill=fishing_net, -old_names = c("AV","AV+D","D","D+AP","AP"), ytitle="Mean number of BBPs per dolphin per min", +old_names = c("AV","AV+D","D","D+AP","AP"), ytitle="Mean number of Buzzes per dolphin per min", new_names = c("BEF","BEF+DUR","DUR", "DUR+AFT", "AFT"), -xname="Activation sequence", height=c(1.65,1.65,1.72,1.65,1.72,1.65,1.65,1.72,1.72,1.72), +xname="Activation sequence", height=c(0.77,0.77,0.8,0.77,0.77,0.8,0.77,0.8,0.8,0.8), colours=c("#E69F00","#999999"), size=5, legend_title="Fishing net", legend_labs=c("Present", "Absent")) -# Clicks -letters_df <- computeLetters(emmeans(mod.cli, pairwise~fishing_net:acoustic, adjust="tukey"), +# Burst-pulse +letters_df <- computeLetters(emmeans(mod.burst.pulse, pairwise~acoustic:fishing_net, adjust="tukey"), "fishing_net") -letters_df$acoustic <- computeLetters(emmeans(mod.cli, pairwise~fishing_net:acoustic, adjust="tukey"), +letters_df$acoustic <- computeLetters(emmeans(mod.burst.pulse, pairwise~acoustic:fishing_net, adjust="tukey"), "acoustic")$acoustic letters_df <- letters_df[, c("acoustic","fishing_net","letter")] letters_df$letter <- gsub(" ", "", letters_df$letter) -barPlot(computeStats(acoustic.dta, fishing_net, clicks_per_dolphin, two=acoustic), +barPlot(computeStats(bbp.dta, fishing_net, Burst.pulse_per_dolphin, two=acoustic), NULL, acoustic, fill=fishing_net, -old_names = c("AV","AV+D","D","D+AP","AP"), ytitle="Mean number of clicks per dolphin per min", +old_names = c("AV","AV+D","D","D+AP","AP"), ytitle="Mean number of Burst-pulses per dolphin per min", new_names = c("BEF","BEF+DUR","DUR", "DUR+AFT", "AFT"), -xname="Activation sequence", height=c(180,180,187,187,180,187,180,180,187,187), +xname="Activation sequence", height=c(0.9,0.85,0.9,0.9,0.85,0.9,0.85,0.9,0.85,0.85), colours=c("#E69F00","#999999"), size=5, legend_title="Fishing net", legend_labs=c("Present", "Absent")) -#### Behaviour plots #### -# Whistles -table <- cld(emmeans(mod.whi, pairwise~behavior, adjust="tukey"), Letters = letters) -myletters_df <- data.frame(behavior=table$behavior,letter = trimws(table$.group)) -barPlot(computeStats(acoustic.dta, behavior, whistling_time_per_dolphin/375), -myletters_df, behavior, height=0.75, ytitle="Mean whistling time per dolphin per min", -old_names = c("CHAS", "DEPL", "SOCI"), -new_names = c("Foraging", "Travelling", "Socialising"), -xname="Behaviours of dolphins") -# BBPs -# real effect measured in model -table <- cld(emmeans(mod.bbp, pairwise~behavior, adjust="tukey"), Letters = letters) -myletters_df <- data.frame(acoustic=table$behavior,letter = trimws(table$.group)) -barPlot(computeStats(acoustic.dta, behavior, BBPs_per_dolphin), -myletters_df, behavior, height=1.2, ytitle="Mean number of BBPs per dolphin per min", -old_names = c("CHAS", "DEPL", "SOCI"), -new_names = c("Foraging", "Travelling", "Socialising"), -xname="Behaviours of dolphins") -# Clicks -# no significant effect in click statistical model so all the same letters -myletters_df <- data.frame(behavior=unique(acoustic.dta$behavior), -letter = rep("a",length(unique(acoustic.dta$behavior)))) -barPlot(computeStats(acoustic.dta, behavior, clicks_per_dolphin), -myletters_df, -behavior, old_names = c("CHAS", "DEPL", "SOCI"), -new_names = c("Foraging", "Travelling", "Socialising"), -xname="Behaviours of dolphins", height=150, -ytitle="Mean number of clicks per dolphin per min") -#### Nets plots + KW analysis #### -# Whistles -#KW test -kruskal.test(acoustic.dta$whistling_time_per_dolphin ~ acoustic.dta$net) -# p<0.05 so post-hoc -kruskalmc(acoustic.dta$whistling_time_per_dolphin, acoustic.dta$net) -# DIY : letters -myletters_df <- data.frame(net=c("SSF", "chalut_blanc", "chalut_vert", "tremail", "grand_filet"), -letter = c("a","ad","bd","cd","a")) -barPlot(computeStats(acoustic.dta, net, whistling_time_per_dolphin/375), -myletters_df, -net, old_names = c("SSF", "chalut_blanc", "chalut_vert", "tremail", "grand_filet"), -new_names = c("Absent", "Nylon trawl net", "PE trawl net", "Gill net", "Long gill net"), -xname="Fishing nets", height=.6, -ytitle="Mean whistling time per dolphin per min")+ -theme(axis.text.x=element_text(size=8.5)) -# BBPs -#KW test -kruskal.test(acoustic.dta$BBPs_per_dolphin ~ acoustic.dta$net) -# p<0.05 so post-hoc -kruskalmc(acoustic.dta$BBPs_per_dolphin, acoustic.dta$net,) -# DIY : letters -myletters_df <- data.frame(net=c("SSF", "chalut_blanc", "chalut_vert", "tremail", "grand_filet"), -letter = c("a","a","a","a","a")) -barPlot(computeStats(acoustic.dta, net, BBPs_per_dolphin), -myletters_df, -net, old_names = c("SSF", "chalut_blanc", "chalut_vert", "tremail", "grand_filet"), -new_names = c("Absent", "Nylon trawl net", "PE trawl net", "Gill net", "Long gill net"), -xname="Fishing nets", height=.8, -ytitle="Mean number of BBPs per dolphin per min")+ -theme(axis.text.x=element_text(size=8.5)) -# Clicks -#KW test -kruskal.test(acoustic.dta$clicks_per_dolphin ~ acoustic.dta$net) -# p<0.05 so post-hoc -kruskalmc(acoustic.dta$clicks_per_dolphin, acoustic.dta$net) -# DIY : letters -myletters_df <- data.frame(net=c("SSF", "chalut_blanc", "chalut_vert", "tremail", "grand_filet"), -letter = c("ae","ad","bd","cd","e")) -barPlot(computeStats(acoustic.dta, net, clicks_per_dolphin), -myletters_df, -net, old_names = c("SSF", "chalut_blanc", "chalut_vert", "tremail", "grand_filet"), -new_names = c("Absent", "Nylon trawl net", "PE trawl net", "Gill net", "Long gill net"), -xname="Fishing nets", height=120, -ytitle="Mean number of clicks per dolphin per min")+ -theme(axis.text.x=element_text(size=8.5)) -#### : Beacon plots + KW analysis (letters not shown for lisibility) #### -# Whistles -#KW test -kruskal.test(acoustic.dta$whistling_time_per_dolphin ~ acoustic.dta$beacon) -barPlot(computeStats(acoustic.dta, beacon, whistling_time_per_dolphin/375), -NULL, -beacon, old_names = names(letters$Letters), new_names = names(letters$Letters), -xname="Signals from bio-inspired beacon", height=0.9, size=3, -ytitle="Mean whistling time per dolphin per min")+ -theme(axis.text.x=element_text(size=8))+ -scale_x_discrete(guide=guide_axis(n.dodge = 2)) -# NC stands for "Unknown". Corresponding to categories where the beacon was not turned on yet ('BEF') -# BBPs -#KW test -kruskal.test(acoustic.dta$BBPs_per_dolphin ~ acoustic.dta$beacon) -barPlot(computeStats(acoustic.dta, beacon, BBPs_per_dolphin), -NULL, -beacon, old_names = names(letters$Letters), new_names = names(letters$Letters), -xname="Signals from bio-inspired beacon", height=0.5, size=3, -ytitle="Mean number of BBPs per dolphin per min")+ -theme(axis.text.x=element_text(size=8))+ -scale_x_discrete(guide=guide_axis(n.dodge = 2)) -# NC stands for "Unknown". Corresponding to categories where the beacon was not turned on yet ('BEF') -# Clicks -#KW test -kruskal.test(acoustic.dta$clicks_per_dolphin ~ acoustic.dta$beacon) -barPlot(computeStats(acoustic.dta, beacon, clicks_per_dolphin), -NULL, -beacon, old_names = names(letters$Letters), new_names = names(letters$Letters), -xname="Signals from bio-inspired beacon", height=150, size=3, -ytitle="Mean number of clicks per dolphin per min")+ -theme(axis.text.x=element_text(size=8))+ -scale_x_discrete(guide=guide_axis(n.dodge = 2)) -# NC stands for "Unknown". Corresponding to categories where the beacon was not turned on yet ('BEF') -#### WHY NOT: Number plots #### -# Whistles -numb_stats_w <- computeStats(acoustic.dta, number, total_whistles_duration/375) -numb_stats_w[is.na(numb_stats_w)] <- 0 -numb_stats_w$number <- as.factor(numb_stats_w$number) -numb_stats_w %>% -ggplot(aes(x=number, y=mean, group=1)) + -geom_errorbar(aes(x=number, ymin=mean-ic, ymax=mean+ic), -color="red", width=.1, show.legend = FALSE)+ -geom_point() + geom_line() + -theme_classic() + theme(text=element_text(size=12)) + -ylab("Mean whistling time per min")+ -xlab("Number of dolphins in group") -# BBPs -numb_stats_b <- computeStats(acoustic.dta, number, number_of_bbp) -numb_stats_b[is.na(numb_stats_b)] <- 0 -numb_stats_b$number <- as.factor(numb_stats_b$number) -numb_stats_b %>% -ggplot(aes(x=number, y=mean, group=1)) + -geom_errorbar(aes(x=number, ymin=mean-ic, ymax=mean+ic), -color="red", width=.1, show.legend = FALSE)+ -geom_point() + geom_line() + -theme_classic() + theme(text=element_text(size=12)) + -ylab("Number of BBPs per min")+ -xlab("Number of dolphins in group") -# Clicks -numb_stats_c <- computeStats(acoustic.dta, number, number_of_clicks) -numb_stats_c[is.na(numb_stats_c)] <- 0 -numb_stats_c$number <- as.factor(numb_stats_c$number) -numb_stats_c %>% -ggplot(aes(x=number, y=mean, group=1)) + -geom_errorbar(aes(x=number, ymin=mean-ic, ymax=mean+ic), -color="red", width=.1)+ -geom_point() + geom_line() + -theme_classic() + theme(text=element_text(size=12)) + -ylab("Mean number of clicks per min")+ -xlab("Number of echolocation clicks in group") +#### Interaction : acoustic:behavior plots #### +# BBP +barPlot(computeStats(bbp.dta, behavior, BBPs_per_dolphin, two=acoustic), +NULL, acoustic, fill=behavior, +old_names = c("AV","AV+D","D","D+AP","AP"), ytitle="Mean number of BBPs per dolphin per min", +new_names = c("BEF","BEF+DUR","DUR", "DUR+AFT", "AFT"), +xname="Activation sequence", +colours=c("#E69F00","#55c041", "#FF3814"), size=5, +legend_title="Behaviour", legend_labs= c("Foraging", "Travelling", "Socialising")) +# Buzz +barPlot(computeStats(bbp.dta, behavior, Buzz_per_dolphin, two=acoustic), +NULL, acoustic, fill=behavior, +old_names = c("AV","AV+D","D","D+AP","AP"), ytitle="Mean number of Buzzes per dolphin per min", +new_names = c("BEF","BEF+DUR","DUR", "DUR+AFT", "AFT"), +xname="Activation sequence", +colours=c("#E69F00","#55c041", "#FF3814"), size=5, +legend_title="Behaviour", legend_labs= c("Foraging", "Travelling", "Socialising")) +# Burst-pulse +barPlot(computeStats(bbp.dta, behavior, Burst.pulse_per_dolphin, two=acoustic), +NULL, acoustic, fill=behavior, +old_names = c("AV","AV+D","D","D+AP","AP"), ytitle="Mean number of Burst-pulses per dolphin per min", +new_names = c("BEF","BEF+DUR","DUR", "DUR+AFT", "AFT"), +xname="Activation sequence", +colours=c("#E69F00","#55c041", "#FF3814"), size=5, +legend_title="Behaviour", legend_labs= c("Foraging", "Travelling", "Socialising")) diff --git a/Stats/BBP-click-whistles_3models.R b/Stats/BBP-click-whistles_3models.R index c096726eff398d5a7020bd5c98509cf0fb4726dc..3856be820899443a913c977751d7218018d1c400 100644 --- a/Stats/BBP-click-whistles_3models.R +++ b/Stats/BBP-click-whistles_3models.R @@ -399,7 +399,7 @@ myletters_df <- data.frame(net=c("SSF", "chalut_blanc", "chalut_vert", "tremail" barPlot(computeStats(acoustic.dta, net, whistling_time_per_dolphin/375), NULL, net, old_names = c("SSF", "chalut_blanc", "chalut_vert", "tremail", "grand_filet"), - new_names = c("Absent", "Nylon trawl net", "PE trawl net", "Gill net", "Long gill net"), + new_names = c("Absent", "Nylon trawl net", "PE trawl net", "Nylon gill net", "Long nylon gill net"), xname="Fishing nets", height=.6, ytitle="Mean whistling time per dolphin per min")+ theme(axis.text.x=element_text(size=8.5)) @@ -415,7 +415,7 @@ myletters_df <- data.frame(net=c("SSF", "chalut_blanc", "chalut_vert", "tremail" barPlot(computeStats(acoustic.dta, net, BBPs_per_dolphin), NULL, net, old_names = c("SSF", "chalut_blanc", "chalut_vert", "tremail", "grand_filet"), - new_names = c("Absent", "Nylon trawl net", "PE trawl net", "Gill net", "Long gill net"), + new_names = c("Absent", "Nylon trawl net", "PE trawl net", "Nylon gill net", "Long nylon gill net"), xname="Fishing nets", height=.8, ytitle="Mean number of BBPs per dolphin per min")+ theme(axis.text.x=element_text(size=8.5)) @@ -431,19 +431,20 @@ myletters_df <- data.frame(net=c("SSF", "chalut_blanc", "chalut_vert", "tremail" barPlot(computeStats(acoustic.dta, net, clicks_per_dolphin), NULL, net, old_names = c("SSF", "chalut_blanc", "chalut_vert", "tremail", "grand_filet"), - new_names = c("Absent", "Nylon trawl net", "PE trawl net", "Gill net", "Long gill net"), + new_names = c("Absent", "Nylon trawl net", "PE trawl net", "Nylon gill net", "Long nylon gill net"), xname="Fishing nets", height=120, ytitle="Mean number of clicks per dolphin per min")+ theme(axis.text.x=element_text(size=8.5)) -#### : Beacon plots + KW analysis (letters not shown for lisibility) #### +#### Beacon plots + KW analysis (letters not shown for readability) #### # Whistles #KW test kruskal.test(acoustic.dta$whistling_time_per_dolphin ~ acoustic.dta$beacon) +names = computeStats(acoustic.dta, beacon, whistling_time_per_dolphin/375)["beacon"] barPlot(computeStats(acoustic.dta, beacon, whistling_time_per_dolphin/375), NULL, - beacon, old_names = names(letters$Letters), new_names = names(letters$Letters), + beacon, old_names = unlist(names), new_names = unlist(names), xname="Signals from bio-inspired beacon", height=0.9, size=3, ytitle="Mean whistling time per dolphin per min")+ theme(axis.text.x=element_text(size=8))+ @@ -453,9 +454,10 @@ barPlot(computeStats(acoustic.dta, beacon, whistling_time_per_dolphin/375), # BBPs #KW test kruskal.test(acoustic.dta$BBPs_per_dolphin ~ acoustic.dta$beacon) +names = computeStats(acoustic.dta, beacon, whistling_time_per_dolphin/375)["beacon"] barPlot(computeStats(acoustic.dta, beacon, BBPs_per_dolphin), NULL, - beacon, old_names = names(letters$Letters), new_names = names(letters$Letters), + beacon, old_names = unlist(names), new_names = unlist(names), xname="Signals from bio-inspired beacon", height=0.5, size=3, ytitle="Mean number of BBPs per dolphin per min")+ theme(axis.text.x=element_text(size=8))+ @@ -465,9 +467,10 @@ barPlot(computeStats(acoustic.dta, beacon, BBPs_per_dolphin), # Clicks #KW test kruskal.test(acoustic.dta$clicks_per_dolphin ~ acoustic.dta$beacon) +names = computeStats(acoustic.dta, beacon, whistling_time_per_dolphin/375)["beacon"] barPlot(computeStats(acoustic.dta, beacon, clicks_per_dolphin), NULL, - beacon, old_names = names(letters$Letters), new_names = names(letters$Letters), + beacon, old_names = unlist(names), unlist(names), xname="Signals from bio-inspired beacon", height=150, size=3, ytitle="Mean number of clicks per dolphin per min")+ theme(axis.text.x=element_text(size=8))+ diff --git a/Stats/README-Stats.md b/Stats/README-Stats.md deleted file mode 100644 index 521dd8a536857b03e5f1057ae4d0464bbfd94113..0000000000000000000000000000000000000000 --- a/Stats/README-Stats.md +++ /dev/null @@ -1,39 +0,0 @@ -# Description of CSV data - -"Fichier Audio" Name of the recording (format si "ddmmyyyy/hydrophoneID_yyyymmdd_hhmmss.wav") -"Date" Date (format is "dd/mm/yyyy") -"Heure" Time at the beginning of the record -"T" "Test" or "Control" sequences -"AV" Before beacon's activation (translates to "BEF") -"AV+D" At the beginning of beacon's emission sequence (translates to "BEF+DUR") -"D" During beacon's emission sequence (translates to "DUR") -"D+AP" At the end of beacon's emission (translates to "DUR+AFT") -"AP" After beacon's emission (translates to "AFT") -"AP+AV" Between emissions (translates to "AFT+BEF") -"F" Presence of a fishing net -"SSF" Absence of a fishing net -"NSP" Doubt on the presence of a fishing net -"CHAS" "Foraging" -"SOCI" "Socialising" -"DEPL" "Travelling" -"SONAR" Presence of a SONAR during sequences (nearby boat or experiment boat) -"SIGNAL" Type of signal used during emission sequence -"C-GR" Count of dolphin observed in group -"FILET" Type of fishing net - -*In cells, 0 = absence or false, 1 = presence of true* -*Lines at the end enabled us to verify that there was no missing data* - -## Fishing net types -"tremail" monkfish gillnet, nylon, mesh 220 mm -"grand_filet" hake and pollack gillnet, stretched mesh 136 mm, tread 0.6mm, with a weighted 12 mm-diameter bottom rope -"chalut_vert" trawl net, mesh 12 mm, thread 210/24/413, reinforced nylon -"chalut_blanc" trawl net, mesh 40 mm, thread 4mm, polyethylene PE - -*See publication for more details* - -## Signal types - -See table S1 in supplementary material - - diff --git a/Stats/README.md b/Stats/README.md new file mode 100644 index 0000000000000000000000000000000000000000..bd15e053ee4971b4b688716af956b256e1adcaa3 --- /dev/null +++ b/Stats/README.md @@ -0,0 +1,39 @@ +# Description of CSV data + +"Fichier Audio" Name of the recording (format si "ddmmyyyy/hydrophoneID_yyyymmdd_hhmmss.wav") +"Date" Date (format is "dd/mm/yyyy") +"Heure" Time at the beginning of the record +"T" "Test" or "Control" sequences +"AV" Before beacon's activation (translates to "BEF") +"AV+D" At the beginning of beacon's emission sequence (translates to "BEF+DUR") +"D" During beacon's emission sequence (translates to "DUR") +"D+AP" At the end of beacon's emission (translates to "DUR+AFT") +"AP" After beacon's emission (translates to "AFT") +"AP+AV" Between emissions (translates to "AFT+BEF") +"F" Presence of a fishing net +"SSF" Absence of a fishing net +"NSP" Doubt on the presence of a fishing net +"CHAS" "Foraging" +"SOCI" "Socialising" +"DEPL" "Travelling" +"SONAR" Presence of a SONAR during sequences (nearby boat or experiment boat) +"SIGNAL" Type of signal used during emission sequence +"C-GR" Count of dolphin observed in group +"FILET" Type of fishing net + +*In cells, 0 = absence or false, 1 = presence of true* +*Lines at the end enabled us to verify that there was no missing data* + +## Fishing net types +"tremail" monkfish gillnet, nylon, mesh 220 mm +"grand_filet" hake and pollack gillnet, stretched mesh 136 mm, tread 0.6mm, with a weighted 12 mm-diameter bottom rope +"chalut_vert" trawl net, mesh 12 mm, thread 210/24/413, reinforced nylon +"chalut_blanc" trawl net, mesh 40 mm, thread 4mm, polyethylene PE + +*See publication for more details* + +## Signal types + +See table S1 in supplementary material + +