Last updated: 2023-04-27
Checks: 7 0
Knit directory:
Density_and_sexual_selection_2023/
This reproducible R Markdown analysis was created with workflowr (version 1.7.0). The Checks tab describes the reproducibility checks that were applied when the results were created. The Past versions tab lists the development history.
Great! Since the R Markdown file has been committed to the Git repository, you know the exact version of the code that produced these results.
Great job! The global environment was empty. Objects defined in the global environment can affect the analysis in your R Markdown file in unknown ways. For reproduciblity it’s best to always run the code in an empty environment.
The command set.seed(20210613)
was run prior to running
the code in the R Markdown file. Setting a seed ensures that any results
that rely on randomness, e.g. subsampling or permutations, are
reproducible.
Great job! Recording the operating system, R version, and package versions is critical for reproducibility.
Nice! There were no cached chunks for this analysis, so you can be confident that you successfully produced the results during this run.
Great job! Using relative paths to the files within your workflowr project makes it easier to run your code on other machines.
Great! You are using Git for version control. Tracking code development and connecting the code version to the results is critical for reproducibility.
The results in this page were generated with repository version e4a0f09. See the Past versions tab to see a history of the changes made to the R Markdown and HTML files.
Note that you need to be careful to ensure that all relevant files for
the analysis have been committed to Git prior to generating the results
(you can use wflow_publish
or
wflow_git_commit
). workflowr only checks the R Markdown
file, but you know if there are other scripts or data files that it
depends on. Below is the status of the Git repository when the results
were generated:
Ignored files:
Ignored: .Rhistory
Ignored: .Rproj.user/
Note that any generated files, e.g. HTML, png, CSS, etc., are not included in this status report because it is ok for generated content to have uncommitted changes.
These are the previous versions of the repository in which changes were
made to the R Markdown (analysis/index4.Rmd
) and HTML
(docs/index4.html
) files. If you’ve configured a remote Git
repository (see ?wflow_git_remote
), click on the hyperlinks
in the table below to view the files as they were in that past version.
File | Version | Author | Date | Message |
---|---|---|---|---|
Rmd | e4a0f09 | LennartWinkler | 2023-04-27 | wflow_publish(all = T) |
html | 37ab720 | LennartWinkler | 2023-04-22 | Build site. |
Rmd | 5b85dd9 | LennartWinkler | 2023-04-22 | wflow_publish(all = T) |
html | a88c4c5 | LennartWinkler | 2023-04-21 | Build site. |
Rmd | 2dd68d0 | LennartWinkler | 2023-04-21 | wflow_publish(all = T) |
html | 2dd68d0 | LennartWinkler | 2023-04-21 | wflow_publish(all = T) |
Rmd | 73986d2 | LennartWinkler | 2023-04-21 | update |
html | 73986d2 | LennartWinkler | 2023-04-21 | update |
html | b81114e | LennartWinkler | 2023-04-20 | Build site. |
Rmd | fe8c52c | LennartWinkler | 2023-04-20 | wflow_publish(all = T) |
html | fe8c52c | LennartWinkler | 2023-04-20 | wflow_publish(all = T) |
html | 55df7ff | LennartWinkler | 2023-04-12 | Build site. |
html | b0a3f15 | LennartWinkler | 2023-04-12 | Build site. |
Rmd | c8bd540 | Lennart Winkler | 2023-04-12 | set up |
html | c8bd540 | Lennart Winkler | 2023-04-12 | set up |
html | 899398a | Lennart Winkler | 2022-08-14 | Build site. |
Rmd | d0d039c | Lennart Winkler | 2022-08-14 | wflow_publish(all = T) |
Rmd | f54f022 | LennartWinkler | 2022-08-13 | wflow_publish(republish = TRUE, all = T) |
html | f54f022 | LennartWinkler | 2022-08-13 | wflow_publish(republish = TRUE, all = T) |
Rmd | f89f7c1 | LennartWinkler | 2022-08-10 | Build site. |
html | f89f7c1 | LennartWinkler | 2022-08-10 | Build site. |
Supplementary material reporting R code for the manuscript ‘Population density affects sexual selection in an insect model’.
We computed standardized metrics of (sexual) selection and tested for differences among density treatments and sexes, including the standardized mating and selection differential (m’ and s’, respectively) on body mass, a trait that is likely under sexual and natural selection. To this end, we relativized all traits within sex and treatment by dividing each observed value by the mean value of that sex and treatment. We then used bootstrapping to estimate the different selection metrics and to compare them between treatments (see details above). Throughout, for treatment comparisons we subtracted the low density treatment (i.e. small group or large arena size) from the high density treatment (i.e. large group or small arena size), hence negative differences indicate larger values at lower density and positive differences larger values at higher density. Hereafter we will refer to the difference between treatments as ‘effect size’.
Before we started the analyses, we loaded all necessary packages and data.
rm(list = ls()) # Clear work environment
# Load R-packages ####
=cbind('ggeffects','ggplot2','gridExtra','lme4','lmerTest','readr','dplyr','EnvStats','cowplot','gridGraphics','car','RColorBrewer','boot','data.table','base','ICC','knitr')
list_of_packageslapply(list_of_packages, require, character.only = TRUE)
# Load data set ####
=read_delim("./data/Data_Winkler_et_al_2023_Denstiy.csv",";", escape_double = FALSE, trim_ws = TRUE)
D_data
# Set factors and levels for factors
$Week=as.factor(D_data$Week)
D_data$Sex=as.factor(D_data$Sex)
D_data$Gr_size=as.factor(D_data$Gr_size)
D_data$Gr_size <- factor(D_data$Gr_size, levels=c("SG","LG"))
D_data$Arena=as.factor(D_data$Arena)
D_data
## Subset data set ####
### Data according to denstiy ####
.26=D_data[D_data$Treatment=='D = 0.26',]
D_data_0.52=D_data[D_data$Treatment=='D = 0.52',]
D_data_0.67=D_data[D_data$Treatment=='D = 0.67',]
D_data_0.33=D_data[D_data$Treatment=='D = 1.33',]
D_data_1
### Subset data by sex ####
=D_data[D_data$Sex=='M',]
D_data_m=D_data[D_data$Sex=='F',]
D_data_f
### Calculate data relativized within treatment and sex ####
# Small group + large Area
.26=D_data[D_data$Treatment=='D = 0.26',]
D_data_0
.26$rel_m_RS=NA
D_data_0.26$rel_m_prop_RS=NA
D_data_0.26$rel_m_cMS=NA
D_data_0.26$rel_m_InSuc=NA
D_data_0.26$rel_m_feSuc=NA
D_data_0.26$rel_m_pFec=NA
D_data_0.26$rel_m_PS=NA
D_data_0.26$rel_m_pFec_compl=NA
D_data_0
.26$rel_f_RS=NA
D_data_0.26$rel_f_prop_RS=NA
D_data_0.26$rel_f_cMS=NA
D_data_0.26$rel_f_fec_pMate=NA
D_data_0
.26$rel_m_RS=D_data_0.26$m_RS/mean(D_data_0.26$m_RS,na.rm=T)
D_data_0.26$rel_m_prop_RS=D_data_0.26$m_prop_RS/mean(D_data_0.26$m_prop_RS,na.rm=T)
D_data_0.26$rel_m_cMS=D_data_0.26$m_cMS/mean(D_data_0.26$m_cMS,na.rm=T)
D_data_0.26$rel_m_InSuc=D_data_0.26$m_InSuc/mean(D_data_0.26$m_InSuc,na.rm=T)
D_data_0.26$rel_m_feSuc=D_data_0.26$m_feSuc/mean(D_data_0.26$m_feSuc,na.rm=T)
D_data_0.26$rel_m_pFec=D_data_0.26$m_pFec/mean(D_data_0.26$m_pFec,na.rm=T)
D_data_0.26$rel_m_PS=D_data_0.26$m_PS/mean(D_data_0.26$m_PS,na.rm=T)
D_data_0.26$rel_m_pFec_compl=D_data_0.26$m_pFec_compl/mean(D_data_0.26$m_pFec_compl,na.rm=T)
D_data_0
.26$rel_f_RS=D_data_0.26$f_RS/mean(D_data_0.26$f_RS,na.rm=T)
D_data_0.26$rel_f_prop_RS=D_data_0.26$f_prop_RS/mean(D_data_0.26$f_prop_RS,na.rm=T)
D_data_0.26$rel_f_cMS=D_data_0.26$f_cMS/mean(D_data_0.26$f_cMS,na.rm=T)
D_data_0.26$rel_f_fec_pMate=D_data_0.26$f_fec_pMate/mean(D_data_0.26$f_fec_pMate,na.rm=T)
D_data_0
# Large group + large Area
.52=D_data[D_data$Treatment=='D = 0.52',]
D_data_0#Relativize data
.52$rel_m_RS=NA
D_data_0.52$rel_m_prop_RS=NA
D_data_0.52$rel_m_cMS=NA
D_data_0.52$rel_m_InSuc=NA
D_data_0.52$rel_m_feSuc=NA
D_data_0.52$rel_m_pFec=NA
D_data_0.52$rel_m_PS=NA
D_data_0.52$rel_m_pFec_compl=NA
D_data_0
.52$rel_f_RS=NA
D_data_0.52$rel_f_prop_RS=NA
D_data_0.52$rel_f_cMS=NA
D_data_0.52$rel_f_fec_pMate=NA
D_data_0
.52$rel_m_RS=D_data_0.52$m_RS/mean(D_data_0.52$m_RS,na.rm=T)
D_data_0.52$rel_m_prop_RS=D_data_0.52$m_prop_RS/mean(D_data_0.52$m_prop_RS,na.rm=T)
D_data_0.52$rel_m_cMS=D_data_0.52$m_cMS/mean(D_data_0.52$m_cMS,na.rm=T)
D_data_0.52$rel_m_InSuc=D_data_0.52$m_InSuc/mean(D_data_0.52$m_InSuc,na.rm=T)
D_data_0.52$rel_m_feSuc=D_data_0.52$m_feSuc/mean(D_data_0.52$m_feSuc,na.rm=T)
D_data_0.52$rel_m_pFec=D_data_0.52$m_pFec/mean(D_data_0.52$m_pFec,na.rm=T)
D_data_0.52$rel_m_PS=D_data_0.52$m_PS/mean(D_data_0.52$m_PS,na.rm=T)
D_data_0.52$rel_m_pFec_compl=D_data_0.52$m_pFec_compl/mean(D_data_0.52$m_pFec_compl,na.rm=T)
D_data_0
.52$rel_f_RS=D_data_0.52$f_RS/mean(D_data_0.52$f_RS,na.rm=T)
D_data_0.52$rel_f_prop_RS=D_data_0.52$f_prop_RS/mean(D_data_0.52$f_prop_RS,na.rm=T)
D_data_0.52$rel_f_cMS=D_data_0.52$f_cMS/mean(D_data_0.52$f_cMS,na.rm=T)
D_data_0.52$rel_f_fec_pMate=D_data_0.52$f_fec_pMate/mean(D_data_0.52$f_fec_pMate,na.rm=T)
D_data_0
# Small group + small Area
.67=D_data[D_data$Treatment=='D = 0.67',]
D_data_0#Relativize data
.67$rel_m_RS=NA
D_data_0.67$rel_m_prop_RS=NA
D_data_0.67$rel_m_cMS=NA
D_data_0.67$rel_m_InSuc=NA
D_data_0.67$rel_m_feSuc=NA
D_data_0.67$rel_m_pFec=NA
D_data_0.67$rel_m_PS=NA
D_data_0.67$rel_m_pFec_compl=NA
D_data_0
.67$rel_f_RS=NA
D_data_0.67$rel_f_prop_RS=NA
D_data_0.67$rel_f_cMS=NA
D_data_0.67$rel_f_fec_pMate=NA
D_data_0
.67$rel_m_RS=D_data_0.67$m_RS/mean(D_data_0.67$m_RS,na.rm=T)
D_data_0.67$rel_m_prop_RS=D_data_0.67$m_prop_RS/mean(D_data_0.67$m_prop_RS,na.rm=T)
D_data_0.67$rel_m_cMS=D_data_0.67$m_cMS/mean(D_data_0.67$m_cMS,na.rm=T)
D_data_0.67$rel_m_InSuc=D_data_0.67$m_InSuc/mean(D_data_0.67$m_InSuc,na.rm=T)
D_data_0.67$rel_m_feSuc=D_data_0.67$m_feSuc/mean(D_data_0.67$m_feSuc,na.rm=T)
D_data_0.67$rel_m_pFec=D_data_0.67$m_pFec/mean(D_data_0.67$m_pFec,na.rm=T)
D_data_0.67$rel_m_PS=D_data_0.67$m_PS/mean(D_data_0.67$m_PS,na.rm=T)
D_data_0.67$rel_m_pFec_compl=D_data_0.67$m_pFec_compl/mean(D_data_0.67$m_pFec_compl,na.rm=T)
D_data_0
.67$rel_f_RS=D_data_0.67$f_RS/mean(D_data_0.67$f_RS,na.rm=T)
D_data_0.67$rel_f_prop_RS=D_data_0.67$f_prop_RS/mean(D_data_0.67$f_prop_RS,na.rm=T)
D_data_0.67$rel_f_cMS=D_data_0.67$f_cMS/mean(D_data_0.67$f_cMS,na.rm=T)
D_data_0.67$rel_f_fec_pMate=D_data_0.67$f_fec_pMate/mean(D_data_0.67$f_fec_pMate,na.rm=T)
D_data_0
# Large group + small Area
.33=D_data[D_data$Treatment=='D = 1.33',]
D_data_1#Relativize data
.33$rel_m_RS=NA
D_data_1.33$rel_m_prop_RS=NA
D_data_1.33$rel_m_cMS=NA
D_data_1.33$rel_m_InSuc=NA
D_data_1.33$rel_m_feSuc=NA
D_data_1.33$rel_m_pFec=NA
D_data_1.33$rel_m_PS=NA
D_data_1.33$rel_m_pFec_compl=NA
D_data_1
.33$rel_f_RS=NA
D_data_1.33$rel_f_prop_RS=NA
D_data_1.33$rel_f_cMS=NA
D_data_1.33$rel_f_fec_pMate=NA
D_data_1
.33$rel_m_RS=D_data_1.33$m_RS/mean(D_data_1.33$m_RS,na.rm=T)
D_data_1.33$rel_m_prop_RS=D_data_1.33$m_prop_RS/mean(D_data_1.33$m_prop_RS,na.rm=T)
D_data_1.33$rel_m_cMS=D_data_1.33$m_cMS/mean(D_data_1.33$m_cMS,na.rm=T)
D_data_1.33$rel_m_InSuc=D_data_1.33$m_InSuc/mean(D_data_1.33$m_InSuc,na.rm=T)
D_data_1.33$rel_m_feSuc=D_data_1.33$m_feSuc/mean(D_data_1.33$m_feSuc,na.rm=T)
D_data_1.33$rel_m_pFec=D_data_1.33$m_pFec/mean(D_data_1.33$m_pFec,na.rm=T)
D_data_1.33$rel_m_PS=D_data_1.33$m_PS/mean(D_data_1.33$m_PS,na.rm=T)
D_data_1.33$rel_m_pFec_compl=D_data_1.33$m_pFec_compl/mean(D_data_1.33$m_pFec_compl,na.rm=T)
D_data_1
.33$rel_f_RS=D_data_1.33$f_RS/mean(D_data_1.33$f_RS,na.rm=T)
D_data_1.33$rel_f_prop_RS=D_data_1.33$f_prop_RS/mean(D_data_1.33$f_prop_RS,na.rm=T)
D_data_1.33$rel_f_cMS=D_data_1.33$f_cMS/mean(D_data_1.33$f_cMS,na.rm=T)
D_data_1.33$rel_f_fec_pMate=D_data_1.33$f_fec_pMate/mean(D_data_1.33$f_fec_pMate,na.rm=T)
D_data_1
### Reduce treatments to arena and population size ####
# Arena size
=rbind(D_data_0.26,D_data_0.52)
D_data_Large_arena=rbind(D_data_0.67,D_data_1.33)
D_data_Small_arena
# Population size
=rbind(D_data_0.26,D_data_0.67)
D_data_Small_pop=rbind(D_data_0.52,D_data_1.33)
D_data_Large_pop
## Set figure schemes ####
# Set color-sets for figures
=brewer.pal(4, 'Dark2')
colpal=c("#b2182b","#2166AC")
colpal2=brewer.pal(4, 'Paired')
colpal3
# Set theme for ggplot2 figures
=theme(panel.border = element_blank(),
fig_themeplot.margin = margin(0,2.2,0,0.2,"cm"),
plot.title = element_text(hjust = 0.5),
panel.background = element_blank(),
legend.key=element_blank(),
panel.grid.major = element_blank(),
panel.grid.minor = element_blank(),
legend.position = c(1.25, 0.8),
plot.tag.position=c(0.01,0.98),
legend.title = element_blank(),
legend.text = element_text(colour="black", size=10),
axis.line.x = element_line(colour = "black", size = 1),
axis.line.y = element_line(colour = "black", size = 1),
axis.text.x = element_text(face="plain", color="black", size=16, angle=0),
axis.text.y = element_text(face="plain", color="black", size=16, angle=0),
axis.title.x = element_text(size=16,face="plain", margin = margin(r=0,10,0,0)),
axis.title.y = element_text(size=16,face="plain", margin = margin(r=10,0,0,0)),
axis.ticks = element_line(size = 1),
axis.ticks.length = unit(.3, "cm"))
## Create customized functions for analysis ####
# Create function to calculate standard error and upper/lower standard deviation
<- function(x) sd(x,na.rm=T) / sqrt(length(na.exclude(x)))
standard_error <- function(x) mean(x,na.rm=T)+(sd(x)/2)
upper_SD <- function(x) mean(x,na.rm=T)-(sd(x)/2) lower_SD
First, we bootstrapped the different metrics of (sexual) selection.
## Bootastrap (sexual) selection metrics ####
### Opportuity for selection (I) ####
# Arena size
<-as.data.table(D_data_Large_arena$rel_m_RS)
D_data_Large_arena_Male_rel_propRS <- function(d, i){
c <- d[i,]
d2 return(var(d2[,1], na.rm=TRUE))
}<- boot(D_data_Large_arena_Male_rel_propRS, c, R=10000)
I_Large_arena_Male_bootvar
<-as.data.table(D_data_Large_arena$rel_f_RS)
D_data_Large_arena_Female_rel_propRS
<- boot(D_data_Large_arena_Female_rel_propRS, c, R=10000)
I_Large_arena_Female_bootvar
<-as.data.table(D_data_Small_arena$rel_m_RS)
D_data_Small_arena_Male_rel_propRS
<- boot(D_data_Small_arena_Male_rel_propRS, c, R=10000)
I_Small_arena_Male_bootvar
<-as.data.table(D_data_Small_arena$rel_f_RS)
D_data_Small_arena_Female_rel_propRS
<- boot(D_data_Small_arena_Female_rel_propRS, c, R=10000)
I_Small_arena_Female_bootvar
# Population size
<-as.data.table(D_data_Large_pop$rel_m_RS)
D_data_Large_pop_Male_rel_propRS
<- boot(D_data_Large_pop_Male_rel_propRS, c, R=10000)
I_Large_pop_Male_bootvar
<-as.data.table(D_data_Large_pop$rel_f_RS)
D_data_Large_pop_Female_rel_propRS
<- boot(D_data_Large_pop_Female_rel_propRS, c, R=10000)
I_Large_pop_Female_bootvar
<-as.data.table(D_data_Small_pop$rel_m_RS)
D_data_Small_pop_Male_rel_propRS
<- boot(D_data_Small_pop_Male_rel_propRS, c, R=10000)
I_Small_pop_Male_bootvar
<-as.data.table(D_data_Small_pop$rel_f_RS)
D_data_Small_pop_Female_rel_propRS
<- boot(D_data_Small_pop_Female_rel_propRS, c, R=10000)
I_Small_pop_Female_bootvar rm("c")
### Opportunity for sexual selection (Is) ####
# Arena size
<-as.data.table(D_data_Large_arena$rel_m_cMS)
D_data_Large_arena_Male_relMS <- function(d, i){
c <- d[i,]
d2 return(var(d2[,1], na.rm=TRUE))
}<- boot(D_data_Large_arena_Male_relMS, c, R=10000)
Is_Large_arena_Male_bootvar
<-as.data.table(D_data_Large_arena$rel_f_cMS)
D_data_Large_arena_Female_relMS
<- boot(D_data_Large_arena_Female_relMS, c, R=10000)
Is_Large_arena_Female_bootvar
<-as.data.table(D_data_Small_arena$rel_m_cMS)
D_data_Small_arena_Male_relMS
<- boot(D_data_Small_arena_Male_relMS, c, R=10000)
Is_Small_arena_Male_bootvar
<-as.data.table(D_data_Small_arena$rel_f_cMS)
D_data_Small_arena_Female_relMS
<- boot(D_data_Small_arena_Female_relMS, c, R=10000)
Is_Small_arena_Female_bootvar
# Population size
<-as.data.table(D_data_Large_pop$rel_m_cMS)
D_data_Large_pop_Male_relMS
<- boot(D_data_Large_pop_Male_relMS, c, R=10000)
Is_Large_pop_Male_bootvar
<-as.data.table(D_data_Large_pop$rel_f_cMS)
D_data_Large_pop_Female_relMS
<- boot(D_data_Large_pop_Female_relMS, c, R=10000)
Is_Large_pop_Female_bootvar
<-as.data.table(D_data_Small_pop$rel_m_cMS)
D_data_Small_pop_Male_relMS
<- boot(D_data_Small_pop_Male_relMS, c, R=10000)
Is_Small_pop_Male_bootvar
<-as.data.table(D_data_Small_pop$rel_f_cMS)
D_data_Small_pop_Female_relMS
<- boot(D_data_Small_pop_Female_relMS, c, R=10000)
Is_Small_pop_Female_bootvar rm("c")
### Sexual selection gradient (Bateman gradient) ####
# Arena size
<-as.data.table(cbind(D_data_Large_arena$rel_m_RS,D_data_Large_arena$rel_m_cMS))
D_data_Large_arena_Male_B
<- function(d, i){
c <- d[i,]
d2 return(lm(V1 ~V2,data=d2)$coefficients[2])
}<- boot(D_data_Large_arena_Male_B, c, R=10000)
B_Large_arena_Male_bootvar
<-as.data.table(cbind(D_data_Small_arena$rel_m_RS,D_data_Small_arena$rel_m_cMS))
D_data_Small_arena_Male_B
<- boot(D_data_Small_arena_Male_B, c, R=10000)
B_Small_arena_Male_bootvar
<-as.data.table(cbind(D_data_Large_arena$rel_f_RS,D_data_Large_arena$rel_f_cMS))
D_data_Large_arena_Female_B
<- boot(D_data_Large_arena_Female_B, c, R=10000)
B_Large_arena_Female_bootvar
<-as.data.table(cbind(D_data_Small_arena$rel_f_RS,D_data_Small_arena$rel_f_cMS))
D_data_Small_arena_Female_B
<- boot(D_data_Small_arena_Female_B, c, R=10000)
B_Small_arena_Female_bootvar
#Population size
<-as.data.table(cbind(D_data_Large_pop$rel_m_RS,D_data_Large_pop$rel_m_cMS))
D_data_Large_pop_Male_B
<- boot(D_data_Large_pop_Male_B, c, R=10000)
B_Large_pop_Male_bootvar
<-as.data.table(cbind(D_data_Small_pop$rel_m_RS,D_data_Small_pop$rel_m_cMS))
D_data_Small_pop_Male_B
<- boot(D_data_Small_pop_Male_B, c, R=10000)
B_Small_pop_Male_bootvar
<-as.data.table(cbind(D_data_Large_pop$rel_f_RS,D_data_Large_pop$rel_f_cMS))
D_data_Large_pop_Female_B
<- boot(D_data_Large_pop_Female_B, c, R=10000)
B_Large_pop_Female_bootvar
<-as.data.table(cbind(D_data_Small_pop$rel_f_RS,D_data_Small_pop$rel_f_cMS))
D_data_Small_pop_Female_B
<- boot(D_data_Small_pop_Female_B, c, R=10000)
B_Small_pop_Female_bootvar rm("c")
### Jones index (S) ####
# Arena size
<- function(d, i){
c <- d[i,]
d2 return(lm(d2$V1 ~d2$V2)$coefficients[2]*sqrt(var(d2$V2, na.rm=TRUE)))
}
<- boot(D_data_Large_arena_Male_B, c, R=10000)
S_Large_arena_Male_bootvar
<- boot(D_data_Small_arena_Male_B, c, R=10000)
S_Small_arena_Male_bootvar
<- boot(D_data_Large_arena_Female_B, c, R=10000)
S_Large_arena_Female_bootvar
<- boot(D_data_Small_arena_Female_B, c, R=10000)
S_Small_arena_Female_bootvar
#Population size
<- boot(D_data_Large_pop_Male_B, c, R=10000)
S_Large_pop_Male_bootvar
<- boot(D_data_Small_pop_Male_B, c, R=10000)
S_Small_pop_Male_bootvar
<- boot(D_data_Large_pop_Female_B, c, R=10000)
S_Large_pop_Female_bootvar
<- boot(D_data_Small_pop_Female_B, c, R=10000)
S_Small_pop_Female_bootvar rm("c")
### Extract data and write results table ####
<- as.data.frame(cbind("Male", "Small population size", "Opportunity for selection", as.numeric(mean(I_Small_pop_Male_bootvar$t)), quantile(I_Small_pop_Male_bootvar$t,.025, names = FALSE), quantile(I_Small_pop_Male_bootvar$t,.975, names = FALSE)))
PhenVarBoot_Table_Male_Small_pop_I <- as.data.frame(cbind("Male", "Large population size", "Opportunity for selection", mean(I_Large_pop_Male_bootvar$t), quantile(I_Large_pop_Male_bootvar$t,.025, names = FALSE), quantile(I_Large_pop_Male_bootvar$t,.975, names = FALSE)))
PhenVarBoot_Table_Male_Large_pop_I <- as.data.frame(cbind("Male", "Large arena size", "Opportunity for selection", mean(I_Large_arena_Male_bootvar$t), quantile(I_Large_arena_Male_bootvar$t,.025, names = FALSE), quantile(I_Large_arena_Male_bootvar$t,.975, names = FALSE)))
PhenVarBoot_Table_Male_Large_arena_I <- as.data.frame(cbind("Male", "Small arena size", "Opportunity for selection", mean(I_Small_arena_Male_bootvar$t), quantile(I_Small_arena_Male_bootvar$t,.025, names = FALSE), quantile(I_Small_arena_Male_bootvar$t,.975, names = FALSE)))
PhenVarBoot_Table_Male_Small_arena_I <- as.data.frame(cbind("Male", "Small population size", "Opportunity for sexual selection", mean(Is_Small_pop_Male_bootvar$t), quantile(Is_Small_pop_Male_bootvar$t,.025, names = FALSE), quantile(Is_Small_pop_Male_bootvar$t,.975, names = FALSE)))
PhenVarBoot_Table_Male_Small_pop_Is <- as.data.frame(cbind("Male", "Large population size", "Opportunity for sexual selection", mean(Is_Large_pop_Male_bootvar$t), quantile(Is_Large_pop_Male_bootvar$t,.025, names = FALSE), quantile(Is_Large_pop_Male_bootvar$t,.975, names = FALSE)))
PhenVarBoot_Table_Male_Large_pop_Is <- as.data.frame(cbind("Male", "Large arena size", "Opportunity for sexual selection", mean(Is_Large_arena_Male_bootvar$t), quantile(Is_Large_arena_Male_bootvar$t,.025, names = FALSE), quantile(Is_Large_arena_Male_bootvar$t,.975, names = FALSE)))
PhenVarBoot_Table_Male_Large_arena_Is <- as.data.frame(cbind("Male", "Small arena size", "Opportunity for sexual selection", mean(Is_Small_arena_Male_bootvar$t), quantile(Is_Small_arena_Male_bootvar$t,.025, names = FALSE), quantile(Is_Small_arena_Male_bootvar$t,.975, names = FALSE)))
PhenVarBoot_Table_Male_Small_arena_Is <- as.data.frame(cbind("Male", "Small population size", "Bateman gradient", mean(B_Small_pop_Male_bootvar$t), quantile(B_Small_pop_Male_bootvar$t,.025, names = FALSE), quantile(B_Small_pop_Male_bootvar$t,.975, names = FALSE)))
PhenVarBoot_Table_Male_Small_pop_B <- as.data.frame(cbind("Male", "Large population size", "Bateman gradient", mean(B_Large_pop_Male_bootvar$t), quantile(B_Large_pop_Male_bootvar$t,.025, names = FALSE), quantile(B_Large_pop_Male_bootvar$t,.975, names = FALSE)))
PhenVarBoot_Table_Male_Large_pop_B <- as.data.frame(cbind("Male", "Large arena size", "Bateman gradient", mean(B_Large_arena_Male_bootvar$t), quantile(B_Large_arena_Male_bootvar$t,.025, names = FALSE), quantile(B_Large_arena_Male_bootvar$t,.975, names = FALSE)))
PhenVarBoot_Table_Male_Large_arena_B <- as.data.frame(cbind("Male", "Small arena size", "Bateman gradient", mean(B_Small_arena_Male_bootvar$t), quantile(B_Small_arena_Male_bootvar$t,.025, names = FALSE), quantile(B_Small_arena_Male_bootvar$t,.975, names = FALSE)))
PhenVarBoot_Table_Male_Small_arena_B <- as.data.frame(cbind("Male", "Small population size", "Jones index", mean(S_Small_pop_Male_bootvar$t,na.rm = T), quantile(S_Small_pop_Male_bootvar$t,.025, names = FALSE,na.rm = T), quantile(S_Small_pop_Male_bootvar$t,.975, names = FALSE,na.rm = T)))
PhenVarBoot_Table_Male_Small_pop_S <- as.data.frame(cbind("Male", "Large population size", "Jones index", mean(S_Large_pop_Male_bootvar$t,na.rm = T), quantile(S_Large_pop_Male_bootvar$t,.025, names = FALSE,na.rm = T), quantile(S_Large_pop_Male_bootvar$t,.975, names = FALSE,na.rm = T)))
PhenVarBoot_Table_Male_Large_pop_S <- as.data.frame(cbind("Male", "Large arena size", "Jones index", mean(S_Large_arena_Male_bootvar$t,na.rm = T), quantile(S_Large_arena_Male_bootvar$t,.025, names = FALSE,na.rm = T), quantile(S_Large_arena_Male_bootvar$t,.975, names = FALSE,na.rm = T)))
PhenVarBoot_Table_Male_Large_arena_S <- as.data.frame(cbind("Male", "Small arena size", "Jones index", mean(S_Small_arena_Male_bootvar$t,na.rm = T), quantile(S_Small_arena_Male_bootvar$t,.025, names = FALSE,na.rm = T), quantile(S_Small_arena_Male_bootvar$t,.975, names = FALSE,na.rm = T)))
PhenVarBoot_Table_Male_Small_arena_S
<- as.data.frame(cbind("Female", "Small population size", "Opportunity for selection", mean(I_Small_pop_Female_bootvar$t), quantile(I_Small_pop_Female_bootvar$t,.025, names = FALSE), quantile(I_Small_pop_Female_bootvar$t,.975, names = FALSE)))
PhenVarBoot_Table_Female_Small_pop_I <- as.data.frame(cbind("Female", "Large population size", "Opportunity for selection", mean(I_Large_pop_Female_bootvar$t), quantile(I_Large_pop_Female_bootvar$t,.025, names = FALSE), quantile(I_Large_pop_Female_bootvar$t,.975, names = FALSE)))
PhenVarBoot_Table_Female_Large_pop_I <- as.data.frame(cbind("Female", "Large arena size", "Opportunity for selection", mean(I_Large_arena_Female_bootvar$t), quantile(I_Large_arena_Female_bootvar$t,.025, names = FALSE), quantile(I_Large_arena_Female_bootvar$t,.975, names = FALSE)))
PhenVarBoot_Table_Female_Large_arena_I <- as.data.frame(cbind("Female", "Small arena size", "Opportunity for selection", mean(I_Small_arena_Female_bootvar$t), quantile(I_Small_arena_Female_bootvar$t,.025, names = FALSE), quantile(I_Small_arena_Female_bootvar$t,.975, names = FALSE)))
PhenVarBoot_Table_Female_Small_arena_I <- as.data.frame(cbind("Female", "Small population size", "Opportunity for sexual selection", mean(Is_Small_pop_Female_bootvar$t), quantile(Is_Small_pop_Female_bootvar$t,.025, names = FALSE), quantile(Is_Small_pop_Female_bootvar$t,.975, names = FALSE)))
PhenVarBoot_Table_Female_Small_pop_Is <- as.data.frame(cbind("Female", "Large population size", "Opportunity for sexual selection", mean(Is_Large_pop_Female_bootvar$t), quantile(Is_Large_pop_Female_bootvar$t,.025, names = FALSE), quantile(Is_Large_pop_Female_bootvar$t,.975, names = FALSE)))
PhenVarBoot_Table_Female_Large_pop_Is <- as.data.frame(cbind("Female", "Large arena size", "Opportunity for sexual selection", mean(Is_Large_arena_Female_bootvar$t), quantile(Is_Large_arena_Female_bootvar$t,.025, names = FALSE), quantile(Is_Large_arena_Female_bootvar$t,.975, names = FALSE)))
PhenVarBoot_Table_Female_Large_arena_Is <- as.data.frame(cbind("Female", "Small arena size", "Opportunity for sexual selection", mean(Is_Small_arena_Female_bootvar$t), quantile(Is_Small_arena_Female_bootvar$t,.025, names = FALSE), quantile(Is_Small_arena_Female_bootvar$t,.975, names = FALSE)))
PhenVarBoot_Table_Female_Small_arena_Is <- as.data.frame(cbind("Female", "Small population size", "Bateman gradient", mean(B_Small_pop_Female_bootvar$t), quantile(B_Small_pop_Female_bootvar$t,.025, names = FALSE), quantile(B_Small_pop_Female_bootvar$t,.975, names = FALSE)))
PhenVarBoot_Table_Female_Small_pop_B <- as.data.frame(cbind("Female", "Large population size", "Bateman gradient", mean(B_Large_pop_Female_bootvar$t), quantile(B_Large_pop_Female_bootvar$t,.025, names = FALSE), quantile(B_Large_pop_Female_bootvar$t,.975, names = FALSE)))
PhenVarBoot_Table_Female_Large_pop_B <- as.data.frame(cbind("Female", "Large arena size", "Bateman gradient", mean(B_Large_arena_Female_bootvar$t), quantile(B_Large_arena_Female_bootvar$t,.025, names = FALSE), quantile(B_Large_arena_Female_bootvar$t,.975, names = FALSE)))
PhenVarBoot_Table_Female_Large_arena_B <- as.data.frame(cbind("Female", "Small arena size", "Bateman gradient", mean(B_Small_arena_Female_bootvar$t), quantile(B_Small_arena_Female_bootvar$t,.025, names = FALSE), quantile(B_Small_arena_Female_bootvar$t,.975, names = FALSE)))
PhenVarBoot_Table_Female_Small_arena_B <- as.data.frame(cbind("Female", "Small population size", "Jones index", mean(S_Small_pop_Female_bootvar$t,na.rm = T), quantile(S_Small_pop_Female_bootvar$t,.025, names = FALSE,na.rm = T), quantile(S_Small_pop_Female_bootvar$t,.975, names = FALSE,na.rm = T)))
PhenVarBoot_Table_Female_Small_pop_S <- as.data.frame(cbind("Female", "Large population size", "Jones index", mean(S_Large_pop_Female_bootvar$t,na.rm = T), quantile(S_Large_pop_Female_bootvar$t,.025, names = FALSE,na.rm = T), quantile(S_Large_pop_Female_bootvar$t,.975, names = FALSE,na.rm = T)))
PhenVarBoot_Table_Female_Large_pop_S <- as.data.frame(cbind("Female", "Large arena size", "Jones index", mean(S_Large_arena_Female_bootvar$t,na.rm = T), quantile(S_Large_arena_Female_bootvar$t,.025, names = FALSE,na.rm = T), quantile(S_Large_arena_Female_bootvar$t,.975, names = FALSE,na.rm = T)))
PhenVarBoot_Table_Female_Large_arena_S <- as.data.frame(cbind("Female", "Small arena size", "Jones index", mean(S_Small_arena_Female_bootvar$t,na.rm = T), quantile(S_Small_arena_Female_bootvar$t,.025, names = FALSE,na.rm = T), quantile(S_Small_arena_Female_bootvar$t,.975, names = FALSE,na.rm = T)))
PhenVarBoot_Table_Female_Small_arena_S
<- as.data.frame(as.matrix(rbind(PhenVarBoot_Table_Male_Small_pop_I,PhenVarBoot_Table_Male_Large_pop_I,PhenVarBoot_Table_Male_Large_arena_I,PhenVarBoot_Table_Male_Small_arena_I,
Table_BatemanMetrics
PhenVarBoot_Table_Male_Small_pop_Is,PhenVarBoot_Table_Male_Large_pop_Is,PhenVarBoot_Table_Male_Large_arena_Is,PhenVarBoot_Table_Male_Small_arena_Is,
PhenVarBoot_Table_Male_Small_pop_B,PhenVarBoot_Table_Male_Large_pop_B,PhenVarBoot_Table_Male_Large_arena_B,PhenVarBoot_Table_Male_Small_arena_B,
PhenVarBoot_Table_Male_Small_pop_S,PhenVarBoot_Table_Male_Large_pop_S,PhenVarBoot_Table_Male_Large_arena_S,PhenVarBoot_Table_Male_Small_arena_S,
PhenVarBoot_Table_Female_Small_pop_I,PhenVarBoot_Table_Female_Large_pop_I,PhenVarBoot_Table_Female_Large_arena_I,PhenVarBoot_Table_Female_Small_arena_I,
PhenVarBoot_Table_Female_Small_pop_Is,PhenVarBoot_Table_Female_Large_pop_Is,PhenVarBoot_Table_Female_Large_arena_Is,PhenVarBoot_Table_Female_Small_arena_Is,
PhenVarBoot_Table_Female_Small_pop_B,PhenVarBoot_Table_Female_Large_pop_B,PhenVarBoot_Table_Female_Large_arena_B,PhenVarBoot_Table_Female_Small_arena_B,digits=2)
PhenVarBoot_Table_Female_Small_pop_S,PhenVarBoot_Table_Female_Large_pop_S,PhenVarBoot_Table_Female_Large_arena_S,PhenVarBoot_Table_Female_Small_arena_S)),
is.table(Table_BatemanMetrics)
colnames(Table_BatemanMetrics)[1] <- "Sex"
colnames(Table_BatemanMetrics)[2] <- "Treatment"
colnames(Table_BatemanMetrics)[3] <- "Selection metric"
colnames(Table_BatemanMetrics)[4] <- "Variance"
colnames(Table_BatemanMetrics)[5] <- "l95_CI"
colnames(Table_BatemanMetrics)[6] <- "u95_CI"
4]=as.numeric(Table_BatemanMetrics[,4])
Table_BatemanMetrics[,5]=as.numeric(Table_BatemanMetrics[,5])
Table_BatemanMetrics[,6]=as.numeric(Table_BatemanMetrics[,6]) Table_BatemanMetrics[,
Next, we bootstrapped the mating differential on body mass.
## Mating and selection differential on body mass ####
#Standardize body mass
$stder_BM_focal=NA
D_data_m$stder_BM_focal=D_data_m$Body_mass_mg_focal-mean(D_data_m$Body_mass_mg_focal)
D_data_m$stder_BM_focal=D_data_m$stder_BM_focal/sd(D_data_m$Body_mass_mg_focal)
D_data_m
#Standardize body mass
$stder_BM_focal=NA
D_data_f$stder_BM_focal=D_data_f$Body_mass_mg_focal-mean(D_data_f$Body_mass_mg_focal)
D_data_f$stder_BM_focal=D_data_f$stder_BM_focal/sd(D_data_f$Body_mass_mg_focal)
D_data_f
## Bootstrap mating differential on body mass ####
# Across treatments
# Males
# Calculate relative fitness
=D_data_m$m_cMS/mean(D_data_m$m_cMS,na.rm=T)
rel_fit_males
= function(dataFrame, indexVector) {
mDif_BW_males # Calculate selection differential
= cov(dataFrame[indexVector, match("stder_BM_focal",names(dataFrame))],dataFrame[indexVector, match("rel_fit_males",names(dataFrame))],use="complete.obs",method = "pearson")
s return(s)
}
=as.data.frame(cbind(rel_fit_males,D_data_m$stder_BM_focal))
data_mDifnames(data_mDif)[1] <- "rel_fit_males"
names(data_mDif)[2] <- "stder_BM_focal"
= boot(data_mDif, mDif_BW_males, R = 10000)
boot_BW_males
# Females
# Calculate relative fitness
=D_data_f$f_cMS/mean(D_data_f$f_cMS,na.rm=T)
rel_fit_females
= function(dataFrame, indexVector) {
mDif_BW_females # Calculate selection differential
= cov(dataFrame[indexVector, match("stder_BM_focal",names(dataFrame))],dataFrame[indexVector, match("rel_fit_females",names(dataFrame))],use="complete.obs",method = "pearson")
s return(s)
}
=as.data.frame(cbind(rel_fit_females,D_data_f$stder_BM_focal))
data_mDif_Fnames(data_mDif_F)[1] <- "rel_fit_females"
names(data_mDif_F)[2] <- "stder_BM_focal"
= boot(data_mDif_F, mDif_BW_females, R = 10000)
boot_BW_females
# Mating differential for each density treatment
# Males
# Group size
# Small group
=D_data_m[D_data_m$Gr_size=='SG',]
D_data_m_SG=D_data_m_SG$m_cMS/mean(D_data_m_SG$m_cMS,na.rm=T)
rel_fit_males_M_SG
=as.data.frame(cbind(rel_fit_males_M_SG,D_data_m_SG$stder_BM_focal))
data_mDif_M_SGnames(data_mDif_M_SG)[1] <- "rel_fit_males"
names(data_mDif_M_SG)[2] <- "stder_BM_focal"
= boot(data_mDif_M_SG, mDif_BW_males, R = 10000)
boot_BW_males_group_size_small
# Large group
=D_data_m[D_data_m$Gr_size=='LG',]
D_data_m_LG=D_data_m_LG$m_cMS/mean(D_data_m_LG$m_cMS,na.rm=T)
rel_fit_males_M_LG
=as.data.frame(cbind(rel_fit_males_M_LG,D_data_m_LG$stder_BM_focal))
data_mDif_M_LGnames(data_mDif_M_LG)[1] <- "rel_fit_males"
names(data_mDif_M_LG)[2] <- "stder_BM_focal"
= boot(data_mDif_M_LG, mDif_BW_males, R = 10000)
boot_BW_males_group_size_large
# Arena size
# Large Arena
=D_data_m[D_data_m$Arena=='Large',]
D_data_m_LA=D_data_m_LA$m_cMS/mean(D_data_m_LA$m_cMS,na.rm=T)
rel_fit_males_M_LA
=as.data.frame(cbind(rel_fit_males_M_LA,D_data_m_LA$stder_BM_focal))
data_mDif_M_LAnames(data_mDif_M_LA)[1] <- "rel_fit_males"
names(data_mDif_M_LA)[2] <- "stder_BM_focal"
= boot(data_mDif_M_LA, mDif_BW_males, R = 10000)
boot_BW_males_arena_large
# Small Arena
=D_data_m[D_data_m$Arena=='Small',]
D_data_m_SA=D_data_m_SA$m_cMS/mean(D_data_m_SA$m_cMS,na.rm=T)
rel_fit_males_M_SA
=as.data.frame(cbind(rel_fit_males_M_SA,D_data_m_SA$stder_BM_focal))
data_mDif_M_SAnames(data_mDif_M_SA)[1] <- "rel_fit_males"
names(data_mDif_M_SA)[2] <- "stder_BM_focal"
= boot(data_mDif_M_SA, mDif_BW_males, R = 10000)
boot_BW_males_arena_small
# Females
# Group size
# Small group
=D_data_f[D_data_f$Gr_size=='SG',]
D_data_f_SG=D_data_f_SG$f_cMS/mean(D_data_f_SG$f_cMS,na.rm=T)
rel_fit_females_F_SG
=as.data.frame(cbind(rel_fit_females_F_SG,D_data_f_SG$stder_BM_focal))
data_mDif_F_SGnames(data_mDif_F_SG)[1] <- "rel_fit_females"
names(data_mDif_F_SG)[2] <- "stder_BM_focal"
= boot(data_mDif_F_SG, mDif_BW_females, R = 10000)
boot_BW_females_group_size_small
# Large group
=D_data_f[D_data_f$Gr_size=='LG',]
D_data_f_LG=D_data_f_LG$f_cMS/mean(D_data_f_LG$f_cMS,na.rm=T)
rel_fit_females_F_LG
=as.data.frame(cbind(rel_fit_females_F_LG,D_data_f_LG$stder_BM_focal))
data_mDif_F_LGnames(data_mDif_F_LG)[1] <- "rel_fit_females"
names(data_mDif_F_LG)[2] <- "stder_BM_focal"
= boot(data_mDif_F_LG, mDif_BW_females, R = 10000)
boot_BW_females_group_size_large
# Arena size
# Large Arena
=D_data_f[D_data_f$Arena=='Large',]
D_data_f_LA=D_data_f_LA$f_cMS/mean(D_data_f_LA$f_cMS,na.rm=T)
rel_fit_females_F_LA
=as.data.frame(cbind(rel_fit_females_F_LA,D_data_f_LA$stder_BM_focal))
data_mDif_F_LAnames(data_mDif_F_LA)[1] <- "rel_fit_females"
names(data_mDif_F_LA)[2] <- "stder_BM_focal"
= boot(data_mDif_F_LA, mDif_BW_females, R = 10000)
boot_BW_females_arena_large
# Small Arena
=D_data_f[D_data_f$Arena=='Small',]
D_data_f_SA=D_data_f_SA$f_cMS/mean(D_data_f_SA$f_cMS,na.rm=T)
rel_fit_females_F_SA
=as.data.frame(cbind(rel_fit_females_F_SA,D_data_f_SA$stder_BM_focal))
data_mDif_F_SAnames(data_mDif_F_SA)[1] <- "rel_fit_females"
names(data_mDif_F_SA)[2] <- "stder_BM_focal"
= boot(data_mDif_F_SA, mDif_BW_females, R = 10000)
boot_BW_females_arena_small
### Extract data and write results table ####
<- as.data.frame(cbind("Male", "Body mass", "Combined", mean(boot_BW_males$t,na.rm=T), quantile(boot_BW_males$t,.025, names = FALSE,na.rm=T), quantile(boot_BW_males$t,.975, names = FALSE,na.rm=T)))
boot_data_BW_males <- as.data.frame(cbind("Female", "Body mass", "Combined", mean(boot_BW_females$t,na.rm=T), quantile(boot_BW_females$t,.025, names = FALSE,na.rm=T), quantile(boot_BW_females$t,.975, names = FALSE,na.rm=T)))
boot_data_BW_females
<- as.data.frame(cbind("Male", "Body mass", "Small group size", mean(boot_BW_males_group_size_small$t,na.rm=T), quantile(boot_BW_males_group_size_small$t,.025, names = FALSE,na.rm=T), quantile(boot_BW_males_group_size_small$t,.975, names = FALSE,na.rm=T)))
boot_data_BW_males_group_size_small <- as.data.frame(cbind("Female", "Body mass", "Small group size", mean(boot_BW_females_group_size_small$t,na.rm=T), quantile(boot_BW_females_group_size_small$t,.025, names = FALSE,na.rm=T), quantile(boot_BW_females_group_size_small$t,.975, names = FALSE,na.rm=T)))
boot_data_BW_females_group_size_small <- as.data.frame(cbind("Male", "Body mass", "Large group size", mean(boot_BW_males_group_size_large$t,na.rm=T), quantile(boot_BW_males_group_size_large$t,.025, names = FALSE,na.rm=T), quantile(boot_BW_males_group_size_large$t,.975, names = FALSE,na.rm=T)))
boot_data_BW_males_group_size_large <- as.data.frame(cbind("Female", "Body mass", "Large group size", mean(boot_BW_females_group_size_large$t,na.rm=T), quantile(boot_BW_females_group_size_large$t,.025, names = FALSE,na.rm=T), quantile(boot_BW_females_group_size_large$t,.975, names = FALSE,na.rm=T)))
boot_data_BW_females_group_size_large <- as.data.frame(cbind("Male", "Body mass", "Small arena size", mean(boot_BW_males_arena_small$t,na.rm=T), quantile(boot_BW_males_arena_small$t,.025, names = FALSE,na.rm=T), quantile(boot_BW_males_arena_small$t,.975, names = FALSE,na.rm=T)))
boot_data_BW_males_arena_small <- as.data.frame(cbind("Female", "Body mass", "Small arena size", mean(boot_BW_females_arena_small$t,na.rm=T), quantile(boot_BW_females_arena_small$t,.025, names = FALSE,na.rm=T), quantile(boot_BW_females_arena_small$t,.975, names = FALSE,na.rm=T)))
boot_data_BW_females_arena_small <- as.data.frame(cbind("Male", "Body mass", "Large arena size", mean(boot_BW_males_arena_large$t,na.rm=T), quantile(boot_BW_males_arena_large$t,.025, names = FALSE,na.rm=T), quantile(boot_BW_males_arena_large$t,.975, names = FALSE,na.rm=T)))
boot_data_BW_males_arena_large <- as.data.frame(cbind("Female", "Body mass", "Large arena size", mean(boot_BW_females_arena_large$t,na.rm=T), quantile(boot_BW_females_arena_large$t,.025, names = FALSE,na.rm=T), quantile(boot_BW_females_arena_large$t,.975, names = FALSE,na.rm=T)))
boot_data_BW_females_arena_large
<- as.table(as.matrix(rbind(boot_data_BW_males,boot_data_BW_females,boot_data_BW_males_group_size_small,boot_data_BW_females_group_size_small,
mDifBoot_Table
boot_data_BW_males_group_size_large,boot_data_BW_females_group_size_large,
boot_data_BW_males_arena_small,boot_data_BW_females_arena_small,
boot_data_BW_males_arena_large,boot_data_BW_females_arena_large)))
is.table(mDifBoot_Table)
colnames(mDifBoot_Table)[1] <- "Sex"
colnames(mDifBoot_Table)[2] <- "Trait"
colnames(mDifBoot_Table)[3] <- "Treatment"
colnames(mDifBoot_Table)[4] <- "Coefficient"
colnames(mDifBoot_Table)[5] <- "l95_CI"
colnames(mDifBoot_Table)[6] <- "u95_CI"
=as.data.frame.matrix(mDifBoot_Table)
mDifBoot_Table$Sex <- as.factor(as.character(mDifBoot_Table$Sex))
mDifBoot_Table$Trait <- as.factor(as.character(mDifBoot_Table$Trait))
mDifBoot_Table$Treatment <- as.factor(as.character(mDifBoot_Table$Treatment))
mDifBoot_Table$Coefficient <- round(as.numeric(as.character(mDifBoot_Table$Coefficient)),digits=2)
mDifBoot_Table$l95_CI <- round(as.numeric(as.character(mDifBoot_Table$l95_CI)),digits=2)
mDifBoot_Table$u95_CI <- round(as.numeric(as.character(mDifBoot_Table$u95_CI)),digits=2) mDifBoot_Table
Here, we bootstrapped the selection differential on body mass.
## Bootstrap selection differential on body mass ####
# Across treatments
# Males
# Calculate relative fitness
=D_data_m$m_RS/mean(D_data_m$m_RS,na.rm=T)
rel_fit_males
= function(dataFrame, indexVector) {
selDif_BW_males # Calculate selection differential
= cov(dataFrame[indexVector, match("stder_BM_focal",names(dataFrame))],dataFrame[indexVector, match("rel_fit_males",names(dataFrame))],use="complete.obs",method = "pearson")
s return(s)
}
=as.data.frame(cbind(rel_fit_males,D_data_m$stder_BM_focal))
data_selDifnames(data_selDif)[1] <- "rel_fit_males"
names(data_selDif)[2] <- "stder_BM_focal"
= boot(data_selDif, selDif_BW_males, R = 10000)
boot_BW_males
# Females
# Calculate relative fitness
=D_data_f$f_RS/mean(D_data_f$f_RS,na.rm=T)
rel_fit_females
= function(dataFrame, indexVector) {
selDif_BW_females # Calculate selection differential
= cov(dataFrame[indexVector, match("stder_BM_focal",names(dataFrame))],dataFrame[indexVector, match("rel_fit_females",names(dataFrame))],use="complete.obs",method = "pearson")
s return(s)
}
=as.data.frame(cbind(rel_fit_females,D_data_f$stder_BM_focal))
data_selDif_Fnames(data_selDif_F)[1] <- "rel_fit_females"
names(data_selDif_F)[2] <- "stder_BM_focal"
= boot(data_selDif_F, selDif_BW_females, R = 10000)
boot_BW_females
# Selection differential for each density treatment
# Males
# Group size
# Small group
=D_data_m[D_data_m$Gr_size=='SG',]
D_data_m_SG=D_data_m_SG$m_RS/mean(D_data_m_SG$m_RS,na.rm=T)
rel_fit_males_M_SG
=as.data.frame(cbind(rel_fit_males_M_SG,D_data_m_SG$stder_BM_focal))
data_selDif_M_SGnames(data_selDif_M_SG)[1] <- "rel_fit_males"
names(data_selDif_M_SG)[2] <- "stder_BM_focal"
= boot(data_selDif_M_SG, selDif_BW_males, R = 10000)
boot_BW_males_group_size_small
# Large group
=D_data_m[D_data_m$Gr_size=='LG',]
D_data_m_LG=D_data_m_LG$m_RS/mean(D_data_m_LG$m_RS,na.rm=T)
rel_fit_males_M_LG
=as.data.frame(cbind(rel_fit_males_M_LG,D_data_m_LG$stder_BM_focal))
data_selDif_M_LGnames(data_selDif_M_LG)[1] <- "rel_fit_males"
names(data_selDif_M_LG)[2] <- "stder_BM_focal"
= boot(data_selDif_M_LG, selDif_BW_males, R = 10000)
boot_BW_males_group_size_large
# Arena size
# Large Arena
=D_data_m[D_data_m$Arena=='Large',]
D_data_m_LA=D_data_m_LA$m_RS/mean(D_data_m_LA$m_RS,na.rm=T)
rel_fit_males_M_LA
=as.data.frame(cbind(rel_fit_males_M_LA,D_data_m_LA$stder_BM_focal))
data_selDif_M_LAnames(data_selDif_M_LA)[1] <- "rel_fit_males"
names(data_selDif_M_LA)[2] <- "stder_BM_focal"
= boot(data_selDif_M_LA, selDif_BW_males, R = 10000)
boot_BW_males_arena_large
# Small Arena
=D_data_m[D_data_m$Arena=='Small',]
D_data_m_SA=D_data_m_SA$m_RS/mean(D_data_m_SA$m_RS,na.rm=T)
rel_fit_males_M_SA
=as.data.frame(cbind(rel_fit_males_M_SA,D_data_m_SA$stder_BM_focal))
data_selDif_M_SAnames(data_selDif_M_SA)[1] <- "rel_fit_males"
names(data_selDif_M_SA)[2] <- "stder_BM_focal"
= boot(data_selDif_M_SA, selDif_BW_males, R = 10000)
boot_BW_males_arena_small
# Females
# Group size
# Small group
=D_data_f[D_data_f$Gr_size=='SG',]
D_data_f_SG=D_data_f_SG$f_RS/mean(D_data_f_SG$f_RS,na.rm=T)
rel_fit_females_F_SG
=as.data.frame(cbind(rel_fit_females_F_SG,D_data_f_SG$stder_BM_focal))
data_selDif_F_SGnames(data_selDif_F_SG)[1] <- "rel_fit_females"
names(data_selDif_F_SG)[2] <- "stder_BM_focal"
= boot(data_selDif_F_SG, selDif_BW_females, R = 10000)
boot_BW_females_group_size_small
# Large group
=D_data_f[D_data_f$Gr_size=='LG',]
D_data_f_LG=D_data_f_LG$f_RS/mean(D_data_f_LG$f_RS,na.rm=T)
rel_fit_females_F_LG
=as.data.frame(cbind(rel_fit_females_F_LG,D_data_f_LG$stder_BM_focal))
data_selDif_F_LGnames(data_selDif_F_LG)[1] <- "rel_fit_females"
names(data_selDif_F_LG)[2] <- "stder_BM_focal"
= boot(data_selDif_F_LG, selDif_BW_females, R = 10000)
boot_BW_females_group_size_large
# Arena size
# Large Arena
=D_data_f[D_data_f$Arena=='Large',]
D_data_f_LA=D_data_f_LA$f_RS/mean(D_data_f_LA$f_RS,na.rm=T)
rel_fit_females_F_LA
=as.data.frame(cbind(rel_fit_females_F_LA,D_data_f_LA$stder_BM_focal))
data_selDif_F_LAnames(data_selDif_F_LA)[1] <- "rel_fit_females"
names(data_selDif_F_LA)[2] <- "stder_BM_focal"
= boot(data_selDif_F_LA, selDif_BW_females, R = 10000)
boot_BW_females_arena_large
# Small Arena
=D_data_f[D_data_f$Arena=='Small',]
D_data_f_SA=D_data_f_SA$f_RS/mean(D_data_f_SA$f_RS,na.rm=T)
rel_fit_females_F_SA
=as.data.frame(cbind(rel_fit_females_F_SA,D_data_f_SA$stder_BM_focal))
data_selDif_F_SAnames(data_selDif_F_SA)[1] <- "rel_fit_females"
names(data_selDif_F_SA)[2] <- "stder_BM_focal"
= boot(data_selDif_F_SA, selDif_BW_females, R = 10000)
boot_BW_females_arena_small
### Extract data and write results table ####
<- as.data.frame(cbind("Male", "Body mass", "Combined", mean(boot_BW_males$t,na.rm=T), quantile(boot_BW_males$t,.025, names = FALSE,na.rm=T), quantile(boot_BW_males$t,.975, names = FALSE,na.rm=T)))
boot_data_BW_males <- as.data.frame(cbind("Female", "Body mass", "Combined", mean(boot_BW_females$t,na.rm=T), quantile(boot_BW_females$t,.025, names = FALSE,na.rm=T), quantile(boot_BW_females$t,.975, names = FALSE,na.rm=T)))
boot_data_BW_females
<- as.data.frame(cbind("Male", "Body mass", "Small group size", mean(boot_BW_males_group_size_small$t,na.rm=T), quantile(boot_BW_males_group_size_small$t,.025, names = FALSE,na.rm=T), quantile(boot_BW_males_group_size_small$t,.975, names = FALSE,na.rm=T)))
boot_data_BW_males_group_size_small <- as.data.frame(cbind("Female", "Body mass", "Small group size", mean(boot_BW_females_group_size_small$t,na.rm=T), quantile(boot_BW_females_group_size_small$t,.025, names = FALSE,na.rm=T), quantile(boot_BW_females_group_size_small$t,.975, names = FALSE,na.rm=T)))
boot_data_BW_females_group_size_small <- as.data.frame(cbind("Male", "Body mass", "large group size", mean(boot_BW_males_group_size_large$t,na.rm=T), quantile(boot_BW_males_group_size_large$t,.025, names = FALSE,na.rm=T), quantile(boot_BW_males_group_size_large$t,.975, names = FALSE,na.rm=T)))
boot_data_BW_males_group_size_large <- as.data.frame(cbind("Female", "Body mass", "large group size", mean(boot_BW_females_group_size_large$t,na.rm=T), quantile(boot_BW_females_group_size_large$t,.025, names = FALSE,na.rm=T), quantile(boot_BW_females_group_size_large$t,.975, names = FALSE,na.rm=T)))
boot_data_BW_females_group_size_large <- as.data.frame(cbind("Male", "Body mass", "Small arena size", mean(boot_BW_males_arena_small$t,na.rm=T), quantile(boot_BW_males_arena_small$t,.025, names = FALSE,na.rm=T), quantile(boot_BW_males_arena_small$t,.975, names = FALSE,na.rm=T)))
boot_data_BW_males_arena_small <- as.data.frame(cbind("Female", "Body mass", "Small arena size", mean(boot_BW_females_arena_small$t,na.rm=T), quantile(boot_BW_females_arena_small$t,.025, names = FALSE,na.rm=T), quantile(boot_BW_females_arena_small$t,.975, names = FALSE,na.rm=T)))
boot_data_BW_females_arena_small <- as.data.frame(cbind("Male", "Body mass", "large arena size", mean(boot_BW_males_arena_large$t,na.rm=T), quantile(boot_BW_males_arena_large$t,.025, names = FALSE,na.rm=T), quantile(boot_BW_males_arena_large$t,.975, names = FALSE,na.rm=T)))
boot_data_BW_males_arena_large <- as.data.frame(cbind("Female", "Body mass", "large arena size", mean(boot_BW_females_arena_large$t,na.rm=T), quantile(boot_BW_females_arena_large$t,.025, names = FALSE,na.rm=T), quantile(boot_BW_females_arena_large$t,.975, names = FALSE,na.rm=T)))
boot_data_BW_females_arena_large
<- as.table(as.matrix(rbind(boot_data_BW_males,boot_data_BW_females,boot_data_BW_males_group_size_small,boot_data_BW_females_group_size_small,
SelDifBoot_Table
boot_data_BW_males_group_size_large,boot_data_BW_females_group_size_large,
boot_data_BW_males_arena_small,boot_data_BW_females_arena_small,
boot_data_BW_males_arena_large,boot_data_BW_females_arena_large)))
is.table(SelDifBoot_Table)
colnames(SelDifBoot_Table)[1] <- "Sex"
colnames(SelDifBoot_Table)[2] <- "Trait"
colnames(SelDifBoot_Table)[3] <- "Treatment"
colnames(SelDifBoot_Table)[4] <- "Coefficient"
colnames(SelDifBoot_Table)[5] <- "l95_CI"
colnames(SelDifBoot_Table)[6] <- "u95_CI"
=as.data.frame.matrix(SelDifBoot_Table)
SelDifBoot_Table$Sex <- as.factor(as.character(SelDifBoot_Table$Sex))
SelDifBoot_Table$Trait <- as.factor(as.character(SelDifBoot_Table$Trait))
SelDifBoot_Table$Treatment <- as.factor(as.character(SelDifBoot_Table$Treatment))
SelDifBoot_Table$Coefficient <- round(as.numeric(as.character(SelDifBoot_Table$Coefficient)),digits=2)
SelDifBoot_Table$l95_CI <- round(as.numeric(as.character(SelDifBoot_Table$l95_CI)),digits=2)
SelDifBoot_Table$u95_CI <- round(as.numeric(as.character(SelDifBoot_Table$u95_CI)),digits=2) SelDifBoot_Table
.1 <- as.data.frame(as.matrix(rbind(PhenVarBoot_Table_Female_Small_pop_I,PhenVarBoot_Table_Female_Large_pop_I,
Table_2
PhenVarBoot_Table_Female_Small_pop_Is,PhenVarBoot_Table_Female_Large_pop_Is,
PhenVarBoot_Table_Female_Small_pop_B,PhenVarBoot_Table_Female_Large_pop_B,
PhenVarBoot_Table_Female_Small_pop_S,PhenVarBoot_Table_Female_Large_pop_S,
boot_data_BW_females_group_size_small,boot_data_BW_females_group_size_large,
boot_data_BW_females_group_size_small,boot_data_BW_females_group_size_large,
PhenVarBoot_Table_Male_Small_pop_I,PhenVarBoot_Table_Male_Large_pop_I,
PhenVarBoot_Table_Male_Small_pop_Is,PhenVarBoot_Table_Male_Large_pop_Is,
PhenVarBoot_Table_Male_Small_pop_B,PhenVarBoot_Table_Male_Large_pop_B,
PhenVarBoot_Table_Male_Small_pop_S,PhenVarBoot_Table_Male_Large_pop_S,
boot_data_BW_males_group_size_small,boot_data_BW_males_group_size_large,digits=2)
boot_data_BW_males_group_size_small,boot_data_BW_males_group_size_large)),
colnames(Table_2.1)[1] <- "Sex"
colnames(Table_2.1)[2] <- "Trait"
colnames(Table_2.1)[3] <- "Treatment"
colnames(Table_2.1)[4] <- "Coefficient"
colnames(Table_2.1)[5] <- "l95_CI"
colnames(Table_2.1)[6] <- "u95_CI"
.1=as.data.frame.matrix(Table_2.1)
Table_2.1$Sex <- as.factor(as.character(Table_2.1$Sex))
Table_2.1$Trait <- as.factor(as.character(Table_2.1$Trait))
Table_2.1$Treatment <- as.factor(as.character(Table_2.1$Treatment))
Table_2.1$Coefficient <- round(as.numeric(as.character(Table_2.1$Coefficient)),digits=2)
Table_2.1$l95_CI <- round(as.numeric(as.character(Table_2.1$l95_CI)),digits=2)
Table_2.1$u95_CI <- round(as.numeric(as.character(Table_2.1$u95_CI)),digits=2)
Table_2
.2 <- as.data.frame(as.matrix(rbind(PhenVarBoot_Table_Female_Small_arena_I,PhenVarBoot_Table_Female_Large_arena_I,
Table_2
PhenVarBoot_Table_Female_Small_arena_Is,PhenVarBoot_Table_Female_Large_arena_Is,
PhenVarBoot_Table_Female_Small_arena_B,PhenVarBoot_Table_Female_Large_arena_B,
PhenVarBoot_Table_Female_Small_arena_S,PhenVarBoot_Table_Female_Large_arena_S,
boot_data_BW_females_group_size_small,boot_data_BW_females_group_size_large,
boot_data_BW_females_group_size_small,boot_data_BW_females_group_size_large,
PhenVarBoot_Table_Male_Small_arena_I,PhenVarBoot_Table_Male_Large_arena_I,
PhenVarBoot_Table_Male_Small_arena_Is,PhenVarBoot_Table_Male_Large_arena_Is,
PhenVarBoot_Table_Male_Small_arena_B,PhenVarBoot_Table_Male_Large_arena_B,
PhenVarBoot_Table_Male_Small_arena_S,PhenVarBoot_Table_Male_Large_arena_S,
boot_data_BW_males_group_size_small,boot_data_BW_males_group_size_large,digits=2)
boot_data_BW_males_group_size_small,boot_data_BW_males_group_size_large)),
colnames(Table_2.2)[1] <- "Sex"
colnames(Table_2.2)[2] <- "Trait"
colnames(Table_2.2)[3] <- "Treatment"
colnames(Table_2.2)[4] <- "Coefficient"
colnames(Table_2.2)[5] <- "l95_CI"
colnames(Table_2.2)[6] <- "u95_CI"
.2=as.data.frame.matrix(Table_2.2)
Table_2.2$Sex <- as.factor(as.character(Table_2.2$Sex))
Table_2.2$Trait <- as.factor(as.character(Table_2.2$Trait))
Table_2.2$Treatment <- as.factor(as.character(Table_2.2$Treatment))
Table_2.2$Coefficient <- round(as.numeric(as.character(Table_2.2$Coefficient)),digits=2)
Table_2.2$l95_CI <- round(as.numeric(as.character(Table_2.2$l95_CI)),digits=2)
Table_2.2$u95_CI <- round(as.numeric(as.character(Table_2.2$u95_CI)),digits=2) Table_2
Table S5.1: Coefficients of variation (CV) in mating behavior for group size treatments estimated for males and females with mean and 95%CI estimated via bootstrapping.
kable(Table_2.1)
Sex | Trait | Treatment | Coefficient | l95_CI | u95_CI |
---|---|---|---|---|---|
Female | Small population size | Opportunity for selection | 0.95 | 0.77 | 1.14 |
Female | Large population size | Opportunity for selection | 0.92 | 0.78 | 1.05 |
Female | Small population size | Opportunity for sexual selection | 0.26 | 0.18 | 0.35 |
Female | Large population size | Opportunity for sexual selection | 0.60 | 0.39 | 0.85 |
Female | Small population size | Bateman gradient | 0.57 | 0.11 | 1.00 |
Female | Large population size | Bateman gradient | 0.86 | 0.68 | 1.07 |
Female | Small population size | Jones index | 0.29 | 0.05 | 0.51 |
Female | Large population size | Jones index | 0.66 | 0.51 | 0.79 |
Female | Body mass | Small group size | 0.17 | -0.07 | 0.42 |
Female | Body mass | large group size | 0.41 | 0.15 | 0.67 |
Female | Body mass | Small group size | 0.17 | -0.07 | 0.42 |
Female | Body mass | large group size | 0.41 | 0.15 | 0.67 |
Male | Small population size | Opportunity for selection | 0.91 | 0.49 | 1.45 |
Male | Large population size | Opportunity for selection | 0.90 | 0.66 | 1.16 |
Male | Small population size | Opportunity for sexual selection | 0.22 | 0.14 | 0.31 |
Male | Large population size | Opportunity for sexual selection | 0.39 | 0.24 | 0.56 |
Male | Small population size | Bateman gradient | 1.12 | 0.63 | 1.66 |
Male | Large population size | Bateman gradient | 0.56 | 0.17 | 0.90 |
Male | Small population size | Jones index | 0.52 | 0.27 | 0.79 |
Male | Large population size | Jones index | 0.35 | 0.10 | 0.57 |
Male | Body mass | Small group size | -0.04 | -0.25 | 0.18 |
Male | Body mass | large group size | 0.14 | -0.10 | 0.38 |
Male | Body mass | Small group size | -0.04 | -0.25 | 0.18 |
Male | Body mass | large group size | 0.14 | -0.10 | 0.38 |
Table S5.2: Coefficients of variation (CV) in mating behavior for arena size treatments estimated for males and females with mean and 95%CI estimated via bootstrapping.
kable(Table_2.2)
Sex | Trait | Treatment | Coefficient | l95_CI | u95_CI |
---|---|---|---|---|---|
Female | Small arena size | Opportunity for selection | 1.01 | 0.82 | 1.20 |
Female | Large arena size | Opportunity for selection | 0.87 | 0.73 | 1.01 |
Female | Small arena size | Opportunity for sexual selection | 0.49 | 0.32 | 0.70 |
Female | Large arena size | Opportunity for sexual selection | 0.34 | 0.21 | 0.50 |
Female | Small arena size | Bateman gradient | 0.66 | 0.37 | 0.95 |
Female | Large arena size | Bateman gradient | 0.90 | 0.63 | 1.18 |
Female | Small arena size | Jones index | 0.46 | 0.25 | 0.65 |
Female | Large arena size | Jones index | 0.52 | 0.34 | 0.67 |
Female | Body mass | Small group size | 0.17 | -0.07 | 0.42 |
Female | Body mass | large group size | 0.41 | 0.15 | 0.67 |
Female | Body mass | Small group size | 0.17 | -0.07 | 0.42 |
Female | Body mass | large group size | 0.41 | 0.15 | 0.67 |
Male | Small arena size | Opportunity for selection | 1.03 | 0.62 | 1.54 |
Male | Large arena size | Opportunity for selection | 0.78 | 0.55 | 1.07 |
Male | Small arena size | Opportunity for sexual selection | 0.25 | 0.15 | 0.37 |
Male | Large arena size | Opportunity for sexual selection | 0.36 | 0.22 | 0.54 |
Male | Small arena size | Bateman gradient | 1.17 | 0.77 | 1.65 |
Male | Large arena size | Bateman gradient | 0.47 | 0.03 | 0.84 |
Male | Small arena size | Jones index | 0.58 | 0.36 | 0.82 |
Male | Large arena size | Jones index | 0.28 | 0.02 | 0.54 |
Male | Body mass | Small group size | -0.04 | -0.25 | 0.18 |
Male | Body mass | large group size | 0.14 | -0.10 | 0.38 |
Male | Body mass | Small group size | -0.04 | -0.25 | 0.18 |
Male | Body mass | large group size | 0.14 | -0.10 | 0.38 |
We plotted all (sexual) selection metrics by treatment and sex.
## Plot: (sexual) selection metrics (Figure 2) ####
### Plot: Opportunity for selection ####
# Reorder data
=Table_BatemanMetrics[c(1,3,17,19),c(1,2,4,5,6)]
plot_I_data_1names(plot_I_data_1)[3] <- "Variance_low"
names(plot_I_data_1)[4] <- "lCI_low"
names(plot_I_data_1)[5] <- "uCI_low"
=Table_BatemanMetrics[c(2,4,18,20),c(4,5,6)]
plot_I_data_2names(plot_I_data_2)[1] <- "Variance_high"
names(plot_I_data_2)[2] <- "lCI_high"
names(plot_I_data_2)[3] <- "uCI_high"
=cbind(plot_I_data_1,plot_I_data_2)
plot_I_datac(1,3),2]='Group size'
plot_I_data[c(2,4),2]='Arena size'
plot_I_data[
=ggplot(plot_I_data, aes(x=Variance_low, y=Variance_high, color=Sex, shape=Treatment)) +geom_abline(intercept = 0, slope = 1,size=1,linetype=2) +
p16annotate(geom = "polygon", x = c(Inf, -Inf, -Inf), y = c(Inf, -Inf, Inf), fill = "grey", alpha = 0.2 )+
geom_point(size = 5,alpha=1)+
geom_errorbar(alpha=0.5,size=1.1,width=0, orientation='y',aes(xmin=lCI_low, xmax=uCI_low),show.legend=FALSE) +geom_errorbar(alpha=0.5,size=1.1,width=0, orientation='x', aes(ymin=lCI_high, ymax=uCI_high),show.legend=FALSE)+
ylab(expression(paste('High density ',~italic("I"))))+labs(tag = "A")+xlab(expression(paste('Low density ',~italic("I"))))+
scale_shape_manual(values=c(15, 19))+
scale_color_manual(values=colpal2)+
guides(shape = guide_legend(override.aes = list(size = 3.5)))+
xlim(0.5,1.5)+ylim(0.5,1.5)+
guides(shape = guide_legend(override.aes = list(size = 5)))+
theme(panel.border = element_blank(),
plot.title = element_text(hjust = 0.5),
panel.background = element_blank(),
panel.grid.major = element_blank(),
panel.grid.minor = element_blank(),
plot.tag.position=c(0.01,0.98),
legend.position = c(0.8, 0.25),
legend.spacing.y = unit(0.1, 'cm'),
legend.key=element_blank(),
legend.title = element_blank(),
legend.margin = margin(0,0,0,0, unit="cm"),
legend.text = element_text(colour="black", size=11),
axis.line.x = element_line(colour = "black", size = 1),
axis.line.y = element_line(colour = "black", size = 1),
axis.text.x = element_text(face="plain", color="black", size=16, angle=0),
axis.text.y = element_text(face="plain", color="black", size=16, angle=0),
axis.title.x = element_text(size=16,face="plain", margin = margin(r=0,10,0,0)),
axis.title.y = element_text(size=16,face="plain", margin = margin(r=10,0,0,0)),
axis.ticks = element_line(size = 1),
axis.ticks.length = unit(.3, "cm"),
plot.margin = unit(c(0.5,0.2,0,0.2), "cm"))+guides(line = "none")
### Plot: Opportunity for sexual selection ####
# Reorder data
=Table_BatemanMetrics[c(5,7,21,23),c(1,2,4,5,6)]
plot_Is_data_1names(plot_Is_data_1)[3] <- "Variance_low"
names(plot_Is_data_1)[4] <- "lCI_low"
names(plot_Is_data_1)[5] <- "uCI_low"
=Table_BatemanMetrics[c(6,8,22,24),c(4,5,6)]
plot_Is_data_2names(plot_Is_data_2)[1] <- "Variance_high"
names(plot_Is_data_2)[2] <- "lCI_high"
names(plot_Is_data_2)[3] <- "uCI_high"
=cbind(plot_Is_data_1,plot_Is_data_2)
plot_Is_datac(1,3),2]='Group size'
plot_Is_data[c(2,4),2]='Arena size'
plot_Is_data[
=ggplot(plot_Is_data, aes(x=Variance_low, y=Variance_high, color=Sex, shape=Treatment)) + geom_abline(intercept = 0, slope = 1,size=1,linetype=2) +
p17annotate(geom = "polygon", x = c(Inf, -Inf, -Inf), y = c(Inf, -Inf, Inf), fill = "grey", alpha = 0.2 )+
geom_point(alpha=1,size = 5)+
geom_errorbar(alpha=0.5,size=1.1,width=0, orientation='y',aes(xmin=lCI_low, xmax=uCI_low)) +geom_errorbar(alpha=0.5,size=1.1,width=0, orientation='x', aes(ymin=lCI_high, ymax=uCI_high))+
ylab(expression(paste('High density ',~italic("I"['s']))))+labs(tag = "B")+xlab(expression(paste('Low density ',~italic("I"['s']))))+
scale_shape_manual(values=c(15, 19))+
scale_color_manual(values=colpal2)+
guides(shape = guide_legend(override.aes = list(size = 3.5)))+
xlim(0.1,0.87)+ylim(0.1,0.87)+
theme(panel.border = element_blank(),
plot.title = element_text(hjust = 0.5),
panel.background = element_blank(),
panel.grid.major = element_blank(),
panel.grid.minor = element_blank(),
plot.tag.position=c(0.01,0.98),
legend.position = 'none',
legend.spacing.y = unit(0, 'cm'),
legend.key=element_blank(),
legend.title = element_blank(),
legend.margin = margin(0,0,0,0, unit="cm"),
legend.text = element_text(colour="black", size=10),
legend.key.size = unit(.2, "cm"),
axis.line.x = element_line(colour = "black", size = 1),
axis.line.y = element_line(colour = "black", size = 1),
axis.text.x = element_text(face="plain", color="black", size=16, angle=0),
axis.text.y = element_text(face="plain", color="black", size=16, angle=0),
axis.title.x = element_text(size=16,face="plain", margin = margin(r=0,10,0,0)),
axis.title.y = element_text(size=16,face="plain", margin = margin(r=10,0,0,0)),
axis.ticks = element_line(size = 1),
axis.ticks.length = unit(.3, "cm"),
plot.margin = unit(c(0.5,0.2,0,0.2), "cm"))
### Plot: Sexual selection gradient ####
# Reorder data
=Table_BatemanMetrics[c(9,11,25,27),c(1,2,4,5,6)]
plot_B_data_1names(plot_B_data_1)[3] <- "Variance_low"
names(plot_B_data_1)[4] <- "lCI_low"
names(plot_B_data_1)[5] <- "uCI_low"
=Table_BatemanMetrics[c(10,12,26,28),c(4,5,6)]
plot_B_data_2names(plot_B_data_2)[1] <- "Variance_high"
names(plot_B_data_2)[2] <- "lCI_high"
names(plot_B_data_2)[3] <- "uCI_high"
=cbind(plot_B_data_1,plot_B_data_2)
plot_B_datac(1,3),2]='Group size'
plot_B_data[c(2,4),2]='Arena size'
plot_B_data[
=ggplot(plot_B_data, aes(x=Variance_low, y=Variance_high, color=Sex, shape=Treatment)) +geom_abline(intercept = 0, slope = 1,size=1,linetype=2) +
p18annotate(geom = "polygon", x = c(Inf, -Inf, -Inf), y = c(Inf, -Inf, Inf), fill = "grey", alpha = 0.2 )+
geom_point(alpha=1,size = 5)+
geom_errorbar(alpha=0.5,size=1.1,width=0, orientation='y',aes(xmin=lCI_low, xmax=uCI_low)) +geom_errorbar(alpha=0.5,size=1.1,width=0, orientation='x', aes(ymin=lCI_high, ymax=uCI_high))+
ylab(expression(paste('High density ',~italic(symbol("b")['ss']))))+labs(tag = "C")+xlab(expression(paste('Low density ',~italic(symbol("b")['ss']))))+
scale_shape_manual(values=c(15, 19))+
scale_color_manual(values=colpal2)+
guides(shape = guide_legend(override.aes = list(size = 3.5)))+
xlim(0,1.7)+ylim(0,1.7)+
theme(panel.border = element_blank(),
plot.title = element_text(hjust = 0.5),
panel.background = element_blank(),
panel.grid.major = element_blank(),
panel.grid.minor = element_blank(),
plot.tag.position=c(0.01,0.98),
legend.position = 'none',
legend.spacing.y = unit(0, 'cm'),
legend.key=element_blank(),
legend.title = element_blank(),
legend.margin = margin(0,0,0,0, unit="cm"),
legend.text = element_text(colour="black", size=10),
legend.key.size = unit(.2, "cm"),
axis.line.x = element_line(colour = "black", size = 1),
axis.line.y = element_line(colour = "black", size = 1),
axis.text.x = element_text(face="plain", color="black", size=16, angle=0),
axis.text.y = element_text(face="plain", color="black", size=16, angle=0),
axis.title.x = element_text(size=16,face="plain", margin = margin(r=0,10,0,0)),
axis.title.y = element_text(size=16,face="plain", margin = margin(r=10,0,0,0)),
axis.ticks = element_line(size = 1),
axis.ticks.length = unit(.3, "cm"),
plot.margin = unit(c(0.5,0.2,0,0.2), "cm"))
### Plot: Jones index ####
# Reorder data
=Table_BatemanMetrics[c(13,15,29,31),c(1,2,4,5,6)]
plot_Smax_data_1names(plot_Smax_data_1)[3] <- "Variance_low"
names(plot_Smax_data_1)[4] <- "lCI_low"
names(plot_Smax_data_1)[5] <- "uCI_low"
=Table_BatemanMetrics[c(14,16,30,32),c(4,5,6)]
plot_Smax_data_2names(plot_Smax_data_2)[1] <- "Variance_high"
names(plot_Smax_data_2)[2] <- "lCI_high"
names(plot_Smax_data_2)[3] <- "uCI_high"
=cbind(plot_Smax_data_1,plot_Smax_data_2)
plot_Smax_datac(1,3),2]='Group size'
plot_Smax_data[c(2,4),2]='Arena size'
plot_Smax_data[
=ggplot(plot_Smax_data, aes(x=Variance_low, y=Variance_high, color=Sex, shape=Treatment)) + geom_abline(intercept = 0, slope = 1,size=1,linetype=2) +
p19annotate(geom = "polygon", x = c(Inf, -Inf, -Inf), y = c(Inf, -Inf, Inf), fill = "grey", alpha = 0.2 )+
geom_point(alpha=1,size = 5)+
geom_errorbar(alpha=0.5,size=1.1,width=0, orientation='y',aes(xmin=lCI_low, xmax=uCI_low)) +geom_errorbar(alpha=0.5,size=1.1,width=0, orientation='x', aes(ymin=lCI_high, ymax=uCI_high))+
ylab(expression(paste('High density ',~italic("s'"['max']))))+labs(tag = "D")+xlab(expression(paste('Low density ',~italic("s'"['max']))))+
scale_shape_manual(values=c(15, 19))+
scale_color_manual(values=colpal2)+
guides(shape = guide_legend(override.aes = list(size = 3.5)))+
xlim(0,0.84)+ylim(0,0.84)+
theme(panel.border = element_blank(),
plot.title = element_text(hjust = 0.5),
panel.background = element_blank(),
panel.grid.major = element_blank(),
panel.grid.minor = element_blank(),
plot.tag.position=c(0.01,0.98),
legend.position = 'none',
legend.spacing.y = unit(0, 'cm'),
legend.key=element_blank(),
legend.title = element_blank(),
legend.margin = margin(0,0,0,0, unit="cm"),
legend.text = element_text(colour="black", size=10),
legend.key.size = unit(.2, "cm"),
axis.line.x = element_line(colour = "black", size = 1),
axis.line.y = element_line(colour = "black", size = 1),
axis.text.x = element_text(face="plain", color="black", size=16, angle=0),
axis.text.y = element_text(face="plain", color="black", size=16, angle=0),
axis.title.x = element_text(size=16,face="plain", margin = margin(r=0,10,0,0)),
axis.title.y = element_text(size=16,face="plain", margin = margin(r=10,0,0,0)),
axis.ticks = element_line(size = 1),
axis.ticks.length = unit(.3, "cm"),
plot.margin = unit(c(0.5,0.2,0,0.2), "cm"))
### Plot: Mating differential on body mass ####
# Reorder data
=mDifBoot_Table[c(3,4,9,10),c(1,3,4,5,6)]
plot_mBM_data_1names(plot_mBM_data_1)[3] <- "Variance_low"
names(plot_mBM_data_1)[4] <- "lCI_low"
names(plot_mBM_data_1)[5] <- "uCI_low"
=mDifBoot_Table[c(5,6,7,8),c(4,5,6)]
plot_mBM_data_2names(plot_mBM_data_2)[1] <- "Variance_high"
names(plot_mBM_data_2)[2] <- "lCI_high"
names(plot_mBM_data_2)[3] <- "uCI_high"
=cbind(plot_mBM_data_1,plot_mBM_data_2)
plot_mBM_data$Treatment=as.character(plot_mBM_data$Treatment)
plot_mBM_datac(1,2),2]='Group size'
plot_mBM_data[c(3,4),2]='Arena size'
plot_mBM_data[
=ggplot(plot_mBM_data, aes(x=Variance_low, y=Variance_high, color=Sex, shape=Treatment)) + geom_abline(intercept = 0, slope = 1,size=1,linetype=2) +
p20annotate(geom = "polygon", x = c(Inf, -Inf, -Inf), y = c(Inf, -Inf, Inf), fill = "grey", alpha = 0.2 )+
geom_point(alpha=1,size = 5)+
geom_errorbar(alpha=0.5,size=1.1,width=0, orientation='y',aes(xmin=lCI_low, xmax=uCI_low)) +geom_errorbar(alpha=0.5,size=1.1,width=0, orientation='x', aes(ymin=lCI_high, ymax=uCI_high))+
ylab(expression(paste('High density ',~italic("m'"))))+labs(tag = "E")+xlab(expression(paste('Low density ',~italic("m'"))))+
scale_shape_manual(values=c(15, 19))+
scale_color_manual(values=colpal2)+
guides(shape = guide_legend(override.aes = list(size = 3.5)))+
xlim(-0.28,0.45)+ylim(-0.28,0.45)+
theme(panel.border = element_blank(),
plot.title = element_text(hjust = 0.5),
panel.background = element_blank(),
panel.grid.major = element_blank(),
panel.grid.minor = element_blank(),
plot.tag.position=c(0.01,0.98),
legend.position = 'none',
legend.spacing.y = unit(0, 'cm'),
legend.key=element_blank(),
legend.title = element_blank(),
legend.margin = margin(0,0,0,0, unit="cm"),
legend.text = element_text(colour="black", size=10),
legend.key.size = unit(.2, "cm"),
axis.line.x = element_line(colour = "black", size = 1),
axis.line.y = element_line(colour = "black", size = 1),
axis.text.x = element_text(face="plain", color="black", size=16, angle=0),
axis.text.y = element_text(face="plain", color="black", size=16, angle=0),
axis.title.x = element_text(size=16,face="plain", margin = margin(r=0,10,0,0)),
axis.title.y = element_text(size=16,face="plain", margin = margin(r=10,0,0,0)),
axis.ticks = element_line(size = 1),
axis.ticks.length = unit(.3, "cm"),
plot.margin = unit(c(0.5,0.2,0,0.2), "cm"))
### Plot: Selection differential on body mass ####
# Reorder data
=SelDifBoot_Table[c(3,4,9,10),c(1,3,4,5,6)]
plot_sBM_data_1names(plot_sBM_data_1)[3] <- "Variance_low"
names(plot_sBM_data_1)[4] <- "lCI_low"
names(plot_sBM_data_1)[5] <- "uCI_low"
=SelDifBoot_Table[c(5,6,7,8),c(4,5,6)]
plot_sBM_data_2names(plot_sBM_data_2)[1] <- "Variance_high"
names(plot_sBM_data_2)[2] <- "lCI_high"
names(plot_sBM_data_2)[3] <- "uCI_high"
=cbind(plot_sBM_data_1,plot_sBM_data_2)
plot_sBM_data$Treatment=as.character(plot_sBM_data$Treatment)
plot_sBM_datac(1,2),2]='Group size'
plot_sBM_data[c(3,4),2]='Arena size'
plot_sBM_data[
=ggplot(plot_sBM_data, aes(x=Variance_low, y=Variance_high, color=Sex, shape=Treatment)) + geom_abline(intercept = 0, slope = 1,size=1,linetype=2) +
p21annotate(geom = "polygon", x = c(Inf, -Inf, -Inf), y = c(Inf, -Inf, Inf), fill = "grey", alpha = 0.2 )+
geom_point(alpha=1,size = 5)+
geom_errorbar(alpha=0.5,size=1.1,width=0, orientation='y',aes(xmin=lCI_low, xmax=uCI_low)) +geom_errorbar(alpha=0.5,size=1.1,width=0, orientation='x', aes(ymin=lCI_high, ymax=uCI_high))+
ylab(expression(paste('High density ',~italic("s'"))))+labs(tag = "F")+xlab(expression(paste('Low density ',~italic("s'"))))+
scale_shape_manual(values=c(15, 19))+
scale_color_manual(values=colpal2)+
guides(shape = guide_legend(override.aes = list(size = 3.5)))+
xlim(-0.28,0.77)+ylim(-0.28,0.77)+
theme(panel.border = element_blank(),
plot.title = element_text(hjust = 0.5),
panel.background = element_blank(),
panel.grid.major = element_blank(),
panel.grid.minor = element_blank(),
plot.tag.position=c(0.01,0.98),
legend.position = 'none',
legend.spacing.y = unit(0, 'cm'),
legend.key=element_blank(),
legend.title = element_blank(),
legend.margin = margin(0,0,0,0, unit="cm"),
legend.text = element_text(colour="black", size=10),
legend.key.size = unit(.2, "cm"),
axis.line.x = element_line(colour = "black", size = 1),
axis.line.y = element_line(colour = "black", size = 1),
axis.text.x = element_text(face="plain", color="black", size=16, angle=0),
axis.text.y = element_text(face="plain", color="black", size=16, angle=0),
axis.title.x = element_text(size=16,face="plain", margin = margin(r=0,10,0,0)),
axis.title.y = element_text(size=16,face="plain", margin = margin(r=10,0,0,0)),
axis.ticks = element_line(size = 1),
axis.ticks.length = unit(.3, "cm"),
plot.margin = unit(c(0.5,0.2,0,0.2), "cm"))
# Figure 2
<-grid.arrange(p16,p17,p18,p19,p20,p21, nrow = 3,ncol=2) Figure_2
Figure 2: Selection metrics estimated for females (blue) and males (red) under density manipulated via group (point) or arena size (square). Opportunity for selection (I; A), opportunity for sexual selection (Is; B), Bateman gradient (βss; C), Jones index (s’max; D), mating differential on body mass (m’; E) and selection differential on body mass (s’; F) with mean and 95%CI estimated via bootstrapping. Dashed lines mark equal effect size for both densities. In grey area metrics were larger under high density treatments. The x-/y-distance of means from dashed line is equal to the effect size of the treatment.
=plot_grid(Figure_2, ncol=1, rel_heights=c(0.1, 1)) # rel_heights values control title margins Fig_2
In the following we performed additional analyses on the sexual selection gradient.
GLM of sexual selection gradient for small population size treatment
=glm(rel_m_RS~rel_m_cMS,data=D_data_Small_pop) # Small population
bateman1summary(bateman1)
Call:
glm(formula = rel_m_RS ~ rel_m_cMS, data = D_data_Small_pop)
Deviance Residuals:
Min 1Q Median 3Q Max
-1.26930 -0.56912 -0.00051 0.45026 2.19649
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) -0.1311 0.2832 -0.463 0.646
rel_m_cMS 1.1311 0.2567 4.407 6.64e-05 ***
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
(Dispersion parameter for gaussian family taken to be 0.6588378)
Null deviance: 41.784 on 45 degrees of freedom
Residual deviance: 28.989 on 44 degrees of freedom
(54 Beobachtungen als fehlend gelöscht)
AIC: 115.3
Number of Fisher Scoring iterations: 2
GLM of sexual selection gradient for large population size treatment
=glm(rel_m_RS~rel_m_cMS,data=D_data_Large_pop) # Large population
bateman2summary(bateman2)
Call:
glm(formula = rel_m_RS ~ rel_m_cMS, data = D_data_Large_pop)
Deviance Residuals:
Min 1Q Median 3Q Max
-1.74931 -0.71978 -0.06507 0.62329 2.29542
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 0.4380 0.2225 1.969 0.05394 .
rel_m_cMS 0.5620 0.1889 2.975 0.00432 **
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
(Dispersion parameter for gaussian family taken to be 0.8012483)
Null deviance: 51.961 on 57 degrees of freedom
Residual deviance: 44.870 on 56 degrees of freedom
(45 Beobachtungen als fehlend gelöscht)
AIC: 155.71
Number of Fisher Scoring iterations: 2
GLM of sexual selection gradient for small population size treatment
=glm(rel_f_RS~rel_f_cMS,data=D_data_Small_pop) # Small population
bateman3summary(bateman3)
Call:
glm(formula = rel_f_RS ~ rel_f_cMS, data = D_data_Small_pop)
Deviance Residuals:
Min 1Q Median 3Q Max
-1.3281 -0.8177 -0.3007 0.7701 1.7421
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 0.4282 0.2862 1.496 0.1407
rel_f_cMS 0.5718 0.2553 2.239 0.0294 *
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
(Dispersion parameter for gaussian family taken to be 0.902498)
Null deviance: 51.456 on 53 degrees of freedom
Residual deviance: 46.930 on 52 degrees of freedom
(46 Beobachtungen als fehlend gelöscht)
AIC: 151.67
Number of Fisher Scoring iterations: 2
GLM of sexual selection gradient for large population size treatment
=glm(rel_f_RS~rel_f_cMS,data=D_data_Large_pop) # Large population
bateman4summary(bateman4)
Call:
glm(formula = rel_f_RS ~ rel_f_cMS, data = D_data_Large_pop)
Deviance Residuals:
Min 1Q Median 3Q Max
-1.1558 -0.6221 -0.1433 0.6154 1.2999
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 0.1433 0.1727 0.830 0.411
rel_f_cMS 0.8567 0.1366 6.273 1.46e-07 ***
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
(Dispersion parameter for gaussian family taken to be 0.5026109)
Null deviance: 41.393 on 44 degrees of freedom
Residual deviance: 21.612 on 43 degrees of freedom
(58 Beobachtungen als fehlend gelöscht)
AIC: 100.7
Number of Fisher Scoring iterations: 2
GLM of sexual selection gradient for small arena size treatment
=glm(rel_m_RS~rel_m_cMS,data=D_data_Small_arena) # Small arena
bateman5summary(bateman5)
Call:
glm(formula = rel_m_RS ~ rel_m_cMS, data = D_data_Small_arena)
Deviance Residuals:
Min 1Q Median 3Q Max
-1.27592 -0.55853 0.02679 0.42022 2.17266
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) -0.1589 0.2688 -0.591 0.557
rel_m_cMS 1.1589 0.2400 4.828 1.5e-05 ***
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
(Dispersion parameter for gaussian family taken to be 0.7161542)
Null deviance: 50.353 on 48 degrees of freedom
Residual deviance: 33.659 on 47 degrees of freedom
(48 Beobachtungen als fehlend gelöscht)
AIC: 126.65
Number of Fisher Scoring iterations: 2
GLM of sexual selection gradient for large arena size treatment
=glm(rel_m_RS~rel_m_cMS,data=D_data_Large_arena) # Large arena
bateman6summary(bateman6)
Call:
glm(formula = rel_m_RS ~ rel_m_cMS, data = D_data_Large_arena)
Deviance Residuals:
Min 1Q Median 3Q Max
-1.63427 -0.57493 -0.05739 0.62351 2.33207
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 0.5243 0.2235 2.346 0.0228 *
rel_m_cMS 0.4757 0.1914 2.486 0.0161 *
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
(Dispersion parameter for gaussian family taken to be 0.7332268)
Null deviance: 43.393 on 54 degrees of freedom
Residual deviance: 38.861 on 53 degrees of freedom
(51 Beobachtungen als fehlend gelöscht)
AIC: 142.98
Number of Fisher Scoring iterations: 2
GLM of sexual selection gradient for small arena size treatment
=glm(rel_f_RS~rel_f_cMS,data=D_data_Small_arena) # Small arena
bateman7summary(bateman7)
Call:
glm(formula = rel_f_RS ~ rel_f_cMS, data = D_data_Small_arena)
Deviance Residuals:
Min 1Q Median 3Q Max
-1.3172 -0.7534 -0.3397 0.7993 1.7657
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 0.3397 0.2285 1.487 0.143910
rel_f_cMS 0.6603 0.1870 3.531 0.000954 ***
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
(Dispersion parameter for gaussian family taken to be 0.8267511)
Null deviance: 48.338 on 47 degrees of freedom
Residual deviance: 38.031 on 46 degrees of freedom
(49 Beobachtungen als fehlend gelöscht)
AIC: 131.04
Number of Fisher Scoring iterations: 2
GLM of sexual selection gradient for large arena size treatment
=glm(rel_f_RS~rel_f_cMS,data=D_data_Large_arena) # Large arena
bateman8summary(bateman8)
Call:
glm(formula = rel_f_RS ~ rel_f_cMS, data = D_data_Large_arena)
Deviance Residuals:
Min 1Q Median 3Q Max
-1.5149 -0.5734 -0.1026 0.5860 1.6460
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 0.1026 0.2209 0.465 0.644
rel_f_cMS 0.8974 0.1911 4.696 2.17e-05 ***
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
(Dispersion parameter for gaussian family taken to be 0.6264297)
Null deviance: 44.511 on 50 degrees of freedom
Residual deviance: 30.695 on 49 degrees of freedom
(55 Beobachtungen als fehlend gelöscht)
AIC: 124.84
Number of Fisher Scoring iterations: 2
Here we analysed the sexual selection gradient across all treatments for males and females.
$rel_f_cMS=NA
D_data$rel_f_cMS=D_data$f_cMS/mean(D_data$f_cMS,na.rm=T)
D_data$rel_f_RS=NA
D_data$rel_f_RS=D_data$f_RS/mean(D_data$f_RS,na.rm=T)
D_data$rel_m_cMS=NA
D_data$rel_m_cMS=D_data$m_cMS/mean(D_data$m_cMS,na.rm=T)
D_data$rel_m_RS=NA
D_data$rel_m_RS=D_data$m_RS/mean(D_data$m_RS,na.rm=T) D_data
Global sexual selection gradient of females:
=glm(rel_f_RS~rel_f_cMS+Body_mass_mg_focal,data=D_data)
bateman9summary(bateman9)
Call:
glm(formula = rel_f_RS ~ rel_f_cMS + Body_mass_mg_focal, data = D_data)
Deviance Residuals:
Min 1Q Median 3Q Max
-1.58645 -0.65459 -0.07596 0.67662 1.84633
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) -1.0206 0.6960 -1.467 0.1458
rel_f_cMS 0.7193 0.1320 5.451 3.88e-07 ***
Body_mass_mg_focal 0.5942 0.3259 1.823 0.0714 .
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
(Dispersion parameter for gaussian family taken to be 0.6816762)
Null deviance: 93.444 on 98 degrees of freedom
Residual deviance: 65.441 on 96 degrees of freedom
(104 Beobachtungen als fehlend gelöscht)
AIC: 247.97
Number of Fisher Scoring iterations: 2
Global sexual selection gradient of males:
=glm(rel_m_RS~rel_m_cMS+Body_mass_mg_focal,data=D_data)
bateman10summary(bateman10)
Call:
glm(formula = rel_m_RS ~ rel_m_cMS + Body_mass_mg_focal, data = D_data)
Deviance Residuals:
Min 1Q Median 3Q Max
-1.9470 -0.6320 -0.1481 0.4719 3.9252
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) -0.6271 0.9108 -0.689 0.493
rel_m_cMS 0.7368 0.1603 4.597 1.25e-05 ***
Body_mass_mg_focal 0.4585 0.4467 1.027 0.307
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
(Dispersion parameter for gaussian family taken to be 0.8262306)
Null deviance: 100.985 on 103 degrees of freedom
Residual deviance: 83.449 on 101 degrees of freedom
(99 Beobachtungen als fehlend gelöscht)
AIC: 280.24
Number of Fisher Scoring iterations: 2
Next, we tested if the steepness of the global sexual selection gradient differed between the sexes.
=D_data
data_combined$rel_RS=NA
data_combined$rel_RS[data_combined$Sex=='M']=data_combined$rel_m_RS[data_combined$Sex=='M']
data_combined$rel_RS[data_combined$Sex=='F']=data_combined$rel_f_RS[data_combined$Sex=='F']
data_combined$rel_cMS=NA
data_combined$rel_cMS[data_combined$Sex=='M']=data_combined$rel_m_cMS[data_combined$Sex=='M']
data_combined$rel_cMS[data_combined$Sex=='F']=data_combined$rel_f_cMS[data_combined$Sex=='F'] data_combined
Global sexual selection gradient with sex-interaction:
=glm(rel_RS~rel_cMS*Sex,data=data_combined)
bateman11summary(bateman11)
Call:
glm(formula = rel_RS ~ rel_cMS * Sex, data = data_combined)
Deviance Residuals:
Min 1Q Median 3Q Max
-1.9987 -0.6759 -0.2175 0.6488 3.9222
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 0.21754 0.16090 1.352 0.178
rel_cMS 0.78246 0.13481 5.804 2.52e-08 ***
SexM 0.07145 0.23751 0.301 0.764
rel_cMS:SexM -0.07145 0.20334 -0.351 0.726
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
(Dispersion parameter for gaussian family taken to be 0.7639526)
Null deviance: 194.43 on 202 degrees of freedom
Residual deviance: 152.03 on 199 degrees of freedom
AIC: 527.39
Number of Fisher Scoring iterations: 2
Finally, we plotted the sexual selection gradient for each sex and treatment.
<-ggplot(D_data_Small_pop, aes(x=rel_m_cMS, y=rel_m_RS)) +
p22geom_point(alpha=0.4,shape=16, size = 3,color=colpal2[2]) +
geom_smooth(method=lm, se=TRUE,alpha=0.3) +
theme(plot.tag.position=c(0.1,0.98))+
labs(tag = "A")+xlab('Rel. mating success')+ylab("Rel. reproductive success")+ggtitle('Small group')+ theme(plot.title = element_text(hjust = 0.5))+
theme(axis.text=element_text(size=13),
axis.title=element_text(size=14))+ theme(legend.position="none")+
ylim(0,4.2)+xlim(0,3.2)+
theme(panel.grid.major = element_blank(), panel.grid.minor = element_blank(),panel.background = element_blank(), axis.line = element_line(colour = "black"))
=p22+geom_point(aes(x=rel_f_cMS, y=rel_f_RS),color=colpal2[1],alpha=0.4,shape=16, size = 3)+
p22geom_smooth(aes(x=rel_f_cMS, y=rel_f_RS),color=colpal2[1],method=lm, se=TRUE,alpha=0.3)
<-ggplot(D_data_Large_pop, aes(x=rel_m_cMS, y=rel_m_RS)) +
p23geom_point(alpha=0.4,shape=16, size = 3,color=colpal2[2]) +
geom_smooth(method=lm, se=TRUE,alpha=0.3) +
theme(plot.tag.position=c(0.1,0.98))+
labs(tag = "B")+xlab('Rel. mating success')+ylab("Rel. reproductive success")+ggtitle('Large group')+ theme(plot.title = element_text(hjust = 0.5))+
theme(axis.text=element_text(size=13),
axis.title=element_text(size=14))+ theme(legend.position="none")+
ylim(0,4.2)+xlim(0,3.2)+
theme(panel.grid.major = element_blank(), panel.grid.minor = element_blank(),panel.background = element_blank(), axis.line = element_line(colour = "black"))
=p23+geom_point(aes(x=rel_f_cMS, y=rel_f_RS),color=colpal2[1],alpha=0.4,shape=16, size = 3)+
p23geom_smooth(aes(x=rel_f_cMS, y=rel_f_RS),color=colpal2[1],method=lm, se=TRUE,alpha=0.3)
<-ggplot(D_data_Large_arena, aes(x=rel_m_cMS, y=rel_m_RS)) +
p24geom_point(alpha=0.4,shape=16, size = 3,color=colpal2[2]) +
geom_smooth(method=lm, se=TRUE,alpha=0.3) +
theme(plot.tag.position=c(0.1,0.98))+
labs(tag = "C")+xlab('Rel. mating success')+ylab("Rel. reproductive success")+ggtitle('Large arena')+ theme(plot.title = element_text(hjust = 0.5))+
theme(axis.text=element_text(size=13),
axis.title=element_text(size=14))+ theme(legend.position="none")+
ylim(0,4.2)+xlim(0,3.2)+
theme(panel.grid.major = element_blank(), panel.grid.minor = element_blank(),panel.background = element_blank(), axis.line = element_line(colour = "black"))
=p24+geom_point(aes(x=rel_f_cMS, y=rel_f_RS),color=colpal2[1],alpha=0.4,shape=16, size = 3)+
p24geom_smooth(aes(x=rel_f_cMS, y=rel_f_RS),color=colpal2[1],method=lm, se=TRUE,alpha=0.3)
<-ggplot(D_data_Small_arena, aes(x=rel_m_cMS, y=rel_m_RS)) +
p25geom_point(alpha=0.4,shape=16, size = 3,color=colpal2[2]) +
geom_smooth(method=lm, se=TRUE,alpha=0.3) +
theme(plot.tag.position=c(0.1,0.98))+
labs(tag = "D")+xlab('Rel. mating success')+ylab("Rel. reproductive success")+ggtitle('Small arena')+ theme(plot.title = element_text(hjust = 0.5))+
theme(axis.text=element_text(size=13),
axis.title=element_text(size=14))+
ylim(0,4.2)+xlim(0,3.2)+
theme(legend.position="none")+
theme(panel.grid.major = element_blank(), panel.grid.minor = element_blank(),panel.background = element_blank(), axis.line = element_line(colour = "black"))
=p25+geom_point(aes(x=rel_f_cMS, y=rel_f_RS),color=colpal2[1],alpha=0.4,shape=16, size = 3)+
p25geom_smooth(aes(x=rel_f_cMS, y=rel_f_RS),color=colpal2[1],method=lm, se=TRUE,alpha=0.3)
# Create legend
<-ggplot(D_data, aes(x=Total_N_MTP1, y=Total_N_Rd, color=Sex)) +
p26geom_point(alpha=0.4,shape=16, size = 3, position=position_jitterdodge(jitter.height=0,jitter.width=0,dodge.width = 0)) +
geom_smooth(method=lm, se=TRUE,alpha=0.3) +
scale_color_manual(values=c(colpal2[1],colpal2[2]),name = "Sex", labels = c('Females','Males'))+
xlab('Rel. mating success')+ylab("Rel. reproductive success")+
guides(color=guide_legend(override.aes=list(fill=NA)))+
theme(legend.key = element_rect(fill = "transparent"))
<- get_legend(p26) legend_Figure_S5
<-grid.arrange(p22,p23,legend_Figure_S5,p24,p25,legend_Figure_S5, nrow = 2,ncol=3, widths=c(2.3, 2.3, 0.65)) Figure_S5
Figure S5: Scatterplot of Bateman gradients (βss; relativized mating success against relativized reproductive success) for males (blue) and females (red) for group size treatment (A + B) and arena size treatment (C+ D). Slopes of liner models estimating βss indicated by solid line with predicted 95% confidence intervals.
=plot_grid(Figure_S5, ncol=1, rel_heights=c(0.1, 1)) # rel_heights values control title margins Fig_S5
Here we added an analysis of the sexual selection gradient excluding individuals that did not mate.
# Create data set excluding individuals without mating success
=D_data[D_data$MatingPartners_number!=0,]
D_data_noZeroMS
## Merge data according to treatment
# Data according to denstiy
.26=D_data_noZeroMS[D_data_noZeroMS$Treatment=='D = 0.26',]
D_data_noZeroMS_0.52=D_data_noZeroMS[D_data_noZeroMS$Treatment=='D = 0.52',]
D_data_noZeroMS_0.67=D_data_noZeroMS[D_data_noZeroMS$Treatment=='D = 0.67',]
D_data_noZeroMS_0.33=D_data_noZeroMS[D_data_noZeroMS$Treatment=='D = 1.33',]
D_data_noZeroMS_1
# Reduce treatments to arena and population size
# Arena size
=rbind(D_data_noZeroMS_0.26,D_data_noZeroMS_0.52)
D_data_noZeroMS_Large_arena=rbind(D_data_noZeroMS_0.67,D_data_noZeroMS_1.33)
D_data_noZeroMS_Small_arena
# Population size
=rbind(D_data_noZeroMS_0.26,D_data_noZeroMS_0.67)
D_data_noZeroMS_Small_pop=rbind(D_data_noZeroMS_0.52,D_data_noZeroMS_1.33) D_data_noZeroMS_Large_pop
GLM of sexual selection gradient for population size treatment for small populations
=glm(rel_m_RS~rel_m_cMS,data=D_data_noZeroMS_Small_pop) # Small population
bateman1summary(bateman1)
Call:
glm(formula = rel_m_RS ~ rel_m_cMS, data = D_data_noZeroMS_Small_pop)
Deviance Residuals:
Min 1Q Median 3Q Max
-1.4401 -0.6142 -0.2620 0.6026 3.2274
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) -0.2117 0.4450 -0.476 0.63674
rel_m_cMS 1.3739 0.3977 3.455 0.00129 **
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
(Dispersion parameter for gaussian family taken to be 1.039294)
Null deviance: 55.017 on 42 degrees of freedom
Residual deviance: 42.611 on 41 degrees of freedom
(49 Beobachtungen als fehlend gelöscht)
AIC: 127.64
Number of Fisher Scoring iterations: 2
GLM of sexual selection gradient for population size treatment for large populations
=glm(rel_m_RS~rel_m_cMS,data=D_data_noZeroMS_Large_pop) # Large population
bateman2summary(bateman2)
Call:
glm(formula = rel_m_RS ~ rel_m_cMS, data = D_data_noZeroMS_Large_pop)
Deviance Residuals:
Min 1Q Median 3Q Max
-1.32719 -0.78529 -0.01328 0.66413 1.84770
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 0.7035 0.2687 2.618 0.0117 *
rel_m_cMS 0.2594 0.2105 1.232 0.2237
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
(Dispersion parameter for gaussian family taken to be 0.6673908)
Null deviance: 33.716 on 50 degrees of freedom
Residual deviance: 32.702 on 49 degrees of freedom
(34 Beobachtungen als fehlend gelöscht)
AIC: 128.07
Number of Fisher Scoring iterations: 2
GLM of sexual selection gradient for population size treatment for small populations
=glm(rel_f_RS~rel_f_cMS,data=D_data_noZeroMS_Small_pop) # Small population
bateman3summary(bateman3)
Call:
glm(formula = rel_f_RS ~ rel_f_cMS, data = D_data_noZeroMS_Small_pop)
Deviance Residuals:
Min 1Q Median 3Q Max
-1.4827 -0.8628 0.1097 0.8914 1.6975
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 0.5529 0.3855 1.434 0.158
rel_f_cMS 0.5291 0.3299 1.604 0.115
(Dispersion parameter for gaussian family taken to be 0.9707419)
Null deviance: 48.122 on 48 degrees of freedom
Residual deviance: 45.625 on 47 degrees of freedom
(43 Beobachtungen als fehlend gelöscht)
AIC: 141.56
Number of Fisher Scoring iterations: 2
GLM of sexual selection gradient for population size treatment for large populations
=glm(rel_f_RS~rel_f_cMS,data=D_data_noZeroMS_Large_pop) # Large population
bateman4summary(bateman4)
Call:
glm(formula = rel_f_RS ~ rel_f_cMS, data = D_data_noZeroMS_Large_pop)
Deviance Residuals:
Min 1Q Median 3Q Max
-1.11690 -0.68093 0.01509 0.69916 1.10603
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 0.2450 0.3065 0.799 0.43005
rel_f_cMS 0.7442 0.2081 3.577 0.00113 **
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
(Dispersion parameter for gaussian family taken to be 0.6033825)
Null deviance: 27.029 on 33 degrees of freedom
Residual deviance: 19.308 on 32 degrees of freedom
(51 Beobachtungen als fehlend gelöscht)
AIC: 83.25
Number of Fisher Scoring iterations: 2
GLM of sexual selection gradient for arena size treatment for small arena
=glm(rel_m_RS~rel_m_cMS,data=D_data_noZeroMS_Small_arena) # Small arena
bateman5summary(bateman5)
Call:
glm(formula = rel_m_RS ~ rel_m_cMS, data = D_data_noZeroMS_Small_arena)
Deviance Residuals:
Min 1Q Median 3Q Max
-1.3617 -0.5915 -0.1986 0.5709 3.3616
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) -0.1786 0.4209 -0.424 0.67338
rel_m_cMS 1.2812 0.3668 3.493 0.00112 **
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
(Dispersion parameter for gaussian family taken to be 1.058743)
Null deviance: 58.444 on 44 degrees of freedom
Residual deviance: 45.526 on 43 degrees of freedom
(37 Beobachtungen als fehlend gelöscht)
AIC: 134.23
Number of Fisher Scoring iterations: 2
GLM of sexual selection gradient for arena size treatment for large arena
=glm(rel_m_RS~rel_m_cMS,data=D_data_noZeroMS_Large_arena) # Large arena
bateman6summary(bateman6)
Call:
glm(formula = rel_m_RS ~ rel_m_cMS, data = D_data_noZeroMS_Large_arena)
Deviance Residuals:
Min 1Q Median 3Q Max
-1.26221 -0.69688 -0.03834 0.62374 2.14473
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 0.8186 0.2715 3.015 0.00413 **
rel_m_cMS 0.1845 0.2156 0.856 0.39655
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
(Dispersion parameter for gaussian family taken to be 0.6466574)
Null deviance: 30.866 on 48 degrees of freedom
Residual deviance: 30.393 on 47 degrees of freedom
(46 Beobachtungen als fehlend gelöscht)
AIC: 121.65
Number of Fisher Scoring iterations: 2
GLM of sexual selection gradient for arena size treatment for small arena
=glm(rel_f_RS~rel_f_cMS,data=D_data_noZeroMS_Small_arena) # Small arena
bateman7summary(bateman7)
Call:
glm(formula = rel_f_RS ~ rel_f_cMS, data = D_data_noZeroMS_Small_arena)
Deviance Residuals:
Min 1Q Median 3Q Max
-1.1915 -0.8905 0.2676 0.8362 1.2729
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 0.5896 0.3552 1.660 0.1058
rel_f_cMS 0.5137 0.2788 1.843 0.0739 .
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
(Dispersion parameter for gaussian family taken to be 0.8261488)
Null deviance: 31.720 on 36 degrees of freedom
Residual deviance: 28.915 on 35 degrees of freedom
(45 Beobachtungen als fehlend gelöscht)
AIC: 101.88
Number of Fisher Scoring iterations: 2
GLM of sexual selection gradient for arena size treatment for large arena
=glm(rel_f_RS~rel_f_cMS,data=D_data_noZeroMS_Large_arena) # Large arena
bateman8summary(bateman8)
Call:
glm(formula = rel_f_RS ~ rel_f_cMS, data = D_data_noZeroMS_Large_arena)
Deviance Residuals:
Min 1Q Median 3Q Max
-1.5787 -0.6852 -0.1843 0.7460 1.8752
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 0.2384 0.3277 0.727 0.47079
rel_f_cMS 0.7627 0.2475 3.082 0.00355 **
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
(Dispersion parameter for gaussian family taken to be 0.815707)
Null deviance: 43.637 on 45 degrees of freedom
Residual deviance: 35.891 on 44 degrees of freedom
(49 Beobachtungen als fehlend gelöscht)
AIC: 125.13
Number of Fisher Scoring iterations: 2
Here we analysed the sexual selection gradient across all treatments for males and females.
$rel_f_cMS=NA
D_data_noZeroMS$rel_f_cMS=D_data_noZeroMS$f_cMS/mean(D_data_noZeroMS$f_cMS,na.rm=T)
D_data_noZeroMS$rel_f_RS=NA
D_data_noZeroMS$rel_f_RS=D_data_noZeroMS$f_RS/mean(D_data_noZeroMS$f_RS,na.rm=T)
D_data_noZeroMS$rel_m_cMS=NA
D_data_noZeroMS$rel_m_cMS=D_data_noZeroMS$m_cMS/mean(D_data_noZeroMS$m_cMS,na.rm=T)
D_data_noZeroMS$rel_m_RS=NA
D_data_noZeroMS$rel_m_RS=D_data_noZeroMS$m_RS/mean(D_data_noZeroMS$m_RS,na.rm=T) D_data_noZeroMS
Global sexual selection gradient of females:
=glm(rel_f_RS~rel_f_cMS+Body_mass_mg_focal,data=D_data_noZeroMS)
bateman9summary(bateman9)
Call:
glm(formula = rel_f_RS ~ rel_f_cMS + Body_mass_mg_focal, data = D_data_noZeroMS)
Deviance Residuals:
Min 1Q Median 3Q Max
-1.31733 -0.70473 0.04623 0.59495 1.49825
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) -0.9513 0.7400 -1.285 0.20234
rel_f_cMS 0.6060 0.1851 3.274 0.00157 **
Body_mass_mg_focal 0.6063 0.3339 1.816 0.07308 .
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
(Dispersion parameter for gaussian family taken to be 0.5711586)
Null deviance: 54.962 on 82 degrees of freedom
Residual deviance: 45.693 on 80 degrees of freedom
(94 Beobachtungen als fehlend gelöscht)
AIC: 194
Number of Fisher Scoring iterations: 2
Global sexual selection gradient of males:
=glm(rel_m_RS~rel_m_cMS+Body_mass_mg_focal,data=D_data_noZeroMS)
bateman10summary(bateman10)
Call:
glm(formula = rel_m_RS ~ rel_m_cMS + Body_mass_mg_focal, data = D_data_noZeroMS)
Deviance Residuals:
Min 1Q Median 3Q Max
-1.6413 -0.6841 -0.0764 0.5487 3.6029
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) -0.3193 0.9686 -0.330 0.74239
rel_m_cMS 0.6076 0.2101 2.892 0.00479 **
Body_mass_mg_focal 0.3657 0.4571 0.800 0.42578
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
(Dispersion parameter for gaussian family taken to be 0.7392833)
Null deviance: 73.460 on 93 degrees of freedom
Residual deviance: 67.275 on 91 degrees of freedom
(83 Beobachtungen als fehlend gelöscht)
AIC: 243.32
Number of Fisher Scoring iterations: 2
Next, we tested if the steepness of the global sexual selection gradient differed between the sexes.
=D_data_noZeroMS
data_combined$rel_RS=NA
data_combined$rel_RS[data_combined$Sex=='M']=data_combined$rel_m_RS[data_combined$Sex=='M']
data_combined$rel_RS[data_combined$Sex=='F']=data_combined$rel_f_RS[data_combined$Sex=='F']
data_combined$rel_cMS=NA
data_combined$rel_cMS[data_combined$Sex=='M']=data_combined$rel_m_cMS[data_combined$Sex=='M']
data_combined$rel_cMS[data_combined$Sex=='F']=data_combined$rel_f_cMS[data_combined$Sex=='F'] data_combined
Global sexual selection gradient with sex-interaction:
=glm(rel_RS~rel_cMS*Sex,data=data_combined)
bateman11summary(bateman11)
Call:
glm(formula = rel_RS ~ rel_cMS * Sex, data = data_combined)
Deviance Residuals:
Min 1Q Median 3Q Max
-1.6630 -0.6672 0.0023 0.6489 3.6092
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 0.34233 0.21697 1.578 0.11644
rel_cMS 0.65767 0.19759 3.328 0.00107 **
SexM 0.09265 0.30236 0.306 0.75966
rel_cMS:SexM -0.09265 0.27622 -0.335 0.73773
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
(Dispersion parameter for gaussian family taken to be 0.6666166)
Null deviance: 128.42 on 176 degrees of freedom
Residual deviance: 115.32 on 173 degrees of freedom
AIC: 436.48
Number of Fisher Scoring iterations: 2
Finally, we plotted the sexual selection gradient for each sex and treatment.
<-ggplot(D_data_noZeroMS_Small_pop, aes(x=rel_m_cMS, y=rel_m_RS)) +
p22geom_point(alpha=0.4,shape=16, size = 3,color=colpal2[2]) +
geom_smooth(method=lm, se=TRUE,alpha=0.3) +
theme(plot.tag.position=c(0.1,0.98))+
labs(tag = "A")+xlab('Rel. mating success')+ylab("Rel. reproductive success")+ggtitle('Small group')+ theme(plot.title = element_text(hjust = 0.5))+
theme(axis.text=element_text(size=13),
axis.title=element_text(size=14))+ theme(legend.position="none")+
ylim(0,4.2)+xlim(0,3.2)+
theme(panel.grid.major = element_blank(), panel.grid.minor = element_blank(),panel.background = element_blank(), axis.line = element_line(colour = "black"))
=p22+geom_point(aes(x=rel_f_cMS, y=rel_f_RS),color=colpal2[1],alpha=0.4,shape=16, size = 3)+
p22geom_smooth(aes(x=rel_f_cMS, y=rel_f_RS),color=colpal2[1],method=lm, se=TRUE,alpha=0.3)
<-ggplot(D_data_noZeroMS_Large_pop, aes(x=rel_m_cMS, y=rel_m_RS)) +
p23geom_point(alpha=0.4,shape=16, size = 3,color=colpal2[2]) +
geom_smooth(method=lm, se=TRUE,alpha=0.3) +
theme(plot.tag.position=c(0.1,0.98))+
labs(tag = "B")+xlab('Rel. mating success')+ylab("Rel. reproductive success")+ggtitle('Large group')+ theme(plot.title = element_text(hjust = 0.5))+
theme(axis.text=element_text(size=13),
axis.title=element_text(size=14))+ theme(legend.position="none")+
ylim(0,4.2)+xlim(0,3.2)+
theme(panel.grid.major = element_blank(), panel.grid.minor = element_blank(),panel.background = element_blank(), axis.line = element_line(colour = "black"))
=p23+geom_point(aes(x=rel_f_cMS, y=rel_f_RS),color=colpal2[1],alpha=0.4,shape=16, size = 3)+
p23geom_smooth(aes(x=rel_f_cMS, y=rel_f_RS),color=colpal2[1],method=lm, se=TRUE,alpha=0.3)
<-ggplot(D_data_noZeroMS_Large_arena, aes(x=rel_m_cMS, y=rel_m_RS)) +
p24geom_point(alpha=0.4,shape=16, size = 3,color=colpal2[2]) +
geom_smooth(method=lm, se=TRUE,alpha=0.3) +
theme(plot.tag.position=c(0.1,0.98))+
labs(tag = "C")+xlab('Rel. mating success')+ylab("Rel. reproductive success")+ggtitle('Large arena')+ theme(plot.title = element_text(hjust = 0.5))+
theme(axis.text=element_text(size=13),
axis.title=element_text(size=14))+ theme(legend.position="none")+
ylim(0,4.2)+xlim(0,3.2)+
theme(panel.grid.major = element_blank(), panel.grid.minor = element_blank(),panel.background = element_blank(), axis.line = element_line(colour = "black"))
=p24+geom_point(aes(x=rel_f_cMS, y=rel_f_RS),color=colpal2[1],alpha=0.4,shape=16, size = 3)+
p24geom_smooth(aes(x=rel_f_cMS, y=rel_f_RS),color=colpal2[1],method=lm, se=TRUE,alpha=0.3)
<-ggplot(D_data_noZeroMS_Small_arena, aes(x=rel_m_cMS, y=rel_m_RS)) +
p25geom_point(alpha=0.4,shape=16, size = 3,color=colpal2[2]) +
geom_smooth(method=lm, se=TRUE,alpha=0.3) +
theme(plot.tag.position=c(0.1,0.98))+
labs(tag = "D")+xlab('Rel. mating success')+ylab("Rel. reproductive success")+ggtitle('Small arena')+ theme(plot.title = element_text(hjust = 0.5))+
theme(axis.text=element_text(size=13),
axis.title=element_text(size=14))+
ylim(0,4.2)+xlim(0,3.2)+
theme(legend.position="none")+
theme(panel.grid.major = element_blank(), panel.grid.minor = element_blank(),panel.background = element_blank(), axis.line = element_line(colour = "black"))
=p25+geom_point(aes(x=rel_f_cMS, y=rel_f_RS),color=colpal2[1],alpha=0.4,shape=16, size = 3)+
p25geom_smooth(aes(x=rel_f_cMS, y=rel_f_RS),color=colpal2[1],method=lm, se=TRUE,alpha=0.3)
# Create legend
<-ggplot(D_data_noZeroMS, aes(x=Total_N_MTP1, y=Total_N_Rd, color=Sex)) +
p26geom_point(alpha=0.4,shape=16, size = 3, position=position_jitterdodge(jitter.height=0,jitter.width=0,dodge.width = 0)) +
geom_smooth(method=lm, se=TRUE,alpha=0.3) +
scale_color_manual(values=c(colpal2[1],colpal2[2]),name = "Sex", labels = c('Females','Males'))+
xlab('Rel. mating success')+ylab("Rel. reproductive success")+
guides(color=guide_legend(override.aes=list(fill=NA)))+
theme(legend.key = element_rect(fill = "transparent"))
<- get_legend(p26) legend_Figure_S6
<-grid.arrange(p22,p23,legend_Figure_S6,p24,p25,legend_Figure_S6, nrow = 2,ncol=3, widths=c(2.3, 2.3, 0.65)) Figure_S6
Figure S7: Scatterplot of Bateman gradients (βss; relativized mating success against relativized reproductive success) excluding individuals without mating success for males (blue) and females (red) for group size treatment (A + B) and arena size treatment (C+ D). Slopes of liner models estimating βss indicated by solid line with predicted 95% confidence intervals.
=plot_grid(Figure_S6, ncol=1, rel_heights=c(0.1, 1)) # rel_heights values control title margins Fig_S6
We used permutation tests to see if the (sexual) selection metrics differed between treatments.
## Permutation tests for treatment comparisons for (sexual) selection metrics ####
### Opportunity for sexual selection (I) ####
# Arena size
# Males
=c(I_Small_arena_Male_bootvar$t-c(I_Large_arena_Male_bootvar$t))
Treat_diff_Male_arena_I
=mean(Treat_diff_Male_arena_I,na.rm=TRUE)
t_Treat_diff_Male_arena_I=quantile(Treat_diff_Male_arena_I,.025,na.rm=TRUE)
t_Treat_diff_Male_arena_I_lower=quantile(Treat_diff_Male_arena_I,.975,na.rm=TRUE)
t_Treat_diff_Male_arena_I_upper
# Permutation test to calculate p value
=c(D_data_Large_arena$rel_m_RS,D_data_Small_arena$rel_m_RS)
comb_data
= var(na.omit((D_data_Small_arena$rel_m_RS)))-var(na.omit((D_data_Large_arena$rel_m_RS)))
diff.observed
diff.observed
= 100000
number_of_permutations = NULL
diff.random for (i in 1 : number_of_permutations) {
# Sample from the combined dataset
= sample (na.omit(comb_data), length(c(D_data_Large_arena$rel_m_RS)), TRUE)
a.random = sample (na.omit(comb_data), length(c(D_data_Small_arena$rel_m_RS)), TRUE)
b.random
# Null (permuated) difference
= var(na.omit(a.random)) - var(na.omit(b.random))
diff.random[i]
}
# P-value is the fraction of how many times the permuted difference is equal or more extreme than the observed difference
= sum(abs(diff.random) >= as.numeric(abs(diff.observed)))/ number_of_permutations
t_Treat_diff_Male_arena_I_p
# Females
=c(I_Small_arena_Female_bootvar$t)-c(I_Large_arena_Female_bootvar$t)
Treat_diff_Female_arena_I
=mean(Treat_diff_Female_arena_I,na.rm=TRUE)
t_Treat_diff_Female_arena_I=quantile(Treat_diff_Female_arena_I,.025,na.rm=TRUE)
t_Treat_diff_Female_arena_I_lower=quantile(Treat_diff_Female_arena_I,.975,na.rm=TRUE)
t_Treat_diff_Female_arena_I_upper
# Permutation test to calculate p value
=c(D_data_Large_arena$rel_f_RS,D_data_Small_arena$rel_f_RS)
comb_data
= var(na.omit((D_data_Small_arena$rel_f_RS)))-var(na.omit((D_data_Large_arena$rel_f_RS)))
diff.observed
diff.observed
= 100000
number_of_permutations = NULL
diff.random for (i in 1 : number_of_permutations) {
# Sample from the combined dataset
= sample (na.omit(comb_data), length(c(D_data_Large_arena$rel_f_RS)), TRUE)
a.random = sample (na.omit(comb_data), length(c(D_data_Small_arena$rel_f_RS)), TRUE)
b.random
# Null (permuated) difference
= var(na.omit(a.random)) - var(na.omit(b.random))
diff.random[i]
}
# P-value is the fraction of how many times the permuted difference is equal or more extreme than the observed difference
= sum(abs(diff.random) >= as.numeric(abs(diff.observed)))/ number_of_permutations
t_Treat_diff_Female_arena_I_p
# Population size
# Males
=c(I_Large_pop_Male_bootvar$t)-c(I_Small_pop_Male_bootvar$t)
Treat_diff_Male_pop_I
=mean(Treat_diff_Male_pop_I,na.rm=TRUE)
t_Treat_diff_Male_pop_I=quantile(Treat_diff_Male_pop_I,.025,na.rm=TRUE)
t_Treat_diff_Male_pop_I_lower=quantile(Treat_diff_Male_pop_I,.975,na.rm=TRUE)
t_Treat_diff_Male_pop_I_upper
# Permutation test to calculate p value
=c(D_data_Small_pop$rel_m_RS,D_data_Large_pop$rel_m_RS)
comb_data
= var(na.omit((D_data_Large_pop$rel_m_RS)))-var(na.omit((D_data_Small_pop$rel_m_RS)))
diff.observed
diff.observed
= 100000
number_of_permutations = NULL
diff.random for (i in 1 : number_of_permutations) {
# Sample from the combined dataset
= sample (na.omit(comb_data), length(c(D_data_Small_pop$rel_m_RS)), TRUE)
a.random = sample (na.omit(comb_data), length(c(D_data_Large_pop$rel_m_RS)), TRUE)
b.random
# Null (permuated) difference
= var(na.omit(a.random)) - var(na.omit(b.random))
diff.random[i]
}
# P-value is the fraction of how many times the permuted difference is equal or more extreme than the observed difference
= sum(abs(diff.random) >= as.numeric(abs(diff.observed)))/ number_of_permutations
t_Treat_diff_Male_pop_I_p
# Females
=c(I_Large_pop_Female_bootvar$t)-c(I_Small_pop_Female_bootvar$t)
Treat_diff_Female_pop_I
=mean(Treat_diff_Female_pop_I,na.rm=TRUE)
t_Treat_diff_Female_pop_I=quantile(Treat_diff_Female_pop_I,.025,na.rm=TRUE)
t_Treat_diff_Female_pop_I_lower=quantile(Treat_diff_Female_pop_I,.975,na.rm=TRUE)
t_Treat_diff_Female_pop_I_upper
# Permutation test to calculate p value
=c(D_data_Small_pop$rel_f_RS,D_data_Large_pop$rel_f_RS)
comb_data
= var(na.omit(c(D_data_Large_pop$rel_f_RS)))-var(na.omit(c(D_data_Small_pop$rel_f_RS)))
diff.observed
diff.observed
= 100000
number_of_permutations = NULL
diff.random for (i in 1 : number_of_permutations) {
# Sample from the combined dataset
= sample (na.omit(comb_data), length(c(D_data_Small_pop$rel_f_RS)), TRUE)
a.random = sample (na.omit(comb_data), length(c(D_data_Large_pop$rel_f_RS)), TRUE)
b.random
# Null (permuated) difference
= var(na.omit(a.random)) - var(na.omit(b.random))
diff.random[i]
}
# P-value is the fraction of how many times the permuted difference is equal or more extreme than the observed difference
= sum(abs(diff.random) >= as.numeric(abs(diff.observed)))/ number_of_permutations
t_Treat_diff_Female_pop_I_p
### Opportunity for sexual selection (Is) ####
# Arena size
# Males
=c(Is_Small_arena_Male_bootvar$t)-c(Is_Large_arena_Male_bootvar$t)
Treat_diff_Male_arena_Is
=mean(Treat_diff_Male_arena_Is,na.rm=TRUE)
t_Treat_diff_Male_arena_Is=quantile(Treat_diff_Male_arena_Is,.025,na.rm=TRUE)
t_Treat_diff_Male_arena_Is_lower=quantile(Treat_diff_Male_arena_Is,.975,na.rm=TRUE)
t_Treat_diff_Male_arena_Is_upper
# Permutation test to calculate p value
=c(D_data_Large_arena$rel_m_cMS,D_data_Small_arena$rel_m_cMS)
comb_data
= var(na.omit(c(D_data_Small_arena$rel_m_cMS)))-var(na.omit(c(D_data_Large_arena$rel_m_cMS)))
diff.observed
diff.observed
= 100000
number_of_permutations = NULL
diff.random for (i in 1 : number_of_permutations) {
# Sample from the combined dataset
= sample (na.omit(comb_data), length(c(D_data_Large_arena$rel_m_cMS)), TRUE)
a.random = sample (na.omit(comb_data), length(c(D_data_Small_arena$rel_m_cMS)), TRUE)
b.random
# Null (permuated) difference
= var(na.omit(a.random)) - var(na.omit(b.random))
diff.random[i]
}
# P-value is the fraction of how many times the permuted difference is equal or more extreme than the observed difference
= sum(abs(diff.random) >= as.numeric(abs(diff.observed)))/ number_of_permutations
t_Treat_diff_Male_arena_Is_p
# Females
=c(Is_Small_arena_Female_bootvar$t)-c(Is_Large_arena_Female_bootvar$t)
Treat_diff_Female_arena_Is
=mean(Treat_diff_Female_arena_Is,na.rm=TRUE)
t_Treat_diff_Female_arena_Is=quantile(Treat_diff_Female_arena_Is,.025,na.rm=TRUE)
t_Treat_diff_Female_arena_Is_lower=quantile(Treat_diff_Female_arena_Is,.975,na.rm=TRUE)
t_Treat_diff_Female_arena_Is_upper
# Permutation test to calculate p value
=c(D_data_Large_arena$rel_f_cMS,D_data_Small_arena$rel_f_cMS)
comb_data
= var(na.omit(c(D_data_Small_arena$rel_f_cMS)))-var(na.omit(c(D_data_Large_arena$rel_f_cMS)))
diff.observed
diff.observed
= 100000
number_of_permutations = NULL
diff.random for (i in 1 : number_of_permutations) {
# Sample from the combined dataset
= sample (na.omit(comb_data), length(c(D_data_Large_arena$rel_f_cMS)), TRUE)
a.random = sample (na.omit(comb_data), length(c(D_data_Small_arena$rel_f_cMS)), TRUE)
b.random
# Null (permuated) difference
= var(na.omit(a.random)) - var(na.omit(b.random))
diff.random[i]
}
# P-value is the fraction of how many times the permuted difference is equal or more extreme than the observed difference
= sum(abs(diff.random) >= as.numeric(abs(diff.observed)))/ number_of_permutations
t_Treat_diff_Female_arena_Is_p
# Population size
# Males
=c(Is_Large_pop_Male_bootvar$t)-c(Is_Small_pop_Male_bootvar$t)
Treat_diff_Male_pop_Is
=mean(Treat_diff_Male_pop_Is,na.rm=TRUE)
t_Treat_diff_Male_pop_Is=quantile(Treat_diff_Male_pop_Is,.025,na.rm=TRUE)
t_Treat_diff_Male_pop_Is_lower=quantile(Treat_diff_Male_pop_Is,.975,na.rm=TRUE)
t_Treat_diff_Male_pop_Is_upper
# Permutation test to calculate p value
=c(D_data_Small_pop$rel_m_cMS,D_data_Large_pop$rel_m_cMS)
comb_data
= var(na.omit(D_data_Large_pop$rel_m_cMS))-var(na.omit(D_data_Small_pop$rel_m_cMS),na.rm = T)
diff.observed
diff.observed
= 100000
number_of_permutations = NULL
diff.random for (i in 1 : number_of_permutations) {
# Sample from the combined dataset
= sample (na.omit(comb_data), length(D_data_Small_pop$rel_m_cMS), TRUE)
a.random = sample (na.omit(comb_data), length(D_data_Large_pop$rel_m_cMS), TRUE)
b.random
# Null (permuated) difference
= var(na.omit(a.random)) - var(na.omit(b.random))
diff.random[i]
}
# P-value is the fraction of how many times the permuted difference is equal or more extreme than the observed difference
= sum(abs(diff.random) >= as.numeric(abs(diff.observed)))/ number_of_permutations
t_Treat_diff_Male_pop_Is_p
# Females
=c(Is_Large_pop_Female_bootvar$t)-c(Is_Small_pop_Female_bootvar$t)
Treat_diff_Female_pop_Is
=mean(Treat_diff_Female_pop_Is,na.rm=TRUE)
t_Treat_diff_Female_pop_Is=quantile(Treat_diff_Female_pop_Is,.025,na.rm=TRUE)
t_Treat_diff_Female_pop_Is_lower=quantile(Treat_diff_Female_pop_Is,.975,na.rm=TRUE)
t_Treat_diff_Female_pop_Is_upper
# Permutation test to calculate p value
=c(D_data_Small_pop$rel_f_cMS,D_data_Large_pop$rel_f_cMS)
comb_data
= var(na.omit(D_data_Large_pop$rel_f_cMS))-var(na.omit(D_data_Small_pop$rel_f_cMS))
diff.observed
diff.observed
= 100000
number_of_permutations = NULL
diff.random for (i in 1 : number_of_permutations) {
# Sample from the combined dataset
= sample (na.omit(comb_data), length(c(D_data_Small_pop$rel_f_cMS)), TRUE)
a.random = sample (na.omit(comb_data), length(c(D_data_Large_pop$rel_f_cMS)), TRUE)
b.random
# Null (permuated) difference
= var(na.omit(a.random)) - var(na.omit(b.random))
diff.random[i]
}
# P-value is the fraction of how many times the permuted difference is equal or more extreme than the observed difference
= sum(abs(diff.random) >= as.numeric(abs(diff.observed)))/ number_of_permutations
t_Treat_diff_Female_pop_Is_p
### Sexual selection gradient ####
# Arena size
# Males
=c(B_Small_arena_Male_bootvar$t)-c(B_Large_arena_Male_bootvar$t)
Treat_diff_Male_arena_B
=mean(Treat_diff_Male_arena_B,na.rm=TRUE)
t_Treat_diff_Male_arena_B=quantile(Treat_diff_Male_arena_B,.025,na.rm=TRUE)
t_Treat_diff_Male_arena_B_lower=quantile(Treat_diff_Male_arena_B,.975,na.rm=TRUE)
t_Treat_diff_Male_arena_B_upper
# Permutation test to calculate p value
=c(D_data_Large_arena$rel_m_RS, D_data_Small_arena$rel_m_RS)
comb_data1=c(D_data_Large_arena$rel_m_cMS,D_data_Small_arena$rel_m_cMS)
comb_data2
= lm(D_data_Small_arena$rel_m_RS ~D_data_Small_arena$rel_m_cMS)$coefficients[2]-lm(D_data_Large_arena$rel_m_RS ~D_data_Large_arena$rel_m_cMS)$coefficients[2]
diff.observed
diff.observed
= 100000
number_of_permutations = NULL
diff.random for (i in 1 : number_of_permutations) {
# Sample from the combined dataset
= sample (na.omit(comb_data1), length(D_data_Large_arena$rel_m_RS), TRUE)
a.random = sample (na.omit(comb_data1), length(D_data_Small_arena$rel_m_RS), TRUE)
b.random = sample (na.omit(comb_data2), length(D_data_Large_arena$rel_m_cMS), TRUE)
c.random = sample (na.omit(comb_data2), length(D_data_Small_arena$rel_m_cMS), TRUE)
d.random
# Null (permuated) difference
= lm(b.random ~d.random)$coefficients[2]-lm(a.random ~c.random)$coefficients[2]
diff.random[i]
}
# P-value is the fraction of how many times the permuted difference is equal or more extreme than the observed difference
= sum(abs(diff.random) >= as.numeric(abs(diff.observed)))/ number_of_permutations
t_Treat_diff_Male_arena_B_p
# Females
=c(B_Small_arena_Female_bootvar$t)-c(B_Large_arena_Female_bootvar$t)
Treat_diff_Female_arena_B
=mean(Treat_diff_Female_arena_B,na.rm=TRUE)
t_Treat_diff_Female_arena_B=quantile(Treat_diff_Female_arena_B,.025,na.rm=TRUE)
t_Treat_diff_Female_arena_B_lower=quantile(Treat_diff_Female_arena_B,.975,na.rm=TRUE)
t_Treat_diff_Female_arena_B_upper
# Permutation test to calculate p value
=c(D_data_Large_arena$rel_f_RS, D_data_Small_arena$rel_f_RS)
comb_data1=c(D_data_Large_arena$rel_f_cMS,D_data_Small_arena$rel_f_cMS)
comb_data2
= lm(D_data_Small_arena$rel_f_RS ~D_data_Small_arena$rel_f_cMS)$coefficients[2]-lm(D_data_Large_arena$rel_f_RS ~D_data_Large_arena$rel_f_cMS)$coefficients[2]
diff.observed
diff.observed
= 100000
number_of_permutations = NULL
diff.random for (i in 1 : number_of_permutations) {
# Sample from the combined dataset
= sample (na.omit(comb_data1), length(D_data_Large_arena$rel_f_RS), TRUE)
a.random = sample (na.omit(comb_data1), length(D_data_Small_arena$rel_f_RS), TRUE)
b.random = sample (na.omit(comb_data2), length(D_data_Large_arena$rel_f_cMS), TRUE)
c.random = sample (na.omit(comb_data2), length(D_data_Small_arena$rel_f_cMS), TRUE)
d.random
# Null (permuated) difference
= lm(b.random ~d.random)$coefficients[2]-lm(a.random ~c.random)$coefficients[2]
diff.random[i]
}
# P-value is the fraction of how many times the permuted difference is equal or more extreme than the observed difference
= sum(abs(diff.random) >= as.numeric(abs(diff.observed)))/ number_of_permutations
t_Treat_diff_Female_arena_B_p
# Population size
# Males
=c(B_Large_pop_Male_bootvar$t)-c(B_Small_pop_Male_bootvar$t)
Treat_diff_Male_pop_B
=mean(Treat_diff_Male_pop_B,na.rm=TRUE)
t_Treat_diff_Male_pop_B=quantile(Treat_diff_Male_pop_B,.025,na.rm=TRUE)
t_Treat_diff_Male_pop_B_lower=quantile(Treat_diff_Male_pop_B,.975,na.rm=TRUE)
t_Treat_diff_Male_pop_B_upper
# Permutation test to calculate p value
=c(D_data_Small_pop$rel_m_RS, D_data_Large_pop$rel_m_RS)
comb_data1=c(D_data_Small_pop$rel_m_cMS,D_data_Large_pop$rel_m_cMS)
comb_data2
= lm(D_data_Large_pop$rel_m_RS ~D_data_Large_pop$rel_m_cMS)$coefficients[2]-lm(D_data_Small_pop$rel_m_RS ~D_data_Small_pop$rel_m_cMS)$coefficients[2]
diff.observed
diff.observed
= 100000
number_of_permutations = NULL
diff.random for (i in 1 : number_of_permutations) {
# Sample from the combined dataset
= sample (na.omit(comb_data1), length(D_data_Small_pop$rel_m_RS), TRUE)
a.random = sample (na.omit(comb_data1), length(D_data_Large_pop$rel_m_RS), TRUE)
b.random = sample (na.omit(comb_data2), length(D_data_Small_pop$rel_m_cMS), TRUE)
c.random = sample (na.omit(comb_data2), length(D_data_Large_pop$rel_m_cMS), TRUE)
d.random
# Null (permuated) difference
= lm(b.random ~d.random)$coefficients[2]-lm(a.random ~c.random)$coefficients[2]
diff.random[i]
}
# P-value is the fraction of how many times the permuted difference is equal or more extreme than the observed difference
= sum(abs(diff.random) >= as.numeric(abs(diff.observed)))/ number_of_permutations
t_Treat_diff_Male_pop_B_p
# Females
=c(B_Large_pop_Female_bootvar$t)-c(B_Small_pop_Female_bootvar$t)
Treat_diff_Female_pop_B
=mean(Treat_diff_Female_pop_B,na.rm=TRUE)
t_Treat_diff_Female_pop_B=quantile(Treat_diff_Female_pop_B,.025,na.rm=TRUE)
t_Treat_diff_Female_pop_B_lower=quantile(Treat_diff_Female_pop_B,.975,na.rm=TRUE)
t_Treat_diff_Female_pop_B_upper
# Permutation test to calculate p value
=c(D_data_Small_pop$rel_f_RS, D_data_Large_pop$rel_f_RS)
comb_data1=c(D_data_Small_pop$rel_f_cMS,D_data_Large_pop$rel_f_cMS)
comb_data2
= lm(D_data_Large_pop$rel_f_RS ~D_data_Large_pop$rel_f_cMS)$coefficients[2]-lm(D_data_Small_pop$rel_f_RS ~D_data_Small_pop$rel_f_cMS)$coefficients[2]
diff.observed
diff.observed
= 100000
number_of_permutations = NULL
diff.random for (i in 1 : number_of_permutations) {
# Sample from the combined dataset
= sample (na.omit(comb_data1), length(D_data_Small_pop$rel_f_RS), TRUE)
a.random = sample (na.omit(comb_data1), length(D_data_Large_pop$rel_f_RS), TRUE)
b.random = sample (na.omit(comb_data2), length(D_data_Small_pop$rel_f_cMS), TRUE)
c.random = sample (na.omit(comb_data2), length(D_data_Large_pop$rel_f_cMS), TRUE)
d.random
# Null (permuated) difference
= lm(b.random ~d.random)$coefficients[2]-lm(a.random ~c.random)$coefficients[2]
diff.random[i]
}
# P-value is the fraction of how many times the permuted difference is equal or more extreme than the observed difference
= sum(abs(diff.random) >= as.numeric(abs(diff.observed)))/ number_of_permutations
t_Treat_diff_Female_pop_B_p
### Jones index ####
# Arena size
# Males
=c(S_Small_arena_Male_bootvar$t)-c(S_Large_arena_Male_bootvar$t)
Treat_diff_Male_arena_S
=mean(Treat_diff_Male_arena_S,na.rm=TRUE)
t_Treat_diff_Male_arena_S=quantile(Treat_diff_Male_arena_S,.025,na.rm=TRUE)
t_Treat_diff_Male_arena_S_lower=quantile(Treat_diff_Male_arena_S,.975,na.rm=TRUE)
t_Treat_diff_Male_arena_S_upper
# Permutation test to calculate p value
=c(D_data_Large_arena$rel_m_cMS, D_data_Small_arena$rel_m_cMS)
comb_data1=c(D_data_Large_arena$rel_m_RS, D_data_Small_arena$rel_m_RS)
comb_data2
= lm(D_data_Small_arena$rel_m_RS ~D_data_Small_arena$rel_m_cMS)$coefficients[2]*sqrt(var(D_data_Small_arena$rel_m_cMS, na.rm=TRUE))-lm(D_data_Large_arena$rel_m_RS ~D_data_Large_arena$rel_m_cMS)$coefficients[2]*sqrt(var(D_data_Large_arena$rel_m_cMS, na.rm=TRUE))
diff.observed
diff.observed
= 100000
number_of_permutations = NULL
diff.random for (i in 1 : number_of_permutations) {
# Sample from the combined dataset
= sample (na.omit(comb_data1), length(D_data_Large_arena$rel_m_cMS), TRUE)
a.random = sample (na.omit(comb_data1), length(D_data_Small_arena$rel_m_cMS), TRUE)
b.random = sample (na.omit(comb_data2), length(D_data_Large_arena$rel_m_RS), TRUE)
c.random = sample (na.omit(comb_data2), length(D_data_Small_arena$rel_m_RS), TRUE)
d.random
# Null (permuated) difference
= lm(d.random ~b.random)$coefficients[2]*sqrt(var(b.random, na.rm=TRUE))-lm(c.random ~a.random)$coefficients[2]*sqrt(var(a.random, na.rm=TRUE))
diff.random[i]
}
# P-value is the fraction of how many times the permuted difference is equal or more extreme than the observed difference
= sum(abs(diff.random) >= as.numeric(abs(diff.observed)))/ number_of_permutations
t_Treat_diff_Male_arena_S_p
# Females
=c(S_Small_arena_Female_bootvar$t)-c(S_Large_arena_Female_bootvar$t)
Treat_diff_Female_arena_S
=mean(Treat_diff_Female_arena_S,na.rm=TRUE)
t_Treat_diff_Female_arena_S=quantile(Treat_diff_Female_arena_S,.025,na.rm=TRUE)
t_Treat_diff_Female_arena_S_lower=quantile(Treat_diff_Female_arena_S,.975,na.rm=TRUE)
t_Treat_diff_Female_arena_S_upper
# Permutation test to calculate p value
=c(D_data_Large_arena$rel_f_cMS, D_data_Small_arena$rel_f_cMS)
comb_data1=c(D_data_Large_arena$rel_f_RS, D_data_Small_arena$rel_f_RS)
comb_data2
= lm(D_data_Small_arena$rel_f_RS ~D_data_Small_arena$rel_f_cMS)$coefficients[2]*sqrt(var(D_data_Small_arena$rel_f_cMS, na.rm=TRUE))-lm(D_data_Large_arena$rel_f_RS ~D_data_Large_arena$rel_f_cMS)$coefficients[2]*sqrt(var(D_data_Large_arena$rel_f_cMS, na.rm=TRUE))
diff.observed
diff.observed
= 100000
number_of_permutations = NULL
diff.random for (i in 1 : number_of_permutations) {
# Sample from the combined dataset
= sample (na.omit(comb_data1), length(D_data_Large_arena$rel_f_cMS), TRUE)
a.random = sample (na.omit(comb_data1), length(D_data_Small_arena$rel_f_cMS), TRUE)
b.random = sample (na.omit(comb_data2), length(D_data_Large_arena$rel_f_RS), TRUE)
c.random = sample (na.omit(comb_data2), length(D_data_Small_arena$rel_f_RS), TRUE)
d.random
# Null (permuated) difference
= lm(d.random ~b.random)$coefficients[2]*sqrt(var(b.random, na.rm=TRUE))-lm(c.random ~a.random)$coefficients[2]*sqrt(var(a.random, na.rm=TRUE))
diff.random[i]
}
# P-value is the fraction of how many times the permuted difference is equal or more extreme than the observed difference
= sum(abs(diff.random) >= as.numeric(abs(diff.observed)))/ number_of_permutations
t_Treat_diff_Female_arena_S_p
# Population size
# Males
=c(S_Large_pop_Male_bootvar$t)-c(S_Small_pop_Male_bootvar$t)
Treat_diff_Male_pop_S
=mean(Treat_diff_Male_pop_S,na.rm=TRUE)
t_Treat_diff_Male_pop_S=quantile(Treat_diff_Male_pop_S,.025,na.rm=TRUE)
t_Treat_diff_Male_pop_S_lower=quantile(Treat_diff_Male_pop_S,.975,na.rm=TRUE)
t_Treat_diff_Male_pop_S_upper
# Permutation test to calculate p value
=c(D_data_Small_pop$rel_m_cMS, D_data_Large_pop$rel_m_cMS)
comb_data1=c(D_data_Small_pop$rel_m_RS, D_data_Large_pop$rel_m_RS)
comb_data2
= lm(D_data_Large_pop$rel_m_RS ~D_data_Large_pop$rel_m_cMS)$coefficients[2]*sqrt(var(D_data_Large_pop$rel_m_cMS, na.rm=TRUE))-lm(D_data_Small_pop$rel_m_RS ~D_data_Small_pop$rel_m_cMS)$coefficients[2]*sqrt(var(D_data_Small_pop$rel_m_cMS, na.rm=TRUE))
diff.observed
diff.observed
= 100000
number_of_permutations = NULL
diff.random for (i in 1 : number_of_permutations) {
# Sample from the combined dataset
= sample (na.omit(comb_data1), length(D_data_Small_pop$rel_m_cMS), TRUE)
a.random = sample (na.omit(comb_data1), length(D_data_Large_pop$rel_m_cMS), TRUE)
b.random = sample (na.omit(comb_data2), length(D_data_Small_pop$rel_m_RS), TRUE)
c.random = sample (na.omit(comb_data2), length(D_data_Large_pop$rel_m_RS), TRUE)
d.random
# Null (permuated) difference
= lm(d.random ~b.random)$coefficients[2]*sqrt(var(b.random, na.rm=TRUE))-lm(c.random ~a.random)$coefficients[2]*sqrt(var(a.random, na.rm=TRUE))
diff.random[i]
}
# P-value is the fraction of how many times the permuted difference is equal or more extreme than the observed difference
= sum(abs(diff.random) >= as.numeric(abs(diff.observed)))/ number_of_permutations
t_Treat_diff_Male_pop_S_p
# Females
=c(S_Large_pop_Female_bootvar$t)-c(S_Small_pop_Female_bootvar$t)
Treat_diff_Female_pop_S
=mean(Treat_diff_Female_pop_S,na.rm=TRUE)
t_Treat_diff_Female_pop_S=quantile(Treat_diff_Female_pop_S,.025,na.rm=TRUE)
t_Treat_diff_Female_pop_S_lower=quantile(Treat_diff_Female_pop_S,.975,na.rm=TRUE)
t_Treat_diff_Female_pop_S_upper
# Permutation test to calculate p value
=c(D_data_Small_pop$rel_f_cMS, D_data_Large_pop$rel_f_cMS)
comb_data1=c(D_data_Small_pop$rel_f_RS, D_data_Large_pop$rel_f_RS)
comb_data2
= lm(D_data_Large_pop$rel_f_RS ~D_data_Large_pop$rel_f_cMS)$coefficients[2]*sqrt(var(D_data_Large_pop$rel_f_cMS, na.rm=TRUE))-lm(D_data_Small_pop$rel_f_RS ~D_data_Small_pop$rel_f_cMS)$coefficients[2]*sqrt(var(D_data_Small_pop$rel_f_cMS, na.rm=TRUE))
diff.observed
diff.observed
= 100000
number_of_permutations = NULL
diff.random for (i in 1 : number_of_permutations) {
# Sample from the combined dataset
= sample (na.omit(comb_data1), length(D_data_Small_pop$rel_f_cMS), TRUE)
a.random = sample (na.omit(comb_data1), length(D_data_Large_pop$rel_f_cMS), TRUE)
b.random = sample (na.omit(comb_data2), length(D_data_Small_pop$rel_f_RS), TRUE)
c.random = sample (na.omit(comb_data2), length(D_data_Large_pop$rel_f_RS), TRUE)
d.random
# Null (permuated) difference
= lm(d.random ~b.random)$coefficients[2]*sqrt(var(b.random, na.rm=TRUE))-lm(c.random ~a.random)$coefficients[2]*sqrt(var(a.random, na.rm=TRUE))
diff.random[i]
}
# P-value is the fraction of how many times the permuted difference is equal or more extreme than the observed difference
= sum(abs(diff.random) >= as.numeric(abs(diff.observed)))/ number_of_permutations
t_Treat_diff_Female_pop_S_p
### Extract data and write results table ####
<- as.data.frame(cbind("Male", "Arena size", "Opportunity for selection", t_Treat_diff_Male_arena_I, t_Treat_diff_Male_arena_I_lower, t_Treat_diff_Male_arena_I_upper, t_Treat_diff_Male_arena_I_p))
CompTreat_Table_Male_arena_I names(CompTreat_Table_Male_arena_I)=c('V1','V2','V3','V4','V5','V6','V7')
<- as.data.frame(cbind("Male", "Population size", "Opportunity for selection", t_Treat_diff_Male_pop_I, t_Treat_diff_Male_pop_I_lower, t_Treat_diff_Male_pop_I_upper, t_Treat_diff_Male_pop_I_p))
CompTreat_Table_Male_pop_I names(CompTreat_Table_Male_pop_I)=c('V1','V2','V3','V4','V5','V6','V7')
<- as.data.frame(cbind("Male", "Arena size", "Opportunity for sexual selection", t_Treat_diff_Male_arena_Is, t_Treat_diff_Male_arena_Is_lower, t_Treat_diff_Male_arena_Is_upper, t_Treat_diff_Male_arena_Is_p))
CompTreat_Table_Male_arena_Is names(CompTreat_Table_Male_arena_Is)=c('V1','V2','V3','V4','V5','V6','V7')
<- as.data.frame(cbind("Male", "Population size", "Opportunity for sexual selection", t_Treat_diff_Male_pop_Is, t_Treat_diff_Male_pop_Is_lower, t_Treat_diff_Male_pop_Is_upper, t_Treat_diff_Male_pop_Is_p))
CompTreat_Table_Male_pop_Is names(CompTreat_Table_Male_pop_Is)=c('V1','V2','V3','V4','V5','V6','V7')
<- as.data.frame(cbind("Male", "Arena size", "Bateman gradient", t_Treat_diff_Male_arena_B, t_Treat_diff_Male_arena_B_lower, t_Treat_diff_Male_arena_B_upper, t_Treat_diff_Male_arena_B_p))
CompTreat_Table_Male_arena_B names(CompTreat_Table_Male_arena_B)=c('V1','V2','V3','V4','V5','V6','V7')
<- as.data.frame(cbind("Male", "Population size", "Bateman gradient", t_Treat_diff_Male_pop_B, t_Treat_diff_Male_pop_B_lower, t_Treat_diff_Male_pop_B_upper, t_Treat_diff_Male_pop_B_p))
CompTreat_Table_Male_pop_B names(CompTreat_Table_Male_pop_B)=c('V1','V2','V3','V4','V5','V6','V7')
<- as.data.frame(cbind("Male", "Arena size", "Jones index", t_Treat_diff_Male_arena_S, t_Treat_diff_Male_arena_S_lower, t_Treat_diff_Male_arena_S_upper, t_Treat_diff_Male_arena_S_p))
CompTreat_Table_Male_arena_S names(CompTreat_Table_Male_arena_S)=c('V1','V2','V3','V4','V5','V6','V7')
<- as.data.frame(cbind("Male", "Population size", "Jones index", t_Treat_diff_Male_pop_S, t_Treat_diff_Male_pop_S_lower, t_Treat_diff_Male_pop_S_upper, t_Treat_diff_Male_pop_S_p))
CompTreat_Table_Male_pop_S names(CompTreat_Table_Male_pop_S)=c('V1','V2','V3','V4','V5','V6','V7')
<- as.data.frame(cbind("Female", "Arena size", "Opportunity for selection", t_Treat_diff_Female_arena_I, t_Treat_diff_Female_arena_I_lower, t_Treat_diff_Female_arena_I_upper, t_Treat_diff_Female_arena_I_p))
CompTreat_Table_Female_arena_I names(CompTreat_Table_Female_arena_I)=c('V1','V2','V3','V4','V5','V6','V7')
<- as.data.frame(cbind("Female", "Population size", "Opportunity for selection", t_Treat_diff_Female_pop_I, t_Treat_diff_Female_pop_I_lower, t_Treat_diff_Female_pop_I_upper, t_Treat_diff_Female_pop_I_p))
CompTreat_Table_Female_pop_I names(CompTreat_Table_Female_pop_I)=c('V1','V2','V3','V4','V5','V6','V7')
<- as.data.frame(cbind("Female", "Arena size", "Opportunity for sexual selection", t_Treat_diff_Female_arena_Is, t_Treat_diff_Female_arena_Is_lower, t_Treat_diff_Female_arena_Is_upper, t_Treat_diff_Female_arena_Is_p))
CompTreat_Table_Female_arena_Is names(CompTreat_Table_Female_arena_Is)=c('V1','V2','V3','V4','V5','V6','V7')
<- as.data.frame(cbind("Female", "Population size", "Opportunity for sexual selection", t_Treat_diff_Female_pop_Is, t_Treat_diff_Female_pop_Is_lower, t_Treat_diff_Female_pop_Is_upper, t_Treat_diff_Female_pop_Is_p))
CompTreat_Table_Female_pop_Is names(CompTreat_Table_Female_pop_Is)=c('V1','V2','V3','V4','V5','V6','V7')
<- as.data.frame(cbind("Female", "Arena size", "Bateman gradient", t_Treat_diff_Female_arena_B, t_Treat_diff_Female_arena_B_lower, t_Treat_diff_Female_arena_B_upper, t_Treat_diff_Female_arena_B_p))
CompTreat_Table_Female_arena_B names(CompTreat_Table_Female_arena_B)=c('V1','V2','V3','V4','V5','V6','V7')
<- as.data.frame(cbind("Female", "Population size", "Bateman gradient", t_Treat_diff_Female_pop_B, t_Treat_diff_Female_pop_B_lower, t_Treat_diff_Female_pop_B_upper, t_Treat_diff_Female_pop_B_p))
CompTreat_Table_Female_pop_B names(CompTreat_Table_Female_pop_B)=c('V1','V2','V3','V4','V5','V6','V7')
<- as.data.frame(cbind("Female", "Arena size", "Jones index", t_Treat_diff_Female_arena_S, t_Treat_diff_Female_arena_S_lower, t_Treat_diff_Female_arena_S_upper, t_Treat_diff_Female_arena_S_p))
CompTreat_Table_Female_arena_S names(CompTreat_Table_Female_arena_S)=c('V1','V2','V3','V4','V5','V6','V7')
<- as.data.frame(cbind("Female", "Population size", "Jones index", t_Treat_diff_Female_pop_S, t_Treat_diff_Female_pop_S_lower, t_Treat_diff_Female_pop_S_upper, t_Treat_diff_Female_pop_S_p))
CompTreat_Table_Female_pop_S names(CompTreat_Table_Female_pop_S)=c('V1','V2','V3','V4','V5','V6','V7')
<- as.data.frame(as.matrix(rbind(CompTreat_Table_Male_arena_I,CompTreat_Table_Male_arena_Is,
Table_BatemanMetrics_TreatComp
CompTreat_Table_Male_arena_B,CompTreat_Table_Male_arena_S,
CompTreat_Table_Male_pop_I,CompTreat_Table_Male_pop_Is,
CompTreat_Table_Male_pop_B,CompTreat_Table_Male_pop_S,
CompTreat_Table_Female_arena_I,CompTreat_Table_Female_arena_Is,
CompTreat_Table_Female_arena_B,CompTreat_Table_Female_arena_S,
CompTreat_Table_Female_pop_I,CompTreat_Table_Female_pop_Is,
CompTreat_Table_Female_pop_B,CompTreat_Table_Female_pop_S
)))
4]=as.numeric(Table_BatemanMetrics_TreatComp[,4])
Table_BatemanMetrics_TreatComp[,5]=as.numeric(Table_BatemanMetrics_TreatComp[,5])
Table_BatemanMetrics_TreatComp[,6]=as.numeric(Table_BatemanMetrics_TreatComp[,6])
Table_BatemanMetrics_TreatComp[,7]=as.numeric(Table_BatemanMetrics_TreatComp[,7])
Table_BatemanMetrics_TreatComp[,
colnames(Table_BatemanMetrics_TreatComp)[1] <- "Sex"
colnames(Table_BatemanMetrics_TreatComp)[2] <- "Treatment"
colnames(Table_BatemanMetrics_TreatComp)[3] <- "Selection_metric"
colnames(Table_BatemanMetrics_TreatComp)[4] <- "Variance"
colnames(Table_BatemanMetrics_TreatComp)[5] <- "l95_CI"
colnames(Table_BatemanMetrics_TreatComp)[6] <- "u95_CI"
colnames(Table_BatemanMetrics_TreatComp)[7] <- "p-value"
4]=round(as.numeric(Table_BatemanMetrics_TreatComp[,4]),digits=2)
Table_BatemanMetrics_TreatComp[,5]=round(as.numeric(Table_BatemanMetrics_TreatComp[,5]),digits=2)
Table_BatemanMetrics_TreatComp[,6]=round(as.numeric(Table_BatemanMetrics_TreatComp[,6]),digits=2)
Table_BatemanMetrics_TreatComp[,7]=round(as.numeric(Table_BatemanMetrics_TreatComp[,7]),digits=3)
Table_BatemanMetrics_TreatComp[,rownames(Table_BatemanMetrics_TreatComp) <- c()
Table A1: Treatment comparisons for sexual selection metrics including 95% confidence intervals. Negative effect sizes indicate larger values at lower density and positive effect sizes larger values at higher density.
kable(Table_BatemanMetrics_TreatComp)
Sex | Treatment | Selection_metric | Variance | l95_CI | u95_CI | p-value |
---|---|---|---|---|---|---|
Male | Arena size | Opportunity for selection | 0.24 | -0.25 | 0.81 | 0.184 |
Male | Arena size | Opportunity for sexual selection | -0.11 | -0.32 | 0.08 | 0.129 |
Male | Arena size | Bateman gradient | 0.70 | 0.14 | 1.33 | 0.005 |
Male | Arena size | Jones index | 0.30 | -0.04 | 0.65 | 0.026 |
Male | Population size | Opportunity for selection | -0.02 | -0.59 | 0.48 | 0.927 |
Male | Population size | Opportunity for sexual selection | 0.17 | -0.01 | 0.36 | 0.021 |
Male | Population size | Bateman gradient | -0.56 | -1.22 | 0.06 | 0.020 |
Male | Population size | Jones index | -0.18 | -0.54 | 0.17 | 0.179 |
Female | Arena size | Opportunity for selection | 0.14 | -0.10 | 0.37 | 0.088 |
Female | Arena size | Opportunity for sexual selection | 0.16 | -0.08 | 0.40 | 0.060 |
Female | Arena size | Bateman gradient | -0.24 | -0.63 | 0.15 | 0.271 |
Female | Arena size | Jones index | -0.06 | -0.32 | 0.21 | 0.677 |
Female | Population size | Opportunity for selection | -0.03 | -0.26 | 0.19 | 0.712 |
Female | Population size | Opportunity for sexual selection | 0.34 | 0.11 | 0.60 | 0.000 |
Female | Population size | Bateman gradient | 0.30 | -0.18 | 0.80 | 0.185 |
Female | Population size | Jones index | 0.37 | 0.11 | 0.65 | 0.005 |
We used permutation tests to see if the mating differential of body mass differed between treatments.
## Permutation test for treatment effect on mating differential of body mass ####
# Group size
# Males
=c(boot_BW_males_group_size_large$t)-c(boot_BW_males_group_size_small$t)
Treat_diff_male_pop
=mean(Treat_diff_male_pop,na.rm=TRUE)
t_Treat_diff_male_pop=quantile(Treat_diff_male_pop,.025,na.rm=TRUE)
t_Treat_diff_male_pop_lower=quantile(Treat_diff_male_pop,.975,na.rm=TRUE)
t_Treat_diff_male_pop_upper
# Permutation test to calculate p value
=c(D_data_m[D_data_m$Gr_size=='LG',]$m_cMS/mean(D_data_m[D_data_m$Gr_size=='LG',]$m_cMS),
comb_data_RS$Gr_size=='SG',]$m_cMS/mean(D_data_m[D_data_m$Gr_size=='SG',]$m_cMS))
D_data_m[D_data_m=c(D_data_m[D_data_m$Gr_size=='LG',]$stder_BM_focal,
comb_data_BM$Gr_size=='SG',]$stder_BM_focal)
D_data_m[D_data_m
= cov(D_data_m[D_data_m$Gr_size=='LG',]$stder_BM_focal,D_data_m[D_data_m$Gr_size=='LG',]$m_cMS/mean(D_data_m[D_data_m$Gr_size=='LG',]$m_cMS),use="complete.obs",method = "pearson") - cov(D_data_m[D_data_m$Gr_size=='SG',]$stder_BM_focal,D_data_m[D_data_m$Gr_size=='SG',]$m_cMS/mean(D_data_m[D_data_m$Gr_size=='SG',]$m_cMS),use="complete.obs",method = "pearson")
diff.observed_male_pop
= 100000
number_of_permutations = NULL
diff.random_male_pop for (i in 1 : number_of_permutations) {
# Sample from the combined dataset
= sample (na.omit(comb_data_RS), length(c(D_data_m[D_data_m$Gr_size=='LG',]$m_cMS/mean(D_data_m[D_data_m$Gr_size=='LG',]$m_cMS))), TRUE)
a.random = sample (na.omit(comb_data_BM), length(c(D_data_m[D_data_m$Gr_size=='LG',]$m_cMS/mean(D_data_m[D_data_m$Gr_size=='LG',]$m_cMS))), TRUE)
b.random = sample (na.omit(comb_data_RS), length(c(D_data_m[D_data_m$Gr_size=='SG',]$m_cMS/mean(D_data_m[D_data_m$Gr_size=='SG',]$m_cMS))), TRUE)
c.random = sample (na.omit(comb_data_BM), length(c(D_data_m[D_data_m$Gr_size=='SG',]$m_cMS/mean(D_data_m[D_data_m$Gr_size=='SG',]$m_cMS))), TRUE)
d.random
# Null (permuated) difference
= cov(b.random,a.random,use="complete.obs",method = "pearson") - cov(d.random,c.random,use="complete.obs",method = "pearson")
diff.random_male_pop[i]
}
# P-value is the fraction of how many times the permuted difference is equal or more extreme than the observed difference
= sum(abs(diff.random_male_pop) >= as.numeric(abs(diff.observed_male_pop)))/ number_of_permutations
p_Treat_diff_male_pop
# Females
=c(boot_BW_females_group_size_large$t)-c(boot_BW_females_group_size_small$t)
Treat_diff_female_pop
=mean(Treat_diff_female_pop,na.rm=TRUE)
t_Treat_diff_female_pop=quantile(Treat_diff_female_pop,.025,na.rm=TRUE)
t_Treat_diff_female_pop_lower=quantile(Treat_diff_female_pop,.975,na.rm=TRUE)
t_Treat_diff_female_pop_upper
# Permutation test to calculate p value
=c(D_data_f[D_data_f$Gr_size=='LG',]$f_cMS/mean(D_data_f[D_data_f$Gr_size=='LG',]$f_cMS),
comb_data_RS$Gr_size=='SG',]$f_cMS/mean(D_data_f[D_data_f$Gr_size=='SG',]$f_cMS))
D_data_f[D_data_f=c(D_data_f[D_data_f$Gr_size=='LG',]$stder_BM_focal,
comb_data_BM$Gr_size=='SG',]$stder_BM_focal)
D_data_f[D_data_f
= cov(D_data_f[D_data_f$Gr_size=='LG',]$stder_BM_focal,D_data_f[D_data_f$Gr_size=='LG',]$f_cMS/mean(D_data_f[D_data_f$Gr_size=='LG',]$f_cMS),use="complete.obs",method = "pearson") - cov(D_data_f[D_data_f$Gr_size=='SG',]$stder_BM_focal,D_data_f[D_data_f$Gr_size=='SG',]$f_cMS/mean(D_data_f[D_data_f$Gr_size=='SG',]$f_cMS),use="complete.obs",method = "pearson")
diff.observed_female_pop
= 100000
number_of_permutations = NULL
diff.random_female_pop for (i in 1 : number_of_permutations) {
# Sample from the combined dataset
= sample (na.omit(comb_data_RS), length(c(D_data_f[D_data_f$Gr_size=='LG',]$f_cMS/mean(D_data_f[D_data_f$Gr_size=='LG',]$f_cMS))), TRUE)
a.random = sample (na.omit(comb_data_BM), length(c(D_data_f[D_data_f$Gr_size=='LG',]$f_cMS/mean(D_data_f[D_data_f$Gr_size=='LG',]$f_cMS))), TRUE)
b.random = sample (na.omit(comb_data_RS), length(c(D_data_f[D_data_f$Gr_size=='SG',]$f_cMS/mean(D_data_f[D_data_f$Gr_size=='SG',]$f_cMS))), TRUE)
c.random = sample (na.omit(comb_data_BM), length(c(D_data_f[D_data_f$Gr_size=='SG',]$f_cMS/mean(D_data_f[D_data_f$Gr_size=='SG',]$f_cMS))), TRUE)
d.random
# Null (permuated) difference
= cov(b.random,a.random,use="complete.obs",method = "pearson") - cov(d.random,c.random,use="complete.obs",method = "pearson")
diff.random_female_pop[i]
}
# P-value is the fraction of how many times the permuted difference is equal or more extreme than the observed difference
= sum(abs(diff.random_female_pop) >= as.numeric(abs(diff.observed_female_pop)))/ number_of_permutations
p_Treat_diff_female_pop
# Arena size
# Males
=c(boot_BW_males_arena_large$t)-c(boot_BW_males_arena_small$t)
Treat_diff_male_arena
=mean(Treat_diff_male_arena,na.rm=TRUE)
t_Treat_diff_male_arena=quantile(Treat_diff_male_arena,.025,na.rm=TRUE)
t_Treat_diff_male_arena_lower=quantile(Treat_diff_male_arena,.975,na.rm=TRUE)
t_Treat_diff_male_arena_upper
# Permutation test to calculate p value
=c(D_data_m[D_data_m$Arena=='Small',]$m_cMS/mean(D_data_m[D_data_m$Arena=='Small',]$m_cMS),
comb_data_RS$Arena=='Large',]$m_cMS/mean(D_data_m[D_data_m$Arena=='Large',]$m_cMS))
D_data_m[D_data_m=c(D_data_m[D_data_m$Arena=='Small',]$stder_BM_focal,
comb_data_BM$Arena=='Large',]$stder_BM_focal)
D_data_m[D_data_m
= cov(D_data_m[D_data_m$Arena=='Small',]$stder_BM_focal,D_data_m[D_data_m$Arena=='Small',]$m_cMS/mean(D_data_m[D_data_m$Arena=='Small',]$m_cMS),use="complete.obs",method = "pearson") - cov(D_data_m[D_data_m$Arena=='Large',]$stder_BM_focal,D_data_m[D_data_m$Arena=='Large',]$m_cMS/mean(D_data_m[D_data_m$Arena=='Large',]$m_cMS),use="complete.obs",method = "pearson")
diff.observed_male_arena
= 100000
number_of_permutations = NULL
diff.random_male_arena for (i in 1 : number_of_permutations) {
# Sample from the combined dataset
= sample (na.omit(comb_data_RS), length(c(D_data_m[D_data_m$Arena=='Small',]$m_cMS/mean(D_data_m[D_data_m$Arena=='Small',]$m_cMS))), TRUE)
a.random = sample (na.omit(comb_data_BM), length(c(D_data_m[D_data_m$Arena=='Small',]$m_cMS/mean(D_data_m[D_data_m$Arena=='Small',]$m_cMS))), TRUE)
b.random = sample (na.omit(comb_data_RS), length(c(D_data_m[D_data_m$Arena=='Large',]$m_cMS/mean(D_data_m[D_data_m$Arena=='Large',]$m_cMS))), TRUE)
c.random = sample (na.omit(comb_data_BM), length(c(D_data_m[D_data_m$Arena=='Large',]$m_cMS/mean(D_data_m[D_data_m$Arena=='Large',]$m_cMS))), TRUE)
d.random
# Null (permuated) difference
= cov(b.random,a.random,use="complete.obs",method = "pearson") - cov(d.random,c.random,use="complete.obs",method = "pearson")
diff.random_male_arena[i]
}
# P-value is the fraction of how many times the permuted difference is equal or more extreme than the observed difference
= sum(abs(diff.random_male_arena) >= as.numeric(abs(diff.observed_male_arena)))/ number_of_permutations
p_Treat_diff_male_arena
# Females
=c(boot_BW_females_arena_large$t)-c(boot_BW_females_arena_small$t)
Treat_diff_female_arena
=mean(Treat_diff_female_arena,na.rm=TRUE)
t_Treat_diff_female_arena=quantile(Treat_diff_female_arena,.025,na.rm=TRUE)
t_Treat_diff_female_arena_lower=quantile(Treat_diff_female_arena,.975,na.rm=TRUE)
t_Treat_diff_female_arena_upper
# Permutation test to calculate p value
=c(D_data_f[D_data_f$Arena=='Small',]$f_cMS/mean(D_data_f[D_data_f$Arena=='Small',]$f_cMS),
comb_data_RS$Arena=='Large',]$f_cMS/mean(D_data_f[D_data_f$Arena=='Large',]$f_cMS))
D_data_f[D_data_f=c(D_data_f[D_data_f$Arena=='Small',]$stder_BM_focal,
comb_data_BM$Arena=='Large',]$stder_BM_focal)
D_data_f[D_data_f
= cov(D_data_f[D_data_f$Arena=='Small',]$stder_BM_focal,D_data_f[D_data_f$Arena=='Small',]$f_cMS/mean(D_data_f[D_data_f$Arena=='Small',]$f_cMS),use="complete.obs",method = "pearson") - cov(D_data_f[D_data_f$Arena=='Large',]$stder_BM_focal,D_data_f[D_data_f$Arena=='Large',]$f_cMS/mean(D_data_f[D_data_f$Arena=='Large',]$f_cMS),use="complete.obs",method = "pearson")
diff.observed_female_arena
= 100000
number_of_permutations = NULL
diff.random_female_arena for (i in 1 : number_of_permutations) {
# Sample from the combined dataset
= sample (na.omit(comb_data_RS), length(c(D_data_f[D_data_f$Arena=='Small',]$f_cMS/mean(D_data_f[D_data_f$Arena=='Small',]$f_cMS))), TRUE)
a.random = sample (na.omit(comb_data_BM), length(c(D_data_f[D_data_f$Arena=='Small',]$f_cMS/mean(D_data_f[D_data_f$Arena=='Small',]$f_cMS))), TRUE)
b.random = sample (na.omit(comb_data_RS), length(c(D_data_f[D_data_f$Arena=='Large',]$f_cMS/mean(D_data_f[D_data_f$Arena=='Large',]$f_cMS))), TRUE)
c.random = sample (na.omit(comb_data_BM), length(c(D_data_f[D_data_f$Arena=='Large',]$f_cMS/mean(D_data_f[D_data_f$Arena=='Large',]$f_cMS))), TRUE)
d.random
# Null (permuated) difference
= cov(b.random,a.random,use="complete.obs",method = "pearson") - cov(d.random,c.random,use="complete.obs",method = "pearson")
diff.random_female_arena[i]
}# P-value is the fraction of how many times the permuted difference is equal or more extreme than the observed difference
= sum(abs(diff.random_female_arena) >= as.numeric(abs(diff.observed_female_arena)))/ number_of_permutations
p_Treat_diff_female_arena
### Extract data and write results table ####
<- as.data.frame(cbind("Male", "Population size", "Body mass", t_Treat_diff_male_pop, t_Treat_diff_male_pop_lower, t_Treat_diff_male_pop_upper, p_Treat_diff_male_pop))
boot_data_BW_males_treat_group_size names(boot_data_BW_males_treat_group_size)=c('V1','V2','V3','V4','V5','V6','V7')
<- as.data.frame(cbind("Female", "Population size", "Body mass",t_Treat_diff_female_pop, t_Treat_diff_female_pop_lower, t_Treat_diff_female_pop_upper, p_Treat_diff_female_pop))
boot_data_BW_females_treat_group_size names(boot_data_BW_females_treat_group_size)=c('V1','V2','V3','V4','V5','V6','V7')
<- as.data.frame(cbind("Male", "Arena size", "Body mass", t_Treat_diff_male_arena, t_Treat_diff_male_arena_lower, t_Treat_diff_male_arena_upper, p_Treat_diff_male_arena))
boot_data_BW_males_treat_arena names(boot_data_BW_males_treat_arena)=c('V1','V2','V3','V4','V5','V6','V7')
<- as.data.frame(cbind("Female", "Arena size", "Body mass", t_Treat_diff_female_arena, t_Treat_diff_female_arena_lower, t_Treat_diff_female_arena_upper, p_Treat_diff_female_arena))
boot_data_BW_females_treat_arenanames(boot_data_BW_females_treat_arena)=c('V1','V2','V3','V4','V5','V6','V7')
<- as.data.frame(as.matrix(rbind(boot_data_BW_males_treat_group_size,boot_data_BW_females_treat_group_size,
Table_TreatComp_BM_MatingDif
boot_data_BW_males_treat_arena,boot_data_BW_females_treat_arena)))
colnames(Table_TreatComp_BM_MatingDif)[1] <- "Sex"
colnames(Table_TreatComp_BM_MatingDif)[2] <- "Treatment"
colnames(Table_TreatComp_BM_MatingDif)[3] <- "Variance_component"
colnames(Table_TreatComp_BM_MatingDif)[4] <- "Variance"
colnames(Table_TreatComp_BM_MatingDif)[5] <- "l95_CI"
colnames(Table_TreatComp_BM_MatingDif)[6] <- "u95_CI"
colnames(Table_TreatComp_BM_MatingDif)[7] <- "p-value"
4]=round(as.numeric(Table_TreatComp_BM_MatingDif[,4]),digits=2)
Table_TreatComp_BM_MatingDif[,5]=round(as.numeric(Table_TreatComp_BM_MatingDif[,5]),digits=2)
Table_TreatComp_BM_MatingDif[,6]=round(as.numeric(Table_TreatComp_BM_MatingDif[,6]),digits=2)
Table_TreatComp_BM_MatingDif[,7]=round(as.numeric(Table_TreatComp_BM_MatingDif[,7]),digits=3)
Table_TreatComp_BM_MatingDif[,rownames(Table_TreatComp_BM_MatingDif) <- c()
Table A2: Treatment comparisons for mating differentials on body mass including 95% confidence intervals. Negative effect sizes indicate larger values at lower density and positive effect sizes larger values at higher density.
kable(Table_TreatComp_BM_MatingDif)
Sex | Treatment | Variance_component | Variance | l95_CI | u95_CI | p-value |
---|---|---|---|---|---|---|
Male | Population size | Body mass | 0.18 | -0.14 | 0.51 | 0.411 |
Female | Population size | Body mass | 0.24 | -0.11 | 0.59 | 0.545 |
Male | Arena size | Body mass | 0.12 | -0.21 | 0.45 | 0.704 |
Female | Arena size | Body mass | -0.27 | -0.61 | 0.09 | 0.512 |
We used permutation tests to see if the selection differential of body mass differed between treatments.
## Permutation test for treatment effect on selection differential of body mass ####
# Group size
# Males
=c(boot_BW_males_group_size_large$t)-c(boot_BW_males_group_size_small$t)
Treat_diff_male_pop
=mean(Treat_diff_male_pop,na.rm=TRUE)
t_Treat_diff_male_pop=quantile(Treat_diff_male_pop,.025,na.rm=TRUE)
t_Treat_diff_male_pop_lower=quantile(Treat_diff_male_pop,.975,na.rm=TRUE)
t_Treat_diff_male_pop_upper
# Permutation test to calculate p value
=c(D_data_m[D_data_m$Gr_size=='LG',]$m_RS/mean(D_data_m[D_data_m$Gr_size=='LG',]$m_RS),
comb_data_RS$Gr_size=='SG',]$m_RS/mean(D_data_m[D_data_m$Gr_size=='SG',]$m_RS))
D_data_m[D_data_m=c(D_data_m[D_data_m$Gr_size=='LG',]$stder_BM_focal,
comb_data_BM$Gr_size=='SG',]$stder_BM_focal)
D_data_m[D_data_m
= cov(D_data_m[D_data_m$Gr_size=='LG',]$stder_BM_focal,D_data_m[D_data_m$Gr_size=='LG',]$m_RS/mean(D_data_m[D_data_m$Gr_size=='LG',]$m_RS),use="complete.obs",method = "pearson") - cov(D_data_m[D_data_m$Gr_size=='SG',]$stder_BM_focal,D_data_m[D_data_m$Gr_size=='SG',]$m_RS/mean(D_data_m[D_data_m$Gr_size=='SG',]$m_RS),use="complete.obs",method = "pearson")
diff.observed_male_pop
= 100000
number_of_permutations = NULL
diff.random_male_pop for (i in 1 : number_of_permutations) {
# Sample from the combined dataset
= sample (na.omit(comb_data_RS), length(c(D_data_m[D_data_m$Gr_size=='LG',]$m_RS/mean(D_data_m[D_data_m$Gr_size=='LG',]$m_RS))), TRUE)
a.random = sample (na.omit(comb_data_BM), length(c(D_data_m[D_data_m$Gr_size=='LG',]$m_RS/mean(D_data_m[D_data_m$Gr_size=='LG',]$m_RS))), TRUE)
b.random = sample (na.omit(comb_data_RS), length(c(D_data_m[D_data_m$Gr_size=='SG',]$m_RS/mean(D_data_m[D_data_m$Gr_size=='SG',]$m_RS))), TRUE)
c.random = sample (na.omit(comb_data_BM), length(c(D_data_m[D_data_m$Gr_size=='SG',]$m_RS/mean(D_data_m[D_data_m$Gr_size=='SG',]$m_RS))), TRUE)
d.random
# Null (permuated) difference
= cov(b.random,a.random,use="complete.obs",method = "pearson") - cov(d.random,c.random,use="complete.obs",method = "pearson")
diff.random_male_pop[i]
}
# P-value is the fraction of how many times the permuted difference is equal or more extreme than the observed difference
= sum(abs(diff.random_male_pop) >= as.numeric(abs(diff.observed_male_pop)))/ number_of_permutations
p_Treat_diff_male_pop
# Females
=c(boot_BW_females_group_size_large$t)-c(boot_BW_females_group_size_small$t)
Treat_diff_female_pop
=mean(Treat_diff_female_pop,na.rm=TRUE)
t_Treat_diff_female_pop=quantile(Treat_diff_female_pop,.025,na.rm=TRUE)
t_Treat_diff_female_pop_lower=quantile(Treat_diff_female_pop,.975,na.rm=TRUE)
t_Treat_diff_female_pop_upper
# Permutation test to calculate p value
=c(D_data_f[D_data_f$Gr_size=='LG',]$f_RS/mean(D_data_f[D_data_f$Gr_size=='LG',]$f_RS),
comb_data_RS$Gr_size=='SG',]$f_RS/mean(D_data_f[D_data_f$Gr_size=='SG',]$f_RS))
D_data_f[D_data_f=c(D_data_f[D_data_f$Gr_size=='LG',]$stder_BM_focal,
comb_data_BM$Gr_size=='SG',]$stder_BM_focal)
D_data_f[D_data_f
= cov(D_data_f[D_data_f$Gr_size=='LG',]$stder_BM_focal,D_data_f[D_data_f$Gr_size=='LG',]$f_RS/mean(D_data_f[D_data_f$Gr_size=='LG',]$f_RS),use="complete.obs",method = "pearson") - cov(D_data_f[D_data_f$Gr_size=='SG',]$stder_BM_focal,D_data_f[D_data_f$Gr_size=='SG',]$f_RS/mean(D_data_f[D_data_f$Gr_size=='SG',]$f_RS),use="complete.obs",method = "pearson")
diff.observed_female_pop
= 100000
number_of_permutations = NULL
diff.random_female_pop for (i in 1 : number_of_permutations) {
# Sample from the combined dataset
= sample (na.omit(comb_data_RS), length(c(D_data_f[D_data_f$Gr_size=='LG',]$f_RS/mean(D_data_f[D_data_f$Gr_size=='LG',]$f_RS))), TRUE)
a.random = sample (na.omit(comb_data_BM), length(c(D_data_f[D_data_f$Gr_size=='LG',]$f_RS/mean(D_data_f[D_data_f$Gr_size=='LG',]$f_RS))), TRUE)
b.random = sample (na.omit(comb_data_RS), length(c(D_data_f[D_data_f$Gr_size=='SG',]$f_RS/mean(D_data_f[D_data_f$Gr_size=='SG',]$f_RS))), TRUE)
c.random = sample (na.omit(comb_data_BM), length(c(D_data_f[D_data_f$Gr_size=='SG',]$f_RS/mean(D_data_f[D_data_f$Gr_size=='SG',]$f_RS))), TRUE)
d.random
# Null (permuated) difference
= cov(b.random,a.random,use="complete.obs",method = "pearson") - cov(d.random,c.random,use="complete.obs",method = "pearson")
diff.random_female_pop[i]
}
# P-value is the fraction of how many times the permuted difference is equal or more extreme than the observed difference
= sum(abs(diff.random_female_pop) >= as.numeric(abs(diff.observed_female_pop)))/ number_of_permutations
p_Treat_diff_female_pop
# Arena size
# Males
=c(boot_BW_males_arena_large$t)-c(boot_BW_males_arena_small$t)
Treat_diff_male_arena
=mean(Treat_diff_male_arena,na.rm=TRUE)
t_Treat_diff_male_arena=quantile(Treat_diff_male_arena,.025,na.rm=TRUE)
t_Treat_diff_male_arena_lower=quantile(Treat_diff_male_arena,.975,na.rm=TRUE)
t_Treat_diff_male_arena_upper
# Permutation test to calculate p value
=c(D_data_m[D_data_m$Arena=='Small',]$m_RS/mean(D_data_m[D_data_m$Arena=='Small',]$m_RS),
comb_data_RS$Arena=='Large',]$m_RS/mean(D_data_m[D_data_m$Arena=='Large',]$m_RS))
D_data_m[D_data_m=c(D_data_m[D_data_m$Arena=='Small',]$stder_BM_focal,
comb_data_BM$Arena=='Large',]$stder_BM_focal)
D_data_m[D_data_m
= cov(D_data_m[D_data_m$Arena=='Small',]$stder_BM_focal,D_data_m[D_data_m$Arena=='Small',]$m_RS/mean(D_data_m[D_data_m$Arena=='Small',]$m_RS),use="complete.obs",method = "pearson") - cov(D_data_m[D_data_m$Arena=='Large',]$stder_BM_focal,D_data_m[D_data_m$Arena=='Large',]$m_RS/mean(D_data_m[D_data_m$Arena=='Large',]$m_RS),use="complete.obs",method = "pearson")
diff.observed_male_arena
= 100000
number_of_permutations = NULL
diff.random_male_arena for (i in 1 : number_of_permutations) {
# Sample from the combined dataset
= sample (na.omit(comb_data_RS), length(c(D_data_m[D_data_m$Arena=='Small',]$m_RS/mean(D_data_m[D_data_m$Arena=='Small',]$m_RS))), TRUE)
a.random = sample (na.omit(comb_data_BM), length(c(D_data_m[D_data_m$Arena=='Small',]$m_RS/mean(D_data_m[D_data_m$Arena=='Small',]$m_RS))), TRUE)
b.random = sample (na.omit(comb_data_RS), length(c(D_data_m[D_data_m$Arena=='Large',]$m_RS/mean(D_data_m[D_data_m$Arena=='Large',]$m_RS))), TRUE)
c.random = sample (na.omit(comb_data_BM), length(c(D_data_m[D_data_m$Arena=='Large',]$m_RS/mean(D_data_m[D_data_m$Arena=='Large',]$m_RS))), TRUE)
d.random
# Null (permuated) difference
= cov(b.random,a.random,use="complete.obs",method = "pearson") - cov(d.random,c.random,use="complete.obs",method = "pearson")
diff.random_male_arena[i]
}
# P-value is the fraction of how many times the permuted difference is equal or more extreme than the observed difference
= sum(abs(diff.random_male_arena) >= as.numeric(abs(diff.observed_male_arena)))/ number_of_permutations
p_Treat_diff_male_arena
# Females
=c(boot_BW_females_arena_large$t)-c(boot_BW_females_arena_small$t)
Treat_diff_female_arena
=mean(Treat_diff_female_arena,na.rm=TRUE)
t_Treat_diff_female_arena=quantile(Treat_diff_female_arena,.025,na.rm=TRUE)
t_Treat_diff_female_arena_lower=quantile(Treat_diff_female_arena,.975,na.rm=TRUE)
t_Treat_diff_female_arena_upper
# Permutation test to calculate p value
=c(D_data_f[D_data_f$Arena=='Small',]$f_RS/mean(D_data_f[D_data_f$Arena=='Small',]$f_RS),
comb_data_RS$Arena=='Large',]$f_RS/mean(D_data_f[D_data_f$Arena=='Large',]$f_RS))
D_data_f[D_data_f=c(D_data_f[D_data_f$Arena=='Small',]$stder_BM_focal,
comb_data_BM$Arena=='Large',]$stder_BM_focal)
D_data_f[D_data_f
= cov(D_data_f[D_data_f$Arena=='Small',]$stder_BM_focal,D_data_f[D_data_f$Arena=='Small',]$f_RS/mean(D_data_f[D_data_f$Arena=='Small',]$f_RS),use="complete.obs",method = "pearson") - cov(D_data_f[D_data_f$Arena=='Large',]$stder_BM_focal,D_data_f[D_data_f$Arena=='Large',]$f_RS/mean(D_data_f[D_data_f$Arena=='Large',]$f_RS),use="complete.obs",method = "pearson")
diff.observed_female_arena
= 100000
number_of_permutations = NULL
diff.random_female_arena for (i in 1 : number_of_permutations) {
# Sample from the combined dataset
= sample (na.omit(comb_data_RS), length(c(D_data_f[D_data_f$Arena=='Small',]$f_RS/mean(D_data_f[D_data_f$Arena=='Small',]$f_RS))), TRUE)
a.random = sample (na.omit(comb_data_BM), length(c(D_data_f[D_data_f$Arena=='Small',]$f_RS/mean(D_data_f[D_data_f$Arena=='Small',]$f_RS))), TRUE)
b.random = sample (na.omit(comb_data_RS), length(c(D_data_f[D_data_f$Arena=='Large',]$f_RS/mean(D_data_f[D_data_f$Arena=='Large',]$f_RS))), TRUE)
c.random = sample (na.omit(comb_data_BM), length(c(D_data_f[D_data_f$Arena=='Large',]$f_RS/mean(D_data_f[D_data_f$Arena=='Large',]$f_RS))), TRUE)
d.random
# Null (permuated) difference
= cov(b.random,a.random,use="complete.obs",method = "pearson") - cov(d.random,c.random,use="complete.obs",method = "pearson")
diff.random_female_arena[i]
}# P-value is the fraction of how many times the permuted difference is equal or more extreme than the observed difference
= sum(abs(diff.random_female_arena) >= as.numeric(abs(diff.observed_female_arena)))/ number_of_permutations
p_Treat_diff_female_arena
### Extract data and write results table ####
<- as.data.frame(cbind("Male", "Population size", "Body mass", t_Treat_diff_male_pop, t_Treat_diff_male_pop_lower, t_Treat_diff_male_pop_upper, p_Treat_diff_male_pop))
boot_data_BW_males_treat_group_size names(boot_data_BW_males_treat_group_size)=c('V1','V2','V3','V4','V5','V6','V7')
<- as.data.frame(cbind("Female", "Population size", "Body mass",t_Treat_diff_female_pop, t_Treat_diff_female_pop_lower, t_Treat_diff_female_pop_upper, p_Treat_diff_female_pop))
boot_data_BW_females_treat_group_size names(boot_data_BW_females_treat_group_size)=c('V1','V2','V3','V4','V5','V6','V7')
<- as.data.frame(cbind("Male", "Arena size", "Body mass", t_Treat_diff_male_arena, t_Treat_diff_male_arena_lower, t_Treat_diff_male_arena_upper, p_Treat_diff_male_arena))
boot_data_BW_males_treat_arena names(boot_data_BW_males_treat_arena)=c('V1','V2','V3','V4','V5','V6','V7')
<- as.data.frame(cbind("Female", "Arena size", "Body mass", t_Treat_diff_female_arena, t_Treat_diff_female_arena_lower, t_Treat_diff_female_arena_upper, p_Treat_diff_female_arena))
boot_data_BW_females_treat_arenanames(boot_data_BW_females_treat_arena)=c('V1','V2','V3','V4','V5','V6','V7')
<- as.data.frame(as.matrix(rbind(boot_data_BW_males_treat_group_size,boot_data_BW_females_treat_group_size,
Table_TreatComp_BM
boot_data_BW_males_treat_arena,boot_data_BW_females_treat_arena)))
colnames(Table_TreatComp_BM)[1] <- "Sex"
colnames(Table_TreatComp_BM)[2] <- "Treatment"
colnames(Table_TreatComp_BM)[3] <- "Variance_component"
colnames(Table_TreatComp_BM)[4] <- "Variance"
colnames(Table_TreatComp_BM)[5] <- "l95_CI"
colnames(Table_TreatComp_BM)[6] <- "u95_CI"
colnames(Table_TreatComp_BM)[7] <- "p-value"
4]=round(as.numeric(Table_TreatComp_BM[,4]),digits=2)
Table_TreatComp_BM[,5]=round(as.numeric(Table_TreatComp_BM[,5]),digits=2)
Table_TreatComp_BM[,6]=round(as.numeric(Table_TreatComp_BM[,6]),digits=2)
Table_TreatComp_BM[,7]=round(as.numeric(Table_TreatComp_BM[,7]),digits=3)
Table_TreatComp_BM[,rownames(Table_TreatComp_BM) <- c()
Table A3: Treatment comparisons for selection differentials on body mass including 95% confidence intervals. Negative effect sizes indicate larger values at lower density and positive effect sizes larger values at higher density.
kable(Table_TreatComp_BM)
Sex | Treatment | Variance_component | Variance | l95_CI | u95_CI | p-value |
---|---|---|---|---|---|---|
Male | Population size | Body mass | 0.18 | -0.14 | 0.51 | 0.342 |
Female | Population size | Body mass | 0.24 | -0.11 | 0.59 | 0.208 |
Male | Arena size | Body mass | 0.12 | -0.21 | 0.45 | 0.530 |
Female | Arena size | Body mass | -0.27 | -0.61 | 0.09 | 0.164 |
We used permutation tests to see if the (sexual) selection metrics differed between the sexes.
## Permutation tests for sex comparisons of (sexual) selection metrics ####
### Opportunity for sexual selection (I) ####
# Arena size
# Large
=c(I_Large_arena_Male_bootvar$t)-c(I_Large_arena_Female_bootvar$t)
Sex_diff_Large_arena_I
=mean(Sex_diff_Large_arena_I,na.rm=TRUE)
t_Sex_diff_Large_arena_I=quantile(Sex_diff_Large_arena_I,.025,na.rm=TRUE)
t_Sex_diff_Large_arena_I_lower=quantile(Sex_diff_Large_arena_I,.975,na.rm=TRUE)
t_Sex_diff_Large_arena_I_upper
# Permutation test to calculate p value
=c(D_data_Large_arena$rel_m_RS,D_data_Large_arena$rel_f_RS)
comb_data
= var(na.omit((D_data_Large_arena$rel_m_RS))) - var(na.omit((D_data_Large_arena$rel_f_RS)))
diff.observed
= 100000
number_of_permutations = NULL
diff.random for (i in 1 : number_of_permutations) {
# Sample from the combined dataset
= sample (na.omit(comb_data), length(c(D_data_Large_arena$rel_m_RS)), TRUE)
a.random = sample (na.omit(comb_data), length(c(D_data_Large_arena$rel_f_RS)), TRUE)
b.random
# Null (permuated) difference
= var(na.omit(b.random)) - var(na.omit(a.random))
diff.random[i]
}
# P-value is the fraction of how many times the permuted difference is equal or more extreme than the observed difference
= sum(abs(diff.random) >= as.numeric(abs(diff.observed)))/ number_of_permutations
t_Sex_diff_Large_arena_I_p
# Small
=c(I_Small_arena_Male_bootvar$t)-c(I_Small_arena_Female_bootvar$t)
Sex_diff_Small_arena_I
=mean(Sex_diff_Small_arena_I,na.rm=TRUE)
t_Sex_diff_Small_arena_I=quantile(Sex_diff_Small_arena_I,.025,na.rm=TRUE)
t_Sex_diff_Small_arena_I_lower=quantile(Sex_diff_Small_arena_I,.975,na.rm=TRUE)
t_Sex_diff_Small_arena_I_upper
# Permutation test to calculate p value
=c(D_data_Small_arena$rel_m_RS,D_data_Small_arena$rel_f_RS)
comb_data
= var(na.omit((D_data_Small_arena$rel_m_RS))) - var(na.omit((D_data_Small_arena$rel_f_RS)))
diff.observed
= 100000
number_of_permutations = NULL
diff.random for (i in 1 : number_of_permutations) {
# Sample from the combined dataset
= sample (na.omit(comb_data), length(c(D_data_Small_arena$rel_m_RS)), TRUE)
a.random = sample (na.omit(comb_data), length(c(D_data_Small_arena$rel_f_RS)), TRUE)
b.random
# Null (permuated) difference
= var(na.omit(b.random)) - var(na.omit(a.random))
diff.random[i]
}
# P-value is the fraction of how many times the permuted difference is equal or more extreme than the observed difference
= sum(abs(diff.random) >= as.numeric(abs(diff.observed)))/ number_of_permutations
t_Sex_diff_Small_arena_I_p
# Population size
# Small
=c(I_Small_pop_Male_bootvar$t)-c(I_Small_pop_Female_bootvar$t)
Sex_diff_Small_pop_I
=mean(Sex_diff_Small_pop_I,na.rm=TRUE)
t_Sex_diff_Small_pop_I=quantile(Sex_diff_Small_pop_I,.025,na.rm=TRUE)
t_Sex_diff_Small_pop_I_lower=quantile(Sex_diff_Small_pop_I,.975,na.rm=TRUE)
t_Sex_diff_Small_pop_I_upper
# Permutation test to calculate p value
=c(D_data_Small_pop$rel_m_RS,D_data_Small_pop$rel_f_RS)
comb_data
= var(na.omit((D_data_Small_pop$rel_m_RS))) - var(na.omit((D_data_Small_pop$rel_f_RS)))
diff.observed
= 100000
number_of_permutations = NULL
diff.random for (i in 1 : number_of_permutations) {
# Sample from the combined dataset
= sample (na.omit(comb_data), length(c(D_data_Small_pop$rel_m_RS)), TRUE)
a.random = sample (na.omit(comb_data), length(c(D_data_Small_pop$rel_f_RS)), TRUE)
b.random
# Null (permuated) difference
= var(na.omit(b.random)) - var(na.omit(a.random))
diff.random[i]
}
# P-value is the fraction of how many times the permuted difference is equal or more extreme than the observed difference
= sum(abs(diff.random) >= as.numeric(abs(diff.observed)))/ number_of_permutations
t_Sex_diff_Small_pop_I_p
# Large
=c(I_Large_pop_Male_bootvar$t)-c(I_Large_pop_Female_bootvar$t)
Sex_diff_Large_pop_I
=mean(Sex_diff_Large_pop_I,na.rm=TRUE)
t_Sex_diff_Large_pop_I=quantile(Sex_diff_Large_pop_I,.025,na.rm=TRUE)
t_Sex_diff_Large_pop_I_lower=quantile(Sex_diff_Large_pop_I,.975,na.rm=TRUE)
t_Sex_diff_Large_pop_I_upper
# Permutation test to calculate p value
=c(D_data_Large_pop$rel_m_RS,D_data_Large_pop$rel_f_RS)
comb_data
= var(na.omit(c(D_data_Large_pop$rel_m_RS))) - var(na.omit(c(D_data_Large_pop$rel_f_RS)))
diff.observed
= 100000
number_of_permutations = NULL
diff.random for (i in 1 : number_of_permutations) {
# Sample from the combined dataset
= sample (na.omit(comb_data), length(c(D_data_Large_pop$rel_m_RS)), TRUE)
a.random = sample (na.omit(comb_data), length(c(D_data_Large_pop$rel_f_RS)), TRUE)
b.random
# Null (permuated) difference
= var(na.omit(b.random)) - var(na.omit(a.random))
diff.random[i]
}
# P-value is the fraction of how many times the permuted difference is equal or more extreme than the observed difference
= sum(abs(diff.random) >= as.numeric(abs(diff.observed)))/ number_of_permutations
t_Sex_diff_Large_pop_I_p
### Opportnity for sexual selection (Is) ####
# Arena size
# Small
=c(Is_Small_arena_Male_bootvar$t)-c(Is_Small_arena_Female_bootvar$t)
Sex_diff_Small_arena_Is
=mean(Sex_diff_Small_arena_Is,na.rm=TRUE)
t_Sex_diff_Small_arena_Is=quantile(Sex_diff_Small_arena_Is,.025,na.rm=TRUE)
t_Sex_diff_Small_arena_Is_lower=quantile(Sex_diff_Small_arena_Is,.975,na.rm=TRUE)
t_Sex_diff_Small_arena_Is_upper
# Permutation test to calculate p value
=c(D_data_Small_arena$rel_m_cMS,D_data_Small_arena$rel_f_cMS)
comb_data
= var(na.omit(c(D_data_Small_arena$rel_m_cMS))) - var(na.omit(c(D_data_Small_arena$rel_f_cMS)))
diff.observed
= 100000
number_of_permutations = NULL
diff.random for (i in 1 : number_of_permutations) {
# Sample from the combined dataset
= sample (na.omit(comb_data), length(c(D_data_Small_arena$rel_m_cMS)), TRUE)
a.random = sample (na.omit(comb_data), length(c(D_data_Small_arena$rel_f_cMS)), TRUE)
b.random
# Null (permuated) difference
= var(na.omit(b.random)) - var(na.omit(a.random))
diff.random[i]
}
# P-value is the fraction of how many times the permuted difference is equal or more extreme than the observed difference
= sum(abs(diff.random) >= as.numeric(abs(diff.observed)))/ number_of_permutations
t_Sex_diff_Small_arena_Is_p
# Large
=c(Is_Large_arena_Male_bootvar$t)-c(Is_Large_arena_Female_bootvar$t)
Sex_diff_Large_arena_Is
=mean(Sex_diff_Large_arena_Is,na.rm=TRUE)
t_Sex_diff_Large_arena_Is=quantile(Sex_diff_Large_arena_Is,.025,na.rm=TRUE)
t_Sex_diff_Large_arena_Is_lower=quantile(Sex_diff_Large_arena_Is,.975,na.rm=TRUE)
t_Sex_diff_Large_arena_Is_upper
# Permutation test to calculate p value
=c(D_data_Large_arena$rel_m_cMS,D_data_Large_arena$rel_f_cMS)
comb_data
= var(na.omit(c(D_data_Large_arena$rel_m_cMS))) - var(na.omit(c(D_data_Large_arena$rel_f_cMS)))
diff.observed
= 100000
number_of_permutations = NULL
diff.random for (i in 1 : number_of_permutations) {
# Sample from the combined dataset
= sample (na.omit(comb_data), length(c(D_data_Large_arena$rel_m_cMS)), TRUE)
a.random = sample (na.omit(comb_data), length(c(D_data_Large_arena$rel_f_cMS)), TRUE)
b.random
# Null (permuated) difference
= var(na.omit(b.random)) - var(na.omit(a.random))
diff.random[i]
}
# P-value is the fraction of how many times the permuted difference is equal or more extreme than the observed difference
= sum(abs(diff.random) >= as.numeric(abs(diff.observed)))/ number_of_permutations
t_Sex_diff_Large_arena_Is_p
# Population size
# Small
=c(Is_Small_pop_Male_bootvar$t)-c(Is_Small_pop_Female_bootvar$t)
Sex_diff_Small_pop_Is
=mean(Sex_diff_Small_pop_Is,na.rm=TRUE)
t_Sex_diff_Small_pop_Is=quantile(Sex_diff_Small_pop_Is,.025,na.rm=TRUE)
t_Sex_diff_Small_pop_Is_lower=quantile(Sex_diff_Small_pop_Is,.975,na.rm=TRUE)
t_Sex_diff_Small_pop_Is_upper
# Permutation test to calculate p value
=c(D_data_Small_pop$rel_m_cMS,D_data_Small_pop$rel_f_cMS)
comb_data
= var(na.omit(c(D_data_Small_pop$rel_m_cMS))) - var(na.omit(c(D_data_Small_pop$rel_f_cMS)))
diff.observed
= 100000
number_of_permutations = NULL
diff.random for (i in 1 : number_of_permutations) {
# Sample from the combined dataset
= sample (na.omit(comb_data), length(c(D_data_Small_pop$rel_m_cMS)), TRUE)
a.random = sample (na.omit(comb_data), length(c(D_data_Small_pop$rel_f_cMS)), TRUE)
b.random
# Null (permuated) difference
= var(na.omit(b.random)) - var(na.omit(a.random))
diff.random[i]
}
# P-value is the fraction of how many times the permuted difference is equal or more extreme than the observed difference
= sum(abs(diff.random) >= as.numeric(abs(diff.observed)))/ number_of_permutations
t_Sex_diff_Small_pop_Is_p
# Large
=c(Is_Large_pop_Male_bootvar$t)-c(Is_Large_pop_Female_bootvar$t)
Sex_diff_Large_pop_Is
=mean(Sex_diff_Large_pop_Is,na.rm=TRUE)
t_Sex_diff_Large_pop_Is=quantile(Sex_diff_Large_pop_Is,.025,na.rm=TRUE)
t_Sex_diff_Large_pop_Is_lower=quantile(Sex_diff_Large_pop_Is,.975,na.rm=TRUE)
t_Sex_diff_Large_pop_Is_upper
# Permutation test to calculate p value
=c(D_data_Large_pop$rel_m_cMS,D_data_Large_pop$rel_f_cMS)
comb_data
= var(na.omit(c(D_data_Large_pop$rel_m_cMS))) - var(na.omit(c(D_data_Large_pop$rel_f_cMS)))
diff.observed
= 100000
number_of_permutations = NULL
diff.random for (i in 1 : number_of_permutations) {
# Sample from the combined dataset
= sample (na.omit(comb_data), length(c(D_data_Large_pop$rel_m_cMS)), TRUE)
a.random = sample (na.omit(comb_data), length(c(D_data_Large_pop$rel_f_cMS)), TRUE)
b.random
# Null (permuated) difference
= var(na.omit(b.random)) - var(na.omit(a.random))
diff.random[i]
}
# P-value is the fraction of how many times the permuted difference is equal or more extreme than the observed difference
= sum(abs(diff.random) >= as.numeric(abs(diff.observed)))/ number_of_permutations
t_Sex_diff_Large_pop_Is_p
### Sexual selection gradient ####
# Arena size
# Large
=c(B_Large_arena_Male_bootvar$t)-c(B_Large_arena_Female_bootvar$t)
Sex_diff_Large_arena_B
=mean(Sex_diff_Large_arena_B,na.rm=TRUE)
t_Sex_diff_Large_arena_B=quantile(Sex_diff_Large_arena_B,.025,na.rm=TRUE)
t_Sex_diff_Large_arena_B_lower=quantile(Sex_diff_Large_arena_B,.975,na.rm=TRUE)
t_Sex_diff_Large_arena_B_upper
# Permutation test to calculate p value
=c(D_data_Large_arena$rel_m_RS, D_data_Large_arena$rel_f_RS)
comb_data1=c(D_data_Large_arena$rel_m_cMS,D_data_Large_arena$rel_f_cMS)
comb_data2
= lm(D_data_Large_arena$rel_m_RS ~D_data_Large_arena$rel_m_cMS)$coefficients[2] - lm(D_data_Large_arena$rel_f_RS ~D_data_Large_arena$rel_f_cMS)$coefficients[2]
diff.observed
= 100000
number_of_permutations = NULL
diff.random for (i in 1 : number_of_permutations) {
# Sample from the combined dataset
= sample (na.omit(comb_data1), length(D_data_Large_arena$rel_m_RS), TRUE)
a.random = sample (na.omit(comb_data1), length(D_data_Small_arena$rel_m_RS), TRUE)
b.random = sample (na.omit(comb_data2), length(D_data_Large_arena$rel_m_cMS), TRUE)
c.random = sample (na.omit(comb_data2), length(D_data_Small_arena$rel_m_cMS), TRUE)
d.random
# Null (permuated) difference
= lm(a.random ~c.random)$coefficients[2] - lm(b.random ~d.random)$coefficients[2]
diff.random[i]
}
# P-value is the fraction of how many times the permuted difference is equal or more extreme than the observed difference
= sum(abs(diff.random) >= as.numeric(abs(diff.observed)))/ number_of_permutations
t_Sex_diff_Large_arena_B_p
# Small
=c(B_Small_arena_Male_bootvar$t)-c(B_Small_arena_Female_bootvar$t)
Sex_diff_Small_arena_B
=mean(Sex_diff_Small_arena_B,na.rm=TRUE)
t_Sex_diff_Small_arena_B=quantile(Sex_diff_Small_arena_B,.025,na.rm=TRUE)
t_Sex_diff_Small_arena_B_lower=quantile(Sex_diff_Small_arena_B,.975,na.rm=TRUE)
t_Sex_diff_Small_arena_B_upper
# Permutation test to calculate p value
=c(D_data_Small_arena$rel_m_RS, D_data_Small_arena$rel_f_RS)
comb_data1=c(D_data_Small_arena$rel_m_cMS,D_data_Small_arena$rel_f_cMS)
comb_data2
= lm(D_data_Small_arena$rel_m_RS ~D_data_Small_arena$rel_m_cMS)$coefficients[2] - lm(D_data_Small_arena$rel_f_RS ~D_data_Small_arena$rel_f_cMS)$coefficients[2]
diff.observed
= 100000
number_of_permutations = NULL
diff.random for (i in 1 : number_of_permutations) {
# Sample from the combined dataset
= sample (na.omit(comb_data1), length(D_data_Small_arena$rel_m_RS), TRUE)
a.random = sample (na.omit(comb_data1), length(D_data_Small_arena$rel_f_RS), TRUE)
b.random = sample (na.omit(comb_data2), length(D_data_Small_arena$rel_m_cMS), TRUE)
c.random = sample (na.omit(comb_data2), length(D_data_Small_arena$rel_f_cMS), TRUE)
d.random
# Null (permuated) difference
= lm(a.random ~c.random)$coefficients[2] - lm(b.random ~d.random)$coefficients[2]
diff.random[i]
}
# P-value is the fraction of how many times the permuted difference is equal or more extreme than the observed difference
= sum(abs(diff.random) >= as.numeric(abs(diff.observed)))/ number_of_permutations
t_Sex_diff_Small_arena_B_p
# Population size
# Large
=c(B_Large_pop_Male_bootvar$t)-c(B_Large_pop_Female_bootvar$t)
Sex_diff_Large_pop_B
=mean(Sex_diff_Large_pop_B,na.rm=TRUE)
t_Sex_diff_Large_pop_B=quantile(Sex_diff_Large_pop_B,.025,na.rm=TRUE)
t_Sex_diff_Large_pop_B_lower=quantile(Sex_diff_Large_pop_B,.975,na.rm=TRUE)
t_Sex_diff_Large_pop_B_upper
# Permutation test to calculate p value
=c(D_data_Large_pop$rel_m_RS, D_data_Large_pop$rel_f_RS)
comb_data1=c(D_data_Large_pop$rel_m_cMS,D_data_Large_pop$rel_f_cMS)
comb_data2
= lm(D_data_Large_pop$rel_m_RS ~D_data_Large_pop$rel_m_cMS)$coefficients[2] - lm(D_data_Large_pop$rel_f_RS ~D_data_Large_pop$rel_f_cMS)$coefficients[2]
diff.observed
= 100000
number_of_permutations = NULL
diff.random for (i in 1 : number_of_permutations) {
# Sample from the combined dataset
= sample (na.omit(comb_data1), length(D_data_Small_pop$rel_m_RS), TRUE)
a.random = sample (na.omit(comb_data1), length(D_data_Large_pop$rel_m_RS), TRUE)
b.random = sample (na.omit(comb_data2), length(D_data_Small_pop$rel_m_cMS), TRUE)
c.random = sample (na.omit(comb_data2), length(D_data_Large_pop$rel_m_cMS), TRUE)
d.random
# Null (permuated) difference
= lm(a.random ~c.random)$coefficients[2] - lm(b.random ~d.random)$coefficients[2]
diff.random[i]
}
# P-value is the fraction of how many times the permuted difference is equal or more extreme than the observed difference
= sum(abs(diff.random) >= as.numeric(abs(diff.observed)))/ number_of_permutations
t_Sex_diff_Large_pop_B_p
# Small
=c(B_Small_pop_Male_bootvar$t)-c(B_Small_pop_Female_bootvar$t)
Sex_diff_Small_pop_B
=mean(Sex_diff_Small_pop_B,na.rm=TRUE)
t_Sex_diff_Small_pop_B=quantile(Sex_diff_Small_pop_B,.025,na.rm=TRUE)
t_Sex_diff_Small_pop_B_lower=quantile(Sex_diff_Small_pop_B,.975,na.rm=TRUE)
t_Sex_diff_Small_pop_B_upper
# Permutation test to calculate p value
=c(D_data_Small_pop$rel_m_RS, D_data_Small_pop$rel_f_RS)
comb_data1=c(D_data_Small_pop$rel_m_cMS,D_data_Small_pop$rel_f_cMS)
comb_data2
= lm(D_data_Small_pop$rel_m_RS ~D_data_Small_pop$rel_m_cMS)$coefficients[2] - lm(D_data_Small_pop$rel_f_RS ~D_data_Small_pop$rel_f_cMS)$coefficients[2]
diff.observed
= 100000
number_of_permutations = NULL
diff.random for (i in 1 : number_of_permutations) {
# Sample from the combined dataset
= sample (na.omit(comb_data1), length(D_data_Small_pop$rel_m_RS), TRUE)
a.random = sample (na.omit(comb_data1), length(D_data_Small_pop$rel_f_RS), TRUE)
b.random = sample (na.omit(comb_data2), length(D_data_Small_pop$rel_m_cMS), TRUE)
c.random = sample (na.omit(comb_data2), length(D_data_Small_pop$rel_f_cMS), TRUE)
d.random
# Null (permuated) difference
= lm(a.random ~c.random)$coefficients[2] - lm(b.random ~d.random)$coefficients[2]
diff.random[i]
}
# P-value is the fraction of how many times the permuted difference is equal or more extreme than the observed difference
= sum(abs(diff.random) >= as.numeric(abs(diff.observed)))/ number_of_permutations
t_Sex_diff_Small_pop_B_p
### Jones index ####
# Arena size
# Large
=c(S_Large_arena_Male_bootvar$t)-c(S_Large_arena_Female_bootvar$t)
Sex_diff_Large_arena_S
=mean(Sex_diff_Large_arena_S,na.rm=TRUE)
t_Sex_diff_Large_arena_S=quantile(Sex_diff_Large_arena_S,.025,na.rm=TRUE)
t_Sex_diff_Large_arena_S_lower=quantile(Sex_diff_Large_arena_S,.975,na.rm=TRUE)
t_Sex_diff_Large_arena_S_upper
# Permutation test to calculate p value
=c(D_data_Large_arena$rel_m_cMS, D_data_Large_arena$rel_f_cMS)
comb_data1=c(D_data_Large_arena$rel_m_RS, D_data_Large_arena$rel_f_RS)
comb_data2
= lm(D_data_Large_arena$rel_m_RS ~D_data_Large_arena$rel_m_cMS)$coefficients[2]*sqrt(var(D_data_Large_arena$rel_m_cMS, na.rm=TRUE)) - lm(D_data_Large_arena$rel_f_RS ~D_data_Large_arena$rel_f_cMS)$coefficients[2]*sqrt(var(D_data_Large_arena$rel_f_cMS, na.rm=TRUE))
diff.observed
= 100000
number_of_permutations = NULL
diff.random for (i in 1 : number_of_permutations) {
# Sample from the combined dataset
= sample (na.omit(comb_data1), length(D_data_Large_arena$rel_m_cMS), TRUE)
a.random = sample (na.omit(comb_data1), length(D_data_Large_arena$rel_f_cMS), TRUE)
b.random = sample (na.omit(comb_data2), length(D_data_Large_arena$rel_m_RS), TRUE)
c.random = sample (na.omit(comb_data2), length(D_data_Large_arena$rel_f_RS), TRUE)
d.random
# Null (permuated) difference
= lm(c.random ~a.random)$coefficients[2]*sqrt(var(a.random, na.rm=TRUE)) - lm(d.random ~b.random)$coefficients[2]*sqrt(var(b.random, na.rm=TRUE))
diff.random[i]
}
# P-value is the fraction of how many times the permuted difference is equal or more extreme than the observed difference
= sum(abs(diff.random) >= as.numeric(abs(diff.observed)))/ number_of_permutations
t_Sex_diff_Large_arena_S_p
# Small
=c(S_Small_arena_Male_bootvar$t)-c(S_Small_arena_Female_bootvar$t)
Sex_diff_Small_arena_S
=mean(Sex_diff_Small_arena_S,na.rm=TRUE)
t_Sex_diff_Small_arena_S=quantile(Sex_diff_Small_arena_S,.025,na.rm=TRUE)
t_Sex_diff_Small_arena_S_lower=quantile(Sex_diff_Small_arena_S,.975,na.rm=TRUE)
t_Sex_diff_Small_arena_S_upper
# Permutation test to calculate p value
=c(D_data_Small_arena$rel_m_cMS, D_data_Small_arena$rel_f_cMS)
comb_data1=c(D_data_Small_arena$rel_m_RS, D_data_Small_arena$rel_f_RS)
comb_data2
= lm(D_data_Small_arena$rel_m_RS ~D_data_Small_arena$rel_m_cMS)$coefficients[2]*sqrt(var(D_data_Small_arena$rel_m_cMS, na.rm=TRUE)) - lm(D_data_Small_arena$rel_f_RS ~D_data_Small_arena$rel_f_cMS)$coefficients[2]*sqrt(var(D_data_Small_arena$rel_f_cMS, na.rm=TRUE))
diff.observed
= 100000
number_of_permutations = NULL
diff.random for (i in 1 : number_of_permutations) {
# Sample from the combined dataset
= sample (na.omit(comb_data1), length(D_data_Small_arena$rel_m_cMS), TRUE)
a.random = sample (na.omit(comb_data1), length(D_data_Small_arena$rel_f_cMS), TRUE)
b.random = sample (na.omit(comb_data2), length(D_data_Small_arena$rel_m_RS), TRUE)
c.random = sample (na.omit(comb_data2), length(D_data_Small_arena$rel_f_RS), TRUE)
d.random
# Null (permuated) difference
= lm(c.random ~a.random)$coefficients[2]*sqrt(var(a.random, na.rm=TRUE)) - lm(d.random ~b.random)$coefficients[2]*sqrt(var(b.random, na.rm=TRUE))
diff.random[i]
}
# P-value is the fraction of how many times the permuted difference is equal or more extreme than the observed difference
= sum(abs(diff.random) >= as.numeric(abs(diff.observed)))/ number_of_permutations
t_Sex_diff_Small_arena_S_p
# Population size
# Small
=c(S_Small_pop_Male_bootvar$t)-c(S_Small_pop_Female_bootvar$t)
Sex_diff_Small_pop_S
=mean(Sex_diff_Small_pop_S,na.rm=TRUE)
t_Sex_diff_Small_pop_S=quantile(Sex_diff_Small_pop_S,.025,na.rm=TRUE)
t_Sex_diff_Small_pop_S_lower=quantile(Sex_diff_Small_pop_S,.975,na.rm=TRUE)
t_Sex_diff_Small_pop_S_upper
# Permutation test to calculate p value
=c(D_data_Small_pop$rel_m_cMS, D_data_Small_pop$rel_f_cMS)
comb_data1=c(D_data_Small_pop$rel_m_RS, D_data_Small_pop$rel_f_RS)
comb_data2
= lm(D_data_Small_pop$rel_m_RS ~D_data_Small_pop$rel_m_cMS)$coefficients[2]*sqrt(var(D_data_Small_pop$rel_m_cMS, na.rm=TRUE)) - lm(D_data_Small_pop$rel_f_RS ~D_data_Small_pop$rel_f_cMS)$coefficients[2]*sqrt(var(D_data_Small_pop$rel_f_cMS, na.rm=TRUE))
diff.observed
= 100000
number_of_permutations = NULL
diff.random for (i in 1 : number_of_permutations) {
# Sample from the combined dataset
= sample (na.omit(comb_data1), length(D_data_Small_pop$rel_m_cMS), TRUE)
a.random = sample (na.omit(comb_data1), length(D_data_Small_pop$rel_f_cMS), TRUE)
b.random = sample (na.omit(comb_data2), length(D_data_Small_pop$rel_m_RS), TRUE)
c.random = sample (na.omit(comb_data2), length(D_data_Small_pop$rel_f_RS), TRUE)
d.random
# Null (permuated) difference
= lm(c.random ~a.random)$coefficients[2]*sqrt(var(a.random, na.rm=TRUE)) - lm(d.random ~b.random)$coefficients[2]*sqrt(var(b.random, na.rm=TRUE))
diff.random[i]
}
# P-value is the fraction of how many times the permuted difference is equal or more extreme than the observed difference
= sum(abs(diff.random) >= as.numeric(abs(diff.observed)))/ number_of_permutations
t_Sex_diff_Small_pop_S_p
# Large
=c(S_Large_pop_Male_bootvar$t)-c(S_Large_pop_Female_bootvar$t)
Sex_diff_Large_pop_S
=mean(Sex_diff_Large_pop_S,na.rm=TRUE)
t_Sex_diff_Large_pop_S=quantile(Sex_diff_Large_pop_S,.025,na.rm=TRUE)
t_Sex_diff_Large_pop_S_lower=quantile(Sex_diff_Large_pop_S,.975,na.rm=TRUE)
t_Sex_diff_Large_pop_S_upper
# Permutation test to calculate p value
=c(D_data_Large_pop$rel_m_cMS, D_data_Large_pop$rel_f_cMS)
comb_data1=c(D_data_Large_pop$rel_m_RS, D_data_Large_pop$rel_f_RS)
comb_data2
= lm(D_data_Large_pop$rel_m_RS ~D_data_Large_pop$rel_m_cMS)$coefficients[2]*sqrt(var(D_data_Large_pop$rel_m_cMS, na.rm=TRUE)) - lm(D_data_Large_pop$rel_f_RS ~D_data_Large_pop$rel_f_cMS)$coefficients[2]*sqrt(var(D_data_Large_pop$rel_f_cMS, na.rm=TRUE))
diff.observed
= 100000
number_of_permutations = NULL
diff.random for (i in 1 : number_of_permutations) {
# Sample from the combined dataset
= sample (na.omit(comb_data1), length(D_data_Large_pop$rel_m_cMS), TRUE)
a.random = sample (na.omit(comb_data1), length(D_data_Large_pop$rel_f_cMS), TRUE)
b.random = sample (na.omit(comb_data2), length(D_data_Large_pop$rel_f_RS), TRUE)
c.random = sample (na.omit(comb_data2), length(D_data_Large_pop$rel_m_RS), TRUE)
d.random
# Null (permuated) difference
= lm(c.random ~a.random)$coefficients[2]*sqrt(var(a.random, na.rm=TRUE)) - lm(d.random ~b.random)$coefficients[2]*sqrt(var(b.random, na.rm=TRUE))
diff.random[i]
}
# P-value is the fraction of how many times the permuted difference is equal or more extreme than the observed difference
= sum(abs(diff.random) >= as.numeric(abs(diff.observed)))/ number_of_permutations
t_Sex_diff_Large_pop_S_p
### Extract data and write results table ####
<- as.data.frame(cbind("Large arena size", "Opportunity for selection", t_Sex_diff_Large_arena_I, t_Sex_diff_Large_arena_I_lower, t_Sex_diff_Large_arena_I_upper, t_Sex_diff_Large_arena_I_p))
CompSex_Table_Large_arena_I names(CompSex_Table_Large_arena_I)=c('V1','V2','V3','V4','V5','V6')
<- as.data.frame(cbind("Large population size", "Opportunity for selection", t_Sex_diff_Large_pop_I, t_Sex_diff_Large_pop_I_lower, t_Sex_diff_Large_pop_I_upper, t_Sex_diff_Large_pop_I_p))
CompSex_Table_Large_pop_I names(CompSex_Table_Large_pop_I)=c('V1','V2','V3','V4','V5','V6')
<- as.data.frame(cbind("Large arena size", "Opportunity for sexual selection", t_Sex_diff_Large_arena_Is, t_Sex_diff_Large_arena_Is_lower, t_Sex_diff_Large_arena_Is_upper, t_Sex_diff_Large_arena_Is_p))
CompSex_Table_Large_arena_Is names(CompSex_Table_Large_arena_Is)=c('V1','V2','V3','V4','V5','V6')
<- as.data.frame(cbind("Large population size", "Opportunity for sexual selection", t_Sex_diff_Large_pop_Is, t_Sex_diff_Large_pop_Is_lower, t_Sex_diff_Large_pop_Is_upper, t_Sex_diff_Large_pop_Is_p))
CompSex_Table_Large_pop_Is names(CompSex_Table_Large_pop_Is)=c('V1','V2','V3','V4','V5','V6')
<- as.data.frame(cbind("Large arena size", "Bateman gradient", t_Sex_diff_Large_arena_B, t_Sex_diff_Large_arena_B_lower, t_Sex_diff_Large_arena_B_upper, t_Sex_diff_Large_arena_B_p))
CompSex_Table_Large_arena_B names(CompSex_Table_Large_arena_B)=c('V1','V2','V3','V4','V5','V6')
<- as.data.frame(cbind("Large population size", "Bateman gradient", t_Sex_diff_Large_pop_B, t_Sex_diff_Large_pop_B_lower, t_Sex_diff_Large_pop_B_upper, t_Sex_diff_Large_pop_B_p))
CompSex_Table_Large_pop_B names(CompSex_Table_Large_pop_B)=c('V1','V2','V3','V4','V5','V6')
<- as.data.frame(cbind("Large arena size", "Jones index", t_Sex_diff_Large_arena_S, t_Sex_diff_Large_arena_S_lower, t_Sex_diff_Large_arena_S_upper, t_Sex_diff_Large_arena_S_p))
CompSex_Table_Large_arena_S names(CompSex_Table_Large_arena_S)=c('V1','V2','V3','V4','V5','V6')
<- as.data.frame(cbind("Large population size", "Jones index", t_Sex_diff_Large_pop_S, t_Sex_diff_Large_pop_S_lower, t_Sex_diff_Large_pop_S_upper, t_Sex_diff_Large_pop_S_p))
CompSex_Table_Large_pop_S names(CompSex_Table_Large_pop_S)=c('V1','V2','V3','V4','V5','V6')
<- as.data.frame(cbind("Small arena size", "Opportunity for selection", t_Sex_diff_Small_arena_I, t_Sex_diff_Small_arena_I_lower, t_Sex_diff_Small_arena_I_upper, t_Sex_diff_Small_arena_I_p))
CompSex_Table_Small_arena_I names(CompSex_Table_Small_arena_I)=c('V1','V2','V3','V4','V5','V6')
<- as.data.frame(cbind("Small population size", "Opportunity for selection", t_Sex_diff_Small_pop_I, t_Sex_diff_Small_pop_I_lower, t_Sex_diff_Small_pop_I_upper, t_Sex_diff_Small_pop_I_p))
CompSex_Table_Small_pop_I names(CompSex_Table_Small_pop_I)=c('V1','V2','V3','V4','V5','V6')
<- as.data.frame(cbind("Small arena size", "Opportunity for sexual selection", t_Sex_diff_Small_arena_Is, t_Sex_diff_Small_arena_Is_lower, t_Sex_diff_Small_arena_Is_upper, t_Sex_diff_Small_arena_Is_p))
CompSex_Table_Small_arena_Is names(CompSex_Table_Small_arena_Is)=c('V1','V2','V3','V4','V5','V6')
<- as.data.frame(cbind("Small population size", "Opportunity for sexual selection", t_Sex_diff_Small_pop_Is, t_Sex_diff_Small_pop_Is_lower, t_Sex_diff_Small_pop_Is_upper, t_Sex_diff_Small_pop_Is_p))
CompSex_Table_Small_pop_Is names(CompSex_Table_Small_pop_Is)=c('V1','V2','V3','V4','V5','V6')
<- as.data.frame(cbind("Small arena size", "Bateman gradient", t_Sex_diff_Small_arena_B, t_Sex_diff_Small_arena_B_lower, t_Sex_diff_Small_arena_B_upper, t_Sex_diff_Small_arena_B_p))
CompSex_Table_Small_arena_B names(CompSex_Table_Small_arena_B)=c('V1','V2','V3','V4','V5','V6')
<- as.data.frame(cbind("Small population size", "Bateman gradient", t_Sex_diff_Small_pop_B, t_Sex_diff_Small_pop_B_lower, t_Sex_diff_Small_pop_B_upper, t_Sex_diff_Small_pop_B_p))
CompSex_Table_Small_pop_B names(CompSex_Table_Small_pop_B)=c('V1','V2','V3','V4','V5','V6')
<- as.data.frame(cbind("Small arena size", "Jones index", t_Sex_diff_Small_arena_S, t_Sex_diff_Small_arena_S_lower, t_Sex_diff_Small_arena_S_upper, t_Sex_diff_Small_arena_S_p))
CompSex_Table_Small_arena_S names(CompSex_Table_Small_arena_S)=c('V1','V2','V3','V4','V5','V6')
<- as.data.frame(cbind("Small population size", "Jones index", t_Sex_diff_Small_pop_S, t_Sex_diff_Small_pop_S_lower, t_Sex_diff_Small_pop_S_upper, t_Sex_diff_Small_pop_S_p))
CompSex_Table_Small_pop_S names(CompSex_Table_Small_pop_S)=c('V1','V2','V3','V4','V5','V6')
<- as.data.frame(as.matrix(rbind(CompSex_Table_Small_pop_I,CompSex_Table_Small_pop_Is,
Table_BatemanMetrics_SexComp
CompSex_Table_Small_pop_B,CompSex_Table_Small_pop_S,
CompSex_Table_Large_pop_I,CompSex_Table_Large_pop_Is,
CompSex_Table_Large_pop_B,CompSex_Table_Large_pop_S,
CompSex_Table_Large_arena_I,CompSex_Table_Large_arena_Is,
CompSex_Table_Large_arena_B,CompSex_Table_Large_arena_S,
CompSex_Table_Small_arena_I,CompSex_Table_Small_arena_Is,
CompSex_Table_Small_arena_B,CompSex_Table_Small_arena_S)))
colnames(Table_BatemanMetrics_SexComp)[1] <- "Treatment"
colnames(Table_BatemanMetrics_SexComp)[2] <- "Selection_metric"
colnames(Table_BatemanMetrics_SexComp)[3] <- "Variance"
colnames(Table_BatemanMetrics_SexComp)[4] <- "l95_CI"
colnames(Table_BatemanMetrics_SexComp)[5] <- "u95_CI"
colnames(Table_BatemanMetrics_SexComp)[6] <- "p-value"
3]=round(as.numeric(Table_BatemanMetrics_SexComp[,3]),digits=2)
Table_BatemanMetrics_SexComp[,4]=round(as.numeric(Table_BatemanMetrics_SexComp[,4]),digits=2)
Table_BatemanMetrics_SexComp[,5]=round(as.numeric(Table_BatemanMetrics_SexComp[,5]),digits=2)
Table_BatemanMetrics_SexComp[,6]=round(as.numeric(Table_BatemanMetrics_SexComp[,6]),digits=3)
Table_BatemanMetrics_SexComp[,rownames(Table_BatemanMetrics_SexComp) <- c()
Table A4: Sex comparisons for (sexual) selection metrics including 95% confidence intervals. Negative effect sizes indicate larger values at lower density and positive effect sizes larger values at higher density.
kable(Table_BatemanMetrics_SexComp)
Treatment | Selection_metric | Variance | l95_CI | u95_CI | p-value |
---|---|---|---|---|---|
Small population size | Opportunity for selection | -0.04 | -0.52 | 0.52 | 0.805 |
Small population size | Opportunity for sexual selection | -0.04 | -0.16 | 0.08 | 0.364 |
Small population size | Bateman gradient | 0.55 | -0.12 | 1.26 | 0.048 |
Small population size | Jones index | 0.23 | -0.11 | 0.59 | 0.079 |
Large population size | Opportunity for selection | -0.03 | -0.29 | 0.27 | 0.787 |
Large population size | Opportunity for sexual selection | -0.21 | -0.50 | 0.06 | 0.029 |
Large population size | Bateman gradient | -0.31 | -0.73 | 0.08 | 0.133 |
Large population size | Jones index | -0.32 | -0.60 | -0.04 | 0.018 |
Large arena size | Opportunity for selection | -0.09 | -0.36 | 0.23 | 0.413 |
Large arena size | Opportunity for sexual selection | 0.03 | -0.19 | 0.25 | 0.724 |
Large arena size | Bateman gradient | -0.44 | -0.94 | 0.03 | 0.055 |
Large arena size | Jones index | -0.23 | -0.54 | 0.08 | 0.061 |
Small arena size | Opportunity for selection | 0.02 | -0.44 | 0.57 | 0.907 |
Small arena size | Opportunity for sexual selection | -0.24 | -0.47 | -0.03 | 0.002 |
Small arena size | Bateman gradient | 0.51 | 0.01 | 1.07 | 0.039 |
Small arena size | Jones index | 0.12 | -0.18 | 0.44 | 0.404 |
We used permutation tests to see if the mating differential of body mass differed between the sexes.
## Permutation test for sex differences in mating differential on body mass ####
# Population size
# Small
=c(boot_BW_males_group_size_small$t)-c(boot_BW_females_group_size_small$t)
Sex_diff_Small_pop
=mean(Sex_diff_Small_pop,na.rm=TRUE)
t_Sex_diff_Small_pop=quantile(Sex_diff_Small_pop,.025,na.rm=TRUE)
t_Sex_diff_Small_pop_lower=quantile(Sex_diff_Small_pop,.975,na.rm=TRUE)
t_Sex_diff_Small_pop_upper
# Permutation test to calculate p value
=c(D_data_m[D_data_m$Gr_size=='SG',]$m_cMS/mean(D_data_m[D_data_m$Gr_size=='SG',]$m_cMS),
comb_data_RS$Gr_size=='SG',]$f_cMS/mean(D_data_f[D_data_f$Gr_size=='SG',]$f_cMS))
D_data_f[D_data_f=c(D_data_m[D_data_m$Gr_size=='SG',]$stder_BM_focal,
comb_data_BM$Gr_size=='SG',]$stder_BM_focal)
D_data_f[D_data_f
= cov(D_data_m[D_data_m$Gr_size=='SG',]$stder_BM_focal,D_data_m[D_data_m$Gr_size=='SG',]$m_cMS/mean(D_data_m[D_data_m$Gr_size=='SG',]$m_cMS),use="complete.obs",method = "pearson") - cov(D_data_f[D_data_f$Gr_size=='SG',]$stder_BM_focal,D_data_f[D_data_f$Gr_size=='SG',]$f_cMS/mean(D_data_f[D_data_f$Gr_size=='SG',]$f_cMS),use="complete.obs",method = "pearson")
diff.observed_Small_pop
= 100000
number_of_permutations = NULL
diff.random_Small_pop for (i in 1 : number_of_permutations) {
# Sample from the combined dataset
= sample (na.omit(comb_data_RS), length(c(D_data_m[D_data_m$Gr_size=='SG',]$m_cMS/mean(D_data_m[D_data_m$Gr_size=='SG',]$m_cMS))), TRUE)
a.random = sample (na.omit(comb_data_BM), length(c(D_data_m[D_data_m$Gr_size=='SG',]$m_cMS/mean(D_data_m[D_data_m$Gr_size=='SG',]$m_cMS))), TRUE)
b.random = sample (na.omit(comb_data_RS), length(c(D_data_f[D_data_f$Gr_size=='SG',]$f_cMS/mean(D_data_f[D_data_f$Gr_size=='SG',]$f_cMS))), TRUE)
c.random = sample (na.omit(comb_data_BM), length(c(D_data_f[D_data_f$Gr_size=='SG',]$f_cMS/mean(D_data_f[D_data_f$Gr_size=='SG',]$f_cMS))), TRUE)
d.random
# Null (permuated) difference
= cov(b.random,a.random,use="complete.obs",method = "pearson") - cov(d.random,c.random,use="complete.obs",method = "pearson")
diff.random_Small_pop[i]
}
# P-value is the fraction of how many times the permuted difference is equal or more extreme than the observed difference
= sum((diff.random_Small_pop) >= as.numeric((diff.observed_Small_pop)))/ number_of_permutations
p_Sex_diff_Small_pop
# Population size
# Large
=c(boot_BW_males_group_size_large$t)-c(boot_BW_females_group_size_large$t)
Sex_diff_large_pop
=mean(p_Sex_diff_Small_pop,na.rm=TRUE)
t_Sex_diff_large_pop=quantile(p_Sex_diff_Small_pop,.025,na.rm=TRUE)
t_Sex_diff_large_pop_lower=quantile(p_Sex_diff_Small_pop,.975,na.rm=TRUE)
t_Sex_diff_large_pop_upper
# Permutation test to calculate p value
=c(D_data_m[D_data_m$Gr_size=='LG',]$m_cMS/mean(D_data_m[D_data_m$Gr_size=='LG',]$m_cMS),
comb_data_RS$Gr_size=='LG',]$f_cMS/mean(D_data_f[D_data_f$Gr_size=='LG',]$f_cMS))
D_data_f[D_data_f=c(D_data_m[D_data_m$Gr_size=='LG',]$stder_BM_focal,
comb_data_BM$Gr_size=='LG',]$stder_BM_focal)
D_data_f[D_data_f
= cov(D_data_m[D_data_m$Gr_size=='LG',]$stder_BM_focal,D_data_m[D_data_m$Gr_size=='LG',]$m_cMS/mean(D_data_m[D_data_m$Gr_size=='LG',]$m_cMS),use="complete.obs",method = "pearson") - cov(D_data_f[D_data_f$Gr_size=='LG',]$stder_BM_focal,D_data_f[D_data_f$Gr_size=='LG',]$f_cMS/mean(D_data_f[D_data_f$Gr_size=='LG',]$f_cMS),use="complete.obs",method = "pearson")
diff.observed_large_pop
= 100000
number_of_permutations = NULL
diff.random_large_pop for (i in 1 : number_of_permutations) {
# Sample from the combined dataset
= sample (na.omit(comb_data_RS), length(c(D_data_m[D_data_m$Gr_size=='LG',]$m_cMS/mean(D_data_m[D_data_m$Gr_size=='LG',]$m_cMS))), TRUE)
a.random = sample (na.omit(comb_data_BM), length(c(D_data_m[D_data_m$Gr_size=='LG',]$m_cMS/mean(D_data_m[D_data_m$Gr_size=='LG',]$m_cMS))), TRUE)
b.random = sample (na.omit(comb_data_RS), length(c(D_data_f[D_data_f$Gr_size=='LG',]$f_cMS/mean(D_data_f[D_data_f$Gr_size=='LG',]$f_cMS))), TRUE)
c.random = sample (na.omit(comb_data_BM), length(c(D_data_f[D_data_f$Gr_size=='LG',]$f_cMS/mean(D_data_f[D_data_f$Gr_size=='LG',]$f_cMS))), TRUE)
d.random
# Null (permuated) difference
= cov(b.random,a.random,use="complete.obs",method = "pearson") - cov(d.random,c.random,use="complete.obs",method = "pearson")
diff.random_large_pop[i]
}
# P-value is the fraction of how many times the permuted difference is equal or more extreme than the observed difference
= sum(abs(diff.random_large_pop) >= as.numeric(abs(diff.observed_large_pop)))/ number_of_permutations
p_Sex_diff_large_pop
# Arena size
# Large
=c(boot_BW_males_arena_large$t)-c(boot_BW_females_arena_large$t)
Sex_diff_large_arena
=mean(Sex_diff_large_arena,na.rm=TRUE)
t_Sex_diff_large_arena=quantile(Sex_diff_large_arena,.025,na.rm=TRUE)
t_Sex_diff_large_arena_lower=quantile(Sex_diff_large_arena,.975,na.rm=TRUE)
t_Sex_diff_large_arena_upper
# Permutation test to calculate p value
=c(D_data_m[D_data_m$Arena=='Large',]$m_cMS/mean(D_data_m[D_data_m$Arena=='Large',]$m_cMS),
comb_data_RS$Arena=='Large',]$f_cMS/mean(D_data_f[D_data_f$Arena=='Large',]$f_cMS))
D_data_f[D_data_f=c(D_data_m[D_data_m$Arena=='Large',]$stder_BM_focal,
comb_data_BM$Arena=='Large',]$stder_BM_focal)
D_data_f[D_data_f
= cov(D_data_m[D_data_m$Arena=='Large',]$stder_BM_focal,D_data_m[D_data_m$Arena=='Large',]$m_cMS/mean(D_data_m[D_data_m$Arena=='Large',]$m_cMS),use="complete.obs",method = "pearson") - cov(D_data_f[D_data_f$Arena=='Large',]$stder_BM_focal,D_data_f[D_data_f$Arena=='Large',]$f_cMS/mean(D_data_f[D_data_f$Arena=='Large',]$f_cMS),use="complete.obs",method = "pearson")
diff.observed_large_arena
= 100000
number_of_permutations = NULL
diff.random_large_arena for (i in 1 : number_of_permutations) {
# Sample from the combined dataset
= sample (na.omit(comb_data_RS), length(c(D_data_m[D_data_m$Arena=='Large',]$m_cMS/mean(D_data_m[D_data_m$Arena=='Large',]$m_cMS))), TRUE)
a.random = sample (na.omit(comb_data_BM), length(c(D_data_m[D_data_m$Arena=='Large',]$m_cMS/mean(D_data_m[D_data_m$Arena=='Large',]$m_cMS))), TRUE)
b.random = sample (na.omit(comb_data_RS), length(c(D_data_f[D_data_f$Arena=='Large',]$f_cMS/mean(D_data_f[D_data_f$Arena=='Large',]$f_cMS))), TRUE)
c.random = sample (na.omit(comb_data_BM), length(c(D_data_f[D_data_f$Arena=='Large',]$f_cMS/mean(D_data_f[D_data_f$Arena=='Large',]$f_cMS))), TRUE)
d.random
# Null (permuated) difference
= cov(b.random,a.random,use="complete.obs",method = "pearson") - cov(d.random,c.random,use="complete.obs",method = "pearson")
diff.random_large_arena[i]
}
# P-value is the fraction of how many times the permuted difference is equal or more extreme than the observed difference
= sum(abs(diff.random_large_arena) >= as.numeric(abs(diff.observed_large_arena)))/ number_of_permutations
p_Sex_diff_large_arena
# Small
=c(boot_BW_males_arena_small$t)-c(boot_BW_females_arena_small$t)
Sex_diff_small_arena
=mean(Sex_diff_small_arena,na.rm=TRUE)
t_Sex_diff_small_arena=quantile(Sex_diff_small_arena,.025,na.rm=TRUE)
t_Sex_diff_small_arena_lower=quantile(Sex_diff_small_arena,.975,na.rm=TRUE)
t_Sex_diff_small_arena_upper
# Permutation test to calculate p value
=c(D_data_m[D_data_m$Arena=='Small',]$m_cMS/mean(D_data_m[D_data_m$Arena=='Small',]$m_cMS),
comb_data_RS$Arena=='Small',]$f_cMS/mean(D_data_f[D_data_f$Arena=='Small',]$f_cMS))
D_data_f[D_data_f=c(D_data_m[D_data_m$Arena=='Small',]$stder_BM_focal,
comb_data_BM$Arena=='Small',]$stder_BM_focal)
D_data_f[D_data_f
= cov(D_data_m[D_data_m$Arena=='Small',]$stder_BM_focal,D_data_m[D_data_m$Arena=='Small',]$m_cMS/mean(D_data_m[D_data_m$Arena=='Small',]$m_cMS),use="complete.obs",method = "pearson") - cov(D_data_f[D_data_f$Arena=='Small',]$stder_BM_focal,D_data_f[D_data_f$Arena=='Small',]$f_cMS/mean(D_data_f[D_data_f$Arena=='Small',]$f_cMS),use="complete.obs",method = "pearson")
diff.observed_small_arena
= 100000
number_of_permutations = NULL
diff.random_small_arena for (i in 1 : number_of_permutations) {
# Sample from the combined dataset
= sample (na.omit(comb_data_RS), length(c(D_data_m[D_data_m$Arena=='Small',]$m_cMS/mean(D_data_m[D_data_m$Arena=='Small',]$m_cMS))), TRUE)
a.random = sample (na.omit(comb_data_BM), length(c(D_data_m[D_data_m$Arena=='Small',]$m_cMS/mean(D_data_m[D_data_m$Arena=='Small',]$m_cMS))), TRUE)
b.random = sample (na.omit(comb_data_RS), length(c(D_data_f[D_data_f$Arena=='Small',]$f_cMS/mean(D_data_f[D_data_f$Arena=='Small',]$f_cMS))), TRUE)
c.random = sample (na.omit(comb_data_BM), length(c(D_data_f[D_data_f$Arena=='Small',]$f_cMS/mean(D_data_f[D_data_f$Arena=='Small',]$f_cMS))), TRUE)
d.random
# Null (permuated) difference
= cov(b.random,a.random,use="complete.obs",method = "pearson") - cov(d.random,c.random,use="complete.obs",method = "pearson")
diff.random_small_arena[i]
}# P-value is the fraction of how many times the permuted difference is equal or more extreme than the observed difference
= sum(abs(diff.random_small_arena) >= as.numeric(abs(diff.observed_small_arena)))/ number_of_permutations
p_Sex_diff_small_arena
### Extract data and write results table ####
<- as.data.frame(cbind("Small group size", "Mating differential", t_Sex_diff_Small_pop, t_Sex_diff_Small_pop_lower, t_Sex_diff_Small_pop_upper, p_Sex_diff_Small_pop))
boot_data_matingDif_small_group_size names(boot_data_matingDif_small_group_size)=c('V1','V2','V3','V4','V5','V6')
<- as.data.frame(cbind("Large group size", "Mating differential", t_Sex_diff_large_pop, t_Sex_diff_large_pop_lower, t_Sex_diff_large_pop_upper, p_Sex_diff_large_pop))
boot_data_matingDif_large_group_size names(boot_data_matingDif_large_group_size)=c('V1','V2','V3','V4','V5','V6')
<- as.data.frame(cbind("Large arena size", "Mating differential", t_Sex_diff_large_arena, t_Sex_diff_large_arena_lower, t_Sex_diff_large_arena_upper, p_Sex_diff_large_arena))
boot_data_matingDif_large_arena names(boot_data_matingDif_large_arena)=c('V1','V2','V3','V4','V5','V6')
<- as.data.frame(cbind("Small arena size", "Mating differential", t_Sex_diff_small_arena, t_Sex_diff_small_arena_lower, t_Sex_diff_small_arena_upper, p_Sex_diff_small_arena))
boot_data_matingDif_small_arena_size names(boot_data_matingDif_small_arena_size)=c('V1','V2','V3','V4','V5','V6')
<- as.data.frame(as.matrix(rbind(boot_data_matingDif_small_group_size,boot_data_matingDif_large_group_size,
Table_SexComp_BM_MatDif
boot_data_matingDif_large_arena,boot_data_matingDif_small_arena_size)))
colnames(Table_SexComp_BM_MatDif)[1] <- "Treatment"
colnames(Table_SexComp_BM_MatDif)[2] <- "Variance_component"
colnames(Table_SexComp_BM_MatDif)[3] <- "Variance"
colnames(Table_SexComp_BM_MatDif)[4] <- "l95_CI"
colnames(Table_SexComp_BM_MatDif)[5] <- "u95_CI"
colnames(Table_SexComp_BM_MatDif)[6] <- "p-value"
3]=round(as.numeric(Table_SexComp_BM_MatDif[,3]),digits=2)
Table_SexComp_BM_MatDif[,4]=round(as.numeric(Table_SexComp_BM_MatDif[,4]),digits=2)
Table_SexComp_BM_MatDif[,5]=round(as.numeric(Table_SexComp_BM_MatDif[,5]),digits=2)
Table_SexComp_BM_MatDif[,6]=round(as.numeric(Table_SexComp_BM_MatDif[,6]),digits=3)
Table_SexComp_BM_MatDif[,rownames(Table_SexComp_BM_MatDif) <- c()
Table A5: Sex comparisons for mating differentials on body mass including 95% confidence intervals. Negative effect sizes indicate larger values at lower density and positive effect sizes larger values at higher density.
kable(Table_SexComp_BM_MatDif)
Treatment | Variance_component | Variance | l95_CI | u95_CI | p-value |
---|---|---|---|---|---|
Small group size | Mating differential | -0.21 | -0.53 | 0.11 | 0.964 |
Large group size | Mating differential | 0.96 | 0.96 | 0.96 | 0.012 |
Large arena size | Mating differential | -0.06 | -0.39 | 0.27 | 0.078 |
Small arena size | Mating differential | -0.44 | -0.80 | -0.09 | 0.013 |
We used permutation tests to see if the selection differential of body mass differed between the sexes.
## Permutation test for sex differences in selection differential on body mass ####
# Population size
# Small
=c(boot_BW_males_group_size_small$t)-c(boot_BW_females_group_size_small$t)
Sex_diff_Small_pop
=mean(Sex_diff_Small_pop,na.rm=TRUE)
t_Sex_diff_Small_pop=quantile(Sex_diff_Small_pop,.025,na.rm=TRUE)
t_Sex_diff_Small_pop_lower=quantile(Sex_diff_Small_pop,.975,na.rm=TRUE)
t_Sex_diff_Small_pop_upper
# Permutation test to calculate p value
=c(D_data_m[D_data_m$Gr_size=='SG',]$m_RS/mean(D_data_m[D_data_m$Gr_size=='SG',]$m_RS),
comb_data_RS$Gr_size=='SG',]$f_RS/mean(D_data_f[D_data_f$Gr_size=='SG',]$f_RS))
D_data_f[D_data_f=c(D_data_m[D_data_m$Gr_size=='SG',]$stder_BM_focal,
comb_data_BM$Gr_size=='SG',]$stder_BM_focal)
D_data_f[D_data_f
= cov(D_data_m[D_data_m$Gr_size=='SG',]$stder_BM_focal,D_data_m[D_data_m$Gr_size=='SG',]$m_RS/mean(D_data_m[D_data_m$Gr_size=='SG',]$m_RS),use="complete.obs",method = "pearson") - cov(D_data_f[D_data_f$Gr_size=='SG',]$stder_BM_focal,D_data_f[D_data_f$Gr_size=='SG',]$f_RS/mean(D_data_f[D_data_f$Gr_size=='SG',]$f_RS),use="complete.obs",method = "pearson")
diff.observed_Small_pop
= 100000
number_of_permutations = NULL
diff.random_Small_pop for (i in 1 : number_of_permutations) {
# Sample from the combined dataset
= sample (na.omit(comb_data_RS), length(c(D_data_m[D_data_m$Gr_size=='SG',]$m_RS/mean(D_data_m[D_data_m$Gr_size=='SG',]$m_RS))), TRUE)
a.random = sample (na.omit(comb_data_BM), length(c(D_data_m[D_data_m$Gr_size=='SG',]$m_RS/mean(D_data_m[D_data_m$Gr_size=='SG',]$m_RS))), TRUE)
b.random = sample (na.omit(comb_data_RS), length(c(D_data_f[D_data_f$Gr_size=='SG',]$f_RS/mean(D_data_f[D_data_f$Gr_size=='SG',]$f_RS))), TRUE)
c.random = sample (na.omit(comb_data_BM), length(c(D_data_f[D_data_f$Gr_size=='SG',]$f_RS/mean(D_data_f[D_data_f$Gr_size=='SG',]$f_RS))), TRUE)
d.random
# Null (permuated) difference
= cov(b.random,a.random,use="complete.obs",method = "pearson") - cov(d.random,c.random,use="complete.obs",method = "pearson")
diff.random_Small_pop[i]
}
# P-value is the fraction of how many times the permuted difference is equal or more extreme than the observed difference
= sum((diff.random_Small_pop) >= as.numeric((diff.observed_Small_pop)))/ number_of_permutations
p_Sex_diff_Small_pop
# Large
=c(boot_BW_males_group_size_large$t)-c(boot_BW_females_group_size_large$t)
Sex_diff_large_pop
=mean(Sex_diff_large_pop,na.rm=TRUE)
t_Sex_diff_large_pop=quantile(Sex_diff_large_pop,.025,na.rm=TRUE)
t_Sex_diff_large_pop_lower=quantile(Sex_diff_large_pop,.975,na.rm=TRUE)
t_Sex_diff_large_pop_upper
# Permutation test to calculate p value
=c(D_data_m[D_data_m$Gr_size=='LG',]$m_RS/mean(D_data_m[D_data_m$Gr_size=='LG',]$m_RS),
comb_data_RS$Gr_size=='LG',]$f_RS/mean(D_data_f[D_data_f$Gr_size=='LG',]$f_RS))
D_data_f[D_data_f=c(D_data_m[D_data_m$Gr_size=='LG',]$stder_BM_focal,
comb_data_BM$Gr_size=='LG',]$stder_BM_focal)
D_data_f[D_data_f
= cov(D_data_m[D_data_m$Gr_size=='LG',]$stder_BM_focal,D_data_m[D_data_m$Gr_size=='LG',]$m_RS/mean(D_data_m[D_data_m$Gr_size=='LG',]$m_RS),use="complete.obs",method = "pearson") - cov(D_data_f[D_data_f$Gr_size=='LG',]$stder_BM_focal,D_data_f[D_data_f$Gr_size=='LG',]$f_RS/mean(D_data_f[D_data_f$Gr_size=='LG',]$f_RS),use="complete.obs",method = "pearson")
diff.observed_large_pop
= 100000
number_of_permutations = NULL
diff.random_large_pop for (i in 1 : number_of_permutations) {
# Sample from the combined dataset
= sample (na.omit(comb_data_RS), length(c(D_data_m[D_data_m$Gr_size=='LG',]$m_RS/mean(D_data_m[D_data_m$Gr_size=='LG',]$m_RS))), TRUE)
a.random = sample (na.omit(comb_data_BM), length(c(D_data_m[D_data_m$Gr_size=='LG',]$m_RS/mean(D_data_m[D_data_m$Gr_size=='LG',]$m_RS))), TRUE)
b.random = sample (na.omit(comb_data_RS), length(c(D_data_f[D_data_f$Gr_size=='LG',]$f_RS/mean(D_data_f[D_data_f$Gr_size=='LG',]$f_RS))), TRUE)
c.random = sample (na.omit(comb_data_BM), length(c(D_data_f[D_data_f$Gr_size=='LG',]$f_RS/mean(D_data_f[D_data_f$Gr_size=='LG',]$f_RS))), TRUE)
d.random
# Null (permuated) difference
= cov(b.random,a.random,use="complete.obs",method = "pearson") - cov(d.random,c.random,use="complete.obs",method = "pearson")
diff.random_large_pop[i]
}
# P-value is the fraction of how many times the permuted difference is equal or more extreme than the observed difference
= sum(abs(diff.random_large_pop) >= as.numeric(abs(diff.observed_large_pop)))/ number_of_permutations
p_Sex_diff_large_pop
# Arena size
# Large
=c(boot_BW_males_arena_large$t)-c(boot_BW_females_arena_large$t)
Sex_diff_large_arena
=mean(Sex_diff_large_arena,na.rm=TRUE)
t_Sex_diff_large_arena=quantile(Sex_diff_large_arena,.025,na.rm=TRUE)
t_Sex_diff_large_arena_lower=quantile(Sex_diff_large_arena,.975,na.rm=TRUE)
t_Sex_diff_large_arena_upper
# Permutation test to calculate p value
=c(D_data_m[D_data_m$Arena=='Large',]$m_RS/mean(D_data_m[D_data_m$Arena=='Large',]$m_RS),
comb_data_RS$Arena=='Large',]$f_RS/mean(D_data_f[D_data_f$Arena=='Large',]$f_RS))
D_data_f[D_data_f=c(D_data_m[D_data_m$Arena=='Large',]$stder_BM_focal,
comb_data_BM$Arena=='Large',]$stder_BM_focal)
D_data_f[D_data_f
= cov(D_data_m[D_data_m$Arena=='Large',]$stder_BM_focal,D_data_m[D_data_m$Arena=='Large',]$m_RS/mean(D_data_m[D_data_m$Arena=='Large',]$m_RS),use="complete.obs",method = "pearson") - cov(D_data_f[D_data_f$Arena=='Large',]$stder_BM_focal,D_data_f[D_data_f$Arena=='Large',]$f_RS/mean(D_data_f[D_data_f$Arena=='Large',]$f_RS),use="complete.obs",method = "pearson")
diff.observed_large_arena
= 100000
number_of_permutations = NULL
diff.random_large_arena for (i in 1 : number_of_permutations) {
# Sample from the combined dataset
= sample (na.omit(comb_data_RS), length(c(D_data_m[D_data_m$Arena=='Large',]$m_RS/mean(D_data_m[D_data_m$Arena=='Large',]$m_RS))), TRUE)
a.random = sample (na.omit(comb_data_BM), length(c(D_data_m[D_data_m$Arena=='Large',]$m_RS/mean(D_data_m[D_data_m$Arena=='Large',]$m_RS))), TRUE)
b.random = sample (na.omit(comb_data_RS), length(c(D_data_f[D_data_f$Arena=='Large',]$f_RS/mean(D_data_f[D_data_f$Arena=='Large',]$f_RS))), TRUE)
c.random = sample (na.omit(comb_data_BM), length(c(D_data_f[D_data_f$Arena=='Large',]$f_RS/mean(D_data_f[D_data_f$Arena=='Large',]$f_RS))), TRUE)
d.random
# Null (permuated) difference
= cov(b.random,a.random,use="complete.obs",method = "pearson") - cov(d.random,c.random,use="complete.obs",method = "pearson")
diff.random_large_arena[i]
}
# P-value is the fraction of how many times the permuted difference is equal or more extreme than the observed difference
= sum(abs(diff.random_large_arena) >= as.numeric(abs(diff.observed_large_arena)))/ number_of_permutations
p_Sex_diff_large_arena
# Small
=c(boot_BW_males_arena_small$t)-c(boot_BW_females_arena_small$t)
Sex_diff_small_arena
=mean(Sex_diff_small_arena,na.rm=TRUE)
t_Sex_diff_small_arena=quantile(Sex_diff_small_arena,.025,na.rm=TRUE)
t_Sex_diff_small_arena_lower=quantile(Sex_diff_small_arena,.975,na.rm=TRUE)
t_Sex_diff_small_arena_upper
# Permutation test to calculate p value
=c(D_data_m[D_data_m$Arena=='Small',]$m_RS/mean(D_data_m[D_data_m$Arena=='Small',]$m_RS),
comb_data_RS$Arena=='Small',]$f_RS/mean(D_data_f[D_data_f$Arena=='Small',]$f_RS))
D_data_f[D_data_f=c(D_data_m[D_data_m$Arena=='Small',]$stder_BM_focal,
comb_data_BM$Arena=='Small',]$stder_BM_focal)
D_data_f[D_data_f
= cov(D_data_m[D_data_m$Arena=='Small',]$stder_BM_focal,D_data_m[D_data_m$Arena=='Small',]$m_RS/mean(D_data_m[D_data_m$Arena=='Small',]$m_RS),use="complete.obs",method = "pearson") - cov(D_data_f[D_data_f$Arena=='Small',]$stder_BM_focal,D_data_f[D_data_f$Arena=='Small',]$f_RS/mean(D_data_f[D_data_f$Arena=='Small',]$f_RS),use="complete.obs",method = "pearson")
diff.observed_small_arena
= 100000
number_of_permutations = NULL
diff.random_small_arena for (i in 1 : number_of_permutations) {
# Sample from the combined dataset
= sample (na.omit(comb_data_RS), length(c(D_data_m[D_data_m$Arena=='Small',]$m_RS/mean(D_data_m[D_data_m$Arena=='Small',]$m_RS))), TRUE)
a.random = sample (na.omit(comb_data_BM), length(c(D_data_m[D_data_m$Arena=='Small',]$m_RS/mean(D_data_m[D_data_m$Arena=='Small',]$m_RS))), TRUE)
b.random = sample (na.omit(comb_data_RS), length(c(D_data_f[D_data_f$Arena=='Small',]$f_RS/mean(D_data_f[D_data_f$Arena=='Small',]$f_RS))), TRUE)
c.random = sample (na.omit(comb_data_BM), length(c(D_data_f[D_data_f$Arena=='Small',]$f_RS/mean(D_data_f[D_data_f$Arena=='Small',]$f_RS))), TRUE)
d.random
# Null (permuated) difference
= cov(b.random,a.random,use="complete.obs",method = "pearson") - cov(d.random,c.random,use="complete.obs",method = "pearson")
diff.random_small_arena[i]
}# P-value is the fraction of how many times the permuted difference is equal or more extreme than the observed difference
= sum(abs(diff.random_small_arena) >= as.numeric(abs(diff.observed_small_arena)))/ number_of_permutations
p_Sex_diff_small_arena
### Extract data and write results table ####
<- as.data.frame(cbind("Small group size", "Mating differential", t_Sex_diff_Small_pop, t_Sex_diff_Small_pop_lower, t_Sex_diff_Small_pop_upper, p_Sex_diff_Small_pop))
boot_data_matingDif_small_group_size names(boot_data_matingDif_small_group_size)=c('V1','V2','V3','V4','V5','V6')
<- as.data.frame(cbind("Large group size", "Mating differential", t_Sex_diff_large_pop, t_Sex_diff_large_pop_lower, t_Sex_diff_large_pop_upper, p_Sex_diff_large_pop))
boot_data_matingDif_large_group_size names(boot_data_matingDif_large_group_size)=c('V1','V2','V3','V4','V5','V6')
<- as.data.frame(cbind("Large arena size", "Mating differential", t_Sex_diff_large_arena, t_Sex_diff_large_arena_lower, t_Sex_diff_large_arena_upper, p_Sex_diff_large_arena))
boot_data_matingDif_large_arena names(boot_data_matingDif_large_arena)=c('V1','V2','V3','V4','V5','V6')
<- as.data.frame(cbind("Small arena size", "Mating differential", t_Sex_diff_small_arena, t_Sex_diff_small_arena_lower, t_Sex_diff_small_arena_upper, p_Sex_diff_small_arena))
boot_data_matingDif_small_arena_size names(boot_data_matingDif_small_arena_size)=c('V1','V2','V3','V4','V5','V6')
<- as.data.frame(as.matrix(rbind(boot_data_matingDif_small_group_size,boot_data_matingDif_large_group_size,
Table_SexComp_BM
boot_data_matingDif_large_arena,boot_data_matingDif_small_arena_size)))
colnames(Table_SexComp_BM)[1] <- "Treatment"
colnames(Table_SexComp_BM)[2] <- "Variance_component"
colnames(Table_SexComp_BM)[3] <- "Variance"
colnames(Table_SexComp_BM)[4] <- "l95_CI"
colnames(Table_SexComp_BM)[5] <- "u95_CI"
colnames(Table_SexComp_BM)[6] <- "p-value"
3]=round(as.numeric(Table_SexComp_BM[,3]),digits=2)
Table_SexComp_BM[,4]=round(as.numeric(Table_SexComp_BM[,4]),digits=2)
Table_SexComp_BM[,5]=round(as.numeric(Table_SexComp_BM[,5]),digits=2)
Table_SexComp_BM[,6]=round(as.numeric(Table_SexComp_BM[,6]),digits=3)
Table_SexComp_BM[,rownames(Table_SexComp_BM) <- c()
Table A6: Sex comparisons for selection differentials on body mass including 95% confidence intervals. Negative effect sizes indicate larger values at lower density and positive effect sizes larger values at higher density.
kable(Table_SexComp_BM)
Treatment | Variance_component | Variance | l95_CI | u95_CI | p-value |
---|---|---|---|---|---|
Small group size | Mating differential | -0.21 | -0.53 | 0.11 | 0.861 |
Large group size | Mating differential | -0.27 | -0.63 | 0.08 | 0.142 |
Large arena size | Mating differential | -0.06 | -0.39 | 0.27 | 0.742 |
Small arena size | Mating differential | -0.44 | -0.80 | -0.09 | 0.034 |
sessionInfo()
R version 4.2.0 (2022-04-22 ucrt)
Platform: x86_64-w64-mingw32/x64 (64-bit)
Running under: Windows 10 x64 (build 19045)
Matrix products: default
locale:
[1] LC_COLLATE=German_Germany.utf8 LC_CTYPE=German_Germany.utf8
[3] LC_MONETARY=German_Germany.utf8 LC_NUMERIC=C
[5] LC_TIME=German_Germany.utf8
attached base packages:
[1] grid stats graphics grDevices utils datasets methods
[8] base
other attached packages:
[1] knitr_1.42 ICC_2.4.0 data.table_1.14.8 boot_1.3-28
[5] RColorBrewer_1.1-3 car_3.1-1 carData_3.0-5 gridGraphics_0.5-1
[9] cowplot_1.1.1 EnvStats_2.7.0 dplyr_1.1.0 readr_2.1.4
[13] lmerTest_3.1-3 lme4_1.1-31 Matrix_1.5-3 gridExtra_2.3
[17] ggplot2_3.4.1 ggeffects_1.2.0 workflowr_1.7.0
loaded via a namespace (and not attached):
[1] httr_1.4.5 sass_0.4.5 bit64_4.0.5
[4] vroom_1.6.1 jsonlite_1.8.4 splines_4.2.0
[7] bslib_0.4.2 getPass_0.2-2 highr_0.10
[10] yaml_2.3.7 numDeriv_2016.8-1.1 pillar_1.8.1
[13] lattice_0.20-45 glue_1.6.2 digest_0.6.31
[16] promises_1.2.0.1 minqa_1.2.5 colorspace_2.1-0
[19] htmltools_0.5.4 httpuv_1.6.9 pkgconfig_2.0.3
[22] scales_1.2.1 processx_3.8.0 whisker_0.4.1
[25] later_1.3.0 tzdb_0.3.0 git2r_0.31.0
[28] tibble_3.2.0 mgcv_1.8-40 generics_0.1.3
[31] farver_2.1.1 ellipsis_0.3.2 cachem_1.0.7
[34] withr_2.5.0 cli_3.6.1 magrittr_2.0.3
[37] crayon_1.5.2 evaluate_0.20 ps_1.7.2
[40] fs_1.6.1 fansi_1.0.4 nlme_3.1-157
[43] MASS_7.3-56 tools_4.2.0 hms_1.1.2
[46] lifecycle_1.0.3 stringr_1.5.0 munsell_0.5.0
[49] callr_3.7.3 compiler_4.2.0 jquerylib_0.1.4
[52] rlang_1.0.6 nloptr_2.0.3 rstudioapi_0.14
[55] labeling_0.4.2 rmarkdown_2.20 gtable_0.3.1
[58] abind_1.4-5 R6_2.5.1 fastmap_1.1.1
[61] bit_4.0.5 utf8_1.2.3 rprojroot_2.0.3
[64] stringi_1.7.12 parallel_4.2.0 Rcpp_1.0.10
[67] vctrs_0.5.2 tidyselect_1.2.0 xfun_0.37