Chapter 2 Exploitation rate results
Here we present the results for best performances found by each selection scheme replicate on the exploitation rate diagnostic. Best performance found refers to the largest average trait score found in a given population. Note that performance values fall between 0.0 and 100.0.
2.2 Performance over time
Best performance in a population over time.
# data for lines and shading on plots
lines = filter(cc_over_time, diagnostic == 'exploitation_rate') %>%
group_by(`Selection\nScheme`, gen) %>%
dplyr::summarise(
min = min(pop_fit_max) / DIMENSIONALITY,
mean = mean(pop_fit_max) / DIMENSIONALITY,
max = max(pop_fit_max) / DIMENSIONALITY
)
## `summarise()` has grouped output by 'Selection Scheme'. You can override using
## the `.groups` argument.
ggplot(lines, aes(x=gen, y=mean, group = `Selection\nScheme`, fill =`Selection\nScheme`, color = `Selection\nScheme`, shape = `Selection\nScheme`)) +
geom_ribbon(aes(ymin = min, ymax = max), alpha = 0.1) +
geom_line(size = 0.5) +
geom_point(data = filter(lines, gen %% 2000 == 0 & gen != 0), size = 1.5, stroke = 2.0, alpha = 1.0) +
scale_y_continuous(
name="Average trait score",
limits=c(0, 100),
breaks=seq(0,100, 20),
labels=c("0", "20", "40", "60", "80", "100")
) +
scale_x_continuous(
name="Generations",
limits=c(0, 50000),
breaks=c(0, 10000, 20000, 30000, 40000, 50000),
labels=c("0e+4", "1e+4", "2e+4", "3e+4", "4e+4", "5e+4")
) +
scale_shape_manual(values=SHAPE)+
scale_colour_manual(values = cb_palette) +
scale_fill_manual(values = cb_palette) +
ggtitle('Performance over time')+
p_theme + theme(legend.title=element_blank(),legend.text=element_text(size=11)) +
guides(
shape=guide_legend(ncol=2, title.position = "bottom"),
color=guide_legend(ncol=2, title.position = "bottom"),
fill=guide_legend(ncol=2, title.position = "bottom")
)
2.3 Best performance throughout
Best performance found throughout 50,000 generations.
### best performance throughout
filter(cc_best, col == 'pop_fit_max' & diagnostic == 'exploitation_rate') %>%
ggplot(., aes(x = acron, y = val / DIMENSIONALITY, color = acron, fill = acron, shape = acron)) +
geom_flat_violin(position = position_nudge(x = .2, y = 0), scale = 'width', alpha = 0.2) +
geom_point(position = position_jitter(width = .1), size = 1.5, alpha = 1.0) +
geom_boxplot(color = 'black', width = .2, outlier.shape = NA, alpha = 0.0) +
scale_y_continuous(
name="Average trait score",
limits=c(-1, 101),
breaks=seq(0,100, 20),
labels=c("0", "20", "40", "60", "80", "100")
) +
scale_x_discrete(
name="Scheme"
)+
scale_shape_manual(values=SHAPE)+
scale_colour_manual(values = cb_palette, ) +
scale_fill_manual(values = cb_palette) +
ggtitle('Best performance throughout')+
p_theme + theme(legend.title=element_blank()) +
guides(
shape=guide_legend(nrow=2, title.position = "bottom"),
color=guide_legend(nrow=2, title.position = "bottom"),
fill=guide_legend(nrow=2, title.position = "bottom")
)
## Warning: Using the `size` aesthietic with geom_polygon was deprecated in ggplot2 3.4.0.
## i Please use the `linewidth` aesthetic instead.
2.3.1 Stats
Summary statistics for the best performance.
#get data & summarize
performance = filter(cc_best, col == 'pop_fit_max' & diagnostic == 'exploitation_rate')
performance$acron = factor(performance$acron, levels = c('tru', 'tor', 'lex', 'gfs', 'pfs', 'nov', 'nds', 'ran'))
performance %>%
group_by(acron) %>%
dplyr::summarise(
count = n(),
na_cnt = sum(is.na(val)),
min = min(val / DIMENSIONALITY, na.rm = TRUE),
median = median(val / DIMENSIONALITY, na.rm = TRUE),
mean = mean(val / DIMENSIONALITY, na.rm = TRUE),
max = max(val / DIMENSIONALITY, na.rm = TRUE),
IQR = IQR(val / DIMENSIONALITY, na.rm = TRUE)
)
## # A tibble: 8 x 8
## acron count na_cnt min median mean max IQR
## <fct> <int> <int> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 tru 50 0 100 100 100 100 0
## 2 tor 50 0 100 100 100 100 0
## 3 lex 50 0 99.9 99.9 99.9 99.9 0.0137
## 4 gfs 50 0 57.7 59.3 59.4 60.8 1.31
## 5 pfs 50 0 58.0 59.5 59.5 61.4 0.908
## 6 nov 50 0 15.9 19.2 19.3 22.3 1.34
## 7 nds 50 0 17.9 18.4 18.5 19.5 0.516
## 8 ran 50 0 13.5 15.9 15.9 18.7 1.15
Kruskal–Wallis test provides evidence of statistical differences.
##
## Kruskal-Wallis rank sum test
##
## data: val by acron
## Kruskal-Wallis chi-squared = 384.91, df = 7, p-value < 2.2e-16
Results for post-hoc Wilcoxon rank-sum test with a Bonferroni correction.
pairwise.wilcox.test(x = performance$val, g = performance$acron, p.adjust.method = "bonferroni",
paired = FALSE, conf.int = FALSE, alternative = 'l')
##
## Pairwise comparisons using Wilcoxon rank sum test with continuity correction
##
## data: performance$val and performance$acron
##
## tru tor lex gfs pfs nov nds
## tor 1e+00 - - - - - -
## lex < 2e-16 < 2e-16 - - - - -
## gfs < 2e-16 < 2e-16 < 2e-16 - - - -
## pfs < 2e-16 < 2e-16 < 2e-16 1e+00 - - -
## nov < 2e-16 < 2e-16 < 2e-16 < 2e-16 < 2e-16 - -
## nds < 2e-16 < 2e-16 < 2e-16 < 2e-16 < 2e-16 6e-04 -
## ran < 2e-16 < 2e-16 < 2e-16 < 2e-16 < 2e-16 1.9e-15 7.9e-16
##
## P value adjustment method: bonferroni
2.4 Generation satisfactory solution found
First generation a satisfactory solution is found throughout the 50,000 generations.
filter(cc_ssf, diagnostic == 'exploitation_rate') %>%
ggplot(., aes(x = acron, y = Generations , color = acron, fill = acron, shape = acron)) +
geom_flat_violin(position = position_nudge(x = .2, y = 0), scale = 'width', alpha = 0.2) +
geom_point(position = position_jitter(width = .1), size = 1.5, alpha = 1.0) +
geom_boxplot(color = 'black', width = .2, outlier.shape = NA, alpha = 0.0) +
scale_y_continuous(
name="Generation",
limits=c(0, 60001),
breaks=c(0, 10000, 20000, 30000, 40000, 50000, 60000),
labels=c("0e+4", "1e+4", "2e+4", "3e+4", "4e+4", "5e+4", "Fail")
) +
scale_x_discrete(
name="Scheme"
)+
scale_shape_manual(values=SHAPE)+
scale_colour_manual(values = cb_palette, ) +
scale_fill_manual(values = cb_palette) +
ggtitle('Generation satisfactory solution found')+
p_theme + theme(legend.title=element_blank()) +
guides(
shape=guide_legend(nrow=2, title.position = "bottom"),
color=guide_legend(nrow=2, title.position = "bottom"),
fill=guide_legend(nrow=2, title.position = "bottom")
)
2.4.1 Stats
Summary statistics for the first generation a satisfactory solution is found.
ssf = filter(cc_ssf, diagnostic == 'exploitation_rate' & Generations < 60000)
ssf$acron = factor(ssf$acron, levels = c('tru', 'tor', 'lex'))
ssf %>%
group_by(acron) %>%
dplyr::summarise(
count = n(),
na_cnt = sum(is.na(Generations)),
min = min(Generations, na.rm = TRUE),
median = median(Generations, na.rm = TRUE),
mean = mean(Generations, na.rm = TRUE),
max = max(Generations, na.rm = TRUE),
IQR = IQR(Generations, na.rm = TRUE)
)
## # A tibble: 3 x 8
## acron count na_cnt min median mean max IQR
## <fct> <int> <int> <int> <dbl> <dbl> <int> <dbl>
## 1 tru 50 0 3357 3420 3421. 3481 34.2
## 2 tor 50 0 5403 5457 5453. 5519 51.8
## 3 lex 50 0 23514 25190 25857. 32980 1581
Kruskal–Wallis test provides evidence of difference amoung selection schemes.
##
## Kruskal-Wallis rank sum test
##
## data: Generations by acron
## Kruskal-Wallis chi-squared = 132.46, df = 2, p-value < 2.2e-16
Results for post-hoc Wilcoxon rank-sum test with a Bonferroni correction.
pairwise.wilcox.test(x = ssf$Generations, g = ssf$acron, p.adjust.method = "bonferroni",
paired = FALSE, conf.int = FALSE, alternative = 'g')
##
## Pairwise comparisons using Wilcoxon rank sum test with continuity correction
##
## data: ssf$Generations and ssf$acron
##
## tru tor
## tor <2e-16 -
## lex <2e-16 <2e-16
##
## P value adjustment method: bonferroni
2.5 Multi-valley crossing results
2.5.1 Performance over time
Best performance in a population over time.
# data for lines and shading on plots
lines = filter(cc_over_time_mvc, diagnostic == 'exploitation_rate') %>%
group_by(`Selection\nScheme`, gen) %>%
dplyr::summarise(
min = min(pop_fit_max) / DIMENSIONALITY,
mean = mean(pop_fit_max) / DIMENSIONALITY,
max = max(pop_fit_max) / DIMENSIONALITY
)
## `summarise()` has grouped output by 'Selection Scheme'. You can override using
## the `.groups` argument.
ggplot(lines, aes(x=gen, y=mean, group = `Selection\nScheme`, fill =`Selection\nScheme`, color = `Selection\nScheme`, shape = `Selection\nScheme`)) +
geom_ribbon(aes(ymin = min, ymax = max), alpha = 0.1) +
geom_line(size = 0.5) +
geom_point(data = filter(lines, gen %% 2000 == 0 & gen != 0), size = 1.5, stroke = 2.0, alpha = 1.0) +
scale_y_continuous(
name="Average trait score",
limits=c(0, 50),
breaks=seq(0,50, 10),
labels=c("0", "10", "20", "30", "40", "50")
) +
scale_x_continuous(
name="Generations",
limits=c(0, 50000),
breaks=c(0, 10000, 20000, 30000, 40000, 50000),
labels=c("0e+4", "1e+4", "2e+4", "3e+4", "4e+4", "5e+4")
) +
scale_shape_manual(values=SHAPE)+
scale_colour_manual(values = cb_palette) +
scale_fill_manual(values = cb_palette) +
ggtitle('Performance over time')+
p_theme + theme(legend.title=element_blank(),legend.text=element_text(size=11)) +
guides(
sh=guide_legend(ncol=2, title.position = "left"),
color=guide_legend(ncol=2, title.position = "left"),
fillape=guide_legend(ncol=2, title.position = "left")
)
2.5.2 Best performance throughout
Best performance found throughout 50,000 generations.
### best performance throughout
filter(cc_best_mvc, col == 'pop_fit_max' & diagnostic == 'exploitation_rate') %>%
ggplot(., aes(x = acron, y = val / DIMENSIONALITY, color = acron, fill = acron, shape = acron)) +
geom_flat_violin(position = position_nudge(x = .2, y = 0), scale = 'width', alpha = 0.2) +
geom_point(position = position_jitter(width = .1), size = 1.5, alpha = 1.0) +
geom_boxplot(color = 'black', width = .2, outlier.shape = NA, alpha = 0.0) +
scale_y_continuous(
name="Average trait score",
limits=c(0, 50),
breaks=seq(0,50, 10),
labels=c("0", "10", "20", "30", "40", "50")
) +
scale_x_discrete(
name="Scheme"
)+
scale_shape_manual(values=SHAPE)+
scale_colour_manual(values = cb_palette, ) +
scale_fill_manual(values = cb_palette) +
ggtitle('Best performance throughout')+
p_theme + theme(legend.title=element_blank()) +
guides(
shape=guide_legend(nrow=2, title.position = "bottom"),
color=guide_legend(nrow=2, title.position = "bottom"),
fill=guide_legend(nrow=2, title.position = "bottom")
)
2.5.2.1 Stats
Summary statistics for the performance of the best performance.
#get data & summarize
performance = filter(cc_best_mvc, col == 'pop_fit_max' & diagnostic == 'exploitation_rate')
performance$acron = factor(performance$acron, levels = c('gfs','pfs','tru','tor','nov', 'nds','lex', 'ran'))
performance %>%
group_by(acron) %>%
dplyr::summarise(
count = n(),
na_cnt = sum(is.na(val)),
min = min(val / DIMENSIONALITY, na.rm = TRUE),
median = median(val / DIMENSIONALITY, na.rm = TRUE),
mean = mean(val / DIMENSIONALITY, na.rm = TRUE),
max = max(val / DIMENSIONALITY, na.rm = TRUE),
IQR = IQR(val / DIMENSIONALITY, na.rm = TRUE)
)
## # A tibble: 8 x 8
## acron count na_cnt min median mean max IQR
## <fct> <int> <int> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 gfs 50 0 40.8 43.0 43.0 45.8 1.12
## 2 pfs 50 0 40.9 43.1 43.1 45.3 1.30
## 3 tru 50 0 17.8 18.0 18.0 18.2 0.118
## 4 tor 50 0 17.9 18.1 18.1 18.3 0.130
## 5 nov 50 0 16.5 18.3 18.3 21.5 1.19
## 6 nds 50 0 14.7 15.4 15.3 16.0 0.318
## 7 lex 50 0 12.5 12.7 12.7 13.1 0.121
## 8 ran 50 0 10.3 13.2 13.1 14.6 1.25
Kruskal–Wallis test provides evidence of statistical differences.
##
## Kruskal-Wallis rank sum test
##
## data: val by acron
## Kruskal-Wallis chi-squared = 366.01, df = 7, p-value < 2.2e-16
Results for post-hoc Wilcoxon rank-sum test with a Bonferroni correction.
pairwise.wilcox.test(x = performance$val, g = performance$acron, p.adjust.method = "bonferroni",
paired = FALSE, conf.int = FALSE, alternative = 'l')
##
## Pairwise comparisons using Wilcoxon rank sum test with continuity correction
##
## data: performance$val and performance$acron
##
## gfs pfs tru tor nov nds lex
## pfs 1 - - - - - -
## tru <2e-16 <2e-16 - - - - -
## tor <2e-16 <2e-16 1 - - - -
## nov <2e-16 <2e-16 1 1 - - -
## nds <2e-16 <2e-16 <2e-16 <2e-16 <2e-16 - -
## lex <2e-16 <2e-16 <2e-16 <2e-16 <2e-16 <2e-16 -
## ran <2e-16 <2e-16 <2e-16 <2e-16 <2e-16 <2e-16 1
##
## P value adjustment method: bonferroni
2.5.3 Performance comparison
Best performances in the population at 40,000 and 50,000 generations.
dummy_df = filter(filter(cc_over_time_mvc, diagnostic == 'exploitation_rate' & (gen == 50000 | gen == 40000) & acron != 'ran'))
dummy_df$Generation <- factor(dummy_df$gen, levels = c(50000,40000))
p = ggplot(dummy_df, aes(x=gen, y=pop_fit_max / DIMENSIONALITY, group = acron, fill = acron, color = Generation, shape = Generation)) +
geom_flat_violin(position = position_nudge(x = .2, y = 0), scale = 'width', alpha = 0.2) +
geom_point(position = position_jitter(width = .03), size = 2, alpha = 1.0) +
geom_boxplot(position = position_nudge(x = .13, y = 0), lwd = 1, width = .1, outlier.shape = NA, alpha = 0.0) +
scale_shape_manual(values=c(0,1))+
scale_colour_manual(values = mvc_col)+
scale_fill_manual(values = cb_palette) + p_theme +
guides(
shape=guide_legend(ncol=2, title.position = "bottom"),
color=guide_legend(ncol=2, title.position = "bottom"),
fill='none')
legend <- cowplot::get_legend(
p +
guides(
shape=guide_legend(ncol=2, title.position = "left"),
color=guide_legend(ncol=2, title.position = "left"),
fill='none'
) +
theme(
legend.position = "top",
legend.box="verticle",
legend.justification="center"
)
)
## Warning: The following aesthetics were dropped during statistical transformation:
## colour, shape
## i This can happen when ggplot fails to infer the correct grouping structure in
## the data.
## i Did you forget to specify a `group` aesthetic or to convert a numerical
## variable into a factor?
## The following aesthetics were dropped during statistical transformation:
## colour, shape
## i This can happen when ggplot fails to infer the correct grouping structure in
## the data.
## i Did you forget to specify a `group` aesthetic or to convert a numerical
## variable into a factor?
# 80% and final generation comparison
end = filter(cc_over_time_mvc, diagnostic == 'exploitation_rate' & gen == 50000 & acron != 'ran')
end$Generation <- factor(end$gen)
mid = filter(cc_over_time_mvc, diagnostic == 'exploitation_rate' & gen == 40000 & acron != 'ran')
mid$Generation <- factor(mid$gen)
mvc_p = ggplot(mid, aes(x = acron, y=pop_fit_max / DIMENSIONALITY, group = acron, shape = Generation)) +
geom_point(col = mvc_col[1] , position = position_jitternudge(jitter.width = .03, nudge.x = -0.05), size = 2, alpha = 1.0) +
geom_boxplot(position = position_nudge(x = -.15, y = 0), lwd = 0.7, col = mvc_col[1], fill = mvc_col[1], width = .1, outlier.shape = NA, alpha = 0.0) +
geom_point(data = end, aes(x = acron, y=pop_fit_max / DIMENSIONALITY), col = mvc_col[2], position = position_jitternudge(jitter.width = .03, nudge.x = 0.05), size = 2, alpha = 1.0) +
geom_boxplot(data = end, aes(x = acron, y=pop_fit_max / DIMENSIONALITY), position = position_nudge(x = .15, y = 0), lwd = 0.7, col = mvc_col[2], fill = mvc_col[2], width = .1, outlier.shape = NA, alpha = 0.0) +
scale_y_continuous(
name="Average trait score",
limits=c(0, 50),
breaks=seq(0,50, 10),
labels=c("0", "10", "20", "30", "40", "50")
) +
scale_x_discrete(
name="Scheme"
)+
scale_shape_manual(values=c(0,1))+
scale_colour_manual(values = c(mvc_col[1],mvc_col[2])) +
p_theme
plot_grid(
mvc_p +
ggtitle("Performance comparisons") +
theme(legend.position="none"),
legend,
nrow=2,
rel_heights = c(1,.05),
label_size = TSIZE
)
2.5.3.1 Stats
Summary statistics for the performance of the best performance at 40,000 and 50,000 generations.
### performance comparisons and generation slices 40K & 50K
slices = filter(cc_over_time_mvc, diagnostic == 'exploitation_rate' & (gen == 50000 | gen == 40000) & acron != 'ran')
slices$Generation <- factor(slices$gen, levels = c(50000,40000))
slices$acron = factor(slices$acron, levels = c('gfs','pfs','tru','tor','nov', 'nds','lex', 'ran'))
slices %>%
group_by(acron, Generation) %>%
dplyr::summarise(
count = n(),
na_cnt = sum(is.na(pop_fit_max / DIMENSIONALITY)),
min = min(pop_fit_max / DIMENSIONALITY, na.rm = TRUE),
median = median(pop_fit_max / DIMENSIONALITY, na.rm = TRUE),
mean = mean(pop_fit_max / DIMENSIONALITY, na.rm = TRUE),
max = max(pop_fit_max / DIMENSIONALITY, na.rm = TRUE),
IQR = IQR(pop_fit_max / DIMENSIONALITY, na.rm = TRUE)
)
## `summarise()` has grouped output by 'acron'. You can override using the
## `.groups` argument.
## # A tibble: 14 x 9
## # Groups: acron [7]
## acron Generation count na_cnt min median mean max IQR
## <fct> <fct> <int> <int> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 gfs 50000 50 0 40.7 42.8 42.8 45.7 1.21
## 2 gfs 40000 50 0 34.9 36.4 36.6 39.3 1.15
## 3 pfs 50000 50 0 40.7 43.0 42.8 45.0 1.30
## 4 pfs 40000 50 0 34.4 36.7 36.6 38.1 1.01
## 5 tru 50000 50 0 17.8 18.0 18.0 18.2 0.118
## 6 tru 40000 50 0 17.7 17.9 17.9 18.1 0.147
## 7 tor 50000 50 0 17.9 18.1 18.1 18.3 0.130
## 8 tor 40000 50 0 17.7 18.0 18.0 18.2 0.115
## 9 nov 50000 50 0 16.0 17.8 17.8 21.1 1.17
## 10 nov 40000 50 0 14.3 16.1 16.3 18.1 1.39
## 11 nds 50000 50 0 14.3 15.0 15.0 15.8 0.327
## 12 nds 40000 50 0 12.8 13.4 13.4 14.0 0.516
## 13 lex 50000 50 0 12.0 12.2 12.2 12.5 0.199
## 14 lex 40000 50 0 12.0 12.2 12.2 12.7 0.132
Truncation selection comparisons.
wilcox.test(x = filter(slices, acron == 'tru' & Generation == 50000)$pop_fit_max,
y = filter(slices, acron == 'tru' & Generation == 40000)$pop_fit_max,
alternative = 't')
##
## Wilcoxon rank sum test with continuity correction
##
## data: filter(slices, acron == "tru" & Generation == 50000)$pop_fit_max and filter(slices, acron == "tru" & Generation == 40000)$pop_fit_max
## W = 2037.5, p-value = 5.705e-08
## alternative hypothesis: true location shift is not equal to 0
Tournament selection comparisons.
wilcox.test(x = filter(slices, acron == 'tor' & Generation == 50000)$pop_fit_max,
y = filter(slices, acron == 'tor' & Generation == 40000)$pop_fit_max,
alternative = 't')
##
## Wilcoxon rank sum test with continuity correction
##
## data: filter(slices, acron == "tor" & Generation == 50000)$pop_fit_max and filter(slices, acron == "tor" & Generation == 40000)$pop_fit_max
## W = 2075, p-value = 1.301e-08
## alternative hypothesis: true location shift is not equal to 0
Lexicase selection comparisons.
wilcox.test(x = filter(slices, acron == 'lex' & Generation == 50000)$pop_fit_max,
y = filter(slices, acron == 'lex' & Generation == 40000)$pop_fit_max,
alternative = 't')
##
## Wilcoxon rank sum test with continuity correction
##
## data: filter(slices, acron == "lex" & Generation == 50000)$pop_fit_max and filter(slices, acron == "lex" & Generation == 40000)$pop_fit_max
## W = 1260.5, p-value = 0.945
## alternative hypothesis: true location shift is not equal to 0
Genotypic fitness sharing comparisons.
wilcox.test(x = filter(slices, acron == 'gfs' & Generation == 50000)$pop_fit_max,
y = filter(slices, acron == 'gfs' & Generation == 40000)$pop_fit_max,
alternative = 't')
##
## Wilcoxon rank sum test with continuity correction
##
## data: filter(slices, acron == "gfs" & Generation == 50000)$pop_fit_max and filter(slices, acron == "gfs" & Generation == 40000)$pop_fit_max
## W = 2500, p-value < 2.2e-16
## alternative hypothesis: true location shift is not equal to 0
Phenotypic fitness sharing comparisons.
wilcox.test(x = filter(slices, acron == 'pfs' & Generation == 50000)$pop_fit_max,
y = filter(slices, acron == 'pfs' & Generation == 40000)$pop_fit_max,
alternative = 't')
##
## Wilcoxon rank sum test with continuity correction
##
## data: filter(slices, acron == "pfs" & Generation == 50000)$pop_fit_max and filter(slices, acron == "pfs" & Generation == 40000)$pop_fit_max
## W = 2500, p-value < 2.2e-16
## alternative hypothesis: true location shift is not equal to 0
Nondominated sorting comparisons.
wilcox.test(x = filter(slices, acron == 'nds' & Generation == 50000)$pop_fit_max,
y = filter(slices, acron == 'nds' & Generation == 40000)$pop_fit_max,
alternative = 't')
##
## Wilcoxon rank sum test with continuity correction
##
## data: filter(slices, acron == "nds" & Generation == 50000)$pop_fit_max and filter(slices, acron == "nds" & Generation == 40000)$pop_fit_max
## W = 2500, p-value < 2.2e-16
## alternative hypothesis: true location shift is not equal to 0
Novelty search comparisons.
wilcox.test(x = filter(slices, acron == 'nov' & Generation == 50000)$pop_fit_max,
y = filter(slices, acron == 'nov' & Generation == 40000)$pop_fit_max,
alternative = 't')
##
## Wilcoxon rank sum test with continuity correction
##
## data: filter(slices, acron == "nov" & Generation == 50000)$pop_fit_max and filter(slices, acron == "nov" & Generation == 40000)$pop_fit_max
## W = 2196, p-value = 7.119e-11
## alternative hypothesis: true location shift is not equal to 0