Set up
knitr::opts_chunk$set(echo = TRUE)
library(ggplot2)
## Warning: package 'ggplot2' was built under R version 3.6.3
library(tidyr)
## Warning: package 'tidyr' was built under R version 3.6.3
library(car)
## Warning: package 'car' was built under R version 3.6.3
## Loading required package: carData
## Warning: package 'carData' was built under R version 3.6.3
Importing
den_eff <- read.csv("density_effects.csv")
low_per <- read.csv("lowest_persistence.csv")
res_over <- read.csv("resource_overlap.csv")
stor_eff <- read.csv("storage_effects.csv")
summary(low_per)
## ï..Test X0.75 X0.8 X0.85
## Min. : 1.00 Min. : 0.0 Min. : 0 Min. : 0
## 1st Qu.: 8.25 1st Qu.: 75.0 1st Qu.: 0 1st Qu.: 0
## Median :15.50 Median : 212.5 Median :200 Median : 225
## Mean :15.50 Mean : 324.2 Mean :325 Mean : 411
## 3rd Qu.:22.75 3rd Qu.: 568.8 3rd Qu.:650 3rd Qu.: 775
## Max. :30.00 Max. :1050.0 Max. :950 Max. :1100
## X0.9 X0.95
## Min. : 0.00 Min. : 0.0
## 1st Qu.: 11.25 1st Qu.: 0.0
## Median : 245.00 Median : 150.0
## Mean : 382.50 Mean : 365.8
## 3rd Qu.: 693.75 3rd Qu.: 700.0
## Max. :1100.00 Max. :1100.0
Tidying Data
low_per_t <- low_per %>%
pivot_longer(X0.75:X0.95, names_to = "setting", values_to = "output")
stor_eff_t <- stor_eff %>%
pivot_longer(X10_1_1000:X1000_500_150, names_to = "setting", values_to = "output")
den_eff_t <- den_eff %>%
pivot_longer(none:X7_15_two, names_to = "setting", values_to = "output")
res_over_t <- res_over %>%
pivot_longer(X0_10:X10_0_rem, names_to = "setting", values_to = "output")
Lowest Persistence Tests
bar_low <- bartlett.test(output ~ setting, data = low_per_t)
bar_low
##
## Bartlett test of homogeneity of variances
##
## data: output by setting
## Bartlett's K-squared = 2.4366, df = 4, p-value = 0.656
leveneTest(output ~ setting, data = low_per_t)
## Warning in leveneTest.default(y = y, group = group, ...): group coerced to
## factor.
## Levene's Test for Homogeneity of Variance (center = median)
## Df F value Pr(>F)
## group 4 0.9131 0.4581
## 145
ggplot(low_per_t) +
geom_violin(aes(x = setting, y = output)) +
geom_boxplot(aes(x = setting, y = output), alpha = 0.5, width = 0.05) +
geom_jitter(aes(x = setting, y = output), alpha = 0.5, width = 0.2) +
theme_bw() +
theme(panel.grid.major.x = element_blank(),
panel.grid.major.y = element_blank(),
panel.grid.minor.x = element_blank(),
panel.grid.minor.y = element_blank()) +
ylab("Population Level")+
xlab("Resource Growth and Depletion Setting")+
labs(title = "Resource Growth to Population Level", subtitle = "Determining the minimum persistence level with the highest population")

aov_low <- aov(output ~ setting, data = low_per_t)
summary(aov_low)
## Df Sum Sq Mean Sq F value Pr(>F)
## setting 4 169076 42269 0.306 0.873
## Residuals 145 20005866 137971
Storage Effects
leveneTest(output ~ setting, data = stor_eff_t)
## Warning in leveneTest.default(y = y, group = group, ...): group coerced to
## factor.
## Levene's Test for Homogeneity of Variance (center = median)
## Df F value Pr(>F)
## group 3 0.2123 0.8877
## 116
aov_stor <- aov(output ~ setting, data = stor_eff_t)
summary(aov_stor)
## Df Sum Sq Mean Sq F value Pr(>F)
## setting 3 8.49 2.8306 8.121 5.91e-05 ***
## Residuals 116 40.43 0.3486
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
TukeyHSD(aov_stor)
## Tukey multiple comparisons of means
## 95% family-wise confidence level
##
## Fit: aov(formula = output ~ setting, data = stor_eff_t)
##
## $setting
## diff lwr upr p adj
## X100_10_500-X10_1_1000 0.23333333 -0.1640232 0.630689871 0.4226215
## X1000_500_150-X10_1_1000 -0.40000000 -0.7973565 -0.002643462 0.0478424
## X500_50_200-X10_1_1000 0.26666667 -0.1306899 0.664023204 0.3032216
## X1000_500_150-X100_10_500 -0.63333333 -1.0306899 -0.235976796 0.0003607
## X500_50_200-X100_10_500 0.03333333 -0.3640232 0.430689871 0.9962891
## X500_50_200-X1000_500_150 0.66666667 0.2693101 1.064023204 0.0001562
plot(TukeyHSD(aov_stor, conf.level=0.95), las = 2)

