Chapter 3 Other fitness landscapes
3.1 Setup
library(ggplot2)
library(tidyverse)
library(knitr)
library(cowplot)
library(viridis)
library(RColorBrewer)
library(rstatix)
library(ggsignif)
library(Hmisc)
library(kableExtra)
source("https://gist.githubusercontent.com/benmarwick/2a1bb0133ff568cbe28d/raw/fb53bd97121f7f9ce947837ef1a4c65a73bffb3f/geom_flat_violin.R")
library(readr)
library(stringr)
library(ggpubr)
library(infotheo)
library(osfr)
library(scales)
These analyses were conducted in the following computing environment:
## _
## platform x86_64-pc-linux-gnu
## arch x86_64
## os linux-gnu
## system x86_64, linux-gnu
## status
## major 4
## minor 0.4
## year 2021
## month 02
## day 15
## svn rev 80002
## language R
## version.string R version 4.0.4 (2021-02-15)
## nickname Lost Library Book
# Labeler for stats annotations
p_label <- function(p_value) {
threshold = 0.0001
if (p_value < threshold) {
return(paste0("p < ", threshold))
} else {
return(paste0("p = ", p_value))
}
}
# Significance threshold
alpha <- 0.05
####### misc #######
# Configure our default graphing theme
theme_set(theme_cowplot())
## # A tibble: 1 x 4
## name id local_path meta
## <chr> <chr> <chr> <list>
## 1 complex_fitness_lands… 612fe4d84e5ee501… ./complex_fitness_lands… <named list…
data_loc <- "complex_fitness_landscapes.csv"
data <- read_csv(data_loc, na=c("NONE", "NA", ""))
data <- data %>%
filter(N==20, generation %%10 == 0) %>%
mutate(
selection_name = as.factor(case_when(
SELECTION == 0 ~ "Tournament",
SELECTION == 1 ~ "Fitness sharing",
SELECTION == 2 ~ "Lexicase",
SELECTION == 3 ~ "Eco-EA",
SELECTION == 4 ~ "Random",
)),
problem_name = as.factor(case_when(
PROBLEM == 0 ~ "NK Landscape",
PROBLEM == 1 ~ "Count Odds",
PROBLEM == 2 ~ "Real-valued optimization",
PROBLEM == 3 ~ "Sorting network",
PROBLEM == 4 ~ "Logic-9"
))
)
data <- filter(data, generation <= 2000)
final_data <- filter(data, generation==max(data$generation))
3.2 Performance
3.2.1 Over time
ggplot(
data,
aes(
x=generation,
y=max_performance,
color=selection_name,
fill=selection_name
)
) +
stat_summary(geom="line", fun=mean) +
stat_summary(
geom="ribbon",
fun.data="mean_cl_boot",
fun.args=list(conf.int=0.95),
alpha=0.2,
linetype=0
) +
scale_y_continuous(
name="Average trait performance"
) +
scale_x_continuous(
name="Generation"
) +
scale_color_discrete("Selection") +
scale_fill_discrete("Selection") +
facet_wrap(~problem_name, scales="free")
3.2.2 Final
# Compute manual labels for geom_signif
stat.test <- final_data %>%
wilcox_test(max_performance ~ selection_name) %>%
adjust_pvalue(method = "bonferroni") %>%
add_significance() %>%
add_xy_position(x="selection_name",step.increase=1)
#stat.test$manual_position <- stat.test$y.position * .5
#stat.test$manual_position <- c(110, 1100, 170, 170, 130, 110)
stat.test$label <- mapply(p_label,stat.test$p.adj)
ggplot(
final_data,
aes(
x=selection_name,
y=max_performance,
fill=selection_name
)
) +
geom_boxplot() +
scale_y_continuous(
name="Average trait performance"
) +
scale_x_discrete(
name="Selection"
) +
scale_fill_discrete(
name="Selection"
) +
scale_color_discrete(
name="Selection"
) +
theme(legend.position="none") +
facet_wrap(~problem_name, scales="free")
stat.test %>%
kbl() %>%
kable_styling(
bootstrap_options = c(
"striped",
"hover",
"condensed",
"responsive"
)
) %>%
scroll_box(width="600px")
| .y. | group1 | group2 | n1 | n2 | statistic | p | p.adj | p.adj.signif | y.position | groups | xmin | xmax | label |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| max_performance | Eco-EA | Fitness sharing | 240 | 240 | 28898.5 | 9.49e-01 | 1.00e+00 | ns | 102283.6 | Eco-EA , Fitness sharing | 1 | 2 | p = 1 |
| max_performance | Eco-EA | Lexicase | 240 | 240 | 22536.0 | 3.25e-05 | 3.25e-04 | *** | 135739.0 | Eco-EA , Lexicase | 1 | 3 | p = 0.000325 |
| max_performance | Eco-EA | Random | 240 | 240 | 38664.0 | 0.00e+00 | 0.00e+00 | **** | 169194.5 | Eco-EA, Random | 1 | 4 | p < 1e-04 |
| max_performance | Eco-EA | Tournament | 240 | 240 | 28335.5 | 7.59e-01 | 1.00e+00 | ns | 202649.9 | Eco-EA , Tournament | 1 | 5 | p = 1 |
| max_performance | Fitness sharing | Lexicase | 240 | 240 | 21248.5 | 7.00e-07 | 6.50e-06 | **** | 236105.4 | Fitness sharing, Lexicase | 2 | 3 | p < 1e-04 |
| max_performance | Fitness sharing | Random | 240 | 240 | 40208.0 | 0.00e+00 | 0.00e+00 | **** | 269560.8 | Fitness sharing, Random | 2 | 4 | p < 1e-04 |
| max_performance | Fitness sharing | Tournament | 240 | 240 | 26515.0 | 1.33e-01 | 1.00e+00 | ns | 303016.3 | Fitness sharing, Tournament | 2 | 5 | p = 1 |
| max_performance | Lexicase | Random | 240 | 240 | 44119.5 | 0.00e+00 | 0.00e+00 | **** | 336471.7 | Lexicase, Random | 3 | 4 | p < 1e-04 |
| max_performance | Lexicase | Tournament | 240 | 240 | 35022.0 | 3.93e-05 | 3.93e-04 | *** | 369927.2 | Lexicase , Tournament | 3 | 5 | p = 0.000393 |
| max_performance | Random | Tournament | 240 | 240 | 17928.5 | 0.00e+00 | 0.00e+00 | **** | 403382.6 | Random , Tournament | 4 | 5 | p < 1e-04 |
3.3 Phylogenetic diversity
3.3.1 Relationship between different types of pylogenetic diversity
First, to get a big-picture overview, we make correlation matrices of all the different phylogenetic diversity metrics:
final_data %>%
transmute(MinPD=min_phenotype_pairwise_distance,
MeanPD=mean_phenotype_pairwise_distance,
MaxPD=max_phenotype_pairwise_distance,
VarPD=variance_phenotype_pairwise_distance,
MinED = min_phenotype_evolutionary_distinctiveness,
MeanED= mean_phenotype_evolutionary_distinctiveness,
MaxED=max_phenotype_evolutionary_distinctiveness,
VarED=variance_phenotype_evolutionary_distinctiveness,
PD=phenotype_current_phylogenetic_diversity, # See Faith 1992
MRCA=phenotype_mrca_depth, # Phylogenetic depth of most recent common ancestor
N=phenotype_num_taxa # Number of taxonomically-distinct phenotypes
) %>%
cor_mat() %>%
pull_lower_triangle() %>%
cor_plot()
However, these correlations may well vary by selection scheme and by problem, and even over time within a selection scheme and problem. Let’s take a look at some scatter plots.
ggplot(
data %>% filter(generation==1000),
aes(
y=mean_phenotype_pairwise_distance,
x=variance_phenotype_pairwise_distance,
color=selection_name,
fill=selection_name
)
) +
geom_point() +
scale_x_continuous(
breaks = breaks_extended(4)
) +
facet_wrap(
~selection_name*problem_name, ncol=4, scales="free"
) +
stat_smooth(
method="lm"
) +
stat_cor(
method="spearman", cor.coef.name = "rho", color="black"
) +
theme(legend.position = "none")
ggplot(
data %>% filter(generation==1000),
aes(
y=mean_phenotype_pairwise_distance,
x=max_phenotype_pairwise_distance,
color=selection_name,
fill=selection_name
)
) +
geom_point() +
scale_x_continuous(
breaks = breaks_extended(4)
) +
facet_wrap(
~selection_name*problem_name, ncol=4, scales="free"
) +
stat_smooth(
method="lm"
) +
stat_cor(
method="spearman", cor.coef.name = "rho", color="black"
) +
theme(legend.position = "none")
ggplot(
data %>% filter(generation==1000),
aes(
y=variance_phenotype_pairwise_distance,
x=max_phenotype_pairwise_distance,
color=selection_name,
fill=selection_name
)
) +
geom_point() +
scale_x_continuous(
breaks = breaks_extended(4)
) +
facet_wrap(
~selection_name*problem_name, ncol=4, scales="free"
) +
stat_smooth(
method="lm"
) +
stat_cor(
method="spearman", cor.coef.name = "rho", color="black"
) +
theme(legend.position = "none")
ggplot(
data %>% filter(generation==500),
aes(
y=mean_phenotype_pairwise_distance,
x=variance_phenotype_pairwise_distance,
color=selection_name,
fill=selection_name
)
) +
geom_point() +
scale_x_continuous(
breaks = breaks_extended(4)
) +
facet_wrap(
~selection_name*problem_name, ncol=4, scales="free"
) +
stat_smooth(
method="lm"
) +
stat_cor(
method="spearman", cor.coef.name = "rho", color="black"
) +
theme(legend.position = "none")
ggplot(
data %>% filter(generation==500),
aes(
y=mean_phenotype_pairwise_distance,
x=max_phenotype_pairwise_distance,
color=selection_name,
fill=selection_name
)
) +
geom_point() +
scale_x_continuous(
breaks = breaks_extended(4)
) +
facet_wrap(
~selection_name*problem_name, ncol=4, scales="free"
) +
stat_smooth(
method="lm"
) +
stat_cor(
method="spearman", cor.coef.name = "rho", color="black"
) +
theme(legend.position = "none")
ggplot(
data %>% filter(generation==1000),
aes(
y=variance_phenotype_pairwise_distance,
x=max_phenotype_pairwise_distance,
color=selection_name,
fill=selection_name
)
) +
geom_point() +
scale_x_continuous(
breaks = breaks_extended(4)
) +
facet_wrap(
~selection_name*problem_name, ncol=4, scales="free"
) +
stat_smooth(
method="lm"
) +
stat_cor(
method="spearman", cor.coef.name = "rho", color="black"
) +
theme(legend.position = "none")
ggplot(
data %>% filter(generation==1000),
aes(
y=mean_phenotype_evolutionary_distinctiveness,
x=variance_phenotype_evolutionary_distinctiveness,
color=selection_name,
fill=selection_name
)
) +
geom_point() +
scale_x_continuous(
breaks = breaks_extended(4)
) +
facet_wrap(
~selection_name*problem_name, ncol=4, scales="free"
) +
stat_smooth(
method="lm"
) +
stat_cor(
method="spearman", cor.coef.name = "rho", color="black"
) +
theme(legend.position = "none")
ggplot(
data %>% filter(generation==1000),
aes(
y=mean_phenotype_evolutionary_distinctiveness,
x=max_phenotype_evolutionary_distinctiveness,
color=selection_name,
fill=selection_name
)
) +
geom_point() +
scale_x_continuous(
breaks = breaks_extended(4)
) +
facet_wrap(
~selection_name*problem_name, ncol=4, scales="free"
) +
stat_smooth(
method="lm"
) +
stat_cor(
method="spearman", cor.coef.name = "rho", color="black"
) +
theme(legend.position = "none")
ggplot(
data %>% filter(generation==1000),
aes(
y=mean_phenotype_evolutionary_distinctiveness,
x=min_phenotype_evolutionary_distinctiveness,
color=selection_name,
fill=selection_name
)
) +
geom_point() +
scale_x_continuous(
breaks = breaks_extended(4)
) +
facet_wrap(
~selection_name*problem_name, ncol=4, scales="free"
) +
stat_smooth(
method="lm"
) +
stat_cor(
method="spearman", cor.coef.name = "rho", color="black"
) +
theme(legend.position = "none")
ggplot(
data %>% filter(generation==500),
aes(
y=mean_phenotype_evolutionary_distinctiveness,
x=variance_phenotype_evolutionary_distinctiveness,
color=selection_name,
fill=selection_name
)
) +
geom_point() +
scale_x_continuous(
breaks = breaks_extended(4)
) +
facet_wrap(
~selection_name*problem_name, ncol=4, scales="free"
) +
stat_smooth(
method="lm"
) +
stat_cor(
method="spearman", cor.coef.name = "rho", color="black"
) +
theme(legend.position = "none")
ggplot(
data %>% filter(generation==500),
aes(
y=mean_phenotype_evolutionary_distinctiveness,
x=max_phenotype_evolutionary_distinctiveness,
color=selection_name,
fill=selection_name
)
) +
geom_point() +
scale_x_continuous(
breaks = breaks_extended(4)
) +
facet_wrap(
~selection_name*problem_name, ncol=4, scales="free"
) +
stat_smooth(
method="lm"
) +
stat_cor(
method="spearman", cor.coef.name = "rho", color="black"
) +
theme(legend.position = "none")
ggplot(
data %>% filter(generation==500),
aes(
y=mean_phenotype_evolutionary_distinctiveness,
x=min_phenotype_evolutionary_distinctiveness,
color=selection_name,
fill=selection_name
)
) +
geom_point() +
scale_x_continuous(
breaks = breaks_extended(4)
) +
facet_wrap(
~selection_name*problem_name, ncol=4, scales="free"
) +
stat_smooth(
method="lm"
) +
stat_cor(
method="spearman", cor.coef.name = "rho", color="black"
) +
theme(legend.position = "none")
3.3.2 Over time
ggplot(
data,
aes(
x=generation,
y=mean_phenotype_pairwise_distance,
color=selection_name,
fill=selection_name
)
) +
stat_summary(geom="line", fun=mean) +
stat_summary(
geom="ribbon",
fun.data="mean_cl_boot",
fun.args=list(conf.int=0.95),
alpha=0.2,
linetype=0
) +
scale_y_log10(
name="Mean pairwise distance"
) +
scale_x_continuous(
name="Generation"
) +
scale_color_discrete("Selection") +
scale_fill_discrete("Selection") +
facet_wrap(~problem_name, scales = "free")
3.3.3 Final
# Compute manual labels for geom_signif
stat.test <- final_data %>%
wilcox_test(mean_phenotype_pairwise_distance ~ selection_name) %>%
adjust_pvalue(method = "bonferroni") %>%
add_significance() %>%
add_xy_position(x="selection_name",step.increase=1)
#stat.test$manual_position <- stat.test$y.position * .5
#stat.test$manual_position <- c(110, 150, 170, 170, 130, 110)
stat.test$label <- mapply(p_label,stat.test$p.adj)
ggplot(
final_data,
aes(
x=selection_name,
y=mean_phenotype_pairwise_distance,
fill=selection_name
)
) +
geom_boxplot() +
scale_y_log10(
name="Mean pairwise distance"
) +
scale_x_discrete(
name="Selection"
) +
scale_fill_discrete(
name="Selection"
) +
scale_color_discrete(
name="Selection"
) +
theme(legend.position = "none") +
facet_wrap(~problem_name, scales = "free")
stat.test %>%
kbl() %>%
kable_styling(
bootstrap_options = c(
"striped",
"hover",
"condensed",
"responsive"
)
) %>%
scroll_box(width="600px")
| .y. | group1 | group2 | n1 | n2 | statistic | p | p.adj | p.adj.signif | y.position | groups | xmin | xmax | label |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| mean_phenotype_pairwise_distance | Eco-EA | Fitness sharing | 240 | 240 | 2486.0 | 0.00e+00 | 0.00e+00 | **** | 2900.227 | Eco-EA , Fitness sharing | 1 | 2 | p < 1e-04 |
| mean_phenotype_pairwise_distance | Eco-EA | Lexicase | 240 | 240 | 23590.0 | 6.07e-04 | 6.07e-03 | ** | 4498.579 | Eco-EA , Lexicase | 1 | 3 | p = 0.00607 |
| mean_phenotype_pairwise_distance | Eco-EA | Random | 240 | 240 | 8274.0 | 0.00e+00 | 0.00e+00 | **** | 6096.931 | Eco-EA, Random | 1 | 4 | p < 1e-04 |
| mean_phenotype_pairwise_distance | Eco-EA | Tournament | 240 | 240 | 43940.0 | 0.00e+00 | 0.00e+00 | **** | 7695.284 | Eco-EA , Tournament | 1 | 5 | p < 1e-04 |
| mean_phenotype_pairwise_distance | Fitness sharing | Lexicase | 240 | 240 | 35067.0 | 3.72e-05 | 3.72e-04 | *** | 9293.636 | Fitness sharing, Lexicase | 2 | 3 | p = 0.000372 |
| mean_phenotype_pairwise_distance | Fitness sharing | Random | 240 | 240 | 37442.0 | 0.00e+00 | 1.00e-07 | **** | 10891.988 | Fitness sharing, Random | 2 | 4 | p < 1e-04 |
| mean_phenotype_pairwise_distance | Fitness sharing | Tournament | 240 | 240 | 57033.0 | 0.00e+00 | 0.00e+00 | **** | 12490.340 | Fitness sharing, Tournament | 2 | 5 | p < 1e-04 |
| mean_phenotype_pairwise_distance | Lexicase | Random | 240 | 240 | 26406.0 | 1.15e-01 | 1.00e+00 | ns | 14088.693 | Lexicase, Random | 3 | 4 | p = 1 |
| mean_phenotype_pairwise_distance | Lexicase | Tournament | 240 | 240 | 36500.5 | 4.00e-07 | 4.00e-06 | **** | 15687.045 | Lexicase , Tournament | 3 | 5 | p < 1e-04 |
| mean_phenotype_pairwise_distance | Random | Tournament | 240 | 240 | 55686.0 | 0.00e+00 | 0.00e+00 | **** | 17285.397 | Random , Tournament | 4 | 5 | p < 1e-04 |
3.4 Phenotypic diversity
3.4.1 Relationship between different types of phenotypic diversity
First, we should assess the extent to which different metrics of phenotypic diversity are capturing different information.
ggplot(
data %>% filter(generation==1000),
aes(
y=phenotype_diversity,
x=phenotype_num_taxa,
color=selection_name,
fill=selection_name
)
) +
geom_point() +
scale_y_continuous(
name="Phenotypic shannon diversity"
) +
scale_x_continuous(
name="Phenotypic richness",
breaks = breaks_extended(4)
) +
facet_wrap(
~selection_name*problem_name, ncol=4, scales="free"
) +
stat_smooth(
method="lm"
) +
stat_cor(
method="spearman", cor.coef.name = "rho", color="black"
) +
theme(legend.position = "none")
3.4.2 Over time
ggplot(
data,
aes(
x=generation,
y=phenotype_num_taxa,
color=selection_name,
fill=selection_name
)
) +
stat_summary(geom="line", fun=mean) +
stat_summary(
geom="ribbon",
fun.data="mean_cl_boot",
fun.args=list(conf.int=0.95),
alpha=0.2,
linetype=0
) +
scale_y_continuous(
name="Phenotypic richness"
) +
scale_x_continuous(
name="Generation"
) +
scale_color_discrete("Selection") +
scale_fill_discrete("Selection") +
facet_wrap(~problem_name, scales = "free")
3.4.3 Final
# Compute manual labels for geom_signif
stat.test <- final_data %>%
wilcox_test(phenotype_num_taxa ~ selection_name) %>%
adjust_pvalue(method = "bonferroni") %>%
add_significance() %>%
add_xy_position(x="selection_name",step.increase=1)
#stat.test$manual_position <- stat.test$y.position * .5
#stat.test$manual_position <- c(110, 150, 170, 170, 130, 110)
stat.test$label <- mapply(p_label,stat.test$p.adj)
ggplot(
final_data,
aes(
x=selection_name,
y=phenotype_num_taxa,
fill=selection_name
)
) +
geom_boxplot() +
scale_y_continuous(
name="Phenotypic Richness"
) +
scale_x_discrete(
name="Selection"
) +
scale_fill_discrete(
name="Selection"
) +
scale_color_discrete(
name="Selection"
) +
theme(legend.position = "none") +
facet_wrap(~problem_name, scales = "free")
stat.test %>%
kbl() %>%
kable_styling(
bootstrap_options = c(
"striped",
"hover",
"condensed",
"responsive"
)
) %>%
scroll_box(width="600px")
| .y. | group1 | group2 | n1 | n2 | statistic | p | p.adj | p.adj.signif | y.position | groups | xmin | xmax | label |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| phenotype_num_taxa | Eco-EA | Fitness sharing | 240 | 240 | 3513.5 | 0.00000 | 0.0000 | **** | 1580.000 | Eco-EA , Fitness sharing | 1 | 2 | p < 1e-04 |
| phenotype_num_taxa | Eco-EA | Lexicase | 240 | 240 | 17757.5 | 0.00000 | 0.0000 | **** | 2224.444 | Eco-EA , Lexicase | 1 | 3 | p < 1e-04 |
| phenotype_num_taxa | Eco-EA | Random | 240 | 240 | 38186.0 | 0.00000 | 0.0000 | **** | 2868.889 | Eco-EA, Random | 1 | 4 | p < 1e-04 |
| phenotype_num_taxa | Eco-EA | Tournament | 240 | 240 | 30723.0 | 0.20600 | 1.0000 | ns | 3513.333 | Eco-EA , Tournament | 1 | 5 | p = 1 |
| phenotype_num_taxa | Fitness sharing | Lexicase | 240 | 240 | 39523.5 | 0.00000 | 0.0000 | **** | 4157.778 | Fitness sharing, Lexicase | 2 | 3 | p < 1e-04 |
| phenotype_num_taxa | Fitness sharing | Random | 240 | 240 | 56742.5 | 0.00000 | 0.0000 | **** | 4802.222 | Fitness sharing, Random | 2 | 4 | p < 1e-04 |
| phenotype_num_taxa | Fitness sharing | Tournament | 240 | 240 | 49804.5 | 0.00000 | 0.0000 | **** | 5446.667 | Fitness sharing, Tournament | 2 | 5 | p < 1e-04 |
| phenotype_num_taxa | Lexicase | Random | 240 | 240 | 46856.0 | 0.00000 | 0.0000 | **** | 6091.111 | Lexicase, Random | 3 | 4 | p < 1e-04 |
| phenotype_num_taxa | Lexicase | Tournament | 240 | 240 | 41709.5 | 0.00000 | 0.0000 | **** | 6735.556 | Lexicase , Tournament | 3 | 5 | p < 1e-04 |
| phenotype_num_taxa | Random | Tournament | 240 | 240 | 23410.5 | 0.00039 | 0.0039 | ** | 7380.000 | Random , Tournament | 4 | 5 | p = 0.0039 |
3.5 Relationship between phenotypic and phylogenetic diversity
ggplot(
final_data,
aes(
y=phenotype_num_taxa,
x=mean_phenotype_pairwise_distance,
color=selection_name,
fill=selection_name
)
) +
geom_point() +
scale_y_continuous(
name="Phenotypic richness"
) +
scale_x_continuous(
name="Mean pairwise distance"
) +
facet_wrap(
~selection_name*problem_name, ncol=4, scales="free"
) +
stat_smooth(
method="lm"
) +
stat_cor(
method="spearman", cor.coef.name = "rho", color="black"
) +
theme(legend.position = "none")
3.6 Relationship between diversity and success
3.6.1 Earlier in run
ggplot(
data %>% filter(generation==500),
aes(
y=max_performance,
x=mean_phenotype_pairwise_distance,
color=selection_name,
fill=selection_name
)
) +
geom_point() +
scale_y_continuous(
name="Average trait performance"
) +
scale_x_continuous(
name="Mean pairwise distance"
) +
facet_wrap(
~selection_name*problem_name, ncol=4, scales="free"
) +
stat_smooth(
method="lm"
) +
stat_cor(
method="spearman", cor.coef.name = "rho", color="black"
) +
theme(legend.position = "none")
ggplot(
data %>% filter(generation==500),
aes(
y=max_performance,
x=phenotype_num_taxa,
color=selection_name,
fill=selection_name
)
) +
geom_point() +
scale_y_continuous(
name="Average trait performance"
) +
scale_x_continuous(
name="Phenotypic richness"
) +
facet_wrap(
~selection_name*problem_name, ncol=4, scales="free"
) +
stat_smooth(
method="lm"
) +
stat_cor(
method="spearman", cor.coef.name = "rho", color="black"
) +
theme(legend.position = "none")
phylogney_vs_performance <- ggplot(
data %>% filter(generation==1000),
aes(
y=max_performance,
x=mean_phenotype_pairwise_distance,
color=selection_name,
fill=selection_name
)
) +
geom_point() +
scale_y_continuous(
name="Average trait performance"
) +
scale_x_continuous(
name="Mean pairwise distance"
) +
facet_wrap(
~selection_name*problem_name, ncol=4, scales="free"
) +
stat_smooth(
method="lm"
) +
stat_cor(
method="spearman", cor.coef.name = "rho", color="black"
) +
theme(legend.position = "none")
phylogney_vs_performance
ggplot(
data %>% filter(generation==1000),
aes(
y=max_performance,
x=phenotype_num_taxa,
color=selection_name,
fill=selection_name
)
) +
geom_point() +
scale_y_continuous(
name="Average trait performance"
) +
scale_x_continuous(
name="Phenotypic richness"
) +
facet_wrap(
~selection_name*problem_name, ncol=4, scales="free"
) +
stat_smooth(
method="lm"
) +
stat_cor(
method="spearman", cor.coef.name = "rho", color="black"
) +
theme(legend.position = "none")
3.6.2 End of run
ggplot(
final_data,
aes(
y=max_performance,
x=mean_phenotype_pairwise_distance,
color=selection_name,
fill=selection_name
)
) +
geom_point() +
scale_y_continuous(
name="Average trait performance"
) +
scale_x_continuous(
name="Mean pairwise distance"
) +
facet_wrap(
~selection_name*problem_name, ncol=4, scales="free"
) +
stat_smooth(
method="lm"
) +
stat_cor(
method="spearman", cor.coef.name = "rho", color="black"
) +
theme(legend.position = "none")
ggplot(
final_data,
aes(
y=max_performance,
x=phenotype_num_taxa,
color=selection_name,
fill=selection_name
)
) +
geom_point() +
scale_y_continuous(
name="Average trait performance"
) +
scale_x_continuous(
name="Phenotypic richness"
) +
facet_wrap(
~selection_name*problem_name, ncol=4, scales="free"
) +
stat_smooth(
method="lm"
) +
stat_cor(
method="spearman", cor.coef.name = "rho", color="black"
) +
theme(legend.position = "none")
3.7 Causality analysis
3.7.1 Setup
First let’s define a function we’ll use to calculate and output significance and effect size for these results:
transfer_entropy_stats <- function(res) {
stat.test <- res %>%
group_by(selection_name, problem_name, offset) %>%
filter(max(value) > 0) %>% # Sorting networks have some values of 0, which won't work for Wilcox test
wilcox_test(value ~ Type) %>%
adjust_pvalue(method = "bonferroni") %>%
add_significance()
stat.test$label <- mapply(p_label,stat.test$p.adj)
# Calculate effect sizes for these differences
effect_sizes <- res %>%
group_by(selection_name, problem_name, offset) %>%
filter(max(value) > 0) %>%
wilcox_effsize(value ~ Type)
stat.test$effsize <- effect_sizes$effsize
stat.test$magnitude <- effect_sizes$magnitude
stat.test %>%
kbl() %>%
kable_styling(
bootstrap_options = c(
"striped",
"hover",
"condensed",
"responsive"
)
) %>%
scroll_box(width="800px")
}
3.7.2 Transfer entropy from diversity to fitness
<IP_ADDRESS> Max pairwise distance vs. phenotypic richness
res <- data %>% group_by(SEED, selection_name, problem_name) %>%
summarise(
fit_phylo_10 = condinformation(discretize(max_performance), discretize(lag(max_phenotype_pairwise_distance, 1)), discretize(lag(max_performance, 1))),
fit_phylo_100 = condinformation(discretize(max_performance), discretize(lag(max_phenotype_pairwise_distance, 10)), discretize(lag(max_performance, 10))),
fit_phylo_1000 = condinformation(discretize(max_performance), discretize(lag(max_phenotype_pairwise_distance, 100)), discretize(lag(max_performance, 100))),
fit_pheno_10 = condinformation(discretize(max_performance), discretize(lag(phenotype_num_taxa, 1)), discretize(lag(max_performance, 1))),
fit_pheno_100 = condinformation(discretize(max_performance), discretize(lag(phenotype_num_taxa, 10)), discretize(lag(max_performance, 10))),
fit_pheno_1000 = condinformation(discretize(max_performance), discretize(lag(phenotype_num_taxa, 100)), discretize(lag(max_performance, 100)))
)
res <- res %>% pivot_longer(cols=contains("o_10"))
res$offset <- str_extract(res$name, "[:digit:]*$")
res$Type <- case_when(str_detect(res$name, "phylo") ~ "Phylogenetic", TRUE ~ "Phenotypic")
ggplot(
res %>% filter(str_detect(name, "fit_ph*")),
aes(
x=as.factor(offset),
y=value,
color=Type
)
) +
geom_boxplot() +
facet_wrap(~selection_name*problem_name, ncol=4) +
scale_x_discrete("Lag") +
scale_y_continuous("Transfer Entropy") +
scale_color_discrete("") +
theme(legend.position = "bottom")
# Determine which conditions are significantly different from each other
transfer_entropy_stats(res)
| selection_name | problem_name | offset | .y. | group1 | group2 | n1 | n2 | statistic | p | p.adj | p.adj.signif | label | effsize | magnitude |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Eco-EA | Count Odds | 10 | value | Phenotypic | Phylogenetic | 60 | 60 | 1358.0 | 2.05e-02 | 1.0000000 | ns | p = 1 | 0.2117768 | small |
| Eco-EA | Count Odds | 100 | value | Phenotypic | Phylogenetic | 60 | 60 | 739.0 | 0.00e+00 | 0.0000015 | **** | p < 1e-04 | 0.5083601 | large |
| Eco-EA | Count Odds | 1000 | value | Phenotypic | Phylogenetic | 60 | 60 | 1054.0 | 9.12e-05 | 0.0053808 | ** | p = 0.0053808 | 0.3574394 | moderate |
| Eco-EA | Logic-9 | 10 | value | Phenotypic | Phylogenetic | 60 | 60 | 1771.0 | 8.81e-01 | 1.0000000 | ns | p = 1 | 0.0138951 | small |
| Eco-EA | Logic-9 | 100 | value | Phenotypic | Phylogenetic | 60 | 60 | 1769.0 | 8.73e-01 | 1.0000000 | ns | p = 1 | 0.0148534 | small |
| Eco-EA | Logic-9 | 1000 | value | Phenotypic | Phylogenetic | 60 | 60 | 2028.0 | 2.30e-01 | 1.0000000 | ns | p = 1 | 0.1097388 | small |
| Eco-EA | NK Landscape | 10 | value | Phenotypic | Phylogenetic | 60 | 60 | 1576.5 | 2.42e-01 | 1.0000000 | ns | p = 1 | 0.1070864 | small |
| Eco-EA | NK Landscape | 100 | value | Phenotypic | Phylogenetic | 60 | 60 | 1536.5 | 1.67e-01 | 1.0000000 | ns | p = 1 | 0.1262518 | small |
| Eco-EA | NK Landscape | 1000 | value | Phenotypic | Phylogenetic | 60 | 60 | 1788.0 | 9.52e-01 | 1.0000000 | ns | p = 1 | 0.0057497 | small |
| Eco-EA | Sorting network | 10 | value | Phenotypic | Phylogenetic | 60 | 60 | 2070.0 | 1.57e-01 | 1.0000000 | ns | p = 1 | 0.1295248 | small |
| Eco-EA | Sorting network | 100 | value | Phenotypic | Phylogenetic | 60 | 60 | 1838.0 | 8.44e-01 | 1.0000000 | ns | p = 1 | 0.0182073 | small |
| Eco-EA | Sorting network | 1000 | value | Phenotypic | Phylogenetic | 60 | 60 | 1800.0 | 1.00e+00 | 1.0000000 | ns | p = 1 | 0.0000000 | small |
| Fitness sharing | Count Odds | 10 | value | Phenotypic | Phylogenetic | 60 | 60 | 1631.0 | 3.76e-01 | 1.0000000 | ns | p = 1 | 0.0809735 | small |
| Fitness sharing | Count Odds | 100 | value | Phenotypic | Phylogenetic | 60 | 60 | 1257.0 | 4.41e-03 | 0.2601900 | ns | p = 0.26019 | 0.2601692 | small |
| Fitness sharing | Count Odds | 1000 | value | Phenotypic | Phylogenetic | 60 | 60 | 1501.0 | 1.17e-01 | 1.0000000 | ns | p = 1 | 0.1432608 | small |
| Fitness sharing | Logic-9 | 10 | value | Phenotypic | Phylogenetic | 60 | 60 | 1511.0 | 1.30e-01 | 1.0000000 | ns | p = 1 | 0.1384718 | small |
| Fitness sharing | Logic-9 | 100 | value | Phenotypic | Phylogenetic | 60 | 60 | 1309.0 | 1.00e-02 | 0.5900000 | ns | p = 0.59 | 0.2352584 | small |
| Fitness sharing | Logic-9 | 1000 | value | Phenotypic | Phylogenetic | 60 | 60 | 1629.5 | 3.71e-01 | 1.0000000 | ns | p = 1 | 0.0819116 | small |
| Fitness sharing | NK Landscape | 10 | value | Phenotypic | Phylogenetic | 60 | 60 | 1196.0 | 1.54e-03 | 0.0908600 | ns | p = 0.09086 | 0.2893963 | small |
| Fitness sharing | NK Landscape | 100 | value | Phenotypic | Phylogenetic | 60 | 60 | 562.0 | 0.00e+00 | 0.0000000 | **** | p < 1e-04 | 0.5931666 | large |
| Fitness sharing | NK Landscape | 1000 | value | Phenotypic | Phylogenetic | 60 | 60 | 477.0 | 0.00e+00 | 0.0000000 | **** | p < 1e-04 | 0.6338929 | large |
| Fitness sharing | Sorting network | 10 | value | Phenotypic | Phylogenetic | 60 | 60 | 820.0 | 3.00e-07 | 0.0000161 | **** | p < 1e-04 | 0.4695503 | moderate |
| Fitness sharing | Sorting network | 100 | value | Phenotypic | Phylogenetic | 60 | 60 | 366.0 | 0.00e+00 | 0.0000000 | **** | p < 1e-04 | 0.6870767 | large |
| Fitness sharing | Sorting network | 1000 | value | Phenotypic | Phylogenetic | 60 | 60 | 1349.0 | 1.81e-02 | 1.0000000 | ns | p = 1 | 0.2160890 | small |
| Lexicase | Count Odds | 10 | value | Phenotypic | Phylogenetic | 60 | 60 | 1579.0 | 2.47e-01 | 1.0000000 | ns | p = 1 | 0.1058884 | small |
| Lexicase | Count Odds | 100 | value | Phenotypic | Phylogenetic | 60 | 60 | 285.0 | 0.00e+00 | 0.0000000 | **** | p < 1e-04 | 0.7258865 | large |
| Lexicase | Count Odds | 1000 | value | Phenotypic | Phylogenetic | 60 | 60 | 694.0 | 0.00e+00 | 0.0000004 | **** | p < 1e-04 | 0.5299211 | large |
| Lexicase | Logic-9 | 10 | value | Phenotypic | Phylogenetic | 60 | 60 | 1963.5 | 3.92e-01 | 1.0000000 | ns | p = 1 | 0.0783384 | small |
| Lexicase | Logic-9 | 100 | value | Phenotypic | Phylogenetic | 60 | 60 | 1490.5 | 1.05e-01 | 1.0000000 | ns | p = 1 | 0.1482919 | small |
| Lexicase | Logic-9 | 1000 | value | Phenotypic | Phylogenetic | 60 | 60 | 1830.0 | 8.77e-01 | 1.0000000 | ns | p = 1 | 0.0144184 | small |
| Lexicase | NK Landscape | 10 | value | Phenotypic | Phylogenetic | 60 | 60 | 1752.0 | 8.02e-01 | 1.0000000 | ns | p = 1 | 0.0231457 | small |
| Lexicase | NK Landscape | 100 | value | Phenotypic | Phylogenetic | 60 | 60 | 1311.0 | 9.87e-03 | 0.5823300 | ns | p = 0.58233 | 0.2357967 | small |
| Lexicase | NK Landscape | 1000 | value | Phenotypic | Phylogenetic | 60 | 60 | 1064.0 | 1.02e-04 | 0.0060180 | ** | p = 0.006018 | 0.3549006 | moderate |
| Lexicase | Sorting network | 10 | value | Phenotypic | Phylogenetic | 60 | 60 | 1814.0 | 9.27e-01 | 1.0000000 | ns | p = 1 | 0.0086195 | small |
| Lexicase | Sorting network | 100 | value | Phenotypic | Phylogenetic | 60 | 60 | 1798.5 | 9.95e-01 | 1.0000000 | ns | p = 1 | 0.0009235 | small |
| Random | Count Odds | 10 | value | Phenotypic | Phylogenetic | 60 | 60 | 1699.0 | 5.98e-01 | 1.0000000 | ns | p = 1 | 0.0483924 | small |
| Random | Count Odds | 100 | value | Phenotypic | Phylogenetic | 60 | 60 | 1700.0 | 6.02e-01 | 1.0000000 | ns | p = 1 | 0.0479133 | small |
| Random | Count Odds | 1000 | value | Phenotypic | Phylogenetic | 60 | 60 | 921.0 | 4.00e-06 | 0.0002366 | *** | p = 0.00023659 | 0.4211579 | moderate |
| Random | Logic-9 | 10 | value | Phenotypic | Phylogenetic | 60 | 60 | 1924.5 | 4.62e-01 | 1.0000000 | ns | p = 1 | 0.0673727 | small |
| Random | Logic-9 | 100 | value | Phenotypic | Phylogenetic | 60 | 60 | 1807.0 | 9.69e-01 | 1.0000000 | ns | p = 1 | 0.0037879 | small |
| Random | Logic-9 | 1000 | value | Phenotypic | Phylogenetic | 60 | 60 | 1775.0 | 8.62e-01 | 1.0000000 | ns | p = 1 | 0.0161606 | small |
| Random | NK Landscape | 10 | value | Phenotypic | Phylogenetic | 60 | 60 | 1150.0 | 6.52e-04 | 0.0384680 |
|
p = 0.038468 | 0.3114364 | moderate |
| Random | NK Landscape | 100 | value | Phenotypic | Phylogenetic | 60 | 60 | 629.0 | 0.00e+00 | 0.0000000 | **** | p < 1e-04 | 0.5610647 | large |
| Random | NK Landscape | 1000 | value | Phenotypic | Phylogenetic | 60 | 60 | 524.0 | 0.00e+00 | 0.0000000 | **** | p < 1e-04 | 0.6113737 | large |
| Random | Sorting network | 10 | value | Phenotypic | Phylogenetic | 60 | 60 | 1862.0 | 7.47e-01 | 1.0000000 | ns | p = 1 | 0.0297062 | small |
| Random | Sorting network | 100 | value | Phenotypic | Phylogenetic | 60 | 60 | 990.0 | 2.15e-05 | 0.0012685 | ** | p = 0.0012685 | 0.3880977 | moderate |
| Random | Sorting network | 1000 | value | Phenotypic | Phylogenetic | 60 | 60 | 839.0 | 5.00e-07 | 0.0000273 | **** | p < 1e-04 | 0.4604468 | moderate |
| Tournament | Count Odds | 10 | value | Phenotypic | Phylogenetic | 60 | 60 | 1577.0 | 2.43e-01 | 1.0000000 | ns | p = 1 | 0.1068467 | small |
| Tournament | Count Odds | 100 | value | Phenotypic | Phylogenetic | 60 | 60 | 1441.0 | 5.99e-02 | 1.0000000 | ns | p = 1 | 0.1720087 | small |
| Tournament | Count Odds | 1000 | value | Phenotypic | Phylogenetic | 60 | 60 | 1573.0 | 2.34e-01 | 1.0000000 | ns | p = 1 | 0.1087738 | small |
| Tournament | Logic-9 | 10 | value | Phenotypic | Phylogenetic | 60 | 60 | 1956.0 | 4.14e-01 | 1.0000000 | ns | p = 1 | 0.0747460 | small |
| Tournament | Logic-9 | 100 | value | Phenotypic | Phylogenetic | 60 | 60 | 1978.0 | 3.52e-01 | 1.0000000 | ns | p = 1 | 0.0852872 | small |
| Tournament | Logic-9 | 1000 | value | Phenotypic | Phylogenetic | 60 | 60 | 2040.5 | 2.02e-01 | 1.0000000 | ns | p = 1 | 0.1168182 | small |
| Tournament | NK Landscape | 10 | value | Phenotypic | Phylogenetic | 60 | 60 | 1802.0 | 9.89e-01 | 1.0000000 | ns | p = 1 | 0.0016220 | small |
| Tournament | NK Landscape | 100 | value | Phenotypic | Phylogenetic | 60 | 60 | 1790.0 | 9.33e-01 | 1.0000000 | ns | p = 1 | 0.0081098 | small |
| Tournament | NK Landscape | 1000 | value | Phenotypic | Phylogenetic | 60 | 60 | 1792.0 | 9.47e-01 | 1.0000000 | ns | p = 1 | 0.0064879 | small |
| Tournament | Sorting network | 10 | value | Phenotypic | Phylogenetic | 60 | 60 | 1964.0 | 3.91e-01 | 1.0000000 | ns | p = 1 | 0.0785827 | small |
| Tournament | Sorting network | 100 | value | Phenotypic | Phylogenetic | 60 | 60 | 1330.0 | 1.37e-02 | 0.8083000 | ns | p = 0.8083 | 0.2251925 | small |
| Tournament | Sorting network | 1000 | value | Phenotypic | Phylogenetic | 60 | 60 | 1816.5 | 9.29e-01 | 1.0000000 | ns | p = 1 | 0.0083936 | small |
<IP_ADDRESS> Mean pairwise distance vs. phenotypic richness
res <- data %>% group_by(SEED, selection_name, problem_name) %>%
summarise(
fit_phylo_10 = condinformation(discretize(max_performance), discretize(lag(mean_phenotype_pairwise_distance, 1)), discretize(lag(max_performance, 1))),
fit_phylo_100 = condinformation(discretize(max_performance), discretize(lag(mean_phenotype_pairwise_distance, 10)), discretize(lag(max_performance, 10))),
fit_phylo_1000 = condinformation(discretize(max_performance), discretize(lag(mean_phenotype_pairwise_distance, 100)), discretize(lag(max_performance, 100))),
fit_pheno_10 = condinformation(discretize(max_performance), discretize(lag(phenotype_num_taxa, 1)), discretize(lag(max_performance, 1))),
fit_pheno_100 = condinformation(discretize(max_performance), discretize(lag(phenotype_num_taxa, 10)), discretize(lag(max_performance, 10))),
fit_pheno_1000 = condinformation(discretize(max_performance), discretize(lag(phenotype_num_taxa, 100)), discretize(lag(max_performance, 100)))
)
res <- res %>% pivot_longer(cols=contains("o_10"))
res$offset <- str_extract(res$name, "[:digit:]*$")
res$Type <- case_when(str_detect(res$name, "phylo") ~ "Phylogenetic", TRUE ~ "Phenotypic")
ggplot(
res %>% filter(str_detect(name, "fit_ph*")),
aes(
x=as.factor(offset),
y=value,
color=Type
)
) +
geom_boxplot() +
facet_wrap(~selection_name*problem_name, ncol=4) +
scale_x_discrete("Lag") +
scale_y_continuous("Transfer Entropy") +
scale_color_discrete("") +
theme(legend.position = "bottom")
# Determine which conditions are significantly different from each other
transfer_entropy_stats(res)
| selection_name | problem_name | offset | .y. | group1 | group2 | n1 | n2 | statistic | p | p.adj | p.adj.signif | label | effsize | magnitude |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Eco-EA | Count Odds | 10 | value | Phenotypic | Phylogenetic | 60 | 60 | 1623.0 | 3.54e-01 | 1.0000000 | ns | p = 1 | 0.0848065 | small |
| Eco-EA | Count Odds | 100 | value | Phenotypic | Phylogenetic | 60 | 60 | 1031.0 | 5.49e-05 | 0.0032391 | ** | p = 0.0032391 | 0.3684533 | moderate |
| Eco-EA | Count Odds | 1000 | value | Phenotypic | Phylogenetic | 60 | 60 | 1304.0 | 9.30e-03 | 0.5487000 | ns | p = 0.5487 | 0.2376541 | small |
| Eco-EA | Logic-9 | 10 | value | Phenotypic | Phylogenetic | 60 | 60 | 1770.0 | 8.77e-01 | 1.0000000 | ns | p = 1 | 0.0143742 | small |
| Eco-EA | Logic-9 | 100 | value | Phenotypic | Phylogenetic | 60 | 60 | 1713.0 | 6.50e-01 | 1.0000000 | ns | p = 1 | 0.0416853 | small |
| Eco-EA | Logic-9 | 1000 | value | Phenotypic | Phylogenetic | 60 | 60 | 1688.0 | 5.57e-01 | 1.0000000 | ns | p = 1 | 0.0538785 | small |
| Eco-EA | NK Landscape | 10 | value | Phenotypic | Phylogenetic | 60 | 60 | 1484.5 | 9.83e-02 | 1.0000000 | ns | p = 1 | 0.1511667 | small |
| Eco-EA | NK Landscape | 100 | value | Phenotypic | Phylogenetic | 60 | 60 | 1584.5 | 2.59e-01 | 1.0000000 | ns | p = 1 | 0.1032533 | small |
| Eco-EA | NK Landscape | 1000 | value | Phenotypic | Phylogenetic | 60 | 60 | 1782.0 | 9.27e-01 | 1.0000000 | ns | p = 1 | 0.0086245 | small |
| Eco-EA | Sorting network | 10 | value | Phenotypic | Phylogenetic | 60 | 60 | 2062.5 | 1.69e-01 | 1.0000000 | ns | p = 1 | 0.1259317 | small |
| Eco-EA | Sorting network | 100 | value | Phenotypic | Phylogenetic | 60 | 60 | 1936.0 | 4.77e-01 | 1.0000000 | ns | p = 1 | 0.0651642 | small |
| Eco-EA | Sorting network | 1000 | value | Phenotypic | Phylogenetic | 60 | 60 | 1799.0 | 9.93e-01 | 1.0000000 | ns | p = 1 | 0.0015407 | small |
| Fitness sharing | Count Odds | 10 | value | Phenotypic | Phylogenetic | 60 | 60 | 1674.0 | 5.10e-01 | 1.0000000 | ns | p = 1 | 0.0603708 | small |
| Fitness sharing | Count Odds | 100 | value | Phenotypic | Phylogenetic | 60 | 60 | 1252.0 | 4.06e-03 | 0.2395400 | ns | p = 0.23954 | 0.2625649 | small |
| Fitness sharing | Count Odds | 1000 | value | Phenotypic | Phylogenetic | 60 | 60 | 1611.0 | 3.22e-01 | 1.0000000 | ns | p = 1 | 0.0905561 | small |
| Fitness sharing | Logic-9 | 10 | value | Phenotypic | Phylogenetic | 60 | 60 | 1491.0 | 1.05e-01 | 1.0000000 | ns | p = 1 | 0.1480547 | small |
| Fitness sharing | Logic-9 | 100 | value | Phenotypic | Phylogenetic | 60 | 60 | 1260.0 | 4.63e-03 | 0.2731700 | ns | p = 0.27317 | 0.2587363 | small |
| Fitness sharing | Logic-9 | 1000 | value | Phenotypic | Phylogenetic | 60 | 60 | 1520.0 | 1.41e-01 | 1.0000000 | ns | p = 1 | 0.1345174 | small |
| Fitness sharing | NK Landscape | 10 | value | Phenotypic | Phylogenetic | 60 | 60 | 1285.0 | 6.93e-03 | 0.4088700 | ns | p = 0.40887 | 0.2467535 | small |
| Fitness sharing | NK Landscape | 100 | value | Phenotypic | Phylogenetic | 60 | 60 | 683.0 | 0.00e+00 | 0.0000003 | **** | p < 1e-04 | 0.5351915 | large |
| Fitness sharing | NK Landscape | 1000 | value | Phenotypic | Phylogenetic | 60 | 60 | 697.0 | 0.00e+00 | 0.0000004 | **** | p < 1e-04 | 0.5284837 | large |
| Fitness sharing | Sorting network | 10 | value | Phenotypic | Phylogenetic | 60 | 60 | 905.0 | 2.70e-06 | 0.0001575 | *** | p = 0.00015753 | 0.4288240 | moderate |
| Fitness sharing | Sorting network | 100 | value | Phenotypic | Phylogenetic | 60 | 60 | 361.0 | 0.00e+00 | 0.0000000 | **** | p < 1e-04 | 0.6894724 | large |
| Fitness sharing | Sorting network | 1000 | value | Phenotypic | Phylogenetic | 60 | 60 | 1043.0 | 7.17e-05 | 0.0042303 | ** | p = 0.0042303 | 0.3627037 | moderate |
| Lexicase | Count Odds | 10 | value | Phenotypic | Phylogenetic | 60 | 60 | 1491.0 | 1.05e-01 | 1.0000000 | ns | p = 1 | 0.1480521 | small |
| Lexicase | Count Odds | 100 | value | Phenotypic | Phylogenetic | 60 | 60 | 367.0 | 0.00e+00 | 0.0000000 | **** | p < 1e-04 | 0.6865976 | large |
| Lexicase | Count Odds | 1000 | value | Phenotypic | Phylogenetic | 60 | 60 | 870.0 | 1.10e-06 | 0.0000631 | **** | p < 1e-04 | 0.4455937 | moderate |
| Lexicase | Logic-9 | 10 | value | Phenotypic | Phylogenetic | 60 | 60 | 1785.5 | 9.41e-01 | 1.0000000 | ns | p = 1 | 0.0069474 | small |
| Lexicase | Logic-9 | 100 | value | Phenotypic | Phylogenetic | 60 | 60 | 1461.5 | 7.61e-02 | 1.0000000 | ns | p = 1 | 0.1621868 | small |
| Lexicase | Logic-9 | 1000 | value | Phenotypic | Phylogenetic | 60 | 60 | 1600.0 | 2.94e-01 | 1.0000000 | ns | p = 1 | 0.0961228 | small |
| Lexicase | NK Landscape | 10 | value | Phenotypic | Phylogenetic | 60 | 60 | 1742.0 | 7.61e-01 | 1.0000000 | ns | p = 1 | 0.0279677 | small |
| Lexicase | NK Landscape | 100 | value | Phenotypic | Phylogenetic | 60 | 60 | 1342.0 | 1.57e-02 | 0.9263000 | ns | p = 0.9263 | 0.2208485 | small |
| Lexicase | NK Landscape | 1000 | value | Phenotypic | Phylogenetic | 60 | 60 | 1034.0 | 5.26e-05 | 0.0031034 | ** | p = 0.0031034 | 0.3693667 | moderate |
| Lexicase | Sorting network | 10 | value | Phenotypic | Phylogenetic | 60 | 60 | 1831.0 | 8.37e-01 | 1.0000000 | ns | p = 1 | 0.0190860 | small |
| Lexicase | Sorting network | 100 | value | Phenotypic | Phylogenetic | 60 | 60 | 1814.0 | 9.27e-01 | 1.0000000 | ns | p = 1 | 0.0086195 | small |
| Random | Count Odds | 10 | value | Phenotypic | Phylogenetic | 60 | 60 | 1753.0 | 8.07e-01 | 1.0000000 | ns | p = 1 | 0.0225193 | small |
| Random | Count Odds | 100 | value | Phenotypic | Phylogenetic | 60 | 60 | 1963.0 | 3.94e-01 | 1.0000000 | ns | p = 1 | 0.0780987 | small |
| Random | Count Odds | 1000 | value | Phenotypic | Phylogenetic | 60 | 60 | 1176.0 | 1.07e-03 | 0.0631300 | ns | p = 0.06313 | 0.2989790 | small |
| Random | Logic-9 | 10 | value | Phenotypic | Phylogenetic | 60 | 60 | 1787.5 | 9.43e-01 | 1.0000000 | ns | p = 1 | 0.0067643 | small |
| Random | Logic-9 | 100 | value | Phenotypic | Phylogenetic | 60 | 60 | 1753.5 | 7.85e-01 | 1.0000000 | ns | p = 1 | 0.0251621 | small |
| Random | Logic-9 | 1000 | value | Phenotypic | Phylogenetic | 60 | 60 | 1730.0 | 6.23e-01 | 1.0000000 | ns | p = 1 | 0.0452501 | small |
| Random | NK Landscape | 10 | value | Phenotypic | Phylogenetic | 60 | 60 | 1158.0 | 7.60e-04 | 0.0448400 |
|
p = 0.04484 | 0.3076034 | moderate |
| Random | NK Landscape | 100 | value | Phenotypic | Phylogenetic | 60 | 60 | 1087.0 | 1.84e-04 | 0.0108560 |
|
p = 0.010856 | 0.3416218 | moderate |
| Random | NK Landscape | 1000 | value | Phenotypic | Phylogenetic | 60 | 60 | 822.0 | 3.00e-07 | 0.0000171 | **** | p < 1e-04 | 0.4685921 | moderate |
| Random | Sorting network | 10 | value | Phenotypic | Phylogenetic | 60 | 60 | 1849.0 | 7.99e-01 | 1.0000000 | ns | p = 1 | 0.0234775 | small |
| Random | Sorting network | 100 | value | Phenotypic | Phylogenetic | 60 | 60 | 1072.0 | 1.34e-04 | 0.0079060 | ** | p = 0.007906 | 0.3488088 | moderate |
| Random | Sorting network | 1000 | value | Phenotypic | Phylogenetic | 60 | 60 | 895.0 | 2.10e-06 | 0.0001215 | *** | p = 0.00012154 | 0.4336153 | moderate |
| Tournament | Count Odds | 10 | value | Phenotypic | Phylogenetic | 60 | 60 | 1545.0 | 1.82e-01 | 1.0000000 | ns | p = 1 | 0.1221789 | small |
| Tournament | Count Odds | 100 | value | Phenotypic | Phylogenetic | 60 | 60 | 1196.0 | 1.54e-03 | 0.0908600 | ns | p = 0.09086 | 0.2893963 | small |
| Tournament | Count Odds | 1000 | value | Phenotypic | Phylogenetic | 60 | 60 | 1821.5 | 9.12e-01 | 1.0000000 | ns | p = 1 | 0.0103029 | small |
| Tournament | Logic-9 | 10 | value | Phenotypic | Phylogenetic | 60 | 60 | 1895.0 | 6.20e-01 | 1.0000000 | ns | p = 1 | 0.0455184 | small |
| Tournament | Logic-9 | 100 | value | Phenotypic | Phylogenetic | 60 | 60 | 1727.0 | 7.04e-01 | 1.0000000 | ns | p = 1 | 0.0349773 | small |
| Tournament | Logic-9 | 1000 | value | Phenotypic | Phylogenetic | 60 | 60 | 1715.0 | 6.54e-01 | 1.0000000 | ns | p = 1 | 0.0411561 | small |
| Tournament | NK Landscape | 10 | value | Phenotypic | Phylogenetic | 60 | 60 | 1794.0 | 9.61e-01 | 1.0000000 | ns | p = 1 | 0.0048659 | small |
| Tournament | NK Landscape | 100 | value | Phenotypic | Phylogenetic | 60 | 60 | 1782.0 | 8.76e-01 | 1.0000000 | ns | p = 1 | 0.0145977 | small |
| Tournament | NK Landscape | 1000 | value | Phenotypic | Phylogenetic | 60 | 60 | 1784.0 | 8.90e-01 | 1.0000000 | ns | p = 1 | 0.0129757 | small |
| Tournament | Sorting network | 10 | value | Phenotypic | Phylogenetic | 60 | 60 | 1760.5 | 8.38e-01 | 1.0000000 | ns | p = 1 | 0.0189269 | small |
| Tournament | Sorting network | 100 | value | Phenotypic | Phylogenetic | 60 | 60 | 1335.0 | 1.48e-02 | 0.8732000 | ns | p = 0.8732 | 0.2227968 | small |
| Tournament | Sorting network | 1000 | value | Phenotypic | Phylogenetic | 60 | 60 | 1833.5 | 8.54e-01 | 1.0000000 | ns | p = 1 | 0.0170991 | small |
<IP_ADDRESS> Mean pairwise distance vs. phenotypic Shannon diversity
res <- data %>% group_by(SEED, selection_name, problem_name) %>%
summarise(
fit_phylo_10 = condinformation(discretize(max_performance), discretize(lag(mean_phenotype_pairwise_distance, 1)), discretize(lag(max_performance, 1))),
fit_phylo_100 = condinformation(discretize(max_performance), discretize(lag(mean_phenotype_pairwise_distance, 10)), discretize(lag(max_performance, 10))),
fit_phylo_1000 = condinformation(discretize(max_performance), discretize(lag(mean_phenotype_pairwise_distance, 100)), discretize(lag(max_performance, 100))),
fit_pheno_10 = condinformation(discretize(max_performance), discretize(lag(phenotype_diversity, 1)), discretize(lag(max_performance, 1))),
fit_pheno_100 = condinformation(discretize(max_performance), discretize(lag(phenotype_diversity, 10)), discretize(lag(max_performance, 10))),
fit_pheno_1000 = condinformation(discretize(max_performance), discretize(lag(phenotype_diversity, 100)), discretize(lag(max_performance, 100)))
)
res <- res %>% pivot_longer(cols=contains("o_10"))
res$offset <- str_extract(res$name, "[:digit:]*$")
res$Type <- case_when(str_detect(res$name, "phylo") ~ "Phylogenetic", TRUE ~ "Phenotypic")
ggplot(
res %>% filter(str_detect(name, "fit_ph*")),
aes(
x=as.factor(offset),
y=value,
color=Type
)
) +
geom_boxplot() +
facet_wrap(~selection_name*problem_name, ncol=4) +
scale_x_discrete("Lag") +
scale_y_continuous("Transfer Entropy") +
scale_color_discrete("") +
theme(legend.position = "bottom")
# Determine which conditions are significantly different from each other
transfer_entropy_stats(res)
| selection_name | problem_name | offset | .y. | group1 | group2 | n1 | n2 | statistic | p | p.adj | p.adj.signif | label | effsize | magnitude |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Eco-EA | Count Odds | 10 | value | Phenotypic | Phylogenetic | 60 | 60 | 1749.0 | 7.91e-01 | 1.0000000 | ns | p = 1 | 0.0244358 | small |
| Eco-EA | Count Odds | 100 | value | Phenotypic | Phylogenetic | 60 | 60 | 1190.0 | 1.38e-03 | 0.0814200 | ns | p = 0.08142 | 0.2922711 | small |
| Eco-EA | Count Odds | 1000 | value | Phenotypic | Phylogenetic | 60 | 60 | 1328.0 | 1.33e-02 | 0.7847000 | ns | p = 0.7847 | 0.2261547 | small |
| Eco-EA | Logic-9 | 10 | value | Phenotypic | Phylogenetic | 60 | 60 | 1746.0 | 7.79e-01 | 1.0000000 | ns | p = 1 | 0.0258736 | small |
| Eco-EA | Logic-9 | 100 | value | Phenotypic | Phylogenetic | 60 | 60 | 1703.0 | 6.13e-01 | 1.0000000 | ns | p = 1 | 0.0464767 | small |
| Eco-EA | Logic-9 | 1000 | value | Phenotypic | Phylogenetic | 60 | 60 | 1517.0 | 1.36e-01 | 1.0000000 | ns | p = 1 | 0.1362109 | small |
| Eco-EA | NK Landscape | 10 | value | Phenotypic | Phylogenetic | 60 | 60 | 1721.5 | 6.82e-01 | 1.0000000 | ns | p = 1 | 0.0376120 | small |
| Eco-EA | NK Landscape | 100 | value | Phenotypic | Phylogenetic | 60 | 60 | 1595.5 | 2.84e-01 | 1.0000000 | ns | p = 1 | 0.0979829 | small |
| Eco-EA | NK Landscape | 1000 | value | Phenotypic | Phylogenetic | 60 | 60 | 1744.0 | 7.71e-01 | 1.0000000 | ns | p = 1 | 0.0268319 | small |
| Eco-EA | Sorting network | 10 | value | Phenotypic | Phylogenetic | 60 | 60 | 1804.0 | 9.85e-01 | 1.0000000 | ns | p = 1 | 0.0019190 | small |
| Eco-EA | Sorting network | 100 | value | Phenotypic | Phylogenetic | 60 | 60 | 1145.0 | 5.91e-04 | 0.0348690 |
|
p = 0.034869 | 0.3138561 | moderate |
| Eco-EA | Sorting network | 1000 | value | Phenotypic | Phylogenetic | 60 | 60 | 1799.0 | 9.93e-01 | 1.0000000 | ns | p = 1 | 0.0015407 | small |
| Fitness sharing | Count Odds | 10 | value | Phenotypic | Phylogenetic | 60 | 60 | 1670.0 | 4.97e-01 | 1.0000000 | ns | p = 1 | 0.0622873 | small |
| Fitness sharing | Count Odds | 100 | value | Phenotypic | Phylogenetic | 60 | 60 | 1207.0 | 1.87e-03 | 0.1103300 | ns | p = 0.11033 | 0.2841259 | small |
| Fitness sharing | Count Odds | 1000 | value | Phenotypic | Phylogenetic | 60 | 60 | 1555.0 | 1.99e-01 | 1.0000000 | ns | p = 1 | 0.1173876 | small |
| Fitness sharing | Logic-9 | 10 | value | Phenotypic | Phylogenetic | 60 | 60 | 1573.0 | 2.35e-01 | 1.0000000 | ns | p = 1 | 0.1087651 | small |
| Fitness sharing | Logic-9 | 100 | value | Phenotypic | Phylogenetic | 60 | 60 | 1313.0 | 1.07e-02 | 0.6313000 | ns | p = 0.6313 | 0.2333418 | small |
| Fitness sharing | Logic-9 | 1000 | value | Phenotypic | Phylogenetic | 60 | 60 | 1455.0 | 6.98e-02 | 1.0000000 | ns | p = 1 | 0.1657446 | small |
| Fitness sharing | NK Landscape | 10 | value | Phenotypic | Phylogenetic | 60 | 60 | 1268.0 | 5.28e-03 | 0.3115200 | ns | p = 0.31152 | 0.2548987 | small |
| Fitness sharing | NK Landscape | 100 | value | Phenotypic | Phylogenetic | 60 | 60 | 691.0 | 0.00e+00 | 0.0000004 | **** | p < 1e-04 | 0.5313585 | large |
| Fitness sharing | NK Landscape | 1000 | value | Phenotypic | Phylogenetic | 60 | 60 | 617.0 | 0.00e+00 | 0.0000000 | **** | p < 1e-04 | 0.5668143 | large |
| Fitness sharing | Sorting network | 10 | value | Phenotypic | Phylogenetic | 60 | 60 | 874.0 | 1.20e-06 | 0.0000702 | **** | p < 1e-04 | 0.4436771 | moderate |
| Fitness sharing | Sorting network | 100 | value | Phenotypic | Phylogenetic | 60 | 60 | 332.0 | 0.00e+00 | 0.0000000 | **** | p < 1e-04 | 0.7033672 | large |
| Fitness sharing | Sorting network | 1000 | value | Phenotypic | Phylogenetic | 60 | 60 | 906.0 | 2.70e-06 | 0.0001617 | *** | p = 0.00016166 | 0.4283449 | moderate |
| Lexicase | Count Odds | 10 | value | Phenotypic | Phylogenetic | 60 | 60 | 1404.0 | 3.79e-02 | 1.0000000 | ns | p = 1 | 0.1897367 | small |
| Lexicase | Count Odds | 100 | value | Phenotypic | Phylogenetic | 60 | 60 | 368.0 | 0.00e+00 | 0.0000000 | **** | p < 1e-04 | 0.6861184 | large |
| Lexicase | Count Odds | 1000 | value | Phenotypic | Phylogenetic | 60 | 60 | 827.0 | 3.00e-07 | 0.0000196 | **** | p < 1e-04 | 0.4661964 | moderate |
| Lexicase | Logic-9 | 10 | value | Phenotypic | Phylogenetic | 60 | 60 | 1722.5 | 6.86e-01 | 1.0000000 | ns | p = 1 | 0.0371329 | small |
| Lexicase | Logic-9 | 100 | value | Phenotypic | Phylogenetic | 60 | 60 | 1579.5 | 2.48e-01 | 1.0000000 | ns | p = 1 | 0.1056490 | small |
| Lexicase | Logic-9 | 1000 | value | Phenotypic | Phylogenetic | 60 | 60 | 1617.0 | 3.36e-01 | 1.0000000 | ns | p = 1 | 0.0880337 | small |
| Lexicase | NK Landscape | 10 | value | Phenotypic | Phylogenetic | 60 | 60 | 1755.0 | 8.14e-01 | 1.0000000 | ns | p = 1 | 0.0216991 | small |
| Lexicase | NK Landscape | 100 | value | Phenotypic | Phylogenetic | 60 | 60 | 1327.0 | 1.26e-02 | 0.7434000 | ns | p = 0.7434 | 0.2280815 | small |
| Lexicase | NK Landscape | 1000 | value | Phenotypic | Phylogenetic | 60 | 60 | 971.0 | 1.21e-05 | 0.0007139 | *** | p = 0.0007139 | 0.3997454 | moderate |
| Lexicase | Sorting network | 10 | value | Phenotypic | Phylogenetic | 60 | 60 | 1785.5 | 9.25e-01 | 1.0000000 | ns | p = 1 | 0.0089276 | small |
| Lexicase | Sorting network | 100 | value | Phenotypic | Phylogenetic | 60 | 60 | 1748.0 | 7.28e-01 | 1.0000000 | ns | p = 1 | 0.0320154 | small |
| Random | Count Odds | 10 | value | Phenotypic | Phylogenetic | 60 | 60 | 1776.0 | 9.02e-01 | 1.0000000 | ns | p = 1 | 0.0114992 | small |
| Random | Count Odds | 100 | value | Phenotypic | Phylogenetic | 60 | 60 | 1991.0 | 3.17e-01 | 1.0000000 | ns | p = 1 | 0.0915144 | small |
| Random | Count Odds | 1000 | value | Phenotypic | Phylogenetic | 60 | 60 | 1110.0 | 2.96e-04 | 0.0174640 |
|
p = 0.017464 | 0.3306018 | moderate |
| Random | Logic-9 | 10 | value | Phenotypic | Phylogenetic | 60 | 60 | 1934.0 | 4.28e-01 | 1.0000000 | ns | p = 1 | 0.0725501 | small |
| Random | Logic-9 | 100 | value | Phenotypic | Phylogenetic | 60 | 60 | 1854.5 | 7.49e-01 | 1.0000000 | ns | p = 1 | 0.0294925 | small |
| Random | Logic-9 | 1000 | value | Phenotypic | Phylogenetic | 60 | 60 | 1749.0 | 7.21e-01 | 1.0000000 | ns | p = 1 | 0.0329683 | small |
| Random | NK Landscape | 10 | value | Phenotypic | Phylogenetic | 60 | 60 | 1063.0 | 1.11e-04 | 0.0065490 | ** | p = 0.006549 | 0.3531210 | moderate |
| Random | NK Landscape | 100 | value | Phenotypic | Phylogenetic | 60 | 60 | 1322.0 | 1.22e-02 | 0.7198000 | ns | p = 0.7198 | 0.2290256 | small |
| Random | NK Landscape | 1000 | value | Phenotypic | Phylogenetic | 60 | 60 | 865.0 | 9.00e-07 | 0.0000552 | **** | p < 1e-04 | 0.4479893 | moderate |
| Random | Sorting network | 10 | value | Phenotypic | Phylogenetic | 60 | 60 | 1731.0 | 7.19e-01 | 1.0000000 | ns | p = 1 | 0.0330602 | small |
| Random | Sorting network | 100 | value | Phenotypic | Phylogenetic | 60 | 60 | 1397.0 | 3.46e-02 | 1.0000000 | ns | p = 1 | 0.1930906 | small |
| Random | Sorting network | 1000 | value | Phenotypic | Phylogenetic | 60 | 60 | 1008.0 | 3.26e-05 | 0.0019234 | ** | p = 0.0019234 | 0.3794733 | moderate |
| Tournament | Count Odds | 10 | value | Phenotypic | Phylogenetic | 60 | 60 | 1601.0 | 2.97e-01 | 1.0000000 | ns | p = 1 | 0.0953475 | small |
| Tournament | Count Odds | 100 | value | Phenotypic | Phylogenetic | 60 | 60 | 1368.0 | 2.35e-02 | 1.0000000 | ns | p = 1 | 0.2069854 | small |
| Tournament | Count Odds | 1000 | value | Phenotypic | Phylogenetic | 60 | 60 | 1761.0 | 8.40e-01 | 1.0000000 | ns | p = 1 | 0.0186901 | small |
| Tournament | Logic-9 | 10 | value | Phenotypic | Phylogenetic | 60 | 60 | 1790.5 | 9.62e-01 | 1.0000000 | ns | p = 1 | 0.0045519 | small |
| Tournament | Logic-9 | 100 | value | Phenotypic | Phylogenetic | 60 | 60 | 1731.0 | 7.19e-01 | 1.0000000 | ns | p = 1 | 0.0330607 | small |
| Tournament | Logic-9 | 1000 | value | Phenotypic | Phylogenetic | 60 | 60 | 1601.0 | 2.93e-01 | 1.0000000 | ns | p = 1 | 0.0962637 | small |
| Tournament | NK Landscape | 10 | value | Phenotypic | Phylogenetic | 60 | 60 | 1794.5 | 9.65e-01 | 1.0000000 | ns | p = 1 | 0.0044604 | small |
| Tournament | NK Landscape | 100 | value | Phenotypic | Phylogenetic | 60 | 60 | 1794.0 | 9.61e-01 | 1.0000000 | ns | p = 1 | 0.0048659 | small |
| Tournament | NK Landscape | 1000 | value | Phenotypic | Phylogenetic | 60 | 60 | 1800.0 | 1.00e+00 | 1.0000000 | ns | p = 1 | 0.0000000 | small |
| Tournament | Sorting network | 10 | value | Phenotypic | Phylogenetic | 60 | 60 | 1811.5 | 9.54e-01 | 1.0000000 | ns | p = 1 | 0.0055104 | small |
| Tournament | Sorting network | 100 | value | Phenotypic | Phylogenetic | 60 | 60 | 1548.5 | 1.88e-01 | 1.0000000 | ns | p = 1 | 0.1205024 | small |
| Tournament | Sorting network | 1000 | value | Phenotypic | Phylogenetic | 60 | 60 | 1779.0 | 9.09e-01 | 1.0000000 | ns | p = 1 | 0.0107189 | small |
<IP_ADDRESS> Mean evolutionary distinctiveness vs. phenotypic richness
res <- data %>% group_by(SEED, selection_name, problem_name) %>%
summarise(
fit_phylo_10 = condinformation(discretize(max_performance), discretize(lag(mean_phenotype_evolutionary_distinctiveness, 1)), discretize(lag(max_performance, 1))),
fit_phylo_100 = condinformation(discretize(max_performance), discretize(lag(mean_phenotype_evolutionary_distinctiveness, 10)), discretize(lag(max_performance, 10))),
fit_phylo_1000 = condinformation(discretize(max_performance), discretize(lag(mean_phenotype_evolutionary_distinctiveness, 100)), discretize(lag(max_performance, 100))),
fit_pheno_10 = condinformation(discretize(max_performance), discretize(lag(phenotype_num_taxa, 1)), discretize(lag(max_performance, 1))),
fit_pheno_100 = condinformation(discretize(max_performance), discretize(lag(phenotype_num_taxa, 10)), discretize(lag(max_performance, 10))),
fit_pheno_1000 = condinformation(discretize(max_performance), discretize(lag(phenotype_num_taxa, 100)), discretize(lag(max_performance, 100)))
)
res <- res %>% pivot_longer(cols=contains("o_10"))
res$offset <- str_extract(res$name, "[:digit:]*$")
res$Type <- case_when(str_detect(res$name, "phylo") ~ "Phylogenetic", TRUE ~ "Phenotypic")
ggplot(
res %>% filter(str_detect(name, "fit_ph*")),
aes(
x=as.factor(offset),
y=value,
color=Type
)
) +
geom_boxplot() +
facet_wrap(~selection_name*problem_name, ncol=4) +
scale_x_discrete("Lag") +
scale_y_continuous("Transfer Entropy") +
scale_color_discrete("") +
theme(legend.position = "bottom")
# Determine which conditions are significantly different from each other
transfer_entropy_stats(res)
| selection_name | problem_name | offset | .y. | group1 | group2 | n1 | n2 | statistic | p | p.adj | p.adj.signif | label | effsize | magnitude |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Eco-EA | Count Odds | 10 | value | Phenotypic | Phylogenetic | 60 | 60 | 1653.0 | 4.42e-01 | 1.0000000 | ns | p = 1 | 0.0704325 | small |
| Eco-EA | Count Odds | 100 | value | Phenotypic | Phylogenetic | 60 | 60 | 1180.0 | 1.15e-03 | 0.0678500 | ns | p = 0.06785 | 0.2970624 | small |
| Eco-EA | Count Odds | 1000 | value | Phenotypic | Phylogenetic | 60 | 60 | 1315.0 | 1.10e-02 | 0.6490000 | ns | p = 0.649 | 0.2323835 | small |
| Eco-EA | Logic-9 | 10 | value | Phenotypic | Phylogenetic | 60 | 60 | 1842.0 | 8.28e-01 | 1.0000000 | ns | p = 1 | 0.0201239 | small |
| Eco-EA | Logic-9 | 100 | value | Phenotypic | Phylogenetic | 60 | 60 | 1556.0 | 2.01e-01 | 1.0000000 | ns | p = 1 | 0.1169105 | small |
| Eco-EA | Logic-9 | 1000 | value | Phenotypic | Phylogenetic | 60 | 60 | 1591.0 | 2.72e-01 | 1.0000000 | ns | p = 1 | 0.1005939 | small |
| Eco-EA | NK Landscape | 10 | value | Phenotypic | Phylogenetic | 60 | 60 | 1417.5 | 4.50e-02 | 1.0000000 | ns | p = 1 | 0.1832687 | small |
| Eco-EA | NK Landscape | 100 | value | Phenotypic | Phylogenetic | 60 | 60 | 1487.5 | 1.02e-01 | 1.0000000 | ns | p = 1 | 0.1497293 | small |
| Eco-EA | NK Landscape | 1000 | value | Phenotypic | Phylogenetic | 60 | 60 | 1505.0 | 1.22e-01 | 1.0000000 | ns | p = 1 | 0.1413467 | small |
| Eco-EA | Sorting network | 10 | value | Phenotypic | Phylogenetic | 60 | 60 | 1674.0 | 5.10e-01 | 1.0000000 | ns | p = 1 | 0.0604466 | small |
| Eco-EA | Sorting network | 100 | value | Phenotypic | Phylogenetic | 60 | 60 | 1269.5 | 5.40e-03 | 0.3186000 | ns | p = 0.3186 | 0.2541924 | small |
| Eco-EA | Sorting network | 1000 | value | Phenotypic | Phylogenetic | 60 | 60 | 1798.0 | 9.80e-01 | 1.0000000 | ns | p = 1 | 0.0030814 | small |
| Fitness sharing | Count Odds | 10 | value | Phenotypic | Phylogenetic | 60 | 60 | 1721.0 | 6.80e-01 | 1.0000000 | ns | p = 1 | 0.0378515 | small |
| Fitness sharing | Count Odds | 100 | value | Phenotypic | Phylogenetic | 60 | 60 | 1518.0 | 1.40e-01 | 1.0000000 | ns | p = 1 | 0.1351155 | small |
| Fitness sharing | Count Odds | 1000 | value | Phenotypic | Phylogenetic | 60 | 60 | 1870.0 | 7.15e-01 | 1.0000000 | ns | p = 1 | 0.0335393 | small |
| Fitness sharing | Logic-9 | 10 | value | Phenotypic | Phylogenetic | 60 | 60 | 1611.0 | 3.22e-01 | 1.0000000 | ns | p = 1 | 0.0905577 | small |
| Fitness sharing | Logic-9 | 100 | value | Phenotypic | Phylogenetic | 60 | 60 | 1667.0 | 4.87e-01 | 1.0000000 | ns | p = 1 | 0.0637258 | small |
| Fitness sharing | Logic-9 | 1000 | value | Phenotypic | Phylogenetic | 60 | 60 | 1535.0 | 1.64e-01 | 1.0000000 | ns | p = 1 | 0.1273111 | small |
| Fitness sharing | NK Landscape | 10 | value | Phenotypic | Phylogenetic | 60 | 60 | 1238.0 | 3.21e-03 | 0.1893900 | ns | p = 0.18939 | 0.2692727 | small |
| Fitness sharing | NK Landscape | 100 | value | Phenotypic | Phylogenetic | 60 | 60 | 894.0 | 2.00e-06 | 0.0001186 | *** | p = 0.00011859 | 0.4340945 | moderate |
| Fitness sharing | NK Landscape | 1000 | value | Phenotypic | Phylogenetic | 60 | 60 | 956.0 | 9.60e-06 | 0.0005634 | *** | p = 0.00056345 | 0.4043882 | moderate |
| Fitness sharing | Sorting network | 10 | value | Phenotypic | Phylogenetic | 60 | 60 | 972.0 | 1.40e-05 | 0.0008260 | *** | p = 0.000826 | 0.3967221 | moderate |
| Fitness sharing | Sorting network | 100 | value | Phenotypic | Phylogenetic | 60 | 60 | 1065.0 | 1.16e-04 | 0.0068440 | ** | p = 0.006844 | 0.3521627 | moderate |
| Fitness sharing | Sorting network | 1000 | value | Phenotypic | Phylogenetic | 60 | 60 | 1780.0 | 9.18e-01 | 1.0000000 | ns | p = 1 | 0.0095827 | small |
| Lexicase | Count Odds | 10 | value | Phenotypic | Phylogenetic | 60 | 60 | 1977.0 | 3.54e-01 | 1.0000000 | ns | p = 1 | 0.0848065 | small |
| Lexicase | Count Odds | 100 | value | Phenotypic | Phylogenetic | 60 | 60 | 791.0 | 1.00e-07 | 0.0000071 | **** | p < 1e-04 | 0.4834452 | moderate |
| Lexicase | Count Odds | 1000 | value | Phenotypic | Phylogenetic | 60 | 60 | 1038.0 | 6.42e-05 | 0.0037878 | ** | p = 0.0037878 | 0.3650993 | moderate |
| Lexicase | Logic-9 | 10 | value | Phenotypic | Phylogenetic | 60 | 60 | 1873.5 | 7.02e-01 | 1.0000000 | ns | p = 1 | 0.0352163 | small |
| Lexicase | Logic-9 | 100 | value | Phenotypic | Phylogenetic | 60 | 60 | 1266.5 | 5.15e-03 | 0.3038500 | ns | p = 0.30385 | 0.2556179 | small |
| Lexicase | Logic-9 | 1000 | value | Phenotypic | Phylogenetic | 60 | 60 | 1660.5 | 4.64e-01 | 1.0000000 | ns | p = 1 | 0.0671430 | small |
| Lexicase | NK Landscape | 10 | value | Phenotypic | Phylogenetic | 60 | 60 | 1755.0 | 8.14e-01 | 1.0000000 | ns | p = 1 | 0.0216991 | small |
| Lexicase | NK Landscape | 100 | value | Phenotypic | Phylogenetic | 60 | 60 | 1455.0 | 6.88e-02 | 1.0000000 | ns | p = 1 | 0.1663597 | small |
| Lexicase | NK Landscape | 1000 | value | Phenotypic | Phylogenetic | 60 | 60 | 1121.0 | 3.38e-04 | 0.0199420 |
|
p = 0.019942 | 0.3274151 | moderate |
| Lexicase | Sorting network | 10 | value | Phenotypic | Phylogenetic | 60 | 60 | 1794.5 | 9.73e-01 | 1.0000000 | ns | p = 1 | 0.0033862 | small |
| Lexicase | Sorting network | 100 | value | Phenotypic | Phylogenetic | 60 | 60 | 1735.0 | 6.64e-01 | 1.0000000 | ns | p = 1 | 0.0400189 | small |
| Random | Count Odds | 10 | value | Phenotypic | Phylogenetic | 60 | 60 | 1583.0 | 2.56e-01 | 1.0000000 | ns | p = 1 | 0.1039719 | small |
| Random | Count Odds | 100 | value | Phenotypic | Phylogenetic | 60 | 60 | 1932.0 | 4.90e-01 | 1.0000000 | ns | p = 1 | 0.0632456 | small |
| Random | Count Odds | 1000 | value | Phenotypic | Phylogenetic | 60 | 60 | 1462.0 | 7.65e-02 | 1.0000000 | ns | p = 1 | 0.1619469 | small |
| Random | Logic-9 | 10 | value | Phenotypic | Phylogenetic | 60 | 60 | 1705.0 | 5.75e-01 | 1.0000000 | ns | p = 1 | 0.0514143 | small |
| Random | Logic-9 | 100 | value | Phenotypic | Phylogenetic | 60 | 60 | 1733.0 | 6.93e-01 | 1.0000000 | ns | p = 1 | 0.0362562 | small |
| Random | Logic-9 | 1000 | value | Phenotypic | Phylogenetic | 60 | 60 | 1771.5 | 8.43e-01 | 1.0000000 | ns | p = 1 | 0.0184230 | small |
| Random | NK Landscape | 10 | value | Phenotypic | Phylogenetic | 60 | 60 | 1288.0 | 7.26e-03 | 0.4283400 | ns | p = 0.42834 | 0.2453161 | small |
| Random | NK Landscape | 100 | value | Phenotypic | Phylogenetic | 60 | 60 | 1196.0 | 1.54e-03 | 0.0908600 | ns | p = 0.09086 | 0.2893963 | small |
| Random | NK Landscape | 1000 | value | Phenotypic | Phylogenetic | 60 | 60 | 1028.0 | 5.14e-05 | 0.0030326 | ** | p = 0.0030326 | 0.3698907 | moderate |
| Random | Sorting network | 10 | value | Phenotypic | Phylogenetic | 60 | 60 | 2172.0 | 5.12e-02 | 1.0000000 | ns | p = 1 | 0.1782375 | small |
| Random | Sorting network | 100 | value | Phenotypic | Phylogenetic | 60 | 60 | 1603.0 | 3.02e-01 | 1.0000000 | ns | p = 1 | 0.0943892 | small |
| Random | Sorting network | 1000 | value | Phenotypic | Phylogenetic | 60 | 60 | 1629.0 | 3.71e-01 | 1.0000000 | ns | p = 1 | 0.0819317 | small |
| Tournament | Count Odds | 10 | value | Phenotypic | Phylogenetic | 60 | 60 | 1570.0 | 2.28e-01 | 1.0000000 | ns | p = 1 | 0.1102006 | small |
| Tournament | Count Odds | 100 | value | Phenotypic | Phylogenetic | 60 | 60 | 1026.0 | 4.91e-05 | 0.0028969 | ** | p = 0.0028969 | 0.3708489 | moderate |
| Tournament | Count Odds | 1000 | value | Phenotypic | Phylogenetic | 60 | 60 | 1522.5 | 1.46e-01 | 1.0000000 | ns | p = 1 | 0.1329675 | small |
| Tournament | Logic-9 | 10 | value | Phenotypic | Phylogenetic | 60 | 60 | 1991.0 | 3.17e-01 | 1.0000000 | ns | p = 1 | 0.0915160 | small |
| Tournament | Logic-9 | 100 | value | Phenotypic | Phylogenetic | 60 | 60 | 1309.0 | 1.00e-02 | 0.5900000 | ns | p = 0.59 | 0.2352588 | small |
| Tournament | Logic-9 | 1000 | value | Phenotypic | Phylogenetic | 60 | 60 | 1604.0 | 3.00e-01 | 1.0000000 | ns | p = 1 | 0.0949012 | small |
| Tournament | NK Landscape | 10 | value | Phenotypic | Phylogenetic | 60 | 60 | 1819.0 | 8.69e-01 | 1.0000000 | ns | p = 1 | 0.0154086 | small |
| Tournament | NK Landscape | 100 | value | Phenotypic | Phylogenetic | 60 | 60 | 1780.0 | 8.62e-01 | 1.0000000 | ns | p = 1 | 0.0162196 | small |
| Tournament | NK Landscape | 1000 | value | Phenotypic | Phylogenetic | 60 | 60 | 1774.0 | 8.21e-01 | 1.0000000 | ns | p = 1 | 0.0210855 | small |
| Tournament | Sorting network | 10 | value | Phenotypic | Phylogenetic | 60 | 60 | 1784.5 | 9.37e-01 | 1.0000000 | ns | p = 1 | 0.0074270 | small |
| Tournament | Sorting network | 100 | value | Phenotypic | Phylogenetic | 60 | 60 | 854.0 | 7.00e-07 | 0.0000411 | **** | p < 1e-04 | 0.4532606 | moderate |
| Tournament | Sorting network | 1000 | value | Phenotypic | Phylogenetic | 60 | 60 | 1750.5 | 7.84e-01 | 1.0000000 | ns | p = 1 | 0.0252657 | small |
<IP_ADDRESS> Mean evolutionary distinctiveness vs. phenotypic Shannon diveristy
res <- data %>% group_by(SEED, selection_name, problem_name) %>%
summarise(
fit_phylo_10 = condinformation(discretize(max_performance), discretize(lag(mean_phenotype_evolutionary_distinctiveness, 1)), discretize(lag(max_performance, 1))),
fit_phylo_100 = condinformation(discretize(max_performance), discretize(lag(mean_phenotype_evolutionary_distinctiveness, 10)), discretize(lag(max_performance, 10))),
fit_phylo_1000 = condinformation(discretize(max_performance), discretize(lag(mean_phenotype_evolutionary_distinctiveness, 100)), discretize(lag(max_performance, 100))),
fit_pheno_10 = condinformation(discretize(max_performance), discretize(lag(phenotype_diversity, 1)), discretize(lag(max_performance, 1))),
fit_pheno_100 = condinformation(discretize(max_performance), discretize(lag(phenotype_diversity, 10)), discretize(lag(max_performance, 10))),
fit_pheno_1000 = condinformation(discretize(max_performance), discretize(lag(phenotype_diversity, 100)), discretize(lag(max_performance, 100)))
)
res <- res %>% pivot_longer(cols=contains("o_10"))
res$offset <- str_extract(res$name, "[:digit:]*$")
res$Type <- case_when(str_detect(res$name, "phylo") ~ "Phylogenetic", TRUE ~ "Phenotypic")
ggplot(
res %>% filter(str_detect(name, "fit_ph*")),
aes(
x=as.factor(offset),
y=value,
color=Type
)
) +
geom_boxplot() +
facet_wrap(~selection_name*problem_name, ncol=4) +
scale_x_discrete("Lag") +
scale_y_continuous("Transfer Entropy") +
scale_color_discrete("") +
theme(legend.position = "bottom")
# Determine which conditions are significantly different from each other
transfer_entropy_stats(res)
| selection_name | problem_name | offset | .y. | group1 | group2 | n1 | n2 | statistic | p | p.adj | p.adj.signif | label | effsize | magnitude |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Eco-EA | Count Odds | 10 | value | Phenotypic | Phylogenetic | 60 | 60 | 1740.0 | 7.55e-01 | 1.0000000 | ns | p = 1 | 0.0287480 | small |
| Eco-EA | Count Odds | 100 | value | Phenotypic | Phylogenetic | 60 | 60 | 1389.0 | 3.12e-02 | 1.0000000 | ns | p = 1 | 0.1969237 | small |
| Eco-EA | Count Odds | 1000 | value | Phenotypic | Phylogenetic | 60 | 60 | 1325.0 | 1.28e-02 | 0.7552000 | ns | p = 0.7552 | 0.2275921 | small |
| Eco-EA | Logic-9 | 10 | value | Phenotypic | Phylogenetic | 60 | 60 | 1826.0 | 8.94e-01 | 1.0000000 | ns | p = 1 | 0.0124577 | small |
| Eco-EA | Logic-9 | 100 | value | Phenotypic | Phylogenetic | 60 | 60 | 1565.0 | 2.18e-01 | 1.0000000 | ns | p = 1 | 0.1125982 | small |
| Eco-EA | Logic-9 | 1000 | value | Phenotypic | Phylogenetic | 60 | 60 | 1441.5 | 5.89e-02 | 1.0000000 | ns | p = 1 | 0.1726482 | small |
| Eco-EA | NK Landscape | 10 | value | Phenotypic | Phylogenetic | 60 | 60 | 1631.5 | 3.78e-01 | 1.0000000 | ns | p = 1 | 0.0807340 | small |
| Eco-EA | NK Landscape | 100 | value | Phenotypic | Phylogenetic | 60 | 60 | 1524.5 | 1.49e-01 | 1.0000000 | ns | p = 1 | 0.1320014 | small |
| Eco-EA | NK Landscape | 1000 | value | Phenotypic | Phylogenetic | 60 | 60 | 1469.0 | 8.28e-02 | 1.0000000 | ns | p = 1 | 0.1585958 | small |
| Eco-EA | Sorting network | 10 | value | Phenotypic | Phylogenetic | 60 | 60 | 1667.5 | 4.88e-01 | 1.0000000 | ns | p = 1 | 0.0635682 | small |
| Eco-EA | Sorting network | 100 | value | Phenotypic | Phylogenetic | 60 | 60 | 789.0 | 1.00e-07 | 0.0000067 | **** | p < 1e-04 | 0.4844421 | moderate |
| Eco-EA | Sorting network | 1000 | value | Phenotypic | Phylogenetic | 60 | 60 | 1798.0 | 9.80e-01 | 1.0000000 | ns | p = 1 | 0.0030814 | small |
| Fitness sharing | Count Odds | 10 | value | Phenotypic | Phylogenetic | 60 | 60 | 1733.0 | 7.27e-01 | 1.0000000 | ns | p = 1 | 0.0321019 | small |
| Fitness sharing | Count Odds | 100 | value | Phenotypic | Phylogenetic | 60 | 60 | 1431.0 | 5.31e-02 | 1.0000000 | ns | p = 1 | 0.1768001 | small |
| Fitness sharing | Count Odds | 1000 | value | Phenotypic | Phylogenetic | 60 | 60 | 1823.0 | 9.06e-01 | 1.0000000 | ns | p = 1 | 0.0110201 | small |
| Fitness sharing | Logic-9 | 10 | value | Phenotypic | Phylogenetic | 60 | 60 | 1722.0 | 6.84e-01 | 1.0000000 | ns | p = 1 | 0.0373730 | small |
| Fitness sharing | Logic-9 | 100 | value | Phenotypic | Phylogenetic | 60 | 60 | 1727.0 | 7.04e-01 | 1.0000000 | ns | p = 1 | 0.0349773 | small |
| Fitness sharing | Logic-9 | 1000 | value | Phenotypic | Phylogenetic | 60 | 60 | 1455.0 | 6.98e-02 | 1.0000000 | ns | p = 1 | 0.1657446 | small |
| Fitness sharing | NK Landscape | 10 | value | Phenotypic | Phylogenetic | 60 | 60 | 1218.0 | 2.27e-03 | 0.1339300 | ns | p = 0.13393 | 0.2788554 | small |
| Fitness sharing | NK Landscape | 100 | value | Phenotypic | Phylogenetic | 60 | 60 | 911.0 | 3.10e-06 | 0.0001835 | *** | p = 0.00018349 | 0.4259492 | moderate |
| Fitness sharing | NK Landscape | 1000 | value | Phenotypic | Phylogenetic | 60 | 60 | 877.0 | 1.30e-06 | 0.0000761 | **** | p < 1e-04 | 0.4422397 | moderate |
| Fitness sharing | Sorting network | 10 | value | Phenotypic | Phylogenetic | 60 | 60 | 907.0 | 2.80e-06 | 0.0001658 | *** | p = 0.00016579 | 0.4278658 | moderate |
| Fitness sharing | Sorting network | 100 | value | Phenotypic | Phylogenetic | 60 | 60 | 941.0 | 6.60e-06 | 0.0003900 | *** | p = 0.00038999 | 0.4115752 | moderate |
| Fitness sharing | Sorting network | 1000 | value | Phenotypic | Phylogenetic | 60 | 60 | 1587.0 | 2.65e-01 | 1.0000000 | ns | p = 1 | 0.1020560 | small |
| Lexicase | Count Odds | 10 | value | Phenotypic | Phylogenetic | 60 | 60 | 1891.0 | 6.35e-01 | 1.0000000 | ns | p = 1 | 0.0436011 | small |
| Lexicase | Count Odds | 100 | value | Phenotypic | Phylogenetic | 60 | 60 | 716.0 | 0.00e+00 | 0.0000008 | **** | p < 1e-04 | 0.5193801 | large |
| Lexicase | Count Odds | 1000 | value | Phenotypic | Phylogenetic | 60 | 60 | 1038.0 | 6.42e-05 | 0.0037878 | ** | p = 0.0037878 | 0.3650993 | moderate |
| Lexicase | Logic-9 | 10 | value | Phenotypic | Phylogenetic | 60 | 60 | 1837.5 | 8.46e-01 | 1.0000000 | ns | p = 1 | 0.0179675 | small |
| Lexicase | Logic-9 | 100 | value | Phenotypic | Phylogenetic | 60 | 60 | 1370.5 | 2.43e-02 | 1.0000000 | ns | p = 1 | 0.2057880 | small |
| Lexicase | Logic-9 | 1000 | value | Phenotypic | Phylogenetic | 60 | 60 | 1668.0 | 4.88e-01 | 1.0000000 | ns | p = 1 | 0.0636086 | small |
| Lexicase | NK Landscape | 10 | value | Phenotypic | Phylogenetic | 60 | 60 | 1774.0 | 8.93e-01 | 1.0000000 | ns | p = 1 | 0.0125373 | small |
| Lexicase | NK Landscape | 100 | value | Phenotypic | Phylogenetic | 60 | 60 | 1418.0 | 4.39e-02 | 1.0000000 | ns | p = 1 | 0.1842011 | small |
| Lexicase | NK Landscape | 1000 | value | Phenotypic | Phylogenetic | 60 | 60 | 1044.0 | 6.59e-05 | 0.0038881 | ** | p = 0.0038881 | 0.3645447 | moderate |
| Lexicase | Sorting network | 10 | value | Phenotypic | Phylogenetic | 60 | 60 | 1742.0 | 6.98e-01 | 1.0000000 | ns | p = 1 | 0.0357093 | small |
| Lexicase | Sorting network | 100 | value | Phenotypic | Phylogenetic | 60 | 60 | 1722.0 | 6.01e-01 | 1.0000000 | ns | p = 1 | 0.0480229 | small |
| Random | Count Odds | 10 | value | Phenotypic | Phylogenetic | 60 | 60 | 1610.0 | 3.20e-01 | 1.0000000 | ns | p = 1 | 0.0910353 | small |
| Random | Count Odds | 100 | value | Phenotypic | Phylogenetic | 60 | 60 | 1961.0 | 4.00e-01 | 1.0000000 | ns | p = 1 | 0.0771404 | small |
| Random | Count Odds | 1000 | value | Phenotypic | Phylogenetic | 60 | 60 | 1478.0 | 9.15e-02 | 1.0000000 | ns | p = 1 | 0.1542808 | small |
| Random | Logic-9 | 10 | value | Phenotypic | Phylogenetic | 60 | 60 | 1826.0 | 8.80e-01 | 1.0000000 | ns | p = 1 | 0.0140841 | small |
| Random | Logic-9 | 100 | value | Phenotypic | Phylogenetic | 60 | 60 | 1773.5 | 8.77e-01 | 1.0000000 | ns | p = 1 | 0.0143423 | small |
| Random | Logic-9 | 1000 | value | Phenotypic | Phylogenetic | 60 | 60 | 1813.0 | 9.29e-01 | 1.0000000 | ns | p = 1 | 0.0084038 | small |
| Random | NK Landscape | 10 | value | Phenotypic | Phylogenetic | 60 | 60 | 1240.0 | 3.32e-03 | 0.1958800 | ns | p = 0.19588 | 0.2683145 | small |
| Random | NK Landscape | 100 | value | Phenotypic | Phylogenetic | 60 | 60 | 1437.0 | 5.71e-02 | 1.0000000 | ns | p = 1 | 0.1739253 | small |
| Random | NK Landscape | 1000 | value | Phenotypic | Phylogenetic | 60 | 60 | 1089.0 | 1.92e-04 | 0.0113280 |
|
p = 0.011328 | 0.3406635 | moderate |
| Random | Sorting network | 10 | value | Phenotypic | Phylogenetic | 60 | 60 | 2056.0 | 1.80e-01 | 1.0000000 | ns | p = 1 | 0.1226580 | small |
| Random | Sorting network | 100 | value | Phenotypic | Phylogenetic | 60 | 60 | 1935.0 | 4.80e-01 | 1.0000000 | ns | p = 1 | 0.0646830 | small |
| Random | Sorting network | 1000 | value | Phenotypic | Phylogenetic | 60 | 60 | 1739.0 | 7.51e-01 | 1.0000000 | ns | p = 1 | 0.0292271 | small |
| Tournament | Count Odds | 10 | value | Phenotypic | Phylogenetic | 60 | 60 | 1606.0 | 3.10e-01 | 1.0000000 | ns | p = 1 | 0.0929518 | small |
| Tournament | Count Odds | 100 | value | Phenotypic | Phylogenetic | 60 | 60 | 1217.0 | 2.23e-03 | 0.1315700 | ns | p = 0.13157 | 0.2793345 | small |
| Tournament | Count Odds | 1000 | value | Phenotypic | Phylogenetic | 60 | 60 | 1487.0 | 1.01e-01 | 1.0000000 | ns | p = 1 | 0.1499832 | small |
| Tournament | Logic-9 | 10 | value | Phenotypic | Phylogenetic | 60 | 60 | 1879.0 | 6.80e-01 | 1.0000000 | ns | p = 1 | 0.0378523 | small |
| Tournament | Logic-9 | 100 | value | Phenotypic | Phylogenetic | 60 | 60 | 1337.0 | 1.52e-02 | 0.8968000 | ns | p = 0.8968 | 0.2218428 | small |
| Tournament | Logic-9 | 1000 | value | Phenotypic | Phylogenetic | 60 | 60 | 1517.0 | 1.34e-01 | 1.0000000 | ns | p = 1 | 0.1368976 | small |
| Tournament | NK Landscape | 10 | value | Phenotypic | Phylogenetic | 60 | 60 | 1816.0 | 8.90e-01 | 1.0000000 | ns | p = 1 | 0.0129757 | small |
| Tournament | NK Landscape | 100 | value | Phenotypic | Phylogenetic | 60 | 60 | 1785.0 | 8.98e-01 | 1.0000000 | ns | p = 1 | 0.0121647 | small |
| Tournament | NK Landscape | 1000 | value | Phenotypic | Phylogenetic | 60 | 60 | 1782.0 | 8.76e-01 | 1.0000000 | ns | p = 1 | 0.0145977 | small |
| Tournament | Sorting network | 10 | value | Phenotypic | Phylogenetic | 60 | 60 | 1859.5 | 7.57e-01 | 1.0000000 | ns | p = 1 | 0.0285101 | small |
| Tournament | Sorting network | 100 | value | Phenotypic | Phylogenetic | 60 | 60 | 1063.0 | 1.11e-04 | 0.0065490 | ** | p = 0.006549 | 0.3531222 | moderate |
| Tournament | Sorting network | 1000 | value | Phenotypic | Phylogenetic | 60 | 60 | 1717.5 | 6.47e-01 | 1.0000000 | ns | p = 1 | 0.0421095 | small |
<IP_ADDRESS> Variance evolutionary distinctiveness vs. phenotypic richness
res <- data %>% group_by(SEED, selection_name, problem_name) %>%
summarise(
fit_phylo_10 = condinformation(discretize(max_performance), discretize(lag(variance_phenotype_evolutionary_distinctiveness, 1)), discretize(lag(max_performance, 1))),
fit_phylo_100 = condinformation(discretize(max_performance), discretize(lag(variance_phenotype_evolutionary_distinctiveness, 10)), discretize(lag(max_performance, 10))),
fit_phylo_1000 = condinformation(discretize(max_performance), discretize(lag(variance_phenotype_evolutionary_distinctiveness, 100)), discretize(lag(max_performance, 100))),
fit_pheno_10 = condinformation(discretize(max_performance), discretize(lag(phenotype_num_taxa, 1)), discretize(lag(max_performance, 1))),
fit_pheno_100 = condinformation(discretize(max_performance), discretize(lag(phenotype_num_taxa, 10)), discretize(lag(max_performance, 10))),
fit_pheno_1000 = condinformation(discretize(max_performance), discretize(lag(phenotype_num_taxa, 100)), discretize(lag(max_performance, 100)))
)
res <- res %>% pivot_longer(cols=contains("o_10"))
res$offset <- str_extract(res$name, "[:digit:]*$")
res$Type <- case_when(str_detect(res$name, "phylo") ~ "Phylogenetic", TRUE ~ "Phenotypic")
ggplot(
res %>% filter(str_detect(name, "fit_ph*")),
aes(
x=as.factor(offset),
y=value,
color=Type
)
) +
geom_boxplot() +
facet_wrap(~selection_name*problem_name, ncol=4) +
scale_x_discrete("Lag") +
scale_y_continuous("Transfer Entropy") +
scale_color_discrete("") +
theme(legend.position = "bottom")
# Determine which conditions are significantly different from each other
transfer_entropy_stats(res)
| selection_name | problem_name | offset | .y. | group1 | group2 | n1 | n2 | statistic | p | p.adj | p.adj.signif | label | effsize | magnitude |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Eco-EA | Count Odds | 10 | value | Phenotypic | Phylogenetic | 60 | 60 | 1719.0 | 0.673000 | 1.000000 | ns | p = 1 | 0.0388098 | small |
| Eco-EA | Count Odds | 100 | value | Phenotypic | Phylogenetic | 60 | 60 | 1139.0 | 0.000527 | 0.031093 |
|
p = 0.031093 | 0.3167069 | moderate |
| Eco-EA | Count Odds | 1000 | value | Phenotypic | Phylogenetic | 60 | 60 | 1238.0 | 0.003210 | 0.189390 | ns | p = 0.18939 | 0.2692821 | small |
| Eco-EA | Logic-9 | 10 | value | Phenotypic | Phylogenetic | 60 | 60 | 1772.0 | 0.885000 | 1.000000 | ns | p = 1 | 0.0134160 | small |
| Eco-EA | Logic-9 | 100 | value | Phenotypic | Phylogenetic | 60 | 60 | 1278.0 | 0.006200 | 0.365800 | ns | p = 0.3658 | 0.2501118 | small |
| Eco-EA | Logic-9 | 1000 | value | Phenotypic | Phylogenetic | 60 | 60 | 1662.0 | 0.468000 | 1.000000 | ns | p = 1 | 0.0664209 | small |
| Eco-EA | NK Landscape | 10 | value | Phenotypic | Phylogenetic | 60 | 60 | 1424.5 | 0.049000 | 1.000000 | ns | p = 1 | 0.1799147 | small |
| Eco-EA | NK Landscape | 100 | value | Phenotypic | Phylogenetic | 60 | 60 | 1432.5 | 0.054100 | 1.000000 | ns | p = 1 | 0.1760817 | small |
| Eco-EA | NK Landscape | 1000 | value | Phenotypic | Phylogenetic | 60 | 60 | 1560.0 | 0.209000 | 1.000000 | ns | p = 1 | 0.1149939 | small |
| Eco-EA | Sorting network | 10 | value | Phenotypic | Phylogenetic | 60 | 60 | 1927.5 | 0.504000 | 1.000000 | ns | p = 1 | 0.0611678 | small |
| Eco-EA | Sorting network | 100 | value | Phenotypic | Phylogenetic | 60 | 60 | 2162.5 | 0.057400 | 1.000000 | ns | p = 1 | 0.1736866 | small |
| Eco-EA | Sorting network | 1000 | value | Phenotypic | Phylogenetic | 60 | 60 | 1799.0 | 0.993000 | 1.000000 | ns | p = 1 | 0.0015407 | small |
| Fitness sharing | Count Odds | 10 | value | Phenotypic | Phylogenetic | 60 | 60 | 2113.0 | 0.101000 | 1.000000 | ns | p = 1 | 0.1499686 | small |
| Fitness sharing | Count Odds | 100 | value | Phenotypic | Phylogenetic | 60 | 60 | 2054.0 | 0.183000 | 1.000000 | ns | p = 1 | 0.1216998 | small |
| Fitness sharing | Count Odds | 1000 | value | Phenotypic | Phylogenetic | 60 | 60 | 1782.0 | 0.927000 | 1.000000 | ns | p = 1 | 0.0086244 | small |
| Fitness sharing | Logic-9 | 10 | value | Phenotypic | Phylogenetic | 60 | 60 | 1642.0 | 0.408000 | 1.000000 | ns | p = 1 | 0.0757043 | small |
| Fitness sharing | Logic-9 | 100 | value | Phenotypic | Phylogenetic | 60 | 60 | 1389.0 | 0.031200 | 1.000000 | ns | p = 1 | 0.1969271 | small |
| Fitness sharing | Logic-9 | 1000 | value | Phenotypic | Phylogenetic | 60 | 60 | 1639.0 | 0.398000 | 1.000000 | ns | p = 1 | 0.0774129 | small |
| Fitness sharing | NK Landscape | 10 | value | Phenotypic | Phylogenetic | 60 | 60 | 1410.0 | 0.040900 | 1.000000 | ns | p = 1 | 0.1868619 | small |
| Fitness sharing | NK Landscape | 100 | value | Phenotypic | Phylogenetic | 60 | 60 | 1304.0 | 0.009300 | 0.548700 | ns | p = 0.5487 | 0.2376500 | small |
| Fitness sharing | NK Landscape | 1000 | value | Phenotypic | Phylogenetic | 60 | 60 | 1372.0 | 0.024800 | 1.000000 | ns | p = 1 | 0.2050689 | small |
| Fitness sharing | Sorting network | 10 | value | Phenotypic | Phylogenetic | 60 | 60 | 1131.0 | 0.000450 | 0.026550 |
|
p = 0.02655 | 0.3205400 | moderate |
| Fitness sharing | Sorting network | 100 | value | Phenotypic | Phylogenetic | 60 | 60 | 2299.0 | 0.008890 | 0.524510 | ns | p = 0.52451 | 0.2390874 | small |
| Fitness sharing | Sorting network | 1000 | value | Phenotypic | Phylogenetic | 60 | 60 | 1952.0 | 0.427000 | 1.000000 | ns | p = 1 | 0.0728282 | small |
| Lexicase | Count Odds | 10 | value | Phenotypic | Phylogenetic | 60 | 60 | 1861.0 | 0.751000 | 1.000000 | ns | p = 1 | 0.0292271 | small |
| Lexicase | Count Odds | 100 | value | Phenotypic | Phylogenetic | 60 | 60 | 1282.0 | 0.006600 | 0.389400 | ns | p = 0.3894 | 0.2481909 | small |
| Lexicase | Count Odds | 1000 | value | Phenotypic | Phylogenetic | 60 | 60 | 1178.0 | 0.001110 | 0.065490 | ns | p = 0.06549 | 0.2980207 | small |
| Lexicase | Logic-9 | 10 | value | Phenotypic | Phylogenetic | 60 | 60 | 1705.5 | 0.622000 | 1.000000 | ns | p = 1 | 0.0452781 | small |
| Lexicase | Logic-9 | 100 | value | Phenotypic | Phylogenetic | 60 | 60 | 1334.0 | 0.014600 | 0.861400 | ns | p = 0.8614 | 0.2232767 | small |
| Lexicase | Logic-9 | 1000 | value | Phenotypic | Phylogenetic | 60 | 60 | 1697.0 | 0.589000 | 1.000000 | ns | p = 1 | 0.0495490 | small |
| Lexicase | NK Landscape | 10 | value | Phenotypic | Phylogenetic | 60 | 60 | 1765.0 | 0.855000 | 1.000000 | ns | p = 1 | 0.0168771 | small |
| Lexicase | NK Landscape | 100 | value | Phenotypic | Phylogenetic | 60 | 60 | 1576.0 | 0.238000 | 1.000000 | ns | p = 1 | 0.1080132 | small |
| Lexicase | NK Landscape | 1000 | value | Phenotypic | Phylogenetic | 60 | 60 | 1346.0 | 0.016600 | 0.979400 | ns | p = 0.9794 | 0.2189197 | small |
| Lexicase | Sorting network | 10 | value | Phenotypic | Phylogenetic | 60 | 60 | 1784.0 | 0.917000 | 1.000000 | ns | p = 1 | 0.0098507 | small |
| Lexicase | Sorting network | 100 | value | Phenotypic | Phylogenetic | 60 | 60 | 1705.0 | 0.524000 | 1.000000 | ns | p = 1 | 0.0584883 | small |
| Random | Count Odds | 10 | value | Phenotypic | Phylogenetic | 60 | 60 | 1721.0 | 0.680000 | 1.000000 | ns | p = 1 | 0.0378515 | small |
| Random | Count Odds | 100 | value | Phenotypic | Phylogenetic | 60 | 60 | 1773.0 | 0.889000 | 1.000000 | ns | p = 1 | 0.0129366 | small |
| Random | Count Odds | 1000 | value | Phenotypic | Phylogenetic | 60 | 60 | 1580.0 | 0.249000 | 1.000000 | ns | p = 1 | 0.1054093 | small |
| Random | Logic-9 | 10 | value | Phenotypic | Phylogenetic | 60 | 60 | 1728.0 | 0.672000 | 1.000000 | ns | p = 1 | 0.0389639 | small |
| Random | Logic-9 | 100 | value | Phenotypic | Phylogenetic | 60 | 60 | 1733.5 | 0.696000 | 1.000000 | ns | p = 1 | 0.0359860 | small |
| Random | Logic-9 | 1000 | value | Phenotypic | Phylogenetic | 60 | 60 | 1761.5 | 0.788000 | 1.000000 | ns | p = 1 | 0.0248872 | small |
| Random | NK Landscape | 10 | value | Phenotypic | Phylogenetic | 60 | 60 | 1822.0 | 0.910000 | 1.000000 | ns | p = 1 | 0.0105409 | small |
| Random | NK Landscape | 100 | value | Phenotypic | Phylogenetic | 60 | 60 | 1652.0 | 0.439000 | 1.000000 | ns | p = 1 | 0.0709117 | small |
| Random | NK Landscape | 1000 | value | Phenotypic | Phylogenetic | 60 | 60 | 1587.0 | 0.265000 | 1.000000 | ns | p = 1 | 0.1020553 | small |
| Random | Sorting network | 10 | value | Phenotypic | Phylogenetic | 60 | 60 | 2113.0 | 0.101000 | 1.000000 | ns | p = 1 | 0.1499686 | small |
| Random | Sorting network | 100 | value | Phenotypic | Phylogenetic | 60 | 60 | 1629.0 | 0.371000 | 1.000000 | ns | p = 1 | 0.0819317 | small |
| Random | Sorting network | 1000 | value | Phenotypic | Phylogenetic | 60 | 60 | 1852.0 | 0.787000 | 1.000000 | ns | p = 1 | 0.0249149 | small |
| Tournament | Count Odds | 10 | value | Phenotypic | Phylogenetic | 60 | 60 | 1633.0 | 0.382000 | 1.000000 | ns | p = 1 | 0.0800152 | small |
| Tournament | Count Odds | 100 | value | Phenotypic | Phylogenetic | 60 | 60 | 1153.0 | 0.000691 | 0.040769 |
|
p = 0.040769 | 0.3099990 | moderate |
| Tournament | Count Odds | 1000 | value | Phenotypic | Phylogenetic | 60 | 60 | 1599.5 | 0.294000 | 1.000000 | ns | p = 1 | 0.0960720 | small |
| Tournament | Logic-9 | 10 | value | Phenotypic | Phylogenetic | 60 | 60 | 1869.0 | 0.719000 | 1.000000 | ns | p = 1 | 0.0330607 | small |
| Tournament | Logic-9 | 100 | value | Phenotypic | Phylogenetic | 60 | 60 | 1284.0 | 0.006820 | 0.402380 | ns | p = 0.40238 | 0.2472369 | small |
| Tournament | Logic-9 | 1000 | value | Phenotypic | Phylogenetic | 60 | 60 | 1620.0 | 0.341000 | 1.000000 | ns | p = 1 | 0.0871542 | small |
| Tournament | NK Landscape | 10 | value | Phenotypic | Phylogenetic | 60 | 60 | 1811.0 | 0.926000 | 1.000000 | ns | p = 1 | 0.0089208 | small |
| Tournament | NK Landscape | 100 | value | Phenotypic | Phylogenetic | 60 | 60 | 1780.0 | 0.862000 | 1.000000 | ns | p = 1 | 0.0162196 | small |
| Tournament | NK Landscape | 1000 | value | Phenotypic | Phylogenetic | 60 | 60 | 1775.0 | 0.828000 | 1.000000 | ns | p = 1 | 0.0202745 | small |
| Tournament | Sorting network | 10 | value | Phenotypic | Phylogenetic | 60 | 60 | 1907.5 | 0.574000 | 1.000000 | ns | p = 1 | 0.0515099 | small |
| Tournament | Sorting network | 100 | value | Phenotypic | Phylogenetic | 60 | 60 | 1287.0 | 0.007150 | 0.421850 | ns | p = 0.42185 | 0.2457952 | small |
| Tournament | Sorting network | 1000 | value | Phenotypic | Phylogenetic | 60 | 60 | 1679.0 | 0.502000 | 1.000000 | ns | p = 1 | 0.0615535 | small |
3.7.3 Transfer entropy between types of diversity
While we’re calculating transfer entropy, we might as well also calculate it between phenotypic diversity and phylogenetic diversity, as these could potentially also be in a feedback loop.
<IP_ADDRESS> Max pairwise distance and phenotypic richness
res <- data %>% group_by(SEED, selection_name, problem_name) %>%
summarise(
phen_phylo_10 = condinformation(discretize(phenotype_num_taxa),
discretize(lag(max_phenotype_pairwise_distance, 1)),
discretize(lag(phenotype_num_taxa, 1))),
phen_phylo_100 = condinformation(discretize(phenotype_num_taxa),
discretize(lag(max_phenotype_pairwise_distance, 10)),
discretize(lag(phenotype_num_taxa, 10))),
pheno_phylo_1000 = condinformation(discretize(phenotype_num_taxa),
discretize(lag(max_phenotype_pairwise_distance, 100)),
discretize(lag(phenotype_num_taxa, 100))),
phylo_pheno_10 = condinformation(discretize(max_phenotype_pairwise_distance),
discretize(lag(phenotype_num_taxa, 1)),
discretize(lag(max_phenotype_pairwise_distance, 1))),
phylo_pheno_100 = condinformation(discretize(max_phenotype_pairwise_distance),
discretize(lag(phenotype_num_taxa, 10)),
discretize(lag(max_phenotype_pairwise_distance, 10))),
phylo_pheno_1000 = condinformation(discretize(max_phenotype_pairwise_distance),
discretize(lag(phenotype_num_taxa, 100)),
discretize(lag(max_phenotype_pairwise_distance, 100))))
# Turn Transfer Entropy columns into rows
res <- res %>% pivot_longer(cols=contains("phylo"))
# Pull lag into a column
res$offset <- str_extract(res$name, "[:digit:]*$")
# Make column indicating direction of transfer entropy
res$Type <- case_when(str_detect(res$name, "phylo_pheno") ~ "\nPhenotypic\n\t->\nPhylogenetic\n", TRUE ~ "\nPhylogenetic\n\t->\nPhenotypic\n")
ggplot(
res,
aes(
x=as.factor(offset),
y=value,
color=Type
)
) +
geom_boxplot() +
facet_wrap(~selection_name* problem_name, ncol=4) +
scale_y_continuous("Transfer Entropy") +
scale_color_discrete("")
# Determine which conditions are significantly different from each other
transfer_entropy_stats(res)
| selection_name | problem_name | offset | .y. | group1 | group2 | n1 | n2 | statistic | p | p.adj | p.adj.signif | label | effsize | magnitude |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Eco-EA | Count Odds | 10 | value | Phenotypic -> Phylogenetic | Phylogenetic -> Phenotypic | 60 | 60 | 13.0 | 0.00e+00 | 0.0000000 | **** | p < 1e-04 | 0.8562106 | large |
| Eco-EA | Count Odds | 100 | value | Phenotypic -> Phylogenetic | Phylogenetic -> Phenotypic | 60 | 60 | 223.0 | 0.00e+00 | 0.0000000 | **** | p < 1e-04 | 0.7555927 | large |
| Eco-EA | Count Odds | 1000 | value | Phenotypic -> Phylogenetic | Phylogenetic -> Phenotypic | 60 | 60 | 855.0 | 7.00e-07 | 0.0000429 | **** | p < 1e-04 | 0.4527807 | moderate |
| Eco-EA | Logic-9 | 10 | value | Phenotypic -> Phylogenetic | Phylogenetic -> Phenotypic | 60 | 60 | 1931.0 | 4.93e-01 | 1.0000000 | ns | p = 1 | 0.0627664 | small |
| Eco-EA | Logic-9 | 100 | value | Phenotypic -> Phylogenetic | Phylogenetic -> Phenotypic | 60 | 60 | 1919.0 | 5.34e-01 | 1.0000000 | ns | p = 1 | 0.0570168 | small |
| Eco-EA | Logic-9 | 1000 | value | Phenotypic -> Phylogenetic | Phylogenetic -> Phenotypic | 60 | 60 | 1910.0 | 5.65e-01 | 1.0000000 | ns | p = 1 | 0.0527046 | small |
| Eco-EA | NK Landscape | 10 | value | Phenotypic -> Phylogenetic | Phylogenetic -> Phenotypic | 60 | 60 | 88.0 | 0.00e+00 | 0.0000000 | **** | p < 1e-04 | 0.8202757 | large |
| Eco-EA | NK Landscape | 100 | value | Phenotypic -> Phylogenetic | Phylogenetic -> Phenotypic | 60 | 60 | 601.0 | 0.00e+00 | 0.0000000 | **** | p < 1e-04 | 0.5744804 | large |
| Eco-EA | NK Landscape | 1000 | value | Phenotypic -> Phylogenetic | Phylogenetic -> Phenotypic | 60 | 60 | 1137.0 | 5.07e-04 | 0.0304200 |
|
p = 0.03042 | 0.3176652 | moderate |
| Eco-EA | Sorting network | 10 | value | Phenotypic -> Phylogenetic | Phylogenetic -> Phenotypic | 60 | 60 | 104.0 | 0.00e+00 | 0.0000000 | **** | p < 1e-04 | 0.8126095 | large |
| Eco-EA | Sorting network | 100 | value | Phenotypic -> Phylogenetic | Phylogenetic -> Phenotypic | 60 | 60 | 893.0 | 2.00e-06 | 0.0001176 | *** | p = 0.0001176 | 0.4345736 | moderate |
| Eco-EA | Sorting network | 1000 | value | Phenotypic -> Phylogenetic | Phylogenetic -> Phenotypic | 60 | 60 | 1533.0 | 1.62e-01 | 1.0000000 | ns | p = 1 | 0.1279307 | small |
| Fitness sharing | Count Odds | 10 | value | Phenotypic -> Phylogenetic | Phylogenetic -> Phenotypic | 60 | 60 | 9.0 | 0.00e+00 | 0.0000000 | **** | p < 1e-04 | 0.8581272 | large |
| Fitness sharing | Count Odds | 100 | value | Phenotypic -> Phylogenetic | Phylogenetic -> Phenotypic | 60 | 60 | 1754.0 | 8.11e-01 | 1.0000000 | ns | p = 1 | 0.0220401 | small |
| Fitness sharing | Count Odds | 1000 | value | Phenotypic -> Phylogenetic | Phylogenetic -> Phenotypic | 60 | 60 | 1966.0 | 3.85e-01 | 1.0000000 | ns | p = 1 | 0.0795361 | small |
| Fitness sharing | Logic-9 | 10 | value | Phenotypic -> Phylogenetic | Phylogenetic -> Phenotypic | 60 | 60 | 661.0 | 0.00e+00 | 0.0000001 | **** | p < 1e-04 | 0.5457325 | large |
| Fitness sharing | Logic-9 | 100 | value | Phenotypic -> Phylogenetic | Phylogenetic -> Phenotypic | 60 | 60 | 824.0 | 3.00e-07 | 0.0000183 | **** | p < 1e-04 | 0.4676338 | moderate |
| Fitness sharing | Logic-9 | 1000 | value | Phenotypic -> Phylogenetic | Phylogenetic -> Phenotypic | 60 | 60 | 1273.0 | 5.72e-03 | 0.3432000 | ns | p = 0.3432 | 0.2525031 | small |
| Fitness sharing | NK Landscape | 10 | value | Phenotypic -> Phylogenetic | Phylogenetic -> Phenotypic | 60 | 60 | 0.0 | 0.00e+00 | 0.0000000 | **** | p < 1e-04 | 0.8624394 | large |
| Fitness sharing | NK Landscape | 100 | value | Phenotypic -> Phylogenetic | Phylogenetic -> Phenotypic | 60 | 60 | 6.0 | 0.00e+00 | 0.0000000 | **** | p < 1e-04 | 0.8595646 | large |
| Fitness sharing | NK Landscape | 1000 | value | Phenotypic -> Phylogenetic | Phylogenetic -> Phenotypic | 60 | 60 | 78.0 | 0.00e+00 | 0.0000000 | **** | p < 1e-04 | 0.8250670 | large |
| Fitness sharing | Sorting network | 10 | value | Phenotypic -> Phylogenetic | Phylogenetic -> Phenotypic | 60 | 60 | 13.0 | 0.00e+00 | 0.0000000 | **** | p < 1e-04 | 0.8562106 | large |
| Fitness sharing | Sorting network | 100 | value | Phenotypic -> Phylogenetic | Phylogenetic -> Phenotypic | 60 | 60 | 2704.0 | 2.10e-06 | 0.0001266 | *** | p = 0.0001266 | 0.4331362 | moderate |
| Fitness sharing | Sorting network | 1000 | value | Phenotypic -> Phylogenetic | Phylogenetic -> Phenotypic | 60 | 60 | 2574.0 | 4.91e-05 | 0.0029460 | ** | p = 0.002946 | 0.3708489 | moderate |
| Lexicase | Count Odds | 10 | value | Phenotypic -> Phylogenetic | Phylogenetic -> Phenotypic | 60 | 60 | 0.0 | 0.00e+00 | 0.0000000 | **** | p < 1e-04 | 0.8624394 | large |
| Lexicase | Count Odds | 100 | value | Phenotypic -> Phylogenetic | Phylogenetic -> Phenotypic | 60 | 60 | 21.0 | 0.00e+00 | 0.0000000 | **** | p < 1e-04 | 0.8523776 | large |
| Lexicase | Count Odds | 1000 | value | Phenotypic -> Phylogenetic | Phylogenetic -> Phenotypic | 60 | 60 | 450.0 | 0.00e+00 | 0.0000000 | **** | p < 1e-04 | 0.6468295 | large |
| Lexicase | Logic-9 | 10 | value | Phenotypic -> Phylogenetic | Phylogenetic -> Phenotypic | 60 | 60 | 1406.0 | 3.89e-02 | 1.0000000 | ns | p = 1 | 0.1887784 | small |
| Lexicase | Logic-9 | 100 | value | Phenotypic -> Phylogenetic | Phylogenetic -> Phenotypic | 60 | 60 | 1553.0 | 1.96e-01 | 1.0000000 | ns | p = 1 | 0.1183458 | small |
| Lexicase | Logic-9 | 1000 | value | Phenotypic -> Phylogenetic | Phylogenetic -> Phenotypic | 60 | 60 | 1409.0 | 4.04e-02 | 1.0000000 | ns | p = 1 | 0.1873410 | small |
| Lexicase | NK Landscape | 10 | value | Phenotypic -> Phylogenetic | Phylogenetic -> Phenotypic | 60 | 60 | 0.0 | 0.00e+00 | 0.0000000 | **** | p < 1e-04 | 0.8624394 | large |
| Lexicase | NK Landscape | 100 | value | Phenotypic -> Phylogenetic | Phylogenetic -> Phenotypic | 60 | 60 | 0.0 | 0.00e+00 | 0.0000000 | **** | p < 1e-04 | 0.8624394 | large |
| Lexicase | NK Landscape | 1000 | value | Phenotypic -> Phylogenetic | Phylogenetic -> Phenotypic | 60 | 60 | 8.0 | 0.00e+00 | 0.0000000 | **** | p < 1e-04 | 0.8586063 | large |
| Lexicase | Sorting network | 10 | value | Phenotypic -> Phylogenetic | Phylogenetic -> Phenotypic | 60 | 60 | 62.0 | 0.00e+00 | 0.0000000 | **** | p < 1e-04 | 0.8327331 | large |
| Lexicase | Sorting network | 100 | value | Phenotypic -> Phylogenetic | Phylogenetic -> Phenotypic | 60 | 60 | 239.0 | 0.00e+00 | 0.0000000 | **** | p < 1e-04 | 0.7479266 | large |
| Lexicase | Sorting network | 1000 | value | Phenotypic -> Phylogenetic | Phylogenetic -> Phenotypic | 60 | 60 | 30.0 | 0.00e+00 | 0.0000000 | **** | p < 1e-04 | 0.9099165 | large |
| Random | Count Odds | 10 | value | Phenotypic -> Phylogenetic | Phylogenetic -> Phenotypic | 60 | 60 | 0.0 | 0.00e+00 | 0.0000000 | **** | p < 1e-04 | 0.8624394 | large |
| Random | Count Odds | 100 | value | Phenotypic -> Phylogenetic | Phylogenetic -> Phenotypic | 60 | 60 | 12.0 | 0.00e+00 | 0.0000000 | **** | p < 1e-04 | 0.8566898 | large |
| Random | Count Odds | 1000 | value | Phenotypic -> Phylogenetic | Phylogenetic -> Phenotypic | 60 | 60 | 61.0 | 0.00e+00 | 0.0000000 | **** | p < 1e-04 | 0.8332123 | large |
| Random | Logic-9 | 10 | value | Phenotypic -> Phylogenetic | Phylogenetic -> Phenotypic | 60 | 60 | 327.0 | 0.00e+00 | 0.0000000 | **** | p < 1e-04 | 0.7057629 | large |
| Random | Logic-9 | 100 | value | Phenotypic -> Phylogenetic | Phylogenetic -> Phenotypic | 60 | 60 | 924.0 | 4.30e-06 | 0.0002592 | *** | p = 0.0002592 | 0.4197205 | moderate |
| Random | Logic-9 | 1000 | value | Phenotypic -> Phylogenetic | Phylogenetic -> Phenotypic | 60 | 60 | 1283.0 | 6.71e-03 | 0.4026000 | ns | p = 0.4026 | 0.2477118 | small |
| Random | NK Landscape | 10 | value | Phenotypic -> Phylogenetic | Phylogenetic -> Phenotypic | 60 | 60 | 0.0 | 0.00e+00 | 0.0000000 | **** | p < 1e-04 | 0.8624394 | large |
| Random | NK Landscape | 100 | value | Phenotypic -> Phylogenetic | Phylogenetic -> Phenotypic | 60 | 60 | 0.0 | 0.00e+00 | 0.0000000 | **** | p < 1e-04 | 0.8624394 | large |
| Random | NK Landscape | 1000 | value | Phenotypic -> Phylogenetic | Phylogenetic -> Phenotypic | 60 | 60 | 40.0 | 0.00e+00 | 0.0000000 | **** | p < 1e-04 | 0.8432740 | large |
| Random | Sorting network | 10 | value | Phenotypic -> Phylogenetic | Phylogenetic -> Phenotypic | 60 | 60 | 155.0 | 0.00e+00 | 0.0000000 | **** | p < 1e-04 | 0.7881738 | large |
| Random | Sorting network | 100 | value | Phenotypic -> Phylogenetic | Phylogenetic -> Phenotypic | 60 | 60 | 212.0 | 0.00e+00 | 0.0000000 | **** | p < 1e-04 | 0.7608632 | large |
| Random | Sorting network | 1000 | value | Phenotypic -> Phylogenetic | Phylogenetic -> Phenotypic | 60 | 60 | 126.0 | 0.00e+00 | 0.0000000 | **** | p < 1e-04 | 0.8020686 | large |
| Tournament | Count Odds | 10 | value | Phenotypic -> Phylogenetic | Phylogenetic -> Phenotypic | 60 | 60 | 1761.0 | 8.40e-01 | 1.0000000 | ns | p = 1 | 0.0186862 | small |
| Tournament | Count Odds | 100 | value | Phenotypic -> Phylogenetic | Phylogenetic -> Phenotypic | 60 | 60 | 2479.0 | 3.69e-04 | 0.0221400 |
|
p = 0.02214 | 0.3253313 | moderate |
| Tournament | Count Odds | 1000 | value | Phenotypic -> Phylogenetic | Phylogenetic -> Phenotypic | 60 | 60 | 2207.0 | 3.29e-02 | 1.0000000 | ns | p = 1 | 0.1950071 | small |
| Tournament | Logic-9 | 10 | value | Phenotypic -> Phylogenetic | Phylogenetic -> Phenotypic | 60 | 60 | 2835.0 | 1.00e-07 | 0.0000034 | **** | p < 1e-04 | 0.4959026 | moderate |
| Tournament | Logic-9 | 100 | value | Phenotypic -> Phylogenetic | Phylogenetic -> Phenotypic | 60 | 60 | 2802.0 | 1.00e-07 | 0.0000088 | **** | p < 1e-04 | 0.4800912 | moderate |
| Tournament | Logic-9 | 1000 | value | Phenotypic -> Phylogenetic | Phylogenetic -> Phenotypic | 60 | 60 | 2201.5 | 3.53e-02 | 1.0000000 | ns | p = 1 | 0.1923752 | small |
| Tournament | NK Landscape | 10 | value | Phenotypic -> Phylogenetic | Phylogenetic -> Phenotypic | 60 | 60 | 308.0 | 0.00e+00 | 0.0000000 | **** | p < 1e-04 | 0.7148664 | large |
| Tournament | NK Landscape | 100 | value | Phenotypic -> Phylogenetic | Phylogenetic -> Phenotypic | 60 | 60 | 682.0 | 0.00e+00 | 0.0000003 | **** | p < 1e-04 | 0.5356707 | large |
| Tournament | NK Landscape | 1000 | value | Phenotypic -> Phylogenetic | Phylogenetic -> Phenotypic | 60 | 60 | 1216.5 | 2.21e-03 | 0.1326000 | ns | p = 0.1326 | 0.2795746 | small |
| Tournament | Sorting network | 10 | value | Phenotypic -> Phylogenetic | Phylogenetic -> Phenotypic | 60 | 60 | 586.0 | 0.00e+00 | 0.0000000 | **** | p < 1e-04 | 0.5816674 | large |
| Tournament | Sorting network | 100 | value | Phenotypic -> Phylogenetic | Phylogenetic -> Phenotypic | 60 | 60 | 1292.0 | 7.73e-03 | 0.4638000 | ns | p = 0.4638 | 0.2433996 | small |
| Tournament | Sorting network | 1000 | value | Phenotypic -> Phylogenetic | Phylogenetic -> Phenotypic | 60 | 60 | 1090.5 | 1.98e-04 | 0.0118800 |
|
p = 0.01188 | 0.3399454 | moderate |
<IP_ADDRESS> Mean pairwise distance and phenotypic richness
res <- data %>% group_by(SEED, selection_name, problem_name) %>%
summarise(
phen_phylo_10 = condinformation(discretize(phenotype_num_taxa),
discretize(lag(mean_phenotype_pairwise_distance, 1)),
discretize(lag(phenotype_num_taxa, 1))),
phen_phylo_100 = condinformation(discretize(phenotype_num_taxa),
discretize(lag(mean_phenotype_pairwise_distance, 10)),
discretize(lag(phenotype_num_taxa, 10))),
pheno_phylo_1000 = condinformation(discretize(phenotype_num_taxa),
discretize(lag(mean_phenotype_pairwise_distance, 100)),
discretize(lag(phenotype_num_taxa, 100))),
phylo_pheno_10 = condinformation(discretize(mean_phenotype_pairwise_distance),
discretize(lag(phenotype_num_taxa, 1)),
discretize(lag(mean_phenotype_pairwise_distance, 1))),
phylo_pheno_100 = condinformation(discretize(mean_phenotype_pairwise_distance),
discretize(lag(phenotype_num_taxa, 10)),
discretize(lag(mean_phenotype_pairwise_distance, 10))),
phylo_pheno_1000 = condinformation(discretize(mean_phenotype_pairwise_distance),
discretize(lag(phenotype_num_taxa, 100)),
discretize(lag(mean_phenotype_pairwise_distance, 100)))
)
# Turn Transfer Entropy columns into rows
res <- res %>% pivot_longer(cols=contains("phylo"))
# Pull lag into a column
res$offset <- str_extract(res$name, "[:digit:]*$")
# Make column indicating direction of transfer entropy
res$Type <- case_when(str_detect(res$name, "phylo_pheno") ~ "\nPhenotypic\n\t->\nPhylogenetic\n", TRUE ~ "\nPhylogenetic\n\t->\nPhenotypic\n")
ggplot(
res,
aes(
x=as.factor(offset),
y=value,
color=Type
)
) +
geom_boxplot() +
facet_wrap(~selection_name*problem_name, ncol=4) +
scale_y_continuous("Transfer Entropy") +
scale_color_discrete("")
# Determine which conditions are significantly different from each other
transfer_entropy_stats(res)
| selection_name | problem_name | offset | .y. | group1 | group2 | n1 | n2 | statistic | p | p.adj | p.adj.signif | label | effsize | magnitude |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Eco-EA | Count Odds | 10 | value | Phenotypic -> Phylogenetic | Phylogenetic -> Phenotypic | 60 | 60 | 293.0 | 0.00e+00 | 0.0000000 | **** | p < 1e-04 | 0.7220534 | large |
| Eco-EA | Count Odds | 100 | value | Phenotypic -> Phylogenetic | Phylogenetic -> Phenotypic | 60 | 60 | 786.0 | 1.00e-07 | 0.0000062 | **** | p < 1e-04 | 0.4858408 | moderate |
| Eco-EA | Count Odds | 1000 | value | Phenotypic -> Phylogenetic | Phylogenetic -> Phenotypic | 60 | 60 | 1136.0 | 4.97e-04 | 0.0298200 |
|
p = 0.02982 | 0.3181443 | moderate |
| Eco-EA | Logic-9 | 10 | value | Phenotypic -> Phylogenetic | Phylogenetic -> Phenotypic | 60 | 60 | 1358.0 | 2.05e-02 | 1.0000000 | ns | p = 1 | 0.2117768 | small |
| Eco-EA | Logic-9 | 100 | value | Phenotypic -> Phylogenetic | Phylogenetic -> Phenotypic | 60 | 60 | 1973.0 | 3.65e-01 | 1.0000000 | ns | p = 1 | 0.0828900 | small |
| Eco-EA | Logic-9 | 1000 | value | Phenotypic -> Phylogenetic | Phylogenetic -> Phenotypic | 60 | 60 | 1729.0 | 7.11e-01 | 1.0000000 | ns | p = 1 | 0.0340184 | small |
| Eco-EA | NK Landscape | 10 | value | Phenotypic -> Phylogenetic | Phylogenetic -> Phenotypic | 60 | 60 | 103.0 | 0.00e+00 | 0.0000000 | **** | p < 1e-04 | 0.8130887 | large |
| Eco-EA | NK Landscape | 100 | value | Phenotypic -> Phylogenetic | Phylogenetic -> Phenotypic | 60 | 60 | 929.0 | 4.90e-06 | 0.0002940 | *** | p = 0.000294 | 0.4173248 | moderate |
| Eco-EA | NK Landscape | 1000 | value | Phenotypic -> Phylogenetic | Phylogenetic -> Phenotypic | 60 | 60 | 1215.0 | 2.16e-03 | 0.1296000 | ns | p = 0.1296 | 0.2802928 | small |
| Eco-EA | Sorting network | 10 | value | Phenotypic -> Phylogenetic | Phylogenetic -> Phenotypic | 60 | 60 | 63.0 | 0.00e+00 | 0.0000000 | **** | p < 1e-04 | 0.8322540 | large |
| Eco-EA | Sorting network | 100 | value | Phenotypic -> Phylogenetic | Phylogenetic -> Phenotypic | 60 | 60 | 798.0 | 1.00e-07 | 0.0000088 | **** | p < 1e-04 | 0.4800912 | moderate |
| Eco-EA | Sorting network | 1000 | value | Phenotypic -> Phylogenetic | Phylogenetic -> Phenotypic | 60 | 60 | 1946.0 | 4.45e-01 | 1.0000000 | ns | p = 1 | 0.0699546 | small |
| Fitness sharing | Count Odds | 10 | value | Phenotypic -> Phylogenetic | Phylogenetic -> Phenotypic | 60 | 60 | 8.0 | 0.00e+00 | 0.0000000 | **** | p < 1e-04 | 0.8586063 | large |
| Fitness sharing | Count Odds | 100 | value | Phenotypic -> Phylogenetic | Phylogenetic -> Phenotypic | 60 | 60 | 1961.0 | 4.00e-01 | 1.0000000 | ns | p = 1 | 0.0771404 | small |
| Fitness sharing | Count Odds | 1000 | value | Phenotypic -> Phylogenetic | Phylogenetic -> Phenotypic | 60 | 60 | 1984.0 | 3.35e-01 | 1.0000000 | ns | p = 1 | 0.0881605 | small |
| Fitness sharing | Logic-9 | 10 | value | Phenotypic -> Phylogenetic | Phylogenetic -> Phenotypic | 60 | 60 | 595.0 | 0.00e+00 | 0.0000000 | **** | p < 1e-04 | 0.5773552 | large |
| Fitness sharing | Logic-9 | 100 | value | Phenotypic -> Phylogenetic | Phylogenetic -> Phenotypic | 60 | 60 | 884.0 | 1.60e-06 | 0.0000930 | **** | p < 1e-04 | 0.4388858 | moderate |
| Fitness sharing | Logic-9 | 1000 | value | Phenotypic -> Phylogenetic | Phylogenetic -> Phenotypic | 60 | 60 | 807.0 | 2.00e-07 | 0.0000114 | **** | p < 1e-04 | 0.4757790 | moderate |
| Fitness sharing | NK Landscape | 10 | value | Phenotypic -> Phylogenetic | Phylogenetic -> Phenotypic | 60 | 60 | 0.0 | 0.00e+00 | 0.0000000 | **** | p < 1e-04 | 0.8624394 | large |
| Fitness sharing | NK Landscape | 100 | value | Phenotypic -> Phylogenetic | Phylogenetic -> Phenotypic | 60 | 60 | 66.0 | 0.00e+00 | 0.0000000 | **** | p < 1e-04 | 0.8308166 | large |
| Fitness sharing | NK Landscape | 1000 | value | Phenotypic -> Phylogenetic | Phylogenetic -> Phenotypic | 60 | 60 | 339.0 | 0.00e+00 | 0.0000000 | **** | p < 1e-04 | 0.7000133 | large |
| Fitness sharing | Sorting network | 10 | value | Phenotypic -> Phylogenetic | Phylogenetic -> Phenotypic | 60 | 60 | 18.0 | 0.00e+00 | 0.0000000 | **** | p < 1e-04 | 0.8538150 | large |
| Fitness sharing | Sorting network | 100 | value | Phenotypic -> Phylogenetic | Phylogenetic -> Phenotypic | 60 | 60 | 2969.0 | 0.00e+00 | 0.0000001 | **** | p < 1e-04 | 0.5601065 | large |
| Fitness sharing | Sorting network | 1000 | value | Phenotypic -> Phylogenetic | Phylogenetic -> Phenotypic | 60 | 60 | 2214.0 | 3.00e-02 | 1.0000000 | ns | p = 1 | 0.1983611 | small |
| Lexicase | Count Odds | 10 | value | Phenotypic -> Phylogenetic | Phylogenetic -> Phenotypic | 60 | 60 | 1.0 | 0.00e+00 | 0.0000000 | **** | p < 1e-04 | 0.8619602 | large |
| Lexicase | Count Odds | 100 | value | Phenotypic -> Phylogenetic | Phylogenetic -> Phenotypic | 60 | 60 | 91.0 | 0.00e+00 | 0.0000000 | **** | p < 1e-04 | 0.8188383 | large |
| Lexicase | Count Odds | 1000 | value | Phenotypic -> Phylogenetic | Phylogenetic -> Phenotypic | 60 | 60 | 766.0 | 1.00e-07 | 0.0000035 | **** | p < 1e-04 | 0.4954235 | moderate |
| Lexicase | Logic-9 | 10 | value | Phenotypic -> Phylogenetic | Phylogenetic -> Phenotypic | 60 | 60 | 1790.0 | 9.60e-01 | 1.0000000 | ns | p = 1 | 0.0047913 | small |
| Lexicase | Logic-9 | 100 | value | Phenotypic -> Phylogenetic | Phylogenetic -> Phenotypic | 60 | 60 | 1782.0 | 9.27e-01 | 1.0000000 | ns | p = 1 | 0.0086244 | small |
| Lexicase | Logic-9 | 1000 | value | Phenotypic -> Phylogenetic | Phylogenetic -> Phenotypic | 60 | 60 | 1499.0 | 1.15e-01 | 1.0000000 | ns | p = 1 | 0.1442190 | small |
| Lexicase | NK Landscape | 10 | value | Phenotypic -> Phylogenetic | Phylogenetic -> Phenotypic | 60 | 60 | 0.0 | 0.00e+00 | 0.0000000 | **** | p < 1e-04 | 0.8624394 | large |
| Lexicase | NK Landscape | 100 | value | Phenotypic -> Phylogenetic | Phylogenetic -> Phenotypic | 60 | 60 | 0.0 | 0.00e+00 | 0.0000000 | **** | p < 1e-04 | 0.8624394 | large |
| Lexicase | NK Landscape | 1000 | value | Phenotypic -> Phylogenetic | Phylogenetic -> Phenotypic | 60 | 60 | 5.0 | 0.00e+00 | 0.0000000 | **** | p < 1e-04 | 0.8600452 | large |
| Lexicase | Sorting network | 10 | value | Phenotypic -> Phylogenetic | Phylogenetic -> Phenotypic | 60 | 60 | 1354.0 | 1.87e-02 | 1.0000000 | ns | p = 1 | 0.2149192 | small |
| Lexicase | Sorting network | 100 | value | Phenotypic -> Phylogenetic | Phylogenetic -> Phenotypic | 60 | 60 | 1484.0 | 9.64e-02 | 1.0000000 | ns | p = 1 | 0.1520143 | small |
| Lexicase | Sorting network | 1000 | value | Phenotypic -> Phylogenetic | Phylogenetic -> Phenotypic | 60 | 60 | 1646.0 | 4.20e-01 | 1.0000000 | ns | p = 1 | 0.0738231 | small |
| Random | Count Odds | 10 | value | Phenotypic -> Phylogenetic | Phylogenetic -> Phenotypic | 60 | 60 | 1.0 | 0.00e+00 | 0.0000000 | **** | p < 1e-04 | 0.8619602 | large |
| Random | Count Odds | 100 | value | Phenotypic -> Phylogenetic | Phylogenetic -> Phenotypic | 60 | 60 | 45.0 | 0.00e+00 | 0.0000000 | **** | p < 1e-04 | 0.8408784 | large |
| Random | Count Odds | 1000 | value | Phenotypic -> Phylogenetic | Phylogenetic -> Phenotypic | 60 | 60 | 286.0 | 0.00e+00 | 0.0000000 | **** | p < 1e-04 | 0.7254073 | large |
| Random | Logic-9 | 10 | value | Phenotypic -> Phylogenetic | Phylogenetic -> Phenotypic | 60 | 60 | 540.0 | 0.00e+00 | 0.0000000 | **** | p < 1e-04 | 0.6037076 | large |
| Random | Logic-9 | 100 | value | Phenotypic -> Phylogenetic | Phylogenetic -> Phenotypic | 60 | 60 | 1017.0 | 4.01e-05 | 0.0024060 | ** | p = 0.002406 | 0.3751611 | moderate |
| Random | Logic-9 | 1000 | value | Phenotypic -> Phylogenetic | Phylogenetic -> Phenotypic | 60 | 60 | 903.0 | 2.50e-06 | 0.0001518 | *** | p = 0.0001518 | 0.4297823 | moderate |
| Random | NK Landscape | 10 | value | Phenotypic -> Phylogenetic | Phylogenetic -> Phenotypic | 60 | 60 | 0.0 | 0.00e+00 | 0.0000000 | **** | p < 1e-04 | 0.8624394 | large |
| Random | NK Landscape | 100 | value | Phenotypic -> Phylogenetic | Phylogenetic -> Phenotypic | 60 | 60 | 37.0 | 0.00e+00 | 0.0000000 | **** | p < 1e-04 | 0.8447114 | large |
| Random | NK Landscape | 1000 | value | Phenotypic -> Phylogenetic | Phylogenetic -> Phenotypic | 60 | 60 | 303.0 | 0.00e+00 | 0.0000000 | **** | p < 1e-04 | 0.7172621 | large |
| Random | Sorting network | 10 | value | Phenotypic -> Phylogenetic | Phylogenetic -> Phenotypic | 60 | 60 | 296.0 | 0.00e+00 | 0.0000000 | **** | p < 1e-04 | 0.7206160 | large |
| Random | Sorting network | 100 | value | Phenotypic -> Phylogenetic | Phylogenetic -> Phenotypic | 60 | 60 | 439.0 | 0.00e+00 | 0.0000000 | **** | p < 1e-04 | 0.6521000 | large |
| Random | Sorting network | 1000 | value | Phenotypic -> Phylogenetic | Phylogenetic -> Phenotypic | 60 | 60 | 258.0 | 0.00e+00 | 0.0000000 | **** | p < 1e-04 | 0.7388231 | large |
| Tournament | Count Odds | 10 | value | Phenotypic -> Phylogenetic | Phylogenetic -> Phenotypic | 60 | 60 | 897.0 | 2.20e-06 | 0.0001302 | *** | p = 0.0001302 | 0.4326571 | moderate |
| Tournament | Count Odds | 100 | value | Phenotypic -> Phylogenetic | Phylogenetic -> Phenotypic | 60 | 60 | 2506.0 | 2.13e-04 | 0.0127800 |
|
p = 0.01278 | 0.3382679 | moderate |
| Tournament | Count Odds | 1000 | value | Phenotypic -> Phylogenetic | Phylogenetic -> Phenotypic | 60 | 60 | 2557.0 | 7.17e-05 | 0.0043020 | ** | p = 0.004302 | 0.3627043 | moderate |
| Tournament | Logic-9 | 10 | value | Phenotypic -> Phylogenetic | Phylogenetic -> Phenotypic | 60 | 60 | 1086.0 | 1.80e-04 | 0.0108000 |
|
p = 0.0108 | 0.3421009 | moderate |
| Tournament | Logic-9 | 100 | value | Phenotypic -> Phylogenetic | Phylogenetic -> Phenotypic | 60 | 60 | 2600.0 | 2.71e-05 | 0.0016260 | ** | p = 0.001626 | 0.3833064 | moderate |
| Tournament | Logic-9 | 1000 | value | Phenotypic -> Phylogenetic | Phylogenetic -> Phenotypic | 60 | 60 | 1995.0 | 3.07e-01 | 1.0000000 | ns | p = 1 | 0.0934309 | small |
| Tournament | NK Landscape | 10 | value | Phenotypic -> Phylogenetic | Phylogenetic -> Phenotypic | 60 | 60 | 317.0 | 0.00e+00 | 0.0000000 | **** | p < 1e-04 | 0.7105542 | large |
| Tournament | NK Landscape | 100 | value | Phenotypic -> Phylogenetic | Phylogenetic -> Phenotypic | 60 | 60 | 951.0 | 8.50e-06 | 0.0005070 | *** | p = 0.000507 | 0.4067839 | moderate |
| Tournament | NK Landscape | 1000 | value | Phenotypic -> Phylogenetic | Phylogenetic -> Phenotypic | 60 | 60 | 1450.0 | 6.66e-02 | 1.0000000 | ns | p = 1 | 0.1676977 | small |
| Tournament | Sorting network | 10 | value | Phenotypic -> Phylogenetic | Phylogenetic -> Phenotypic | 60 | 60 | 259.0 | 0.00e+00 | 0.0000000 | **** | p < 1e-04 | 0.7383439 | large |
| Tournament | Sorting network | 100 | value | Phenotypic -> Phylogenetic | Phylogenetic -> Phenotypic | 60 | 60 | 1489.0 | 1.03e-01 | 1.0000000 | ns | p = 1 | 0.1490104 | small |
| Tournament | Sorting network | 1000 | value | Phenotypic -> Phylogenetic | Phylogenetic -> Phenotypic | 60 | 60 | 1485.5 | 9.93e-02 | 1.0000000 | ns | p = 1 | 0.1506876 | small |
<IP_ADDRESS> Mean pairwise distance and shannon diversity
res <- data %>% group_by(SEED, selection_name, problem_name) %>%
summarise(
phen_phylo_10 = condinformation(discretize(phenotype_diversity),
discretize(lag(mean_phenotype_pairwise_distance, 1)),
discretize(lag(phenotype_diversity, 1))),
phen_phylo_100 = condinformation(discretize(phenotype_diversity),
discretize(lag(mean_phenotype_pairwise_distance, 10)),
discretize(lag(phenotype_diversity, 10))),
pheno_phylo_1000 = condinformation(discretize(phenotype_diversity),
discretize(lag(mean_phenotype_pairwise_distance, 100)),
discretize(lag(phenotype_diversity, 100))),
phylo_pheno_10 = condinformation(discretize(mean_phenotype_pairwise_distance),
discretize(lag(phenotype_diversity, 1)),
discretize(lag(mean_phenotype_pairwise_distance, 1))),
phylo_pheno_100 = condinformation(discretize(mean_phenotype_pairwise_distance),
discretize(lag(phenotype_diversity, 10)),
discretize(lag(mean_phenotype_pairwise_distance, 10))),
phylo_pheno_1000 = condinformation(discretize(mean_phenotype_pairwise_distance),
discretize(lag(phenotype_diversity, 100)),
discretize(lag(mean_phenotype_pairwise_distance, 100)))
)
# Turn Transfer Entropy columns into rows
res <- res %>% pivot_longer(cols=contains("phylo"))
# Pull lag into a column
res$offset <- str_extract(res$name, "[:digit:]*$")
# Make column indicating direction of transfer entropy
res$Type <- case_when(str_detect(res$name, "phylo_pheno") ~ "\nPhenotypic\n\t->\nPhylogenetic\n", TRUE ~ "\nPhylogenetic\n\t->\nPhenotypic\n")
ggplot(
res,
aes(
x=as.factor(offset),
y=value,
color=Type
)
) +
geom_boxplot() +
facet_wrap(~selection_name*problem_name, ncol=4) +
scale_y_continuous("Transfer Entropy") +
scale_color_discrete("")
# Determine which conditions are significantly different from each other
transfer_entropy_stats(res)
| selection_name | problem_name | offset | .y. | group1 | group2 | n1 | n2 | statistic | p | p.adj | p.adj.signif | label | effsize | magnitude |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Eco-EA | Count Odds | 10 | value | Phenotypic -> Phylogenetic | Phylogenetic -> Phenotypic | 60 | 60 | 690 | 0.00e+00 | 0.0000003 | **** | p < 1e-04 | 0.5318376 | large |
| Eco-EA | Count Odds | 100 | value | Phenotypic -> Phylogenetic | Phylogenetic -> Phenotypic | 60 | 60 | 879 | 1.40e-06 | 0.0000816 | **** | p < 1e-04 | 0.4412815 | moderate |
| Eco-EA | Count Odds | 1000 | value | Phenotypic -> Phylogenetic | Phylogenetic -> Phenotypic | 60 | 60 | 942 | 6.80e-06 | 0.0004062 | *** | p = 0.0004062 | 0.4110961 | moderate |
| Eco-EA | Logic-9 | 10 | value | Phenotypic -> Phylogenetic | Phylogenetic -> Phenotypic | 60 | 60 | 1281 | 6.50e-03 | 0.3900000 | ns | p = 0.39 | 0.2486700 | small |
| Eco-EA | Logic-9 | 100 | value | Phenotypic -> Phylogenetic | Phylogenetic -> Phenotypic | 60 | 60 | 1816 | 9.35e-01 | 1.0000000 | ns | p = 1 | 0.0076661 | small |
| Eco-EA | Logic-9 | 1000 | value | Phenotypic -> Phylogenetic | Phylogenetic -> Phenotypic | 60 | 60 | 1347 | 1.75e-02 | 1.0000000 | ns | p = 1 | 0.2170472 | small |
| Eco-EA | NK Landscape | 10 | value | Phenotypic -> Phylogenetic | Phylogenetic -> Phenotypic | 60 | 60 | 1125 | 4.00e-04 | 0.0240000 |
|
p = 0.024 | 0.3234148 | moderate |
| Eco-EA | NK Landscape | 100 | value | Phenotypic -> Phylogenetic | Phylogenetic -> Phenotypic | 60 | 60 | 1207 | 1.87e-03 | 0.1122000 | ns | p = 0.1122 | 0.2841259 | small |
| Eco-EA | NK Landscape | 1000 | value | Phenotypic -> Phylogenetic | Phylogenetic -> Phenotypic | 60 | 60 | 1488 | 1.02e-01 | 1.0000000 | ns | p = 1 | 0.1494895 | small |
| Eco-EA | Sorting network | 10 | value | Phenotypic -> Phylogenetic | Phylogenetic -> Phenotypic | 60 | 60 | 485 | 0.00e+00 | 0.0000000 | **** | p < 1e-04 | 0.6300599 | large |
| Eco-EA | Sorting network | 100 | value | Phenotypic -> Phylogenetic | Phylogenetic -> Phenotypic | 60 | 60 | 2799 | 2.00e-07 | 0.0000096 | **** | p < 1e-04 | 0.4786538 | moderate |
| Eco-EA | Sorting network | 1000 | value | Phenotypic -> Phylogenetic | Phylogenetic -> Phenotypic | 60 | 60 | 2342 | 4.48e-03 | 0.2688000 | ns | p = 0.2688 | 0.2596905 | small |
| Fitness sharing | Count Odds | 10 | value | Phenotypic -> Phylogenetic | Phylogenetic -> Phenotypic | 60 | 60 | 6 | 0.00e+00 | 0.0000000 | **** | p < 1e-04 | 0.8595646 | large |
| Fitness sharing | Count Odds | 100 | value | Phenotypic -> Phylogenetic | Phylogenetic -> Phenotypic | 60 | 60 | 1853 | 7.83e-01 | 1.0000000 | ns | p = 1 | 0.0253940 | small |
| Fitness sharing | Count Odds | 1000 | value | Phenotypic -> Phylogenetic | Phylogenetic -> Phenotypic | 60 | 60 | 1953 | 4.23e-01 | 1.0000000 | ns | p = 1 | 0.0733073 | small |
| Fitness sharing | Logic-9 | 10 | value | Phenotypic -> Phylogenetic | Phylogenetic -> Phenotypic | 60 | 60 | 678 | 0.00e+00 | 0.0000002 | **** | p < 1e-04 | 0.5375872 | large |
| Fitness sharing | Logic-9 | 100 | value | Phenotypic -> Phylogenetic | Phylogenetic -> Phenotypic | 60 | 60 | 913 | 3.30e-06 | 0.0001962 | *** | p = 0.0001962 | 0.4249910 | moderate |
| Fitness sharing | Logic-9 | 1000 | value | Phenotypic -> Phylogenetic | Phylogenetic -> Phenotypic | 60 | 60 | 838 | 4.00e-07 | 0.0000270 | **** | p < 1e-04 | 0.4609259 | moderate |
| Fitness sharing | NK Landscape | 10 | value | Phenotypic -> Phylogenetic | Phylogenetic -> Phenotypic | 60 | 60 | 0 | 0.00e+00 | 0.0000000 | **** | p < 1e-04 | 0.8624394 | large |
| Fitness sharing | NK Landscape | 100 | value | Phenotypic -> Phylogenetic | Phylogenetic -> Phenotypic | 60 | 60 | 66 | 0.00e+00 | 0.0000000 | **** | p < 1e-04 | 0.8308166 | large |
| Fitness sharing | NK Landscape | 1000 | value | Phenotypic -> Phylogenetic | Phylogenetic -> Phenotypic | 60 | 60 | 323 | 0.00e+00 | 0.0000000 | **** | p < 1e-04 | 0.7076794 | large |
| Fitness sharing | Sorting network | 10 | value | Phenotypic -> Phylogenetic | Phylogenetic -> Phenotypic | 60 | 60 | 35 | 0.00e+00 | 0.0000000 | **** | p < 1e-04 | 0.8456697 | large |
| Fitness sharing | Sorting network | 100 | value | Phenotypic -> Phylogenetic | Phylogenetic -> Phenotypic | 60 | 60 | 2967 | 0.00e+00 | 0.0000001 | **** | p < 1e-04 | 0.5591482 | large |
| Fitness sharing | Sorting network | 1000 | value | Phenotypic -> Phylogenetic | Phylogenetic -> Phenotypic | 60 | 60 | 2361 | 3.26e-03 | 0.1956000 | ns | p = 0.1956 | 0.2687936 | small |
| Lexicase | Count Odds | 10 | value | Phenotypic -> Phylogenetic | Phylogenetic -> Phenotypic | 60 | 60 | 1 | 0.00e+00 | 0.0000000 | **** | p < 1e-04 | 0.8619602 | large |
| Lexicase | Count Odds | 100 | value | Phenotypic -> Phylogenetic | Phylogenetic -> Phenotypic | 60 | 60 | 105 | 0.00e+00 | 0.0000000 | **** | p < 1e-04 | 0.8121304 | large |
| Lexicase | Count Odds | 1000 | value | Phenotypic -> Phylogenetic | Phylogenetic -> Phenotypic | 60 | 60 | 803 | 2.00e-07 | 0.0000101 | **** | p < 1e-04 | 0.4776956 | moderate |
| Lexicase | Logic-9 | 10 | value | Phenotypic -> Phylogenetic | Phylogenetic -> Phenotypic | 60 | 60 | 1925 | 5.13e-01 | 1.0000000 | ns | p = 1 | 0.0598916 | small |
| Lexicase | Logic-9 | 100 | value | Phenotypic -> Phylogenetic | Phylogenetic -> Phenotypic | 60 | 60 | 2036 | 2.16e-01 | 1.0000000 | ns | p = 1 | 0.1130754 | small |
| Lexicase | Logic-9 | 1000 | value | Phenotypic -> Phylogenetic | Phylogenetic -> Phenotypic | 60 | 60 | 1509 | 1.27e-01 | 1.0000000 | ns | p = 1 | 0.1394277 | small |
| Lexicase | NK Landscape | 10 | value | Phenotypic -> Phylogenetic | Phylogenetic -> Phenotypic | 60 | 60 | 0 | 0.00e+00 | 0.0000000 | **** | p < 1e-04 | 0.8624394 | large |
| Lexicase | NK Landscape | 100 | value | Phenotypic -> Phylogenetic | Phylogenetic -> Phenotypic | 60 | 60 | 0 | 0.00e+00 | 0.0000000 | **** | p < 1e-04 | 0.8624394 | large |
| Lexicase | NK Landscape | 1000 | value | Phenotypic -> Phylogenetic | Phylogenetic -> Phenotypic | 60 | 60 | 1 | 0.00e+00 | 0.0000000 | **** | p < 1e-04 | 0.8619602 | large |
| Lexicase | Sorting network | 10 | value | Phenotypic -> Phylogenetic | Phylogenetic -> Phenotypic | 60 | 60 | 1837 | 8.08e-01 | 1.0000000 | ns | p = 1 | 0.0225336 | small |
| Lexicase | Sorting network | 100 | value | Phenotypic -> Phylogenetic | Phylogenetic -> Phenotypic | 60 | 60 | 1781 | 9.04e-01 | 1.0000000 | ns | p = 1 | 0.0113385 | small |
| Lexicase | Sorting network | 1000 | value | Phenotypic -> Phylogenetic | Phylogenetic -> Phenotypic | 60 | 60 | 1551 | 1.89e-01 | 1.0000000 | ns | p = 1 | 0.1201541 | small |
| Random | Count Odds | 10 | value | Phenotypic -> Phylogenetic | Phylogenetic -> Phenotypic | 60 | 60 | 0 | 0.00e+00 | 0.0000000 | **** | p < 1e-04 | 0.8624394 | large |
| Random | Count Odds | 100 | value | Phenotypic -> Phylogenetic | Phylogenetic -> Phenotypic | 60 | 60 | 69 | 0.00e+00 | 0.0000000 | **** | p < 1e-04 | 0.8293792 | large |
| Random | Count Odds | 1000 | value | Phenotypic -> Phylogenetic | Phylogenetic -> Phenotypic | 60 | 60 | 238 | 0.00e+00 | 0.0000000 | **** | p < 1e-04 | 0.7484057 | large |
| Random | Logic-9 | 10 | value | Phenotypic -> Phylogenetic | Phylogenetic -> Phenotypic | 60 | 60 | 3339 | 0.00e+00 | 0.0000000 | **** | p < 1e-04 | 0.7373857 | large |
| Random | Logic-9 | 100 | value | Phenotypic -> Phylogenetic | Phylogenetic -> Phenotypic | 60 | 60 | 2603 | 2.53e-05 | 0.0015180 | ** | p = 0.001518 | 0.3847438 | moderate |
| Random | Logic-9 | 1000 | value | Phenotypic -> Phylogenetic | Phylogenetic -> Phenotypic | 60 | 60 | 1823 | 9.06e-01 | 1.0000000 | ns | p = 1 | 0.0110201 | small |
| Random | NK Landscape | 10 | value | Phenotypic -> Phylogenetic | Phylogenetic -> Phenotypic | 60 | 60 | 0 | 0.00e+00 | 0.0000000 | **** | p < 1e-04 | 0.8624394 | large |
| Random | NK Landscape | 100 | value | Phenotypic -> Phylogenetic | Phylogenetic -> Phenotypic | 60 | 60 | 50 | 0.00e+00 | 0.0000000 | **** | p < 1e-04 | 0.8384827 | large |
| Random | NK Landscape | 1000 | value | Phenotypic -> Phylogenetic | Phylogenetic -> Phenotypic | 60 | 60 | 290 | 0.00e+00 | 0.0000000 | **** | p < 1e-04 | 0.7234908 | large |
| Random | Sorting network | 10 | value | Phenotypic -> Phylogenetic | Phylogenetic -> Phenotypic | 60 | 60 | 593 | 0.00e+00 | 0.0000000 | **** | p < 1e-04 | 0.5783135 | large |
| Random | Sorting network | 100 | value | Phenotypic -> Phylogenetic | Phylogenetic -> Phenotypic | 60 | 60 | 354 | 0.00e+00 | 0.0000000 | **** | p < 1e-04 | 0.6928263 | large |
| Random | Sorting network | 1000 | value | Phenotypic -> Phylogenetic | Phylogenetic -> Phenotypic | 60 | 60 | 323 | 0.00e+00 | 0.0000000 | **** | p < 1e-04 | 0.7076794 | large |
| Tournament | Count Odds | 10 | value | Phenotypic -> Phylogenetic | Phylogenetic -> Phenotypic | 60 | 60 | 2170 | 5.25e-02 | 1.0000000 | ns | p = 1 | 0.1772792 | small |
| Tournament | Count Odds | 100 | value | Phenotypic -> Phylogenetic | Phylogenetic -> Phenotypic | 60 | 60 | 2383 | 2.23e-03 | 0.1338000 | ns | p = 0.1338 | 0.2793345 | small |
| Tournament | Count Odds | 1000 | value | Phenotypic -> Phylogenetic | Phylogenetic -> Phenotypic | 60 | 60 | 2165 | 5.57e-02 | 1.0000000 | ns | p = 1 | 0.1748848 | small |
| Tournament | Logic-9 | 10 | value | Phenotypic -> Phylogenetic | Phylogenetic -> Phenotypic | 60 | 60 | 1703 | 6.13e-01 | 1.0000000 | ns | p = 1 | 0.0464759 | small |
| Tournament | Logic-9 | 100 | value | Phenotypic -> Phylogenetic | Phylogenetic -> Phenotypic | 60 | 60 | 2327 | 5.72e-03 | 0.3432000 | ns | p = 0.3432 | 0.2525031 | small |
| Tournament | Logic-9 | 1000 | value | Phenotypic -> Phylogenetic | Phylogenetic -> Phenotypic | 60 | 60 | 1477 | 9.05e-02 | 1.0000000 | ns | p = 1 | 0.1547600 | small |
| Tournament | NK Landscape | 10 | value | Phenotypic -> Phylogenetic | Phylogenetic -> Phenotypic | 60 | 60 | 1401 | 3.65e-02 | 1.0000000 | ns | p = 1 | 0.1911741 | small |
| Tournament | NK Landscape | 100 | value | Phenotypic -> Phylogenetic | Phylogenetic -> Phenotypic | 60 | 60 | 1809 | 9.64e-01 | 1.0000000 | ns | p = 1 | 0.0043122 | small |
| Tournament | NK Landscape | 1000 | value | Phenotypic -> Phylogenetic | Phylogenetic -> Phenotypic | 60 | 60 | 1939 | 4.67e-01 | 1.0000000 | ns | p = 1 | 0.0665999 | small |
| Tournament | Sorting network | 10 | value | Phenotypic -> Phylogenetic | Phylogenetic -> Phenotypic | 60 | 60 | 612 | 0.00e+00 | 0.0000000 | **** | p < 1e-04 | 0.5692100 | large |
| Tournament | Sorting network | 100 | value | Phenotypic -> Phylogenetic | Phylogenetic -> Phenotypic | 60 | 60 | 1154 | 7.04e-04 | 0.0422400 |
|
p = 0.04224 | 0.3095199 | moderate |
| Tournament | Sorting network | 1000 | value | Phenotypic -> Phylogenetic | Phylogenetic -> Phenotypic | 60 | 60 | 1497 | 1.12e-01 | 1.0000000 | ns | p = 1 | 0.1451773 | small |
<IP_ADDRESS> Mean evolutionary distinctiveness and phenotypic richness
res <- data %>% group_by(SEED, selection_name, problem_name) %>%
summarise(
phen_phylo_10 = condinformation(
discretize(phenotype_num_taxa),
discretize(lag(mean_phenotype_evolutionary_distinctiveness, 1)),
discretize(lag(phenotype_num_taxa, 1))),
phen_phylo_100 = condinformation(
discretize(phenotype_num_taxa),
discretize(lag(mean_phenotype_evolutionary_distinctiveness, 10)),
discretize(lag(phenotype_num_taxa, 10))),
pheno_phylo_1000 = condinformation(
discretize(phenotype_num_taxa),
discretize(lag(mean_phenotype_evolutionary_distinctiveness, 100)),
discretize(lag(phenotype_num_taxa, 100))),
phylo_pheno_10 = condinformation(
discretize(mean_phenotype_evolutionary_distinctiveness),
discretize(lag(phenotype_num_taxa, 1)),
discretize(lag(mean_phenotype_evolutionary_distinctiveness, 1))),
phylo_pheno_100 = condinformation(
discretize(mean_phenotype_evolutionary_distinctiveness),
discretize(lag(phenotype_num_taxa, 10)),
discretize(lag(mean_phenotype_evolutionary_distinctiveness, 10))),
phylo_pheno_1000 = condinformation(
discretize(mean_phenotype_evolutionary_distinctiveness),
discretize(lag(phenotype_num_taxa, 100)),
discretize(lag(mean_phenotype_evolutionary_distinctiveness, 100)))
)
# Turn Transfer Entropy columns into rows
res <- res %>% pivot_longer(cols=contains("phylo"))
# Pull lag into a column
res$offset <- str_extract(res$name, "[:digit:]*$")
# Make column indicating direction of transfer entropy
res$Type <- case_when(str_detect(res$name, "phylo_pheno") ~ "\nPhenotypic\n\t->\nPhylogenetic\n", TRUE ~ "\nPhylogenetic\n\t->\nPhenotypic\n")
ggplot(
res,
aes(
x=as.factor(offset),
y=value,
color=Type
)
) +
geom_boxplot() +
facet_wrap(~selection_name*problem_name, ncol=4) +
scale_y_continuous("Transfer Entropy") +
scale_color_discrete("")
# Determine which conditions are significantly different from each other
transfer_entropy_stats(res)
| selection_name | problem_name | offset | .y. | group1 | group2 | n1 | n2 | statistic | p | p.adj | p.adj.signif | label | effsize | magnitude |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Eco-EA | Count Odds | 10 | value | Phenotypic -> Phylogenetic | Phylogenetic -> Phenotypic | 60 | 60 | 208 | 0.00e+00 | 0.0000000 | **** | p < 1e-04 | 0.7627797 | large |
| Eco-EA | Count Odds | 100 | value | Phenotypic -> Phylogenetic | Phylogenetic -> Phenotypic | 60 | 60 | 1150 | 6.52e-04 | 0.0391200 |
|
p = 0.03912 | 0.3114364 | moderate |
| Eco-EA | Count Odds | 1000 | value | Phenotypic -> Phylogenetic | Phylogenetic -> Phenotypic | 60 | 60 | 1525 | 1.50e-01 | 1.0000000 | ns | p = 1 | 0.1317616 | small |
| Eco-EA | Logic-9 | 10 | value | Phenotypic -> Phylogenetic | Phylogenetic -> Phenotypic | 60 | 60 | 58 | 0.00e+00 | 0.0000000 | **** | p < 1e-04 | 0.8346496 | large |
| Eco-EA | Logic-9 | 100 | value | Phenotypic -> Phylogenetic | Phylogenetic -> Phenotypic | 60 | 60 | 1069 | 1.26e-04 | 0.0075600 | ** | p = 0.00756 | 0.3502462 | moderate |
| Eco-EA | Logic-9 | 1000 | value | Phenotypic -> Phylogenetic | Phylogenetic -> Phenotypic | 60 | 60 | 1944 | 4.51e-01 | 1.0000000 | ns | p = 1 | 0.0689951 | small |
| Eco-EA | NK Landscape | 10 | value | Phenotypic -> Phylogenetic | Phylogenetic -> Phenotypic | 60 | 60 | 1 | 0.00e+00 | 0.0000000 | **** | p < 1e-04 | 0.8619602 | large |
| Eco-EA | NK Landscape | 100 | value | Phenotypic -> Phylogenetic | Phylogenetic -> Phenotypic | 60 | 60 | 204 | 0.00e+00 | 0.0000000 | **** | p < 1e-04 | 0.7646962 | large |