stor_mini <- read.csv("storage_mini_graph.csv")
stor_mini$Type <- factor(stor_mini$Type, levels = stor_mini$Type)
ggplot(data = stor_mini, aes(x = Type, y = ï..Chance, label = ï..Chance)) +
geom_point(stat='identity', fill = "black", size = 10) +
geom_segment(aes(y = 1,
x = Type,
yend = ï..Chance,
xend = Type),
color = "black") +
geom_text(color = "white", size = 3) +
labs(title = "Resource-use Efficiency Composition Patterns",
subtitle = "Measures storage effect deviation from null model or average exclusion of 1.0.") +
ylim (0, 2) +
coord_flip() +
ylab("Composition Pattern \n (0 = extinction, 1 = exclusion, 2 = coexistence)") +
xlab("Test Category \n (Food energy - Breed energy - Death limit)") +
theme_bw() +
theme(panel.grid.major.x = element_blank(),
panel.grid.major.y = element_blank(),
panel.grid.minor.x = element_blank()) +
geom_hline(yintercept = 1, linetype = "dashed")

Density Effects
leveneTest(output ~ setting, data = den_eff_t)
## Warning in leveneTest.default(y = y, group = group, ...): group coerced to
## factor.
## Levene's Test for Homogeneity of Variance (center = median)
## Df F value Pr(>F)
## group 4 0.8826 0.476
## 145
aov_den <- aov(output ~ setting, data = den_eff_t)
summary(aov_den)
## Df Sum Sq Mean Sq F value Pr(>F)
## setting 4 1.91 0.4767 1.34 0.258
## Residuals 145 51.57 0.3556
TukeyHSD(aov_den)
## Tukey multiple comparisons of means
## 95% family-wise confidence level
##
## Fit: aov(formula = output ~ setting, data = den_eff_t)
##
## $setting
## diff lwr upr p adj
## X2_5_one-none 1.000000e-01 -0.3253460 0.5253460 0.9665035
## X2_5_two-none 3.000000e-01 -0.1253460 0.7253460 0.2968227
## X7_15_one-none 1.000000e-01 -0.3253460 0.5253460 0.9665035
## X7_15_two-none 2.666667e-01 -0.1586794 0.6920127 0.4178061
## X2_5_two-X2_5_one 2.000000e-01 -0.2253460 0.6253460 0.6923163
## X7_15_one-X2_5_one 2.220446e-16 -0.4253460 0.4253460 1.0000000
## X7_15_two-X2_5_one 1.666667e-01 -0.2586794 0.5920127 0.8153387
## X7_15_one-X2_5_two -2.000000e-01 -0.6253460 0.2253460 0.6923163
## X7_15_two-X2_5_two -3.333333e-02 -0.4586794 0.3920127 0.9995067
## X7_15_two-X7_15_one 1.666667e-01 -0.2586794 0.5920127 0.8153387
plot(TukeyHSD(aov_den, conf.level=0.95), las = 2)

den_mini <- read.csv("density_mini_graph.csv")
den_mini$Type <- factor(den_mini$Type, levels = den_mini$Type)
ggplot(data = den_mini, aes(x = Type, y = ï..Chance, label = ï..Chance)) +
geom_point(stat='identity', fill = "black", size = 10) +
geom_segment(aes(y = 1,
x = Type,
yend = ï..Chance,
xend = Type),
color = "black") +
geom_text(color = "white", size = 3) +
labs(title = "Density Effects Composition Patterns",
subtitle = "Measures the swarming effect deviation from null model or average exclusion of 1.0.") +
ylim (0, 2) +
coord_flip() +
ylab("Composition Pattern \n (0 = extinction, 1 = exclusion, 2 = coexistence)") +
xlab("Test Category \n (Peak effect 1 / Peak effect 2 - # of species swarming)") +
theme_bw() +
theme(panel.grid.major.x = element_blank(),
panel.grid.major.y = element_blank(),
panel.grid.minor.x = element_blank()) +
geom_hline(yintercept = 1, linetype = "dashed")

Resource Overlap
leveneTest(output ~ setting, data = res_over_t)
## Warning in leveneTest.default(y = y, group = group, ...): group coerced to
## factor.
## Levene's Test for Homogeneity of Variance (center = median)
## Df F value Pr(>F)
## group 6 2.1596 0.04835 *
## 203
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
aov_res <- aov(output ~ setting, data = res_over_t)
summary(aov_res)
## Df Sum Sq Mean Sq F value Pr(>F)
## setting 6 4.00 0.6667 2.173 0.047 *
## Residuals 203 62.27 0.3067
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
TukeyHSD(aov_res)
## Tukey multiple comparisons of means
## 95% family-wise confidence level
##
## Fit: aov(formula = output ~ setting, data = res_over_t)
##
## $setting
## diff lwr upr p adj
## X1_9-X0_10 1.666667e-01 -0.25920656 0.5925399 0.9061888
## X10_0-X0_10 -3.333333e-02 -0.45920656 0.3925399 0.9999864
## X10_0_rem-X0_10 1.776357e-15 -0.42587323 0.4258732 1.0000000
## X5_5-X0_10 3.666667e-01 -0.05920656 0.7925399 0.1427548
## X7_3-X0_10 2.333333e-01 -0.19253989 0.6592066 0.6619771
## X9_1-X0_10 2.000000e-01 -0.22587323 0.6258732 0.8021090
## X10_0-X1_9 -2.000000e-01 -0.62587323 0.2258732 0.8021090
## X10_0_rem-X1_9 -1.666667e-01 -0.59253989 0.2592066 0.9061888
## X5_5-X1_9 2.000000e-01 -0.22587323 0.6258732 0.8021090
## X7_3-X1_9 6.666667e-02 -0.35920656 0.4925399 0.9992178
## X9_1-X1_9 3.333333e-02 -0.39253989 0.4592066 0.9999864
## X10_0_rem-X10_0 3.333333e-02 -0.39253989 0.4592066 0.9999864
## X5_5-X10_0 4.000000e-01 -0.02587323 0.8258732 0.0811127
## X7_3-X10_0 2.666667e-01 -0.15920656 0.6925399 0.5060946
## X9_1-X10_0 2.333333e-01 -0.19253989 0.6592066 0.6619771
## X5_5-X10_0_rem 3.666667e-01 -0.05920656 0.7925399 0.1427548
## X7_3-X10_0_rem 2.333333e-01 -0.19253989 0.6592066 0.6619771
## X9_1-X10_0_rem 2.000000e-01 -0.22587323 0.6258732 0.8021090
## X7_3-X5_5 -1.333333e-01 -0.55920656 0.2925399 0.9669073
## X9_1-X5_5 -1.666667e-01 -0.59253989 0.2592066 0.9061888
## X9_1-X7_3 -3.333333e-02 -0.45920656 0.3925399 0.9999864
plot(TukeyHSD(aov_res, conf.level=0.95), las = 2)

res_mini <- read.csv("resource_mini_graph.csv")
res_mini$Type <- factor(res_mini$Type, levels = res_mini$Type)
ggplot(data = res_mini, aes(x = Type, y = Chance, label = Chance)) +
geom_point(stat='identity', fill = "black", size = 10) +
geom_segment(aes(y = 1,
x = Type,
yend = Chance,
xend = Type),
color = "black") +
geom_text(color = "white", size = 3) +
labs(title = "Resource Overlap Composition Patterns",
subtitle = "Measures the deviation from null model or average exclusion of 1.0.") +
ylim (0, 2) +
coord_flip() +
ylab("Composition Pattern \n (0 = extinction, 1 = exclusion, 2 = coexistence)") +
xlab("Test Category \n (Own resource - Shared resource)") +
theme_bw() +
theme(panel.grid.major.x = element_blank(),
panel.grid.major.y = element_blank(),
panel.grid.minor.x = element_blank()) +
geom_hline(yintercept = 1, linetype = "dashed")
