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/index5.Rmd) and HTML (docs/index5.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 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 partitioned the variance in reproductive success in males and females. Specifically, we partitioned the variance in reproductive success (number of offspring; mRS) in males into: the variance in male mating success (number of mating partners; MS), paternity share (proportion of offspring of the focal with each mating partner; PS) and in the fecundity of the partner (number of offspring produced by mating partners; pFec) as

var(mRS)=var(MS)+var(PS)+ var(pFec)+2 cov(MS,PS)+2 cov(MS,pFec)+2 cov(PS,pFec).

In addition, we partitioned the variance in paternity share into the variance in insemination success (proportion of mating partners that have been inseminated successfully in terms of at least one shared offspring; IS) and fertilization success (proportion of offspring sired from each successfully inseminated mating partner; FS). Hence, while PS is an estimate for the total opportunity for post-copulatory sexual selection, IS gives the opportunity for sexual selection on the ability of males to inseminate females and FS the opportunity for sexual selection on males to outcompete rivals in sperm competition.

The variance in reproductive success of females (number of offspring; fRS) was partitioned into the variance in mating success (number of partners; MS) and female fecundity (number of offspring produced; Fec) as

var(fRS)=var(MS)+ var(Fec)+2 cov(MS,Fec).

For the variance decomposition, data were relativized by dividing each trait value by the corresponding mean trait value of that treatment and sex. Furthermore, we used bootstrapping to estimate the different variance components and two-sided permutation tests to compare them between treatments.

Load and prepare data

Before we started the analyses, we loaded all necessary packages and data.

rm(list = ls()) # Clear work environment

# Load R-packages ####
list_of_packages=cbind('ggeffects','ggplot2','gridExtra','lme4','lmerTest','readr','dplyr','EnvStats','cowplot','gridGraphics','car','RColorBrewer','boot','data.table','base','ICC','knitr')
lapply(list_of_packages, require, character.only = TRUE) 

# Load data set ####
D_data=read_delim("./data/Data_Winkler_et_al_2023_Denstiy.csv",";", escape_double = FALSE, trim_ws = TRUE)

# Set factors and levels for factors
D_data$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)

## Subset data set ####
### Data according to denstiy ####
D_data_0.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_1.33=D_data[D_data$Treatment=='D = 1.33',]

### Subset data by sex ####
D_data_m=D_data[D_data$Sex=='M',]
D_data_f=D_data[D_data$Sex=='F',]

### Calculate data relativized within treatment and sex ####
# Small group + large Area
D_data_0.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)

# Large group + large Area
D_data_0.52=D_data[D_data$Treatment=='D = 0.52',]
#Relativize data

D_data_0.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)

# Small group + small Area
D_data_0.67=D_data[D_data$Treatment=='D = 0.67',]
#Relativize data
D_data_0.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)

# Large group + small Area
D_data_1.33=D_data[D_data$Treatment=='D = 1.33',]
#Relativize data

D_data_1.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)

### Reduce treatments to arena and population size ####
# Arena size
D_data_Large_arena=rbind(D_data_0.26,D_data_0.52)
D_data_Small_arena=rbind(D_data_0.67,D_data_1.33)

# Population size
D_data_Small_pop=rbind(D_data_0.26,D_data_0.67)
D_data_Large_pop=rbind(D_data_0.52,D_data_1.33)

## Set figure schemes ####
# Set color-sets for figures
colpal=brewer.pal(4, 'Dark2')
colpal2=c("#b2182b","#2166AC")
colpal3=brewer.pal(4, 'Paired')

# Set theme for ggplot2 figures
fig_theme=theme(panel.border = element_blank(),
                plot.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
standard_error <- function(x) sd(x,na.rm=T) / sqrt(length(na.exclude(x)))
upper_SD <- function(x) mean(x,na.rm=T)+(sd(x)/2)
lower_SD <- function(x) mean(x,na.rm=T)-(sd(x)/2)

Variance decomposition for males and females

Here we decompose the variance of males into the variance in male mating success (number of mating partners; MS), paternity share (proportion of offspring of the focal with each mating partner; PS) and in the fecundity of the partner (number of offspring produced by mating partners; pFec) and of females the variance in mating success (number of partners; MS) and female fecundity (number of offspring produced; Fec).

## Variance decomposition for males ####
### Mating success (MS) ####
# Large arena size
D_data_Large_arena_M_MS_n <-as.data.table(D_data_Large_arena$rel_m_cMS)
c <- function(d, i){
  d2 <- d[i,]
  return(var(d2[,1], na.rm=TRUE))
}
Large_arena_M_MS_bootvar <- boot(D_data_Large_arena_M_MS_n, c, R=10000)

# Small arena size
D_data_Small_arena_M_MS_n <-as.data.table(D_data_Small_arena$rel_m_cMS)

Small_arena_M_MS_bootvar <- boot(D_data_Small_arena_M_MS_n, c, R=10000)

# Small group size
D_data_Small_pop_M_MS_n <-as.data.table(D_data_Small_pop$rel_m_cMS)

Small_pop_M_MS_bootvar <- boot(D_data_Small_pop_M_MS_n, c, R=10000)

# Large group size
D_data_Large_pop_M_MS_n <-as.data.table(D_data_Large_pop$rel_m_cMS)

Large_pop_M_MS_bootvar <- boot(D_data_Large_pop_M_MS_n, c, R=10000)
rm("c")

### Paternity share (PS) ####
# Large arena size
D_data_Large_arena_M_PS_n <-as.data.table(D_data_Large_arena$rel_m_PS)
c <- function(d, i){
  d2 <- d[i,]
  return(var(d2[,1], na.rm=TRUE))
}
Large_arena_M_PS_bootvar <- boot(D_data_Large_arena_M_PS_n, c, R=10000)

# Small arena size
D_data_Small_arena_M_PS_n <-as.data.table(D_data_Small_arena$rel_m_PS)

Small_arena_M_PS_bootvar <- boot(D_data_Small_arena_M_PS_n, c, R=10000)

# Small group size
D_data_Small_pop_M_PS_n <-as.data.table(D_data_Small_pop$rel_m_PS)

Small_pop_M_PS_bootvar <- boot(D_data_Small_pop_M_PS_n, c, R=10000)

# Large group size
D_data_Large_pop_M_PS_n <-as.data.table(D_data_Large_pop$rel_m_PS)

Large_pop_M_PS_bootvar <- boot(D_data_Large_pop_M_PS_n, c, R=10000)
rm("c")

### Partner fecundity (pFec) ####
# Large arena size
D_data_Large_arena_M_pFec_n <-as.data.table(D_data_Large_arena$rel_m_pFec)
c <- function(d, i){
  d2 <- d[i,]
  return(var(d2[,1], na.rm=TRUE))
}
Large_arena_M_pFec_bootvar <- boot(D_data_Large_arena_M_pFec_n, c, R=10000)

# Small arena size
D_data_Small_arena_M_pFec_n <-as.data.table(D_data_Small_arena$rel_m_pFec)

Small_arena_M_pFec_bootvar <- boot(D_data_Small_arena_M_pFec_n, c, R=10000)

# Small group size
D_data_Small_pop_M_pFec_n <-as.data.table(D_data_Small_pop$rel_m_pFec)

Small_pop_M_pFec_bootvar <- boot(D_data_Small_pop_M_pFec_n, c, R=10000)

# Large group size
D_data_Large_pop_M_pFec_n <-as.data.table(D_data_Large_pop$rel_m_pFec)

Large_pop_M_pFec_bootvar <- boot(D_data_Large_pop_M_pFec_n, c, R=10000)
rm("c")

## Variance decomposition for females ####
### Mating success (MS) ####
# Large arena size
D_data_Large_arena_F_fMS_n <-as.data.table(D_data_Large_arena$rel_f_cMS)
c <- function(d, i){
  d2 <- d[i,]
  return(var(d2[,1], na.rm=TRUE))
}
Large_arena_F_fMS_bootvar <- boot(D_data_Large_arena_F_fMS_n, c, R=10000)

# Small arena size
D_data_Small_arena_F_fMS_n <-as.data.table(D_data_Small_arena$rel_f_cMS)

Small_arena_F_fMS_bootvar <- boot(D_data_Small_arena_F_fMS_n, c, R=10000)

# Small group size
D_data_Small_pop_F_fMS_n <-as.data.table(D_data_Small_pop$rel_f_cMS)

Small_pop_F_fMS_bootvar <- boot(D_data_Small_pop_F_fMS_n, c, R=10000)

# Large group size
D_data_Large_pop_F_fMS_n <-as.data.table(D_data_Large_pop$rel_f_cMS)

Large_pop_F_fMS_bootvar <- boot(D_data_Large_pop_F_fMS_n, c, R=10000)
rm("c")

### Fecundity (Fec) ####
# Large arena size
D_data_Large_arena_F_fFec_n <-as.data.table(D_data_Large_arena$rel_f_fec_pMate)
c <- function(d, i){
  d2 <- d[i,]
  return(var(d2[,1], na.rm=TRUE))
}
Large_arena_F_fFec_bootvar <- boot(D_data_Large_arena_F_fFec_n, c, R=10000)

# Small arena size
D_data_Small_arena_F_fFec_n <-as.data.table(D_data_Small_arena$rel_f_fec_pMate)

Small_arena_F_fFec_bootvar <- boot(D_data_Small_arena_F_fFec_n, c, R=10000)

# Small group size
D_data_Small_pop_F_fFec_n <-as.data.table(D_data_Small_pop$rel_f_fec_pMate)

Small_pop_F_fFec_bootvar <- boot(D_data_Small_pop_F_fFec_n, c, R=10000)

# Large group size
D_data_Large_pop_F_fFec_n <-as.data.table(D_data_Large_pop$rel_f_fec_pMate)

Large_pop_F_fFec_bootvar <- boot(D_data_Large_pop_F_fFec_n, c, R=10000)
rm("c")

### Extract data and write results table ####
PhenVarBoot_Table_Male_Large_arena_MS <- as.data.frame(cbind("Male", "MS", "Large arena size", mean(Large_arena_M_MS_bootvar$t), quantile(Large_arena_M_MS_bootvar$t,.025, names = FALSE), quantile(Large_arena_M_MS_bootvar$t,.975, names = FALSE)))
PhenVarBoot_Table_Male_Small_arena_MS <- as.data.frame(cbind("Male", "MS", "Small arena size", mean(Small_arena_M_MS_bootvar$t), quantile(Small_arena_M_MS_bootvar$t,.025, names = FALSE), quantile(Small_arena_M_MS_bootvar$t,.975, names = FALSE)))
PhenVarBoot_Table_Male_Small_pop_MS <- as.data.frame(cbind("Male", "MS", "Small population size", mean(Small_pop_M_MS_bootvar$t), quantile(Small_pop_M_MS_bootvar$t,.025, names = FALSE), quantile(Small_pop_M_MS_bootvar$t,.975, names = FALSE)))
PhenVarBoot_Table_Male_Large_pop_MS <- as.data.frame(cbind("Male", "MS", "Large population size", mean(Large_pop_M_MS_bootvar$t), quantile(Large_pop_M_MS_bootvar$t,.025, names = FALSE), quantile(Large_pop_M_MS_bootvar$t,.975, names = FALSE)))

PhenVarBoot_Table_Male_Large_arena_PS <- as.data.frame(cbind("Male", "PS", "Large arena size", mean(Large_arena_M_PS_bootvar$t), quantile(Large_arena_M_PS_bootvar$t,.025, names = FALSE), quantile(Large_arena_M_PS_bootvar$t,.975, names = FALSE)))
PhenVarBoot_Table_Male_Small_arena_PS <- as.data.frame(cbind("Male", "PS", "Small arena size", mean(Small_arena_M_PS_bootvar$t), quantile(Small_arena_M_PS_bootvar$t,.025, names = FALSE), quantile(Small_arena_M_PS_bootvar$t,.975, names = FALSE)))
PhenVarBoot_Table_Male_Small_pop_PS <- as.data.frame(cbind("Male", "PS", "Small population size", mean(Small_pop_M_PS_bootvar$t), quantile(Small_pop_M_PS_bootvar$t,.025, names = FALSE), quantile(Small_pop_M_PS_bootvar$t,.975, names = FALSE)))
PhenVarBoot_Table_Male_Large_pop_PS <- as.data.frame(cbind("Male", "PS", "Large population size", mean(Large_pop_M_PS_bootvar$t), quantile(Large_pop_M_PS_bootvar$t,.025, names = FALSE), quantile(Large_pop_M_PS_bootvar$t,.975, names = FALSE)))

PhenVarBoot_Table_Male_Large_arena_pFec <- as.data.frame(cbind("Male", "pFec", "Large arena size", mean(Large_arena_M_pFec_bootvar$t), quantile(Large_arena_M_pFec_bootvar$t,.025, names = FALSE), quantile(Large_arena_M_pFec_bootvar$t,.975, names = FALSE)))
PhenVarBoot_Table_Male_Small_arena_pFec <- as.data.frame(cbind("Male", "pFec", "Small arena size", mean(Small_arena_M_pFec_bootvar$t), quantile(Small_arena_M_pFec_bootvar$t,.025, names = FALSE), quantile(Small_arena_M_pFec_bootvar$t,.975, names = FALSE)))
PhenVarBoot_Table_Male_Small_pop_pFec <- as.data.frame(cbind("Male", "pFec", "Small population size", mean(Small_pop_M_pFec_bootvar$t), quantile(Small_pop_M_pFec_bootvar$t,.025, names = FALSE), quantile(Small_pop_M_pFec_bootvar$t,.975, names = FALSE)))
PhenVarBoot_Table_Male_Large_pop_pFec <- as.data.frame(cbind("Male", "pFec", "Large population size", mean(Large_pop_M_pFec_bootvar$t), quantile(Large_pop_M_pFec_bootvar$t,.025, names = FALSE), quantile(Large_pop_M_pFec_bootvar$t,.975, names = FALSE)))

PhenVarBoot_Table_Female_Large_arena_fMS <- as.data.frame(cbind("Female", "fMS", "Large arena size", mean(Large_arena_F_fMS_bootvar$t), quantile(Large_arena_F_fMS_bootvar$t,.025, names = FALSE), quantile(Large_arena_F_fMS_bootvar$t,.975, names = FALSE)))
PhenVarBoot_Table_Female_Small_arena_fMS <- as.data.frame(cbind("Female", "fMS", "Small arena size", mean(Small_arena_F_fMS_bootvar$t), quantile(Small_arena_F_fMS_bootvar$t,.025, names = FALSE), quantile(Small_arena_F_fMS_bootvar$t,.975, names = FALSE)))
PhenVarBoot_Table_Female_Small_pop_fMS <- as.data.frame(cbind("Female", "fMS", "Small population size", mean(Small_pop_F_fMS_bootvar$t), quantile(Small_pop_F_fMS_bootvar$t,.025, names = FALSE), quantile(Small_pop_F_fMS_bootvar$t,.975, names = FALSE)))
PhenVarBoot_Table_Female_Large_pop_fMS <- as.data.frame(cbind("Female", "fMS", "Large population size", mean(Large_pop_F_fMS_bootvar$t), quantile(Large_pop_F_fMS_bootvar$t,.025, names = FALSE), quantile(Large_pop_F_fMS_bootvar$t,.975, names = FALSE)))

PhenVarBoot_Table_Female_Large_arena_fFec <- as.data.frame(cbind("Female", "fFec", "Large arena size", mean(Large_arena_F_fFec_bootvar$t), quantile(Large_arena_F_fFec_bootvar$t,.025, names = FALSE), quantile(Large_arena_F_fFec_bootvar$t,.975, names = FALSE)))
PhenVarBoot_Table_Female_Small_arena_fFec <- as.data.frame(cbind("Female", "fFec", "Small arena size", mean(Small_arena_F_fFec_bootvar$t), quantile(Small_arena_F_fFec_bootvar$t,.025, names = FALSE), quantile(Small_arena_F_fFec_bootvar$t,.975, names = FALSE)))
PhenVarBoot_Table_Female_Small_pop_fFec <- as.data.frame(cbind("Female", "fFec", "Small population size", mean(Small_pop_F_fFec_bootvar$t), quantile(Small_pop_F_fFec_bootvar$t,.025, names = FALSE), quantile(Small_pop_F_fFec_bootvar$t,.975, names = FALSE)))
PhenVarBoot_Table_Female_Large_pop_fFec <- as.data.frame(cbind("Female", "fFec", "Large population size", mean(Large_pop_F_fFec_bootvar$t,na.rm=T), quantile(Large_pop_F_fFec_bootvar$t,.025, names = FALSE,na.rm=T), quantile(Large_pop_F_fFec_bootvar$t,.975, names = FALSE,na.rm=T)))

PhenVarBoot_Table <- as.data.frame(as.matrix(rbind(PhenVarBoot_Table_Male_Small_pop_MS,PhenVarBoot_Table_Male_Large_pop_MS,
                                                   PhenVarBoot_Table_Male_Large_arena_MS,PhenVarBoot_Table_Male_Small_arena_MS,
                                                   PhenVarBoot_Table_Male_Small_pop_PS,PhenVarBoot_Table_Male_Large_pop_PS,
                                                   PhenVarBoot_Table_Male_Large_arena_PS,PhenVarBoot_Table_Male_Small_arena_PS,
                                                   PhenVarBoot_Table_Male_Small_pop_pFec,PhenVarBoot_Table_Male_Large_pop_pFec,
                                                   PhenVarBoot_Table_Male_Large_arena_pFec,PhenVarBoot_Table_Male_Small_arena_pFec,
                                                   PhenVarBoot_Table_Female_Small_pop_fMS,PhenVarBoot_Table_Female_Large_pop_fMS,
                                                   PhenVarBoot_Table_Female_Large_arena_fMS,PhenVarBoot_Table_Female_Small_arena_fMS,
                                                   PhenVarBoot_Table_Female_Small_pop_fFec,PhenVarBoot_Table_Female_Large_pop_fFec,
                                                   PhenVarBoot_Table_Female_Large_arena_fFec,PhenVarBoot_Table_Female_Small_arena_fFec)))

is.table(PhenVarBoot_Table)
colnames(PhenVarBoot_Table)[1] <- "Sex"
colnames(PhenVarBoot_Table)[2] <- "Variance_component"
colnames(PhenVarBoot_Table)[3] <- "Treatment"
colnames(PhenVarBoot_Table)[4] <- "Variance"
colnames(PhenVarBoot_Table)[5] <- "l95_CI"
colnames(PhenVarBoot_Table)[6] <- "u95_CI"
PhenVarBoot_Table[,4]=round(as.numeric(PhenVarBoot_Table[,4]),digits=2)
PhenVarBoot_Table[,5]=round(as.numeric(PhenVarBoot_Table[,5]),digits=2)
PhenVarBoot_Table[,6]=round(as.numeric(PhenVarBoot_Table[,6]),digits=2)
rownames(PhenVarBoot_Table) <- c()

Compute covariance matrices

Here we compute the covariances between the above obtained variance components for both sexes.

## Compute covariance matrices ####
# Large arena size
# Covariance mMS x PS
x5=as.data.frame(cbind(D_data_Large_arena_M_MS_n,D_data_Large_arena_M_PS_n))
c <- function(d, i){
  d2 <- d[i,]
  return(2*cov(d2[1],d2[2],use='pairwise.complete.obs'))
}
Large_arena_M_cov_mMS_PS_bootvar <- boot(x5, c, R=10000)

# Covariance mMS x pFec
x7=as.data.frame(cbind(D_data_Large_arena_M_MS_n,D_data_Large_arena_M_pFec_n))

Large_arena_M_cov_mMS_pFec_bootvar <- boot(x7, c, R=10000)

# Covariance PS x pFec
x9=as.data.frame(cbind(D_data_Large_arena_M_PS_n,D_data_Large_arena_M_pFec_n))

Large_arena_M_cov_PS_pFec_bootvar <- boot(x9, c, R=10000)

# Covariance fMS x fFec
x13=as.data.frame(cbind(D_data_Large_arena_F_fMS_n,D_data_Large_arena_F_fFec_n))

Large_arena_F_cov_fMS_fFec_bootvar <- boot(x13, c, R=10000)
rm('c')

# Extract data and write results table
PhenVarBoot_Table_Male_Large_arena_cov_mMS_PS <- as.data.frame(cbind("Male", "cov_mMS_PS", "Large arena size", mean(Large_arena_M_cov_mMS_PS_bootvar$t), quantile(Large_arena_M_cov_mMS_PS_bootvar$t,.025, names = FALSE), quantile(Large_arena_M_cov_mMS_PS_bootvar$t,.975, names = FALSE)))
PhenVarBoot_Table_Male_Large_arena_cov_mMS_pFec <- as.data.frame(cbind("Male", "cov_mMS_pFec", "Large arena size", mean(Large_arena_M_cov_mMS_pFec_bootvar$t), quantile(Large_arena_M_cov_mMS_pFec_bootvar$t,.025, names = FALSE), quantile(Large_arena_M_cov_mMS_pFec_bootvar$t,.975, names = FALSE)))

PhenVarBoot_Table_Male_Large_arena_cov_PS_pFec <- as.data.frame(cbind("Male", "cov_PS_pFec", "Large arena size", mean(Large_arena_M_cov_PS_pFec_bootvar$t), quantile(Large_arena_M_cov_PS_pFec_bootvar$t,.025, names = FALSE), quantile(Large_arena_M_cov_PS_pFec_bootvar$t,.975, names = FALSE)))

PhenVarBoot_Table_Female_Large_arena_cov_fMS_fFec <- as.data.frame(cbind("Female", "cov_fMS_fFec", "Large arena size", mean(Large_arena_F_cov_fMS_fFec_bootvar$t), quantile(Large_arena_F_cov_fMS_fFec_bootvar$t,.025, names = FALSE), quantile(Large_arena_F_cov_fMS_fFec_bootvar$t,.975, names = FALSE)))


PhenVarBoot_Cov_Table_Large_arena <- as.data.frame(as.matrix(rbind(PhenVarBoot_Table_Male_Large_arena_cov_mMS_PS,
                                                                  PhenVarBoot_Table_Male_Large_arena_cov_mMS_pFec,
                                                                  PhenVarBoot_Table_Male_Large_arena_cov_PS_pFec,
                                                                  PhenVarBoot_Table_Female_Large_arena_cov_fMS_fFec)),digits=3)

is.table(PhenVarBoot_Cov_Table_Large_arena)
colnames(PhenVarBoot_Cov_Table_Large_arena)[1] <- "Sex"
colnames(PhenVarBoot_Cov_Table_Large_arena)[2] <- "Cov_component"
colnames(PhenVarBoot_Cov_Table_Large_arena)[3] <- "Density"
colnames(PhenVarBoot_Cov_Table_Large_arena)[4] <- "Variance"
colnames(PhenVarBoot_Cov_Table_Large_arena)[5] <- "l95_CI"
colnames(PhenVarBoot_Cov_Table_Large_arena)[6] <- "u95_CI"
PhenVarBoot_Cov_Table_Large_arena[,4]=as.numeric(PhenVarBoot_Cov_Table_Large_arena[,4])
PhenVarBoot_Cov_Table_Large_arena[,5]=as.numeric(PhenVarBoot_Cov_Table_Large_arena[,5])
PhenVarBoot_Cov_Table_Large_arena[,6]=as.numeric(PhenVarBoot_Cov_Table_Large_arena[,6])

# Small Arena
# Covariance mMS x PS
x5=as.data.frame(cbind(D_data_Small_arena_M_MS_n,D_data_Small_arena_M_PS_n))
c <- function(d, i){
  d2 <- d[i,]
  return(2*cov(d2[1],d2[2],use='pairwise.complete.obs'))
}
Small_arena_M_cov_mMS_PS_bootvar <- boot(x5, c, R=10000)

# Covariance mMS x pFec
x7=as.data.frame(cbind(D_data_Small_arena_M_MS_n,D_data_Small_arena_M_pFec_n))

Small_arena_M_cov_mMS_pFec_bootvar <- boot(x7, c, R=10000)

# Covariance PS x pFec
x9=as.data.frame(cbind(D_data_Small_arena_M_PS_n,D_data_Small_arena_M_pFec_n))

Small_arena_M_cov_PS_pFec_bootvar <- boot(x9, c, R=10000)

# Covariance fMS x fFec
x13=as.data.frame(cbind(D_data_Small_arena_F_fMS_n,D_data_Small_arena_F_fFec_n))

Small_arena_F_cov_fMS_fFec_bootvar <- boot(x13, c, R=10000)
rm('c')

# Extract data and write results table
PhenVarBoot_Table_Male_Small_arena_cov_mMS_PS <- as.data.frame(cbind("Male", "cov_mMS_PS", "Small arena size", mean(Small_arena_M_cov_mMS_PS_bootvar$t), quantile(Small_arena_M_cov_mMS_PS_bootvar$t,.025, names = FALSE), quantile(Small_arena_M_cov_mMS_PS_bootvar$t,.975, names = FALSE)))
PhenVarBoot_Table_Male_Small_arena_cov_mMS_pFec <- as.data.frame(cbind("Male", "cov_mMS_pFec", "Small arena size", mean(Small_arena_M_cov_mMS_pFec_bootvar$t), quantile(Small_arena_M_cov_mMS_pFec_bootvar$t,.025, names = FALSE), quantile(Small_arena_M_cov_mMS_pFec_bootvar$t,.975, names = FALSE)))

PhenVarBoot_Table_Male_Small_arena_cov_PS_pFec <- as.data.frame(cbind("Male", "cov_PS_pFec", "Small arena size", mean(Small_arena_M_cov_PS_pFec_bootvar$t), quantile(Small_arena_M_cov_PS_pFec_bootvar$t,.025, names = FALSE), quantile(Small_arena_M_cov_PS_pFec_bootvar$t,.975, names = FALSE)))

PhenVarBoot_Table_Female_Small_arena_cov_fMS_fFec <- as.data.frame(cbind("Female", "cov_fMS_fFec", "Small arena size", mean(Small_arena_F_cov_fMS_fFec_bootvar$t), quantile(Small_arena_F_cov_fMS_fFec_bootvar$t,.025, names = FALSE), quantile(Small_arena_F_cov_fMS_fFec_bootvar$t,.975, names = FALSE)))


PhenVarBoot_Cov_Table_Small_arena <- as.data.frame(as.matrix(rbind( PhenVarBoot_Table_Male_Small_arena_cov_mMS_PS,
                                                                   PhenVarBoot_Table_Male_Small_arena_cov_mMS_pFec,
                                                                   PhenVarBoot_Table_Male_Small_arena_cov_PS_pFec,
                                                                   PhenVarBoot_Table_Female_Small_arena_cov_fMS_fFec)),digits=3)

is.table(PhenVarBoot_Cov_Table_Small_arena)
colnames(PhenVarBoot_Cov_Table_Small_arena)[1] <- "Sex"
colnames(PhenVarBoot_Cov_Table_Small_arena)[2] <- "Cov_component"
colnames(PhenVarBoot_Cov_Table_Small_arena)[3] <- "Density"
colnames(PhenVarBoot_Cov_Table_Small_arena)[4] <- "Variance"
colnames(PhenVarBoot_Cov_Table_Small_arena)[5] <- "l95_CI"
colnames(PhenVarBoot_Cov_Table_Small_arena)[6] <- "u95_CI"
PhenVarBoot_Cov_Table_Small_arena[,4]=as.numeric(PhenVarBoot_Cov_Table_Small_arena[,4])
PhenVarBoot_Cov_Table_Small_arena[,5]=as.numeric(PhenVarBoot_Cov_Table_Small_arena[,5])
PhenVarBoot_Cov_Table_Small_arena[,6]=as.numeric(PhenVarBoot_Cov_Table_Small_arena[,6])

# Small group size
# Covariance mMS x PS
x5=as.data.frame(cbind(D_data_Small_pop_M_MS_n,D_data_Small_pop_M_PS_n))
c <- function(d, i){
  d2 <- d[i,]
  return(2*cov(d2[1],d2[2],use='pairwise.complete.obs'))
}
Small_pop_M_cov_mMS_PS_bootvar <- boot(x5, c, R=10000)

# Covariance mMS x pFec
x7=as.data.frame(cbind(D_data_Small_pop_M_MS_n,D_data_Small_pop_M_pFec_n))

Small_pop_M_cov_mMS_pFec_bootvar <- boot(x7, c, R=10000)

# Covariance PS x pFec
x9=as.data.frame(cbind(D_data_Small_pop_M_PS_n,D_data_Small_pop_M_pFec_n))

Small_pop_M_cov_PS_pFec_bootvar <- boot(x9, c, R=10000)

# Covariance fMS x fFec
x13=as.data.frame(cbind(D_data_Small_pop_F_fMS_n,D_data_Small_pop_F_fFec_n))

Small_pop_F_cov_fMS_fFec_bootvar <- boot(x13, c, R=10000)
rm('c')

# Extract data and write results table
PhenVarBoot_Table_Male_Small_pop_cov_mMS_PS <- as.data.frame(cbind("Male", "cov_mMS_PS", "Small population size", mean(Small_pop_M_cov_mMS_PS_bootvar$t), quantile(Small_pop_M_cov_mMS_PS_bootvar$t,.025, names = FALSE), quantile(Small_pop_M_cov_mMS_PS_bootvar$t,.975, names = FALSE)))
PhenVarBoot_Table_Male_Small_pop_cov_mMS_pFec <- as.data.frame(cbind("Male", "cov_mMS_pFec", "Small population size", mean(Small_pop_M_cov_mMS_pFec_bootvar$t), quantile(Small_pop_M_cov_mMS_pFec_bootvar$t,.025, names = FALSE), quantile(Small_pop_M_cov_mMS_pFec_bootvar$t,.975, names = FALSE)))

PhenVarBoot_Table_Male_Small_pop_cov_PS_pFec <- as.data.frame(cbind("Male", "cov_PS_pFec", "Small population size", mean(Small_pop_M_cov_PS_pFec_bootvar$t), quantile(Small_pop_M_cov_PS_pFec_bootvar$t,.025, names = FALSE), quantile(Small_pop_M_cov_PS_pFec_bootvar$t,.975, names = FALSE)))

PhenVarBoot_Table_Female_Small_pop_cov_fMS_fFec <- as.data.frame(cbind("Female", "cov_fMS_fFec", "Small population size", mean(Small_pop_F_cov_fMS_fFec_bootvar$t), quantile(Small_pop_F_cov_fMS_fFec_bootvar$t,.025, names = FALSE), quantile(Small_pop_F_cov_fMS_fFec_bootvar$t,.975, names = FALSE)))


PhenVarBoot_Cov_Table_Small_pop <- as.data.frame(as.matrix(rbind(PhenVarBoot_Table_Male_Small_pop_cov_mMS_PS,
                                                                 PhenVarBoot_Table_Male_Small_pop_cov_mMS_pFec,
                                                                 PhenVarBoot_Table_Male_Small_pop_cov_PS_pFec,
                                                                 PhenVarBoot_Table_Female_Small_pop_cov_fMS_fFec)),digits=3)

is.table(PhenVarBoot_Cov_Table_Small_pop)
colnames(PhenVarBoot_Cov_Table_Small_pop)[1] <- "Sex"
colnames(PhenVarBoot_Cov_Table_Small_pop)[2] <- "Cov_component"
colnames(PhenVarBoot_Cov_Table_Small_pop)[3] <- "Density"
colnames(PhenVarBoot_Cov_Table_Small_pop)[4] <- "Variance"
colnames(PhenVarBoot_Cov_Table_Small_pop)[5] <- "l95_CI"
colnames(PhenVarBoot_Cov_Table_Small_pop)[6] <- "u95_CI"
PhenVarBoot_Cov_Table_Small_pop[,4]=as.numeric(PhenVarBoot_Cov_Table_Small_pop[,4])
PhenVarBoot_Cov_Table_Small_pop[,5]=as.numeric(PhenVarBoot_Cov_Table_Small_pop[,5])
PhenVarBoot_Cov_Table_Small_pop[,6]=as.numeric(PhenVarBoot_Cov_Table_Small_pop[,6])

# Large group size
# Covariance mMS x PS
x5=as.data.frame(cbind(D_data_Large_pop_M_MS_n,D_data_Large_pop_M_PS_n))
c <- function(d, i){
  d2 <- d[i,]
  return(2*cov(d2[1],d2[2],use='pairwise.complete.obs'))
}
Large_pop_M_cov_mMS_PS_bootvar <- boot(x5, c, R=10000)

# Covariance mMS x pFec
x7=as.data.frame(cbind(D_data_Large_pop_M_MS_n,D_data_Large_pop_M_pFec_n))

Large_pop_M_cov_mMS_pFec_bootvar <- boot(x7, c, R=10000)

# Covariance PS x pFec
x9=as.data.frame(cbind(D_data_Large_pop_M_PS_n,D_data_Large_pop_M_pFec_n))

Large_pop_M_cov_PS_pFec_bootvar <- boot(x9, c, R=10000)

# Covariance fMS x fFec
x13=as.data.frame(cbind(D_data_Large_pop_F_fMS_n,D_data_Large_pop_F_fFec_n))

Large_pop_F_cov_fMS_fFec_bootvar <- boot(x13, c, R=10000)
rm('c')

# Extract data and write results table
PhenVarBoot_Table_Male_Large_pop_cov_mMS_PS <- as.data.frame(cbind("Male", "cov_mMS_PS", "Large population size", mean(Large_pop_M_cov_mMS_PS_bootvar$t), quantile(Large_pop_M_cov_mMS_PS_bootvar$t,.025, names = FALSE), quantile(Large_pop_M_cov_mMS_PS_bootvar$t,.975, names = FALSE)))
PhenVarBoot_Table_Male_Large_pop_cov_mMS_pFec <- as.data.frame(cbind("Male", "cov_mMS_pFec", "Large population size", mean(Large_pop_M_cov_mMS_pFec_bootvar$t), quantile(Large_pop_M_cov_mMS_pFec_bootvar$t,.025, names = FALSE), quantile(Large_pop_M_cov_mMS_pFec_bootvar$t,.975, names = FALSE)))

PhenVarBoot_Table_Male_Large_pop_cov_PS_pFec <- as.data.frame(cbind("Male", "cov_PS_pFec", "Large population size", mean(Large_pop_M_cov_PS_pFec_bootvar$t), quantile(Large_pop_M_cov_PS_pFec_bootvar$t,.025, names = FALSE), quantile(Large_pop_M_cov_PS_pFec_bootvar$t,.975, names = FALSE)))

PhenVarBoot_Table_Female_Large_pop_cov_fMS_fFec <- as.data.frame(cbind("Female", "cov_fMS_fFec", "Large population size", mean(Large_pop_F_cov_fMS_fFec_bootvar$t), quantile(Large_pop_F_cov_fMS_fFec_bootvar$t,.025, names = FALSE), quantile(Large_pop_F_cov_fMS_fFec_bootvar$t,.975, names = FALSE)))


PhenVarBoot_Cov_Table_Large_pop <- as.data.frame(as.matrix(rbind(PhenVarBoot_Table_Male_Large_pop_cov_mMS_PS,
                                                                 PhenVarBoot_Table_Male_Large_pop_cov_mMS_pFec,
                                                                 PhenVarBoot_Table_Male_Large_pop_cov_PS_pFec,
                                                                 PhenVarBoot_Table_Female_Large_pop_cov_fMS_fFec)),digits=3)

is.table(PhenVarBoot_Cov_Table_Large_pop)
colnames(PhenVarBoot_Cov_Table_Large_pop)[1] <- "Sex"
colnames(PhenVarBoot_Cov_Table_Large_pop)[2] <- "Cov_component"
colnames(PhenVarBoot_Cov_Table_Large_pop)[3] <- "Density"
colnames(PhenVarBoot_Cov_Table_Large_pop)[4] <- "Variance"
colnames(PhenVarBoot_Cov_Table_Large_pop)[5] <- "l95_CI"
colnames(PhenVarBoot_Cov_Table_Large_pop)[6] <- "u95_CI"
PhenVarBoot_Cov_Table_Large_pop[,4]=as.numeric(PhenVarBoot_Cov_Table_Large_pop[,4])
PhenVarBoot_Cov_Table_Large_pop[,5]=as.numeric(PhenVarBoot_Cov_Table_Large_pop[,5])
PhenVarBoot_Cov_Table_Large_pop[,6]=as.numeric(PhenVarBoot_Cov_Table_Large_pop[,6])

### Extract data and write results table ####
PhenVarBoot_Table_plot <- as.data.frame(as.matrix(rbind(PhenVarBoot_Table_Male_Small_pop_MS,PhenVarBoot_Table_Male_Large_pop_MS,
                                                        PhenVarBoot_Table_Male_Large_arena_MS,PhenVarBoot_Table_Male_Small_arena_MS,
                                                        PhenVarBoot_Table_Male_Small_pop_PS,PhenVarBoot_Table_Male_Large_pop_PS,
                                                        PhenVarBoot_Table_Male_Large_arena_PS,PhenVarBoot_Table_Male_Small_arena_PS,
                                                        PhenVarBoot_Table_Male_Small_pop_pFec,PhenVarBoot_Table_Male_Large_pop_pFec,
                                                        PhenVarBoot_Table_Male_Large_arena_pFec,PhenVarBoot_Table_Male_Small_arena_pFec,
                                                        PhenVarBoot_Table_Male_Small_pop_cov_mMS_PS,PhenVarBoot_Table_Male_Large_pop_cov_mMS_PS,
                                                        PhenVarBoot_Table_Male_Large_arena_cov_mMS_PS,PhenVarBoot_Table_Male_Small_arena_cov_mMS_PS,
                                                        PhenVarBoot_Table_Male_Small_pop_cov_mMS_pFec,PhenVarBoot_Table_Male_Large_pop_cov_mMS_pFec,
                                                        PhenVarBoot_Table_Male_Large_arena_cov_mMS_pFec,PhenVarBoot_Table_Male_Small_arena_cov_mMS_pFec,
                                                        PhenVarBoot_Table_Male_Small_pop_cov_PS_pFec,PhenVarBoot_Table_Male_Large_pop_cov_PS_pFec,
                                                        PhenVarBoot_Table_Male_Large_arena_cov_PS_pFec,PhenVarBoot_Table_Male_Small_arena_cov_PS_pFec,
                                                        PhenVarBoot_Table_Female_Small_pop_fMS,PhenVarBoot_Table_Female_Large_pop_fMS,
                                                        PhenVarBoot_Table_Female_Large_arena_fMS,PhenVarBoot_Table_Female_Small_arena_fMS,
                                                        PhenVarBoot_Table_Female_Small_pop_fFec,PhenVarBoot_Table_Female_Large_pop_fFec,
                                                        PhenVarBoot_Table_Female_Large_arena_fFec,PhenVarBoot_Table_Female_Small_arena_fFec,
                                                        PhenVarBoot_Table_Female_Small_pop_cov_fMS_fFec,PhenVarBoot_Table_Female_Large_pop_cov_fMS_fFec,
                                                        PhenVarBoot_Table_Female_Large_arena_cov_fMS_fFec,PhenVarBoot_Table_Female_Small_arena_cov_fMS_fFec)))

is.table(PhenVarBoot_Table_plot)
colnames(PhenVarBoot_Table_plot)[1] <- "Sex"
colnames(PhenVarBoot_Table_plot)[2] <- "Cov_component"
colnames(PhenVarBoot_Table_plot)[3] <- "Treatment"
colnames(PhenVarBoot_Table_plot)[4] <- "Variance"
colnames(PhenVarBoot_Table_plot)[5] <- "l95_CI"
colnames(PhenVarBoot_Table_plot)[6] <- "u95_CI"
PhenVarBoot_Table_plot[,4]=round(as.numeric(PhenVarBoot_Table_plot[,4]),digits=2)
PhenVarBoot_Table_plot[,5]=round(as.numeric(PhenVarBoot_Table_plot[,5]),digits=2)
PhenVarBoot_Table_plot[,6]=round(as.numeric(PhenVarBoot_Table_plot[,6]),digits=2)
rownames(PhenVarBoot_Table_plot) <- c()

Table S9: Variances and covariances of variance decomposition of reproductive success into mating success (MS), paternity share (PS), and partner fecundity (pFec) for males and into mating success (MS) and fecundity (Fec) for females for group and arena size treatment given with mean and 95%CI estimated via bootstrapping.

kable(PhenVarBoot_Table_plot)
Sex Cov_component Treatment Variance l95_CI u95_CI
Male MS Small population size 0.22 0.14 0.31
Male MS Large population size 0.39 0.24 0.57
Male MS Large arena size 0.36 0.22 0.54
Male MS Small arena size 0.25 0.16 0.37
Male PS Small population size 0.20 0.14 0.28
Male PS Large population size 0.37 0.27 0.46
Male PS Large arena size 0.33 0.24 0.41
Male PS Small arena size 0.25 0.17 0.35
Male pFec Small population size 0.10 0.05 0.17
Male pFec Large population size 0.08 0.03 0.13
Male pFec Large arena size 0.08 0.04 0.14
Male pFec Small arena size 0.09 0.04 0.16
Male cov_mMS_PS Small population size -0.13 -0.25 -0.01
Male cov_mMS_PS Large population size -0.31 -0.50 -0.13
Male cov_mMS_PS Large arena size -0.31 -0.50 -0.15
Male cov_mMS_PS Small arena size -0.13 -0.27 0.01
Male cov_mMS_pFec Small population size 0.05 -0.03 0.15
Male cov_mMS_pFec Large population size 0.01 -0.08 0.09
Male cov_mMS_pFec Large arena size 0.01 -0.08 0.10
Male cov_mMS_pFec Small arena size 0.05 -0.03 0.14
Male cov_PS_pFec Small population size -0.03 -0.15 0.07
Male cov_PS_pFec Large population size -0.08 -0.21 0.03
Male cov_PS_pFec Large arena size -0.03 -0.15 0.07
Male cov_PS_pFec Small arena size -0.08 -0.22 0.03
Female fMS Small population size 0.26 0.18 0.34
Female fMS Large population size 0.60 0.38 0.84
Female fMS Large arena size 0.34 0.21 0.50
Female fMS Small arena size 0.49 0.32 0.70
Female fFec Small population size 1.10 0.65 1.61
Female fFec Large population size 0.79 0.47 1.16
Female fFec Large arena size 1.09 0.61 1.63
Female fFec Small arena size 0.83 0.54 1.14
Female cov_fMS_fFec Small population size -0.22 -0.50 0.04
Female cov_fMS_fFec Large population size -0.13 -0.52 0.22
Female cov_fMS_fFec Large arena size -0.08 -0.40 0.20
Female cov_fMS_fFec Small arena size -0.31 -0.61 -0.02

Plot: Variance decomposition (Figure 3)

# Set factors and levels
PhenVarBoot_Table_plot$Treatment<- factor(PhenVarBoot_Table_plot$Treatment, levels=c("Small population size",'Large population size','Large arena size','Small arena size'))
PhenVarBoot_Table_plot$Cov_component <- factor(PhenVarBoot_Table_plot$Cov_component, levels=c("MS",'PS','pFec','cov_mMS_PS','cov_mMS_pFec','cov_PS_pFec','fMS','fFec','cov_fMS_fFec'))
PhenVarBoot_Table_plot_arena=PhenVarBoot_Table_plot[PhenVarBoot_Table_plot$Treatment!='Large population size',]
PhenVarBoot_Table_plot_arena=PhenVarBoot_Table_plot_arena[PhenVarBoot_Table_plot_arena$Treatment!='Small population size',]
PhenVarBoot_Table_plot_pop=PhenVarBoot_Table_plot[PhenVarBoot_Table_plot$Treatment!='Large arena size',]
PhenVarBoot_Table_plot_pop=PhenVarBoot_Table_plot_pop[PhenVarBoot_Table_plot_pop$Treatment!='Small arena size',]

## Plot: Variance decomposition (Figure 3) ####
BarPlot_1<- ggplot(PhenVarBoot_Table_plot_pop[1:12,], aes(x=Cov_component, y=Variance, alpha=Treatment)) + 
  scale_y_continuous(limits = c(-0.55, 0.6), breaks = c(-0.5,-0.25,0,0.25,0.5), expand = c(0 ,0)) + 
  geom_hline(yintercept=0, linetype="solid", color = "black", size=1) +
  geom_bar(stat="identity", color="black", position=position_dodge(),fill=colpal2[2]) +
  geom_errorbar(aes(ymin=l95_CI, ymax=u95_CI, group = Treatment), width=.3,size=.5,alpha=1, position=position_dodge(.9)) +
  ylab('Variance') +xlab('Variance component') +ggtitle('')+labs(tag = "C")+
  scale_x_discrete(breaks=waiver(),labels = c("MS","PS" ,"pFec",'2 cov\n(MS, \nPS)','2 cov\n(MS, \npFec)','2 cov\n(PS, \npFec)'))+
  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.9),
        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=8, angle=0),
        axis.text.y = element_text(face="plain", color="black", size=13, 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"))+
        scale_alpha_manual(values=c(0.65,1),name = "Treatment", labels = c('Small group','Large group'))


BarPlot_2<-ggplot(PhenVarBoot_Table_plot_arena[1:12,], aes(x=Cov_component, y=Variance, alpha=Treatment)) + 
  scale_y_continuous(limits = c(-0.55, 0.6), breaks = c(-0.5,-0.25,0,0.25,0.5), expand = c(0 ,0)) + 
  geom_hline(yintercept=0, linetype="solid", color = "black", size=1) +
  geom_bar(stat="identity", color="black", position=position_dodge(),fill=colpal2[2]) +
  geom_errorbar(aes(ymin=l95_CI, ymax=u95_CI, group = Treatment), width=.3,size=.5,alpha=1, position=position_dodge(.9)) +
  ylab('') +xlab('Variance component') +ggtitle('')+labs(tag = "D")+
  scale_x_discrete(breaks=waiver(),labels = c("MS","PS" ,"pFec",'2 cov\n(MS, \nPS)','2 cov\n(MS, \npFec)','2 cov\n(PS, \npFec)'))+
  scale_alpha_manual(values=c(0.65,1),name = "Treatment", labels = c('Large arena','Small arena'))+
  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(), 
        legend.position = c(0.8, 0.9),
        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=8, angle=0),
        axis.text.y = element_text(face="plain", color="black", size=13, 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"))

BarPlot_3<- ggplot(PhenVarBoot_Table_plot_pop[13:18,], aes(x=Cov_component, y=Variance, alpha=Treatment)) + 
  scale_y_continuous(limits = c(-0.7, 2), breaks = c(-0.5,0,0.5,1,1.5,2), expand = c(0 ,0)) + 
  geom_hline(yintercept=0, linetype="solid", color = "black", size=1) +
  geom_bar(stat="identity", color="black", position=position_dodge(),fill=colpal2[1]) +
  ylab('Variance') +xlab('') +ggtitle('')+labs(tag = "A")+
  scale_x_discrete(breaks=waiver(),labels = c('MS','Fec','2 cov\n(MS, Fec)'))+ 
  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(), 
        legend.position = c(0.8, 0.9),
        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=10, angle=0),
        axis.text.y = element_text(face="plain", color="black", size=13, 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")) +
  geom_errorbar(aes(ymin=l95_CI, ymax=u95_CI, group = Treatment), width=.3,size=.5,alpha=1, position=position_dodge(.9)) +
  scale_alpha_manual(values=c(0.65,1),name = "Treatment", labels = c('Small group','Large group'))

BarPlot_4<- ggplot(PhenVarBoot_Table_plot_arena[13:18,], aes(x=Cov_component, y=Variance, alpha=Treatment)) + 
  scale_y_continuous(limits = c(-0.7, 2), breaks = c(-0.5,0,0.5,1,1.5,2), expand = c(0 ,0)) + 
  geom_hline(yintercept=0, linetype="solid", color = "black", size=1) +
  geom_bar(stat="identity", color="black", position=position_dodge(),fill=colpal2[1]) +
  ylab('') +xlab('') +ggtitle('')+labs(tag = "B")+
  scale_x_discrete(breaks=waiver(),labels = c('MS','Fec','2 cov\n(MS, Fec)'))+ 
 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(), 
        legend.position = c(0.8, 0.9),
        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=10, angle=0),
        axis.text.y = element_text(face="plain", color="black", size=13, 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"),legend.background = element_rect(fill='transparent')) +
  geom_errorbar(aes(ymin=l95_CI, ymax=u95_CI, group = Treatment), width=.3,size=.5,alpha=1, position=position_dodge(.9)) +
  scale_alpha_manual(values=c(0.65,1),name = "Treatment", labels = c('Large arena','Small arena'))

Figure 3

# Figure 3
Figure_3<-grid.arrange(BarPlot_3,BarPlot_4,BarPlot_1,BarPlot_2, nrow = 2,ncol=2)
Figure 3: Variance components of reproductive success into mating success (MS) and fecundity (Fec) and their covariance for females (A + B) and into mating success (MS), paternity share (PS), and partner fecundity (pFec) and their covariances for males (C + D) for group size treatment (A + C) and arena size treatment (B + D). Mean and 95%CI estimated via bootstrapping (Table S9).

Figure 3: Variance components of reproductive success into mating success (MS) and fecundity (Fec) and their covariance for females (A + B) and into mating success (MS), paternity share (PS), and partner fecundity (pFec) and their covariances for males (C + D) for group size treatment (A + C) and arena size treatment (B + D). Mean and 95%CI estimated via bootstrapping (Table S9).

Fig_3=plot_grid(Figure_3, ncol=1, rel_heights=c(0.1, 1)) # rel_heights values control title margins

Permuation test for treatment comparison of variance decomposition

Next, we tested if the (co-) variance components of males and females differed between the treatments (large vs small population size & small vs large arena size).

## Permuation test for treatment comparison of variance decomposition ####
### Male treatment comparisons ####
#### Mating success (MS) ####
# Arena size
Treat_diff_Male_arena_mMS=c(Small_arena_M_MS_bootvar$t)-c(Large_arena_M_MS_bootvar$t)

t_Treat_diff_Male_arena_mMS=mean(Treat_diff_Male_arena_mMS,na.rm=TRUE)
t_Treat_diff_Male_arena_mMS_lower=quantile(Treat_diff_Male_arena_mMS,.025,na.rm=TRUE)
t_Treat_diff_Male_arena_mMS_upper=quantile(Treat_diff_Male_arena_mMS,.975,na.rm=TRUE)

# Permutation test to calculate p value
comb_data=c(D_data_Large_arena$rel_m_cMS,D_data_Small_arena$rel_m_cMS)

diff.observed = var(na.omit((D_data_Small_arena$rel_m_cMS)))-var(na.omit((D_data_Large_arena$rel_m_cMS)))

number_of_permutations = 100000
diff.random = NULL
for (i in 1 : number_of_permutations) {
  
  # Sample from the combined dataset
  a.random = sample (na.omit(comb_data), length(c(D_data_Large_arena$rel_m_cMS)), TRUE)
  b.random = sample (na.omit(comb_data), length(c(D_data_Small_arena$rel_m_cMS)), TRUE)
  
  # Null (permuated) difference
  diff.random[i] = var(na.omit(b.random)) - var(na.omit(a.random))
}

# P-value is the fraction of how many times the permuted difference is equal or more extreme than the observed difference

t_Treat_diff_Male_arena_mMS_p = sum(abs(diff.random) >= as.numeric(abs(diff.observed)))/   number_of_permutations

# Population size
Treat_diff_Male_pop_mMS=c(Large_pop_M_MS_bootvar$t)-c(Small_pop_M_MS_bootvar$t)

t_Treat_diff_Male_pop_mMS=mean(Treat_diff_Male_pop_mMS,na.rm=TRUE)
t_Treat_diff_Male_pop_mMS_lower=quantile(Treat_diff_Male_pop_mMS,.025,na.rm=TRUE)
t_Treat_diff_Male_pop_mMS_upper=quantile(Treat_diff_Male_pop_mMS,.975,na.rm=TRUE)

# Permutation test to calculate p value
comb_data=c(D_data_Small_pop$rel_m_cMS,D_data_Large_pop$rel_m_cMS)

diff.observed = var(na.omit((D_data_Large_pop$rel_m_cMS)))-var(na.omit((D_data_Small_pop$rel_m_cMS))) 

number_of_permutations = 100000
diff.random = NULL
for (i in 1 : number_of_permutations) {
  
  # Sample from the combined dataset
  a.random = sample (na.omit(comb_data), length(c(D_data_Small_pop$rel_m_cMS)), TRUE)
  b.random = sample (na.omit(comb_data), length(c(D_data_Large_pop$rel_m_cMS)), TRUE)
  
  # Null (permuated) difference
  diff.random[i] = var(na.omit(b.random)) - var(na.omit(a.random))
}

# P-value is the fraction of how many times the permuted difference is equal or more extreme than the observed difference

t_Treat_diff_Male_pop_mMS_p = sum(abs(diff.random) >= as.numeric(abs(diff.observed)))/   number_of_permutations

#### Paternity success (PS) ####
# Arena size
Treat_diff_Male_arena_mPS=c(Small_arena_M_PS_bootvar$t)-c(Large_arena_M_PS_bootvar$t)

t_Treat_diff_Male_arena_mPS=mean(Treat_diff_Male_arena_mPS,na.rm=TRUE)
t_Treat_diff_Male_arena_mPS_lower=quantile(Treat_diff_Male_arena_mPS,.025,na.rm=TRUE)
t_Treat_diff_Male_arena_mPS_upper=quantile(Treat_diff_Male_arena_mPS,.975,na.rm=TRUE)

# Permutation test to calculate p value
comb_data=c(D_data_Large_arena$rel_m_PS,D_data_Small_arena$rel_m_PS)

diff.observed =  var(na.omit((D_data_Small_arena$rel_m_PS)))-var(na.omit((D_data_Large_arena$rel_m_PS)))

number_of_permutations = 100000
diff.random = NULL
for (i in 1 : number_of_permutations) {
  
  # Sample from the combined dataset
  a.random = sample (na.omit(comb_data), length(c(D_data_Large_arena$rel_m_PS)), TRUE)
  b.random = sample (na.omit(comb_data), length(c(D_data_Small_arena$rel_m_PS)), TRUE)
  
  # Null (permuated) difference
  diff.random[i] = var(na.omit(b.random)) - var(na.omit(a.random))
}

# P-value is the fraction of how many times the permuted difference is equal or more extreme than the observed difference

t_Treat_diff_Male_arena_mPS_p = sum(abs(diff.random) >= as.numeric(abs(diff.observed)))/   number_of_permutations

# Population size
Treat_diff_Male_pop_mPS=c(Large_pop_M_PS_bootvar$t)-c(Small_pop_M_PS_bootvar$t)

t_Treat_diff_Male_pop_mPS=mean(Treat_diff_Male_pop_mPS,na.rm=TRUE)
t_Treat_diff_Male_pop_mPS_lower=quantile(Treat_diff_Male_pop_mPS,.025,na.rm=TRUE)
t_Treat_diff_Male_pop_mPS_upper=quantile(Treat_diff_Male_pop_mPS,.975,na.rm=TRUE)

# Permutation test to calculate p value
comb_data=c(D_data_Small_pop$rel_m_PS,D_data_Large_pop$rel_m_PS)

diff.observed =  var(na.omit((D_data_Large_pop$rel_m_PS)))-var(na.omit((D_data_Small_pop$rel_m_PS)))

number_of_permutations = 100000
diff.random = NULL
for (i in 1 : number_of_permutations) {
  
  # Sample from the combined dataset
  a.random = sample (na.omit(comb_data), length(c(D_data_Small_pop$rel_m_PS)), TRUE)
  b.random = sample (na.omit(comb_data), length(c(D_data_Large_pop$rel_m_PS)), TRUE)
  
  # Null (permuated) difference
  diff.random[i] = var(na.omit(b.random)) - var(na.omit(a.random))
}

# P-value is the fraction of how many times the permuted difference is equal or more extreme than the observed difference

t_Treat_diff_Male_pop_mPS_p = sum(abs(diff.random) >= as.numeric(abs(diff.observed)))/   number_of_permutations

#### Partner fecundity (Fec) ####
# Arena size
Treat_diff_Male_arena_mFec=c(Small_arena_M_pFec_bootvar$t)-c(Large_arena_M_pFec_bootvar$t)

t_Treat_diff_Male_arena_mFec=mean(Treat_diff_Male_arena_mFec,na.rm=TRUE)
t_Treat_diff_Male_arena_mFec_lower=quantile(Treat_diff_Male_arena_mFec,.025,na.rm=TRUE)
t_Treat_diff_Male_arena_mFec_upper=quantile(Treat_diff_Male_arena_mFec,.975,na.rm=TRUE)

# Permutation test to calculate p value
comb_data=c(D_data_Large_arena$rel_m_pFec,D_data_Small_arena$rel_m_pFec)

diff.observed =  var(na.omit((D_data_Small_arena$rel_m_pFec)))-var(na.omit((D_data_Large_arena$rel_m_pFec)))

number_of_permutations = 100000
diff.random = NULL
for (i in 1 : number_of_permutations) {
  
  # Sample from the combined dataset
  a.random = sample (na.omit(comb_data), length(c(D_data_Large_arena$rel_m_pFec)), TRUE)
  b.random = sample (na.omit(comb_data), length(c(D_data_Small_arena$rel_m_pFec)), TRUE)
  
  # Null (permuated) difference
  diff.random[i] = var(na.omit(b.random)) - var(na.omit(a.random))
}

# P-value is the fraction of how many times the permuted difference is equal or more extreme than the observed difference

t_Treat_diff_Male_arena_mFec_p = sum(abs(diff.random) >= as.numeric(abs(diff.observed)))/   number_of_permutations

# Population size
Treat_diff_Male_pop_mFec=c(Large_pop_M_pFec_bootvar$t)-c(Small_pop_M_pFec_bootvar$t)

t_Treat_diff_Male_pop_mFec=mean(Treat_diff_Male_pop_mFec,na.rm=TRUE)
t_Treat_diff_Male_pop_mFec_lower=quantile(Treat_diff_Male_pop_mFec,.025,na.rm=TRUE)
t_Treat_diff_Male_pop_mFec_upper=quantile(Treat_diff_Male_pop_mFec,.975,na.rm=TRUE)

# Permutation test to calculate p value
comb_data=c(D_data_Small_pop$rel_m_pFec,D_data_Large_pop$rel_m_pFec)

diff.observed = var(na.omit((D_data_Large_pop$rel_m_pFec))) -var(na.omit((D_data_Small_pop$rel_m_pFec))) 

number_of_permutations = 100000
diff.random = NULL
for (i in 1 : number_of_permutations) {
  
  # Sample from the combined dataset
  a.random = sample (na.omit(comb_data), length(c(D_data_Small_pop$rel_m_pFec)), TRUE)
  b.random = sample (na.omit(comb_data), length(c(D_data_Large_pop$rel_m_pFec)), TRUE)
  
  # Null (permuated) difference
  diff.random[i] = var(na.omit(b.random)) - var(na.omit(a.random))
}

# P-value is the fraction of how many times the permuted difference is equal or more extreme than the observed difference

t_Treat_diff_Male_pop_mFec_p = sum(abs(diff.random) >= as.numeric(abs(diff.observed)))/   number_of_permutations

### Female treatment comparisons ####
#### Mating success (MS) ####
# Arena size
Treat_diff_Female_arena_fMS=c(Small_arena_F_fMS_bootvar$t)-c(Large_arena_F_fMS_bootvar$t)

t_Treat_diff_Female_arena_fMS=mean(Treat_diff_Female_arena_fMS,na.rm=TRUE)
t_Treat_diff_Female_arena_fMS_lower=quantile(Treat_diff_Female_arena_fMS,.025,na.rm=TRUE)
t_Treat_diff_Female_arena_fMS_upper=quantile(Treat_diff_Female_arena_fMS,.975,na.rm=TRUE)

# Permutation test to calculate p value
comb_data=c(D_data_Large_arena$rel_f_cMS,D_data_Small_arena$rel_f_cMS)

diff.observed =  var(na.omit((D_data_Small_arena$rel_f_cMS)))-var(na.omit((D_data_Large_arena$rel_f_cMS)))

number_of_permutations = 100000
diff.random = NULL
for (i in 1 : number_of_permutations) {
  
  # Sample from the combined dataset
  a.random = sample (na.omit(comb_data), length(c(D_data_Large_arena$rel_f_cMS)), TRUE)
  b.random = sample (na.omit(comb_data), length(c(D_data_Small_arena$rel_f_cMS)), TRUE)
  
  # Null (permuated) difference
  diff.random[i] = var(na.omit(b.random)) - var(na.omit(a.random))
}

# P-value is the fraction of how many times the permuted difference is equal or more extreme than the observed difference

t_Treat_diff_Female_arena_fMS_p = sum(abs(diff.random) >= as.numeric(abs(diff.observed)))/   number_of_permutations

# Population size
Treat_diff_Female_pop_fMS=c(Large_pop_F_fMS_bootvar$t)-c(Small_pop_F_fMS_bootvar$t)

t_Treat_diff_Female_pop_fMS=mean(Treat_diff_Female_pop_fMS,na.rm=TRUE)
t_Treat_diff_Female_pop_fMS_lower=quantile(Treat_diff_Female_pop_fMS,.025,na.rm=TRUE)
t_Treat_diff_Female_pop_fMS_upper=quantile(Treat_diff_Female_pop_fMS,.975,na.rm=TRUE)

# Permutation test to calculate p value
comb_data=c(D_data_Small_pop$rel_f_cMS,D_data_Large_pop$rel_f_cMS)

diff.observed = var(na.omit((D_data_Large_pop$rel_f_cMS)))-var(na.omit((D_data_Small_pop$rel_f_cMS))) 

number_of_permutations = 100000
diff.random = NULL
for (i in 1 : number_of_permutations) {
  
  # Sample from the combined dataset
  a.random = sample (na.omit(comb_data), length(c(D_data_Small_pop$rel_f_cMS)), TRUE)
  b.random = sample (na.omit(comb_data), length(c(D_data_Large_pop$rel_f_cMS)), TRUE)
  
  # Null (permuated) difference
  diff.random[i] = var(na.omit(b.random)) - var(na.omit(a.random))
}

# P-value is the fraction of how many times the permuted difference is equal or more extreme than the observed difference

t_Treat_diff_Female_pop_fMS_p = sum(abs(diff.random) >= as.numeric(abs(diff.observed)))/   number_of_permutations

#### Fecundity (Fec) ####
# Arena size
Treat_diff_Female_arena_fFec=c(Small_arena_F_fFec_bootvar$t)-c(Large_arena_F_fFec_bootvar$t)

t_Treat_diff_Female_arena_fFec=mean(Treat_diff_Female_arena_fFec,na.rm=TRUE)
t_Treat_diff_Female_arena_fFec_lower=quantile(Treat_diff_Female_arena_fFec,.025,na.rm=TRUE)
t_Treat_diff_Female_arena_fFec_upper=quantile(Treat_diff_Female_arena_fFec,.975,na.rm=TRUE)

# Permutation test to calculate p value
comb_data=c(D_data_Large_arena$rel_f_fec_pMate,D_data_Small_arena$rel_f_fec_pMate)

diff.observed = var(na.omit((D_data_Small_arena$rel_f_fec_pMate)))-var(na.omit((D_data_Large_arena$rel_f_fec_pMate))) 

number_of_permutations = 100000
diff.random = NULL
for (i in 1 : number_of_permutations) {
  
  # Sample from the combined dataset
  a.random = sample (na.omit(comb_data), length(c(D_data_Large_arena$rel_f_fec_pMate)), TRUE)
  b.random = sample (na.omit(comb_data), length(c(D_data_Small_arena$rel_f_fec_pMate)), TRUE)
  
  # Null (permuated) difference
  diff.random[i] = var(na.omit(b.random)) - var(na.omit(a.random))
}

# P-value is the fraction of how many times the permuted difference is equal or more extreme than the observed difference

t_Treat_diff_Female_arena_fFec_p = sum(abs(diff.random) >= as.numeric(abs(diff.observed)))/   number_of_permutations

# Population size
Treat_diff_Female_pop_fFec=c(Large_pop_F_fFec_bootvar$t)-c(Small_pop_F_fFec_bootvar$t)

t_Treat_diff_Female_pop_fFec=mean(Treat_diff_Female_pop_fFec,na.rm=TRUE)
t_Treat_diff_Female_pop_fFec_lower=quantile(Treat_diff_Female_pop_fFec,.025,na.rm=TRUE)
t_Treat_diff_Female_pop_fFec_upper=quantile(Treat_diff_Female_pop_fFec,.975,na.rm=TRUE)

# Permutation test to calculate p value
comb_data=c(D_data_Small_pop$rel_f_fec_pMate,D_data_Large_pop$rel_f_fec_pMate)

diff.observed =  var(na.omit((D_data_Large_pop$rel_f_fec_pMate)))-var(na.omit((D_data_Small_pop$rel_f_fec_pMate)))

number_of_permutations = 100000
diff.random = NULL
for (i in 1 : number_of_permutations) {
  
  # Sample from the combined dataset
  a.random = sample (na.omit(comb_data), length(c(D_data_Small_pop$rel_f_fec_pMate)), TRUE)
  b.random = sample (na.omit(comb_data), length(c(D_data_Large_pop$rel_f_fec_pMate)), TRUE)
  
  # Null (permuated) difference
  diff.random[i] = var(na.omit(b.random)) - var(na.omit(a.random))
}

# P-value is the fraction of how many times the permuted difference is equal or more extreme than the observed difference

t_Treat_diff_Female_pop_fFec_p = sum(abs(diff.random) >= as.numeric(abs(diff.observed)))/   number_of_permutations

## Treatment comparisons covariances ####
#### mMS vs PS ####
# Arena size
Treat_diff_Male_arena_cov_mMS_PS=c(Small_arena_M_cov_mMS_PS_bootvar$t)-c(Large_arena_M_cov_mMS_PS_bootvar$t)

t_Treat_diff_Male_arena_cov_mMS_PS=mean(Treat_diff_Male_arena_cov_mMS_PS,na.rm=TRUE)
t_Treat_diff_Male_arena_cov_mMS_PS_lower=quantile(Treat_diff_Male_arena_cov_mMS_PS,.025,na.rm=TRUE)
t_Treat_diff_Male_arena_cov_mMS_PS_upper=quantile(Treat_diff_Male_arena_cov_mMS_PS,.975,na.rm=TRUE)

# Permutation test to calculate p value
comb_data=c(D_data_Large_arena$rel_m_cMS,D_data_Small_arena$rel_m_cMS)
comb_data2=c(D_data_Large_arena$rel_m_PS,D_data_Small_arena$rel_m_PS)

diff.observed = 2* cov(((D_data_Small_arena$rel_m_cMS)),((D_data_Small_arena$rel_m_PS)), use = 'pairwise.complete.obs')-2*cov(((D_data_Large_arena$rel_m_cMS)),((D_data_Large_arena$rel_m_PS)), use = 'pairwise.complete.obs')

number_of_permutations = 100000
diff.random = NULL
for (i in 1 : number_of_permutations) {
  
  # Sample from the combined dataset
  a.random = sample ( (comb_data), length(c(D_data_Large_arena$rel_m_cMS)), TRUE)
  b.random = sample ( (comb_data), length(c(D_data_Small_arena$rel_m_cMS)), TRUE)
  c.random = sample ( (comb_data2), length(c(D_data_Large_arena$rel_m_PS)), TRUE)
  d.random = sample ( (comb_data2), length(c(D_data_Small_arena$rel_m_PS)), TRUE)
  # Null (permuated) difference
  diff.random[i] = 2* cov( (a.random), (c.random), use = 'pairwise.complete.obs')-2*cov( (b.random), (d.random), use = 'pairwise.complete.obs')
}

# P-value is the fraction of how many times the permuted difference is equal or more extreme than the observed difference

t_Treat_diff_Male_arena_cov_mMS_PS_p = sum(abs(diff.random) >= as.numeric(abs(diff.observed)))/   number_of_permutations

# Population size
Treat_diff_Male_pop_cov_mMS_PS=c(Large_pop_M_cov_mMS_PS_bootvar$t)-c(Small_pop_M_cov_mMS_PS_bootvar$t)

t_Treat_diff_Male_pop_cov_mMS_PS=mean(Treat_diff_Male_pop_cov_mMS_PS,na.rm=TRUE)
t_Treat_diff_Male_pop_cov_mMS_PS_lower=quantile(Treat_diff_Male_pop_cov_mMS_PS,.025,na.rm=TRUE)
t_Treat_diff_Male_pop_cov_mMS_PS_upper=quantile(Treat_diff_Male_pop_cov_mMS_PS,.975,na.rm=TRUE)

# Permutation test to calculate p value
comb_data=c(D_data_Large_pop$rel_m_cMS,D_data_Small_pop$rel_m_cMS)
comb_data2=c(D_data_Large_pop$rel_m_PS,D_data_Small_pop$rel_m_PS)

diff.observed = 2*cov( ((D_data_Large_pop$rel_m_cMS)), ((D_data_Large_pop$rel_m_PS)), use = 'pairwise.complete.obs')-2*cov( ((D_data_Small_pop$rel_m_cMS)), ((D_data_Small_pop$rel_m_PS)), use = 'pairwise.complete.obs')

number_of_permutations = 100000
diff.random = NULL
for (i in 1 : number_of_permutations) {
  
  # Sample from the combined dataset
  a.random = sample ( (comb_data), length(c(D_data_Large_pop$rel_m_cMS)), TRUE)
  b.random = sample ( (comb_data), length(c(D_data_Small_pop$rel_m_cMS)), TRUE)
  c.random = sample ( (comb_data2), length(c(D_data_Large_pop$rel_m_PS)), TRUE)
  d.random = sample ( (comb_data2), length(c(D_data_Small_pop$rel_m_PS)), TRUE)
  # Null (permuated) difference
  diff.random[i] = 2*cov( (b.random), (d.random), use = 'pairwise.complete.obs')- 2*cov( (a.random), (c.random), use = 'pairwise.complete.obs')
}

# P-value is the fraction of how many times the permuted difference is equal or more extreme than the observed difference

t_Treat_diff_Male_pop_cov_mMS_PS_p = sum(abs(diff.random) >= as.numeric(abs(diff.observed)))/   number_of_permutations

### mMS vs pFec ####
# Arena size
Treat_diff_Male_arena_cov_mMS_pFec=c(Small_arena_M_cov_mMS_pFec_bootvar$t)-c(Large_arena_M_cov_mMS_pFec_bootvar$t)

t_Treat_diff_Male_arena_cov_mMS_pFec=mean(Treat_diff_Male_arena_cov_mMS_pFec,na.rm=TRUE)
t_Treat_diff_Male_arena_cov_mMS_pFec_lower=quantile(Treat_diff_Male_arena_cov_mMS_pFec,.025,na.rm=TRUE)
t_Treat_diff_Male_arena_cov_mMS_pFec_upper=quantile(Treat_diff_Male_arena_cov_mMS_pFec,.975,na.rm=TRUE)

# Permutation test to calculate p value
comb_data=c(D_data_Large_arena$rel_m_cMS,D_data_Small_arena$rel_m_cMS)
comb_data2=c(D_data_Large_arena$rel_m_pFec,D_data_Small_arena$rel_m_pFec)

diff.observed = 2* cov(((D_data_Small_arena$rel_m_cMS)),((D_data_Small_arena$rel_m_pFec)), use = 'pairwise.complete.obs')-2*cov(((D_data_Large_arena$rel_m_cMS)),((D_data_Large_arena$rel_m_pFec)), use = 'pairwise.complete.obs')

number_of_permutations = 100000
diff.random = NULL
for (i in 1 : number_of_permutations) {
  
  # Sample from the combined dataset
  a.random = sample ( (comb_data), length(c(D_data_Large_arena$rel_m_cMS)), TRUE)
  b.random = sample ( (comb_data), length(c(D_data_Small_arena$rel_m_cMS)), TRUE)
  c.random = sample ( (comb_data2), length(c(D_data_Large_arena$rel_m_pFec)), TRUE)
  d.random = sample ( (comb_data2), length(c(D_data_Small_arena$rel_m_pFec)), TRUE)
  # Null (permuated) difference
  diff.random[i] = 2* cov( (a.random), (c.random), use = 'pairwise.complete.obs')-2*cov( (b.random), (d.random), use = 'pairwise.complete.obs')
}

# P-value is the fraction of how many times the permuted difference is equal or more extreme than the observed difference

t_Treat_diff_Male_arena_cov_mMS_pFec_p = sum(abs(diff.random) >= as.numeric(abs(diff.observed)))/   number_of_permutations

# Population size
Treat_diff_Male_pop_cov_mMS_pFec=c(Large_pop_M_cov_mMS_pFec_bootvar$t)-c(Small_pop_M_cov_mMS_pFec_bootvar$t)

t_Treat_diff_Male_pop_cov_mMS_pFec=mean(Treat_diff_Male_pop_cov_mMS_pFec,na.rm=TRUE)
t_Treat_diff_Male_pop_cov_mMS_pFec_lower=quantile(Treat_diff_Male_pop_cov_mMS_pFec,.025,na.rm=TRUE)
t_Treat_diff_Male_pop_cov_mMS_pFec_upper=quantile(Treat_diff_Male_pop_cov_mMS_pFec,.975,na.rm=TRUE)

# Permutation test to calculate p value
comb_data=c(D_data_Large_pop$rel_m_cMS,D_data_Small_pop$rel_m_cMS)
comb_data2=c(D_data_Large_pop$rel_m_pFec,D_data_Small_pop$rel_m_pFec)

diff.observed = 2*cov( ((D_data_Large_pop$rel_m_cMS)), ((D_data_Large_pop$rel_m_pFec)), use = 'pairwise.complete.obs')-2*cov( ((D_data_Small_pop$rel_m_cMS)), ((D_data_Small_pop$rel_m_pFec)), use = 'pairwise.complete.obs')

number_of_permutations = 100000
diff.random = NULL
for (i in 1 : number_of_permutations) {
  
  # Sample from the combined dataset
  a.random = sample ( (comb_data), length(c(D_data_Large_pop$rel_m_cMS)), TRUE)
  b.random = sample ( (comb_data), length(c(D_data_Small_pop$rel_m_cMS)), TRUE)
  c.random = sample ( (comb_data2), length(c(D_data_Large_pop$rel_m_pFec)), TRUE)
  d.random = sample ( (comb_data2), length(c(D_data_Small_pop$rel_m_pFec)), TRUE)
  # Null (permuated) difference
  diff.random[i] = 2*cov( (b.random), (d.random), use = 'pairwise.complete.obs')- 2*cov( (a.random), (c.random), use = 'pairwise.complete.obs')
}

# P-value is the fraction of how many times the permuted difference is equal or more extreme than the observed difference

t_Treat_diff_Male_pop_cov_mMS_pFec_p = sum(abs(diff.random) >= as.numeric(abs(diff.observed)))/   number_of_permutations

### PS vs pFec ####
# Arena size
Treat_diff_Male_arena_cov_PS_pFec=c(Small_arena_M_cov_PS_pFec_bootvar$t)-c(Large_arena_M_cov_PS_pFec_bootvar$t)

t_Treat_diff_Male_arena_cov_PS_pFec=mean(Treat_diff_Male_arena_cov_PS_pFec,na.rm=TRUE)
t_Treat_diff_Male_arena_cov_PS_pFec_lower=quantile(Treat_diff_Male_arena_cov_PS_pFec,.025,na.rm=TRUE)
t_Treat_diff_Male_arena_cov_PS_pFec_upper=quantile(Treat_diff_Male_arena_cov_PS_pFec,.975,na.rm=TRUE)

#Permutation test to calculate p value
comb_data=c(D_data_Large_arena$rel_m_cMS,D_data_Small_arena$rel_m_cMS)
comb_data2=c(D_data_Large_arena$rel_m_pFec,D_data_Small_arena$rel_m_pFec)

diff.observed = 2* cov(((D_data_Small_arena$rel_m_cMS)),((D_data_Small_arena$rel_m_pFec)), use = 'pairwise.complete.obs')-2*cov(((D_data_Large_arena$rel_m_cMS)),((D_data_Large_arena$rel_m_pFec)), use = 'pairwise.complete.obs')

number_of_permutations = 100000
diff.random = NULL
for (i in 1 : number_of_permutations) {
  
  # Sample from the combined dataset
  a.random = sample ( (comb_data), length(c(D_data_Large_arena$rel_m_cMS)), TRUE)
  b.random = sample ( (comb_data), length(c(D_data_Small_arena$rel_m_cMS)), TRUE)
  c.random = sample ( (comb_data2), length(c(D_data_Large_arena$rel_m_pFec)), TRUE)
  d.random = sample ( (comb_data2), length(c(D_data_Small_arena$rel_m_pFec)), TRUE)
  # Null (permuated) difference
  diff.random[i] = 2* cov( (a.random), (c.random), use = 'pairwise.complete.obs')-2*cov( (b.random), (d.random), use = 'pairwise.complete.obs')
}

# P-value is the fraction of how many times the permuted difference is equal or more extreme than the observed difference

t_Treat_diff_Male_arena_cov_PS_pFec_p = sum(abs(diff.random) >= as.numeric(abs(diff.observed)))/   number_of_permutations

# Population size
Treat_diff_Male_pop_cov_PS_pFec=c(Large_pop_M_cov_PS_pFec_bootvar$t)-c(Small_pop_M_cov_PS_pFec_bootvar$t)

t_Treat_diff_Male_pop_cov_PS_pFec=mean(Treat_diff_Male_pop_cov_PS_pFec,na.rm=TRUE)
t_Treat_diff_Male_pop_cov_PS_pFec_lower=quantile(Treat_diff_Male_pop_cov_PS_pFec,.025,na.rm=TRUE)
t_Treat_diff_Male_pop_cov_PS_pFec_upper=quantile(Treat_diff_Male_pop_cov_PS_pFec,.975,na.rm=TRUE)

# Permutation test to calculate p value
comb_data=c(D_data_Large_pop$rel_m_cMS,D_data_Small_pop$rel_m_cMS)
comb_data2=c(D_data_Large_pop$rel_m_pFec,D_data_Small_pop$rel_m_pFec)

diff.observed = 2*cov( ((D_data_Large_pop$rel_m_cMS)), ((D_data_Large_pop$rel_m_pFec)), use = 'pairwise.complete.obs')-2*cov( ((D_data_Small_pop$rel_m_cMS)), ((D_data_Small_pop$rel_m_pFec)), use = 'pairwise.complete.obs')

number_of_permutations = 100000
diff.random = NULL
for (i in 1 : number_of_permutations) {
  
  # Sample from the combined dataset
  a.random = sample ( (comb_data), length(c(D_data_Large_pop$rel_m_cMS)), TRUE)
  b.random = sample ( (comb_data), length(c(D_data_Small_pop$rel_m_cMS)), TRUE)
  c.random = sample ( (comb_data2), length(c(D_data_Large_pop$rel_m_pFec)), TRUE)
  d.random = sample ( (comb_data2), length(c(D_data_Small_pop$rel_m_pFec)), TRUE)
  # Null (permuated) difference
  diff.random[i] = 2*cov( (b.random), (d.random), use = 'pairwise.complete.obs')- 2*cov( (a.random), (c.random), use = 'pairwise.complete.obs')
}

# P-value is the fraction of how many times the permuted difference is equal or more extreme than the observed difference

t_Treat_diff_Male_pop_cov_PS_pFec_p = sum(abs(diff.random) >= as.numeric(abs(diff.observed)))/   number_of_permutations

### Extract data and write results table ####
CompTreat_Table_Male_arena_mMS <- as.data.frame(cbind("Male", "Arena size", "MS", t_Treat_diff_Male_arena_mMS, t_Treat_diff_Male_arena_mMS_lower, t_Treat_diff_Male_arena_mMS_upper, t_Treat_diff_Male_arena_mMS_p))
names(CompTreat_Table_Male_arena_mMS)=c('V1','V2','V3','V4','V5','V6','V7')
CompTreat_Table_Male_arena_mPS <- as.data.frame(cbind("Male", "Arena size", "PS", t_Treat_diff_Male_arena_mPS, t_Treat_diff_Male_arena_mPS_lower, t_Treat_diff_Male_arena_mPS_upper, t_Treat_diff_Male_arena_mPS_p))
names(CompTreat_Table_Male_arena_mPS)=c('V1','V2','V3','V4','V5','V6','V7')
CompTreat_Table_Male_arena_mFec <- as.data.frame(cbind("Male", "Arena size", "pFec", t_Treat_diff_Male_arena_mFec, t_Treat_diff_Male_arena_mFec_lower, t_Treat_diff_Male_arena_mFec_upper, t_Treat_diff_Male_arena_mFec_p))
names(CompTreat_Table_Male_arena_mFec)=c('V1','V2','V3','V4','V5','V6','V7')
CompTreat_Table_Female_arena_fMS <- as.data.frame(cbind("Female", "Arena size", "MS", t_Treat_diff_Female_arena_fMS, t_Treat_diff_Female_arena_fMS_lower, t_Treat_diff_Female_arena_fMS_upper, t_Treat_diff_Female_arena_fMS_p))
names(CompTreat_Table_Female_arena_fMS)=c('V1','V2','V3','V4','V5','V6','V7')
CompTreat_Table_Female_arena_fFec <- as.data.frame(cbind("Female", "Arena size", "Fec", t_Treat_diff_Female_arena_fFec, t_Treat_diff_Female_arena_fFec_lower, t_Treat_diff_Female_arena_fFec_upper, t_Treat_diff_Female_arena_fFec_p))
names(CompTreat_Table_Female_arena_fFec)=c('V1','V2','V3','V4','V5','V6','V7')
CompTreat_Table_Male_pop_mMS <- as.data.frame(cbind("Male", "Population size", "MS", t_Treat_diff_Male_pop_mMS, t_Treat_diff_Male_pop_mMS_lower, t_Treat_diff_Male_pop_mMS_upper, t_Treat_diff_Male_pop_mMS_p))
names(CompTreat_Table_Male_pop_mMS)=c('V1','V2','V3','V4','V5','V6','V7')
CompTreat_Table_Male_pop_mPS <- as.data.frame(cbind("Male", "Population size", "PS", t_Treat_diff_Male_pop_mPS, t_Treat_diff_Male_pop_mPS_lower, t_Treat_diff_Male_pop_mPS_upper, t_Treat_diff_Male_pop_mPS_p))
names(CompTreat_Table_Male_pop_mPS)=c('V1','V2','V3','V4','V5','V6','V7')
CompTreat_Table_Male_pop_mFec <- as.data.frame(cbind("Male", "Population size", "pFec", t_Treat_diff_Male_pop_mFec, t_Treat_diff_Male_pop_mFec_lower, t_Treat_diff_Male_pop_mFec_upper, t_Treat_diff_Male_pop_mFec_p))
names(CompTreat_Table_Male_pop_mFec)=c('V1','V2','V3','V4','V5','V6','V7')
CompTreat_Table_Female_pop_fMS <- as.data.frame(cbind("Female", "Population size", "MS", t_Treat_diff_Female_pop_fMS, t_Treat_diff_Female_pop_fMS_lower, t_Treat_diff_Female_pop_fMS_upper, t_Treat_diff_Female_pop_fMS_p))
names(CompTreat_Table_Female_pop_fMS)=c('V1','V2','V3','V4','V5','V6','V7')
CompTreat_Table_Female_pop_fFec <- as.data.frame(cbind("Female", "Population size", "Fec", t_Treat_diff_Female_pop_fFec, t_Treat_diff_Female_pop_fFec_lower, t_Treat_diff_Female_pop_fFec_upper, t_Treat_diff_Female_pop_fFec_p))
names(CompTreat_Table_Female_pop_fFec)=c('V1','V2','V3','V4','V5','V6','V7')
CompTreat_Treat_diff_Male_arena_cov_mMS_PS <- as.data.frame(cbind("Male", "Arena size", "covMS_PS", t_Treat_diff_Male_arena_cov_mMS_PS, t_Treat_diff_Male_arena_cov_mMS_PS_lower, t_Treat_diff_Male_arena_cov_mMS_PS_upper, t_Treat_diff_Male_arena_cov_mMS_PS_p))
names(CompTreat_Treat_diff_Male_arena_cov_mMS_PS)=c('V1','V2','V3','V4','V5','V6','V7')
CompTreat_Treat_diff_Male_pop_cov_mMS_PS <- as.data.frame(cbind("Male", "Population size", "covMS_PS", t_Treat_diff_Male_pop_cov_mMS_PS, t_Treat_diff_Male_pop_cov_mMS_PS_lower, t_Treat_diff_Male_pop_cov_mMS_PS_upper, t_Treat_diff_Male_pop_cov_mMS_PS_p))
names(CompTreat_Treat_diff_Male_pop_cov_mMS_PS)=c('V1','V2','V3','V4','V5','V6','V7')
CompTreat_Treat_diff_Male_arena_cov_mMS_pFec <- as.data.frame(cbind("Male", "Arena size", "covMS_pFec", t_Treat_diff_Male_arena_cov_mMS_pFec, t_Treat_diff_Male_arena_cov_mMS_pFec_lower, t_Treat_diff_Male_arena_cov_mMS_pFec_upper, t_Treat_diff_Male_arena_cov_mMS_pFec_p))
names(CompTreat_Treat_diff_Male_arena_cov_mMS_pFec)=c('V1','V2','V3','V4','V5','V6','V7')
CompTreat_Treat_diff_Male_pop_cov_mMS_pFec <- as.data.frame(cbind("Male", "Population size", "covMS_pFec", t_Treat_diff_Male_pop_cov_mMS_pFec, t_Treat_diff_Male_pop_cov_mMS_pFec_lower, t_Treat_diff_Male_pop_cov_mMS_pFec_upper, t_Treat_diff_Male_pop_cov_mMS_pFec_p))
names(CompTreat_Treat_diff_Male_pop_cov_mMS_pFec)=c('V1','V2','V3','V4','V5','V6','V7')
CompTreat_Treat_diff_Male_arena_cov_PS_pFec <- as.data.frame(cbind("Male", "Arena size", "covPS_pFec", t_Treat_diff_Male_arena_cov_PS_pFec, t_Treat_diff_Male_arena_cov_PS_pFec_lower, t_Treat_diff_Male_arena_cov_PS_pFec_upper, t_Treat_diff_Male_arena_cov_PS_pFec_p))
names(CompTreat_Treat_diff_Male_arena_cov_PS_pFec)=c('V1','V2','V3','V4','V5','V6','V7')
CompTreat_Treat_diff_Male_pop_cov_PS_pFec <- as.data.frame(cbind("Male", "Population size", "covPS_pFec", t_Treat_diff_Male_pop_cov_PS_pFec, t_Treat_diff_Male_pop_cov_PS_pFec_lower, t_Treat_diff_Male_pop_cov_PS_pFec_upper, t_Treat_diff_Male_pop_cov_PS_pFec_p))
names(CompTreat_Treat_diff_Male_pop_cov_PS_pFec)=c('V1','V2','V3','V4','V5','V6','V7')

Table_VarianceDecomposition_TreatComp <- as.data.frame(as.matrix(rbind(CompTreat_Table_Male_pop_mMS,CompTreat_Table_Male_arena_mMS,
                                                                       CompTreat_Table_Male_pop_mPS,CompTreat_Table_Male_arena_mPS,
                                                                       CompTreat_Table_Male_pop_mFec,CompTreat_Table_Male_arena_mFec,
                                                                       CompTreat_Table_Female_pop_fMS,CompTreat_Table_Female_arena_fMS,
                                                                       CompTreat_Table_Female_pop_fFec,CompTreat_Table_Female_arena_fFec,
                                                                       CompTreat_Treat_diff_Male_pop_cov_mMS_PS,CompTreat_Treat_diff_Male_arena_cov_mMS_PS,
                                                                       CompTreat_Treat_diff_Male_pop_cov_mMS_pFec,CompTreat_Treat_diff_Male_arena_cov_mMS_pFec,
                                                                       CompTreat_Treat_diff_Male_pop_cov_PS_pFec,CompTreat_Treat_diff_Male_arena_cov_PS_pFec)))

colnames(Table_VarianceDecomposition_TreatComp)[1] <- "Sex"
colnames(Table_VarianceDecomposition_TreatComp)[2] <- "Treatment"
colnames(Table_VarianceDecomposition_TreatComp)[3] <- "Variance_component"
colnames(Table_VarianceDecomposition_TreatComp)[4] <- "Variance"
colnames(Table_VarianceDecomposition_TreatComp)[5] <- "l95_CI"
colnames(Table_VarianceDecomposition_TreatComp)[6] <- "u95_CI"
colnames(Table_VarianceDecomposition_TreatComp)[7] <- "p-value"
Table_VarianceDecomposition_TreatComp[,4]=round(as.numeric(Table_VarianceDecomposition_TreatComp[,4]),digits=2)
Table_VarianceDecomposition_TreatComp[,5]=round(as.numeric(Table_VarianceDecomposition_TreatComp[,5]),digits=2)
Table_VarianceDecomposition_TreatComp[,6]=round(as.numeric(Table_VarianceDecomposition_TreatComp[,6]),digits=2)
Table_VarianceDecomposition_TreatComp[,7]=round(as.numeric(Table_VarianceDecomposition_TreatComp[,7]),digits=3)
rownames(Table_VarianceDecomposition_TreatComp) <- c()

Table 6: Influence of density treatment (group and arena size) on the variance components of mating success (MS), fecundity (Fec) and their covariance for females and into mating success (MS), paternity share (PS), partner fecundity (pFec) and their covariances for males estimated via permutation tests. Negative effect sizes indicate larger values at lower density and positive effect sizes larger values at higher density.

kable(PhenVarBoot_Table_plot)
Sex Cov_component Treatment Variance l95_CI u95_CI
Male MS Small population size 0.22 0.14 0.31
Male MS Large population size 0.39 0.24 0.57
Male MS Large arena size 0.36 0.22 0.54
Male MS Small arena size 0.25 0.16 0.37
Male PS Small population size 0.20 0.14 0.28
Male PS Large population size 0.37 0.27 0.46
Male PS Large arena size 0.33 0.24 0.41
Male PS Small arena size 0.25 0.17 0.35
Male pFec Small population size 0.10 0.05 0.17
Male pFec Large population size 0.08 0.03 0.13
Male pFec Large arena size 0.08 0.04 0.14
Male pFec Small arena size 0.09 0.04 0.16
Male cov_mMS_PS Small population size -0.13 -0.25 -0.01
Male cov_mMS_PS Large population size -0.31 -0.50 -0.13
Male cov_mMS_PS Large arena size -0.31 -0.50 -0.15
Male cov_mMS_PS Small arena size -0.13 -0.27 0.01
Male cov_mMS_pFec Small population size 0.05 -0.03 0.15
Male cov_mMS_pFec Large population size 0.01 -0.08 0.09
Male cov_mMS_pFec Large arena size 0.01 -0.08 0.10
Male cov_mMS_pFec Small arena size 0.05 -0.03 0.14
Male cov_PS_pFec Small population size -0.03 -0.15 0.07
Male cov_PS_pFec Large population size -0.08 -0.21 0.03
Male cov_PS_pFec Large arena size -0.03 -0.15 0.07
Male cov_PS_pFec Small arena size -0.08 -0.22 0.03
Female fMS Small population size 0.26 0.18 0.34
Female fMS Large population size 0.60 0.38 0.84
Female fMS Large arena size 0.34 0.21 0.50
Female fMS Small arena size 0.49 0.32 0.70
Female fFec Small population size 1.10 0.65 1.61
Female fFec Large population size 0.79 0.47 1.16
Female fFec Large arena size 1.09 0.61 1.63
Female fFec Small arena size 0.83 0.54 1.14
Female cov_fMS_fFec Small population size -0.22 -0.50 0.04
Female cov_fMS_fFec Large population size -0.13 -0.52 0.22
Female cov_fMS_fFec Large arena size -0.08 -0.40 0.20
Female cov_fMS_fFec Small arena size -0.31 -0.61 -0.02

Decompose male paternity success into insemination and fertilization success

In addition, we partitioned the variance in paternity share into the variance in insemination success (proportion of mating partners that have been inseminated successfully in terms of at least one shared offspring; IS) and fertilization success (proportion of offspring sired from each successfully inseminated mating partner; FS). Hence, while PS is an estimate for the total opportunity for post-copulatory sexual selection, IS gives the opportunity for sexual selection on the ability of males to inseminate females and FS the opportunity for sexual selection on males to outcompete rivals in sperm competition.

## Decompose male paternity success into insemination and fertilization success ####
### Insemination success (IS) ####
# Large arena size
D_data_Large_arena_M_InSuc_n <-as.data.table(D_data_Large_arena$rel_m_InSuc)
c <- function(d, i){
  d2 <- d[i,]
  return(var(d2[,1], na.rm=TRUE))
}
Large_arena_M_InSuc_bootvar <- boot(D_data_Large_arena_M_InSuc_n, c, R=10000)

# Small arena size
D_data_Small_arena_M_InSuc_n <-as.data.table(D_data_Small_arena$rel_m_InSuc)

Small_arena_M_InSuc_bootvar <- boot(D_data_Small_arena_M_InSuc_n, c, R=10000)

# Small group size
D_data_Small_pop_M_InSuc_n <-as.data.table(D_data_Small_pop$rel_m_InSuc)

Small_pop_M_InSuc_bootvar <- boot(D_data_Small_pop_M_InSuc_n, c, R=10000)

# Large group size
D_data_Large_pop_M_InSuc_n <-as.data.table(D_data_Large_pop$rel_m_InSuc)

Large_pop_M_InSuc_bootvar <- boot(D_data_Large_pop_M_InSuc_n, c, R=10000)
rm("c")

### Fertilization success (FS) ####
# Large arena size
D_data_Large_arena_M_feSuc_n <-as.data.table(D_data_Large_arena$rel_m_feSuc)
c <- function(d, i){
  d2 <- d[i,]
  return(var(d2$V1, na.rm=TRUE))
}
Large_arena_M_feSuc_bootvar <- boot(D_data_Large_arena_M_feSuc_n, c, R=10000)

# Small arena size
D_data_Small_arena_M_feSuc_n <-as.data.table(D_data_Small_arena$rel_m_feSuc)

Small_arena_M_feSuc_bootvar <- boot(D_data_Small_arena_M_feSuc_n, c, R=10000)

# Small group size
D_data_Small_pop_M_feSuc_n <-as.data.table(D_data_Small_pop$rel_m_feSuc)

Small_pop_M_feSuc_bootvar <- boot(D_data_Small_pop_M_feSuc_n, c, R=10000)

# Large group size
D_data_Large_pop_M_feSuc_n <-as.data.table(D_data_Large_pop$rel_m_feSuc)

Large_pop_M_feSuc_bootvar <- boot(D_data_Large_pop_M_feSuc_n, c, R=10000)
rm("c")

### Extract data and write results table ####
PhenVarBoot_Table_Male_Large_arena_InSuc <- as.data.frame(cbind("Male", "IS", "Large arena size", mean(Large_arena_M_InSuc_bootvar$t), quantile(Large_arena_M_InSuc_bootvar$t,.025, names = FALSE), quantile(Large_arena_M_InSuc_bootvar$t,.975, names = FALSE)))
PhenVarBoot_Table_Male_Small_arena_InSuc <- as.data.frame(cbind("Male", "IS", "Small arena size", mean(Small_arena_M_InSuc_bootvar$t), quantile(Small_arena_M_InSuc_bootvar$t,.025, names = FALSE), quantile(Small_arena_M_InSuc_bootvar$t,.975, names = FALSE)))
PhenVarBoot_Table_Male_Small_pop_InSuc <- as.data.frame(cbind("Male", "IS", "Small population size", mean(Small_pop_M_InSuc_bootvar$t), quantile(Small_pop_M_InSuc_bootvar$t,.025, names = FALSE), quantile(Small_pop_M_InSuc_bootvar$t,.975, names = FALSE)))
PhenVarBoot_Table_Male_Large_pop_InSuc <- as.data.frame(cbind("Male", "IS", "Large population size", mean(Large_pop_M_InSuc_bootvar$t), quantile(Large_pop_M_InSuc_bootvar$t,.025, names = FALSE), quantile(Large_pop_M_InSuc_bootvar$t,.975, names = FALSE)))

PhenVarBoot_Table_Male_Large_arena_feSuc <- as.data.frame(cbind("Male", "FS", "Large arena size", mean(Large_arena_M_feSuc_bootvar$t), quantile(Large_arena_M_feSuc_bootvar$t,.025, names = FALSE), quantile(Large_arena_M_feSuc_bootvar$t,.975, names = FALSE)))
PhenVarBoot_Table_Male_Small_arena_feSuc <- as.data.frame(cbind("Male", "FS", "Small arena size", mean(Small_arena_M_feSuc_bootvar$t), quantile(Small_arena_M_feSuc_bootvar$t,.025, names = FALSE), quantile(Small_arena_M_feSuc_bootvar$t,.975, names = FALSE)))
PhenVarBoot_Table_Male_Small_pop_feSuc <- as.data.frame(cbind("Male", "FS", "Small population size", mean(Small_pop_M_feSuc_bootvar$t), quantile(Small_pop_M_feSuc_bootvar$t,.025, names = FALSE), quantile(Small_pop_M_feSuc_bootvar$t,.975, names = FALSE)))
PhenVarBoot_Table_Male_Large_pop_feSuc <- as.data.frame(cbind("Male", "FS", "Large population size", mean(Large_pop_M_feSuc_bootvar$t), quantile(Large_pop_M_feSuc_bootvar$t,.025, names = FALSE), quantile(Large_pop_M_feSuc_bootvar$t,.975, names = FALSE)))

PhenVarBoot_Table <- as.data.frame(as.matrix(rbind(PhenVarBoot_Table_Male_Small_pop_MS,PhenVarBoot_Table_Male_Large_pop_MS,
                                                   PhenVarBoot_Table_Male_Large_arena_MS,PhenVarBoot_Table_Male_Small_arena_MS,
                                                   PhenVarBoot_Table_Male_Small_pop_InSuc,PhenVarBoot_Table_Male_Large_pop_InSuc,
                                                   PhenVarBoot_Table_Male_Large_arena_InSuc,PhenVarBoot_Table_Male_Small_arena_InSuc,
                                                   PhenVarBoot_Table_Male_Small_pop_feSuc,PhenVarBoot_Table_Male_Large_pop_feSuc,
                                                   PhenVarBoot_Table_Male_Large_arena_feSuc,PhenVarBoot_Table_Male_Small_arena_feSuc,
                                                   PhenVarBoot_Table_Male_Small_pop_pFec,PhenVarBoot_Table_Male_Large_pop_pFec,
                                                   PhenVarBoot_Table_Male_Large_arena_pFec,PhenVarBoot_Table_Male_Small_arena_pFec,
                                                   PhenVarBoot_Table_Female_Small_pop_fMS,PhenVarBoot_Table_Female_Large_pop_fMS,
                                                   PhenVarBoot_Table_Female_Large_arena_fMS,PhenVarBoot_Table_Female_Small_arena_fMS,
                                                   PhenVarBoot_Table_Female_Small_pop_fFec,PhenVarBoot_Table_Female_Large_pop_fFec,
                                                   PhenVarBoot_Table_Female_Large_arena_fFec,PhenVarBoot_Table_Female_Small_arena_fFec)))

is.table(PhenVarBoot_Table)
colnames(PhenVarBoot_Table)[1] <- "Sex"
colnames(PhenVarBoot_Table)[2] <- "Variance_component"
colnames(PhenVarBoot_Table)[3] <- "Treatment"
colnames(PhenVarBoot_Table)[4] <- "Variance"
colnames(PhenVarBoot_Table)[5] <- "l95_CI"
colnames(PhenVarBoot_Table)[6] <- "u95_CI"
PhenVarBoot_Table[,4]=round(as.numeric(PhenVarBoot_Table[,4]),digits=2)
PhenVarBoot_Table[,5]=round(as.numeric(PhenVarBoot_Table[,5]),digits=2)
PhenVarBoot_Table[,6]=round(as.numeric(PhenVarBoot_Table[,6]),digits=2)
rownames(PhenVarBoot_Table) <- c()

Table S10 (Part 1): Variances of variance decomposition of reproductive success into mating success (MS), insemination success (IS), fertilization success (FS) and partner fecundity (pFec) for males for group and arena size treatment given with mean and 95%CI estimated via bootstrapping.

kable(PhenVarBoot_Table)
Sex Variance_component Treatment Variance l95_CI u95_CI
Male MS Small population size 0.22 0.14 0.31
Male MS Large population size 0.39 0.24 0.57
Male MS Large arena size 0.36 0.22 0.54
Male MS Small arena size 0.25 0.16 0.37
Male IS Small population size 0.39 0.28 0.48
Male IS Large population size 0.37 0.27 0.46
Male IS Large arena size 0.33 0.23 0.41
Male IS Small arena size 0.43 0.32 0.53
Male FS Small population size 0.11 0.07 0.16
Male FS Large population size 0.24 0.17 0.31
Male FS Large arena size 0.20 0.15 0.26
Male FS Small arena size 0.15 0.09 0.23
Male pFec Small population size 0.10 0.05 0.17
Male pFec Large population size 0.08 0.03 0.13
Male pFec Large arena size 0.08 0.04 0.14
Male pFec Small arena size 0.09 0.04 0.16
Female fMS Small population size 0.26 0.18 0.34
Female fMS Large population size 0.60 0.38 0.84
Female fMS Large arena size 0.34 0.21 0.50
Female fMS Small arena size 0.49 0.32 0.70
Female fFec Small population size 1.10 0.65 1.61
Female fFec Large population size 0.79 0.47 1.16
Female fFec Large arena size 1.09 0.61 1.63
Female fFec Small arena size 0.83 0.54 1.14

Compute covariance matrices for IS and FS

Here we compute the covariances for insemination success and fertilization success.

## Compute covariance matrices for IS and FS ####
# Large arena size
# Covariance MS x IS
x5=as.data.frame(cbind(D_data_Large_arena_M_MS_n,D_data_Large_arena_M_InSuc_n))
c <- function(d, i){
  d2 <- d[i,]
  return(2*cov(d2[1],d2[2],use='pairwise.complete.obs'))
}
Large_arena_M_cov_mMS_inSuc_bootvar <- boot(x5, c, R=10000)

# Covariance MS x FS
x6=as.data.frame(cbind(D_data_Large_arena_M_MS_n,D_data_Large_arena_M_feSuc_n))

Large_arena_M_cov_mMS_feSuc_bootvar <- boot(x6, c, R=10000)

# Covariance IS x FS
x8=as.data.frame(cbind(D_data_Large_arena_M_InSuc_n,D_data_Large_arena_M_feSuc_n))

Large_arena_M_cov_inSuc_feSuc_bootvar <- boot(x8, c, R=10000)

# Covariance IS x pFec
x9=as.data.frame(cbind(D_data_Large_arena_M_InSuc_n,D_data_Large_arena_M_pFec_n))

Large_arena_M_cov_inSuc_pFec_bootvar <- boot(x9, c, R=10000)

# Covariance FS x pFec
x10=as.data.frame(cbind(D_data_Large_arena_M_feSuc_n,D_data_Large_arena_M_pFec_n))

Large_arena_M_cov_feSuc_pFec_bootvar <- boot(x10, c, R=10000)

# Extract data and write results table
PhenVarBoot_Table_Male_Large_arena_cov_mMS_inSuc <- as.data.frame(cbind("Male", "cov_MS_IS", "Large arena size", mean(Large_arena_M_cov_mMS_inSuc_bootvar$t), quantile(Large_arena_M_cov_mMS_inSuc_bootvar$t,.025, names = FALSE), quantile(Large_arena_M_cov_mMS_inSuc_bootvar$t,.975, names = FALSE)))
PhenVarBoot_Table_Male_Large_arena_cov_mMS_feSuc <- as.data.frame(cbind("Male", "cov_MS_FS", "Large arena size", mean(Large_arena_M_cov_mMS_feSuc_bootvar$t), quantile(Large_arena_M_cov_mMS_feSuc_bootvar$t,.025, names = FALSE), quantile(Large_arena_M_cov_mMS_feSuc_bootvar$t,.975, names = FALSE)))
PhenVarBoot_Table_Male_Large_arena_cov_inSuc_feSuc <- as.data.frame(cbind("Male", "cov_IS_FS", "Large arena size", mean(Large_arena_M_cov_inSuc_feSuc_bootvar$t), quantile(Large_arena_M_cov_inSuc_feSuc_bootvar$t,.025, names = FALSE), quantile(Large_arena_M_cov_inSuc_feSuc_bootvar$t,.975, names = FALSE)))
PhenVarBoot_Table_Male_Large_arena_cov_inSuc_pFec <- as.data.frame(cbind("Male", "cov_IS_pFec", "Large arena size", mean(Large_arena_M_cov_inSuc_pFec_bootvar$t), quantile(Large_arena_M_cov_inSuc_pFec_bootvar$t,.025, names = FALSE), quantile(Large_arena_M_cov_inSuc_pFec_bootvar$t,.975, names = FALSE)))
PhenVarBoot_Table_Male_Large_arena_cov_feSuc_pFec <- as.data.frame(cbind("Male", "cov_FS_pFec", "Large arena size", mean(Large_arena_M_cov_feSuc_pFec_bootvar$t), quantile(Large_arena_M_cov_feSuc_pFec_bootvar$t,.025, names = FALSE), quantile(Large_arena_M_cov_feSuc_pFec_bootvar$t,.975, names = FALSE)))

PhenVarBoot_Cov_Table_Large_arena <- as.data.frame(as.matrix(rbind(PhenVarBoot_Table_Male_Large_arena_cov_mMS_inSuc,PhenVarBoot_Table_Male_Large_arena_cov_mMS_feSuc,
                                                                  PhenVarBoot_Table_Male_Large_arena_cov_mMS_pFec,PhenVarBoot_Table_Male_Large_arena_cov_inSuc_feSuc,
                                                                  PhenVarBoot_Table_Male_Large_arena_cov_inSuc_pFec,PhenVarBoot_Table_Male_Large_arena_cov_feSuc_pFec,
                                                                  PhenVarBoot_Table_Female_Large_arena_cov_fMS_fFec)),digits=3)

is.table(PhenVarBoot_Cov_Table_Large_arena)
colnames(PhenVarBoot_Cov_Table_Large_arena)[1] <- "Sex"
colnames(PhenVarBoot_Cov_Table_Large_arena)[2] <- "Cov_component"
colnames(PhenVarBoot_Cov_Table_Large_arena)[3] <- "Density"
colnames(PhenVarBoot_Cov_Table_Large_arena)[4] <- "Variance"
colnames(PhenVarBoot_Cov_Table_Large_arena)[5] <- "l95_CI"
colnames(PhenVarBoot_Cov_Table_Large_arena)[6] <- "u95_CI"
PhenVarBoot_Cov_Table_Large_arena[,4]=as.numeric(PhenVarBoot_Cov_Table_Large_arena[,4])
PhenVarBoot_Cov_Table_Large_arena[,5]=as.numeric(PhenVarBoot_Cov_Table_Large_arena[,5])
PhenVarBoot_Cov_Table_Large_arena[,6]=as.numeric(PhenVarBoot_Cov_Table_Large_arena[,6])

# Small arena
# Covariance MS x IS
x5=as.data.frame(cbind(D_data_Small_arena_M_MS_n,D_data_Small_arena_M_InSuc_n))
c <- function(d, i){
  d2 <- d[i,]
  return(2*cov(d2[1],d2[2],use='pairwise.complete.obs'))
}
Small_arena_M_cov_mMS_inSuc_bootvar <- boot(x5, c, R=10000)

# Covariance MS x FS
x6=as.data.frame(cbind(D_data_Small_arena_M_MS_n,D_data_Small_arena_M_feSuc_n))

Small_arena_M_cov_mMS_feSuc_bootvar <- boot(x6, c, R=10000)

# Covariance IS x FS
x8=as.data.frame(cbind(D_data_Small_arena_M_InSuc_n,D_data_Small_arena_M_feSuc_n))

Small_arena_M_cov_inSuc_feSuc_bootvar <- boot(x8, c, R=10000)

# Covariance IS x pFec
x9=as.data.frame(cbind(D_data_Small_arena_M_InSuc_n,D_data_Small_arena_M_pFec_n))

Small_arena_M_cov_inSuc_pFec_bootvar <- boot(x9, c, R=10000)

# Covariance FS x pFec
x10=as.data.frame(cbind(D_data_Small_arena_M_feSuc_n,D_data_Small_arena_M_pFec_n))

Small_arena_M_cov_feSuc_pFec_bootvar <- boot(x10, c, R=10000)

# Extract data and write results table
PhenVarBoot_Table_Male_Small_arena_cov_mMS_inSuc <- as.data.frame(cbind("Male", "cov_MS_IS", "Small arena size", mean(Small_arena_M_cov_mMS_inSuc_bootvar$t), quantile(Small_arena_M_cov_mMS_inSuc_bootvar$t,.025, names = FALSE), quantile(Small_arena_M_cov_mMS_inSuc_bootvar$t,.975, names = FALSE)))
PhenVarBoot_Table_Male_Small_arena_cov_mMS_feSuc <- as.data.frame(cbind("Male", "cov_MS_FS", "Small arena size", mean(Small_arena_M_cov_mMS_feSuc_bootvar$t), quantile(Small_arena_M_cov_mMS_feSuc_bootvar$t,.025, names = FALSE), quantile(Small_arena_M_cov_mMS_feSuc_bootvar$t,.975, names = FALSE)))
PhenVarBoot_Table_Male_Small_arena_cov_inSuc_feSuc <- as.data.frame(cbind("Male", "cov_IS_FS", "Small arena size", mean(Small_arena_M_cov_inSuc_feSuc_bootvar$t), quantile(Small_arena_M_cov_inSuc_feSuc_bootvar$t,.025, names = FALSE), quantile(Small_arena_M_cov_inSuc_feSuc_bootvar$t,.975, names = FALSE)))
PhenVarBoot_Table_Male_Small_arena_cov_inSuc_pFec <- as.data.frame(cbind("Male", "cov_IS_pFec", "Small arena size", mean(Small_arena_M_cov_inSuc_pFec_bootvar$t), quantile(Small_arena_M_cov_inSuc_pFec_bootvar$t,.025, names = FALSE), quantile(Small_arena_M_cov_inSuc_pFec_bootvar$t,.975, names = FALSE)))
PhenVarBoot_Table_Male_Small_arena_cov_feSuc_pFec <- as.data.frame(cbind("Male", "cov_FS_pFec", "Small arena size", mean(Small_arena_M_cov_feSuc_pFec_bootvar$t), quantile(Small_arena_M_cov_feSuc_pFec_bootvar$t,.025, names = FALSE), quantile(Small_arena_M_cov_feSuc_pFec_bootvar$t,.975, names = FALSE)))

PhenVarBoot_Cov_Table_Small_arena <- as.data.frame(as.matrix(rbind(PhenVarBoot_Table_Male_Small_arena_cov_mMS_inSuc,PhenVarBoot_Table_Male_Small_arena_cov_mMS_feSuc,
                                                                  PhenVarBoot_Table_Male_Small_arena_cov_mMS_pFec,PhenVarBoot_Table_Male_Small_arena_cov_inSuc_feSuc,
                                                                  PhenVarBoot_Table_Male_Small_arena_cov_inSuc_pFec,PhenVarBoot_Table_Male_Small_arena_cov_feSuc_pFec,
                                                                  PhenVarBoot_Table_Female_Small_arena_cov_fMS_fFec)),digits=3)

is.table(PhenVarBoot_Cov_Table_Small_arena)
colnames(PhenVarBoot_Cov_Table_Small_arena)[1] <- "Sex"
colnames(PhenVarBoot_Cov_Table_Small_arena)[2] <- "Cov_component"
colnames(PhenVarBoot_Cov_Table_Small_arena)[3] <- "Density"
colnames(PhenVarBoot_Cov_Table_Small_arena)[4] <- "Variance"
colnames(PhenVarBoot_Cov_Table_Small_arena)[5] <- "l95_CI"
colnames(PhenVarBoot_Cov_Table_Small_arena)[6] <- "u95_CI"
PhenVarBoot_Cov_Table_Small_arena[,4]=as.numeric(PhenVarBoot_Cov_Table_Small_arena[,4])
PhenVarBoot_Cov_Table_Small_arena[,5]=as.numeric(PhenVarBoot_Cov_Table_Small_arena[,5])
PhenVarBoot_Cov_Table_Small_arena[,6]=as.numeric(PhenVarBoot_Cov_Table_Small_arena[,6])

# Small group size
# Covariance MS x IS
x5=as.data.frame(cbind(D_data_Small_pop_M_MS_n,D_data_Small_pop_M_InSuc_n))
c <- function(d, i){
  d2 <- d[i,]
  return(2*cov(d2[1],d2[2],use='pairwise.complete.obs'))
}
Small_pop_M_cov_mMS_inSuc_bootvar <- boot(x5, c, R=10000)

# Covariance MS x FS
x6=as.data.frame(cbind(D_data_Small_pop_M_MS_n,D_data_Small_pop_M_feSuc_n))

Small_pop_M_cov_mMS_feSuc_bootvar <- boot(x6, c, R=10000)

# Covariance IS x FS
x8=as.data.frame(cbind(D_data_Small_pop_M_InSuc_n,D_data_Small_pop_M_feSuc_n))

Small_pop_M_cov_inSuc_feSuc_bootvar <- boot(x8, c, R=10000)

# Covariance IS x pFec
x9=as.data.frame(cbind(D_data_Small_pop_M_InSuc_n,D_data_Small_pop_M_pFec_n))

Small_pop_M_cov_inSuc_pFec_bootvar <- boot(x9, c, R=10000)

# Covariance FS x pFec
x10=as.data.frame(cbind(D_data_Small_pop_M_feSuc_n,D_data_Small_pop_M_pFec_n))

Small_pop_M_cov_feSuc_pFec_bootvar <- boot(x10, c, R=10000)

# Extract data and write results table
PhenVarBoot_Table_Male_Small_pop_cov_mMS_inSuc <- as.data.frame(cbind("Male", "cov_MS_IS", "Small population size", mean(Small_pop_M_cov_mMS_inSuc_bootvar$t), quantile(Small_pop_M_cov_mMS_inSuc_bootvar$t,.025, names = FALSE), quantile(Small_pop_M_cov_mMS_inSuc_bootvar$t,.975, names = FALSE)))
PhenVarBoot_Table_Male_Small_pop_cov_mMS_feSuc <- as.data.frame(cbind("Male", "cov_MS_FS", "Small population size", mean(Small_pop_M_cov_mMS_feSuc_bootvar$t), quantile(Small_pop_M_cov_mMS_feSuc_bootvar$t,.025, names = FALSE), quantile(Small_pop_M_cov_mMS_feSuc_bootvar$t,.975, names = FALSE)))
PhenVarBoot_Table_Male_Small_pop_cov_inSuc_feSuc <- as.data.frame(cbind("Male", "cov_IS_FS", "Small population size", mean(Small_pop_M_cov_inSuc_feSuc_bootvar$t), quantile(Small_pop_M_cov_inSuc_feSuc_bootvar$t,.025, names = FALSE), quantile(Small_pop_M_cov_inSuc_feSuc_bootvar$t,.975, names = FALSE)))
PhenVarBoot_Table_Male_Small_pop_cov_inSuc_pFec <- as.data.frame(cbind("Male", "cov_IS_pFec", "Small population size", mean(Small_pop_M_cov_inSuc_pFec_bootvar$t), quantile(Small_pop_M_cov_inSuc_pFec_bootvar$t,.025, names = FALSE), quantile(Small_pop_M_cov_inSuc_pFec_bootvar$t,.975, names = FALSE)))
PhenVarBoot_Table_Male_Small_pop_cov_feSuc_pFec <- as.data.frame(cbind("Male", "cov_FS_pFec", "Small population size", mean(Small_pop_M_cov_feSuc_pFec_bootvar$t), quantile(Small_pop_M_cov_feSuc_pFec_bootvar$t,.025, names = FALSE), quantile(Small_pop_M_cov_feSuc_pFec_bootvar$t,.975, names = FALSE)))

PhenVarBoot_Cov_Table_Small_pop <- as.data.frame(as.matrix(rbind(PhenVarBoot_Table_Male_Small_pop_cov_mMS_inSuc,PhenVarBoot_Table_Male_Small_pop_cov_mMS_feSuc,
                                                                 PhenVarBoot_Table_Male_Small_pop_cov_mMS_pFec,PhenVarBoot_Table_Male_Small_pop_cov_inSuc_feSuc,
                                                                 PhenVarBoot_Table_Male_Small_pop_cov_inSuc_pFec,PhenVarBoot_Table_Male_Small_pop_cov_feSuc_pFec,
                                                                 PhenVarBoot_Table_Female_Small_pop_cov_fMS_fFec)),digits=3)

is.table(PhenVarBoot_Cov_Table_Small_pop)
colnames(PhenVarBoot_Cov_Table_Small_pop)[1] <- "Sex"
colnames(PhenVarBoot_Cov_Table_Small_pop)[2] <- "Cov_component"
colnames(PhenVarBoot_Cov_Table_Small_pop)[3] <- "Density"
colnames(PhenVarBoot_Cov_Table_Small_pop)[4] <- "Variance"
colnames(PhenVarBoot_Cov_Table_Small_pop)[5] <- "l95_CI"
colnames(PhenVarBoot_Cov_Table_Small_pop)[6] <- "u95_CI"
PhenVarBoot_Cov_Table_Small_pop[,4]=as.numeric(PhenVarBoot_Cov_Table_Small_pop[,4])
PhenVarBoot_Cov_Table_Small_pop[,5]=as.numeric(PhenVarBoot_Cov_Table_Small_pop[,5])
PhenVarBoot_Cov_Table_Small_pop[,6]=as.numeric(PhenVarBoot_Cov_Table_Small_pop[,6])

# Large group size
# Covariance MS x IS
x5=as.data.frame(cbind(D_data_Large_pop_M_MS_n,D_data_Large_pop_M_InSuc_n))
c <- function(d, i){
  d2 <- d[i,]
  return(2*cov(d2[1],d2[2],use='pairwise.complete.obs'))
}
Large_pop_M_cov_mMS_inSuc_bootvar <- boot(x5, c, R=10000)

# Covariance MS x FS
x6=as.data.frame(cbind(D_data_Large_pop_M_MS_n,D_data_Large_pop_M_feSuc_n))

Large_pop_M_cov_mMS_feSuc_bootvar <- boot(x6, c, R=10000)

# Covariance IS x FS
x8=as.data.frame(cbind(D_data_Large_pop_M_InSuc_n,D_data_Large_pop_M_feSuc_n))

Large_pop_M_cov_inSuc_feSuc_bootvar <- boot(x8, c, R=10000)

# Covariance IS x pFec
x9=as.data.frame(cbind(D_data_Large_pop_M_InSuc_n,D_data_Large_pop_M_pFec_n))

Large_pop_M_cov_inSuc_pFec_bootvar <- boot(x9, c, R=10000)

# Covariance FS x pFec
x10=as.data.frame(cbind(D_data_Large_pop_M_feSuc_n,D_data_Large_pop_M_pFec_n))

Large_pop_M_cov_feSuc_pFec_bootvar <- boot(x10, c, R=10000)
rm('c')

# Extract data and write results table
PhenVarBoot_Table_Male_Large_pop_cov_mMS_inSuc <- as.data.frame(cbind("Male", "cov_MS_IS", "Large population size", mean(Large_pop_M_cov_mMS_inSuc_bootvar$t), quantile(Large_pop_M_cov_mMS_inSuc_bootvar$t,.025, names = FALSE), quantile(Large_pop_M_cov_mMS_inSuc_bootvar$t,.975, names = FALSE)))
PhenVarBoot_Table_Male_Large_pop_cov_mMS_feSuc <- as.data.frame(cbind("Male", "cov_MS_FS", "Large population size", mean(Large_pop_M_cov_mMS_feSuc_bootvar$t), quantile(Large_pop_M_cov_mMS_feSuc_bootvar$t,.025, names = FALSE), quantile(Large_pop_M_cov_mMS_feSuc_bootvar$t,.975, names = FALSE)))
PhenVarBoot_Table_Male_Large_pop_cov_inSuc_feSuc <- as.data.frame(cbind("Male", "cov_IS_FS", "Large population size", mean(Large_pop_M_cov_inSuc_feSuc_bootvar$t), quantile(Large_pop_M_cov_inSuc_feSuc_bootvar$t,.025, names = FALSE), quantile(Large_pop_M_cov_inSuc_feSuc_bootvar$t,.975, names = FALSE)))
PhenVarBoot_Table_Male_Large_pop_cov_inSuc_pFec <- as.data.frame(cbind("Male", "cov_IS_pFec", "Large population size", mean(Large_pop_M_cov_inSuc_pFec_bootvar$t), quantile(Large_pop_M_cov_inSuc_pFec_bootvar$t,.025, names = FALSE), quantile(Large_pop_M_cov_inSuc_pFec_bootvar$t,.975, names = FALSE)))
PhenVarBoot_Table_Male_Large_pop_cov_feSuc_pFec <- as.data.frame(cbind("Male", "cov_FS_pFec", "Large population size", mean(Large_pop_M_cov_feSuc_pFec_bootvar$t), quantile(Large_pop_M_cov_feSuc_pFec_bootvar$t,.025, names = FALSE), quantile(Large_pop_M_cov_feSuc_pFec_bootvar$t,.975, names = FALSE)))

PhenVarBoot_Cov_Table_Large_pop <- as.data.frame(as.matrix(rbind(PhenVarBoot_Table_Male_Large_pop_cov_mMS_inSuc,PhenVarBoot_Table_Male_Large_pop_cov_mMS_feSuc,
                                                                 PhenVarBoot_Table_Male_Large_pop_cov_mMS_pFec,PhenVarBoot_Table_Male_Large_pop_cov_inSuc_feSuc,
                                                                 PhenVarBoot_Table_Male_Large_pop_cov_inSuc_pFec,PhenVarBoot_Table_Male_Large_pop_cov_feSuc_pFec,
                                                                 PhenVarBoot_Table_Female_Large_pop_cov_fMS_fFec)),digits=3)

is.table(PhenVarBoot_Cov_Table_Large_pop)
colnames(PhenVarBoot_Cov_Table_Large_pop)[1] <- "Sex"
colnames(PhenVarBoot_Cov_Table_Large_pop)[2] <- "Cov_component"
colnames(PhenVarBoot_Cov_Table_Large_pop)[3] <- "Density"
colnames(PhenVarBoot_Cov_Table_Large_pop)[4] <- "Variance"
colnames(PhenVarBoot_Cov_Table_Large_pop)[5] <- "l95_CI"
colnames(PhenVarBoot_Cov_Table_Large_pop)[6] <- "u95_CI"
PhenVarBoot_Cov_Table_Large_pop[,4]=as.numeric(PhenVarBoot_Cov_Table_Large_pop[,4])
PhenVarBoot_Cov_Table_Large_pop[,5]=as.numeric(PhenVarBoot_Cov_Table_Large_pop[,5])
PhenVarBoot_Cov_Table_Large_pop[,6]=as.numeric(PhenVarBoot_Cov_Table_Large_pop[,6])

### Extract data and write results table ####
PhenVarBoot_Table_plot_cov <- as.data.frame(as.matrix(rbind( PhenVarBoot_Table_Male_Small_pop_cov_mMS_inSuc,PhenVarBoot_Table_Male_Large_pop_cov_mMS_inSuc,
                                                             PhenVarBoot_Table_Male_Large_arena_cov_mMS_inSuc,PhenVarBoot_Table_Male_Small_arena_cov_mMS_inSuc,
                                                             PhenVarBoot_Table_Male_Small_pop_cov_mMS_feSuc,PhenVarBoot_Table_Male_Large_pop_cov_mMS_feSuc,
                                                             PhenVarBoot_Table_Male_Large_arena_cov_mMS_feSuc,PhenVarBoot_Table_Male_Small_arena_cov_mMS_feSuc,
                                                             PhenVarBoot_Table_Male_Small_pop_cov_mMS_pFec,PhenVarBoot_Table_Male_Large_pop_cov_mMS_pFec,
                                                             PhenVarBoot_Table_Male_Large_arena_cov_mMS_pFec,PhenVarBoot_Table_Male_Small_arena_cov_mMS_pFec,
                                                             PhenVarBoot_Table_Male_Small_pop_cov_inSuc_feSuc,PhenVarBoot_Table_Male_Large_pop_cov_inSuc_feSuc,
                                                             PhenVarBoot_Table_Male_Large_arena_cov_inSuc_feSuc,PhenVarBoot_Table_Male_Small_arena_cov_inSuc_feSuc,
                                                             PhenVarBoot_Table_Male_Small_pop_cov_inSuc_pFec,PhenVarBoot_Table_Male_Large_pop_cov_inSuc_pFec,
                                                             PhenVarBoot_Table_Male_Large_arena_cov_inSuc_pFec,PhenVarBoot_Table_Male_Small_arena_cov_inSuc_pFec,
                                                             PhenVarBoot_Table_Male_Small_pop_cov_feSuc_pFec,PhenVarBoot_Table_Male_Large_pop_cov_feSuc_pFec,
                                                             PhenVarBoot_Table_Male_Large_arena_cov_feSuc_pFec,PhenVarBoot_Table_Male_Small_arena_cov_feSuc_pFec,
                                                             PhenVarBoot_Table_Female_Small_pop_cov_fMS_fFec,PhenVarBoot_Table_Female_Large_pop_cov_fMS_fFec,
                                                             PhenVarBoot_Table_Female_Large_arena_cov_fMS_fFec,PhenVarBoot_Table_Female_Small_arena_cov_fMS_fFec
)))

is.table(PhenVarBoot_Table_plot_cov)
colnames(PhenVarBoot_Table_plot_cov)[1] <- "Sex"
colnames(PhenVarBoot_Table_plot_cov)[2] <- "Cov_component"
colnames(PhenVarBoot_Table_plot_cov)[3] <- "Treatment"
colnames(PhenVarBoot_Table_plot_cov)[4] <- "Variance"
colnames(PhenVarBoot_Table_plot_cov)[5] <- "l95_CI"
colnames(PhenVarBoot_Table_plot_cov)[6] <- "u95_CI"
PhenVarBoot_Table_plot_cov[,4]=round(as.numeric(PhenVarBoot_Table_plot_cov[,4]),digits=2)
PhenVarBoot_Table_plot_cov[,5]=round(as.numeric(PhenVarBoot_Table_plot_cov[,5]),digits=2)
PhenVarBoot_Table_plot_cov[,6]=round(as.numeric(PhenVarBoot_Table_plot_cov[,6]),digits=2)
rownames(PhenVarBoot_Table_plot_cov) <- c()

Table S10 (Part 2): Covariances of variance decomposition of reproductive success into mating success (MS), insemination success (IS), fertilization success (FS) and partner fecundity (pFec) for males for group and arena size treatment given with mean and 95%CI estimated via bootstrapping.

kable(PhenVarBoot_Table_plot_cov)
Sex Cov_component Treatment Variance l95_CI u95_CI
Male cov_MS_IS Small population size -0.04 -0.18 0.11
Male cov_MS_IS Large population size -0.26 -0.40 -0.12
Male cov_MS_IS Large arena size -0.30 -0.45 -0.17
Male cov_MS_IS Small arena size 0.00 -0.15 0.15
Male cov_MS_FS Small population size 0.02 -0.07 0.13
Male cov_MS_FS Large population size -0.04 -0.22 0.14
Male cov_MS_FS Large arena size -0.03 -0.20 0.14
Male cov_MS_FS Small arena size 0.01 -0.09 0.13
Male cov_mMS_pFec Small population size 0.05 -0.03 0.15
Male cov_mMS_pFec Large population size 0.01 -0.08 0.09
Male cov_mMS_pFec Large arena size 0.01 -0.08 0.10
Male cov_mMS_pFec Small arena size 0.05 -0.03 0.14
Male cov_IS_FS Small population size -0.04 -0.13 0.05
Male cov_IS_FS Large population size -0.04 -0.16 0.08
Male cov_IS_FS Large arena size -0.04 -0.14 0.07
Male cov_IS_FS Small arena size -0.04 -0.14 0.06
Male cov_IS_pFec Small population size 0.01 -0.09 0.10
Male cov_IS_pFec Large population size -0.05 -0.11 0.01
Male cov_IS_pFec Large arena size -0.02 -0.10 0.04
Male cov_IS_pFec Small arena size -0.02 -0.10 0.06
Male cov_FS_pFec Small population size -0.02 -0.09 0.04
Male cov_FS_pFec Large population size -0.03 -0.12 0.06
Male cov_FS_pFec Large arena size 0.00 -0.08 0.08
Male cov_FS_pFec Small arena size -0.05 -0.15 0.03
Female cov_fMS_fFec Small population size -0.22 -0.50 0.04
Female cov_fMS_fFec Large population size -0.13 -0.52 0.22
Female cov_fMS_fFec Large arena size -0.08 -0.40 0.20
Female cov_fMS_fFec Small arena size -0.31 -0.61 -0.02

Plot: Variance decomposition for males including IS and FS (Figure S8)

We plotted the variance decomposition including insemination success and fertilization success.

## Plot: Variance decomposition for males including IS and FS #### 
# Set factors and levels for plot
PhenVarBoot_Table_plot_cov$Treatment<- factor(PhenVarBoot_Table_plot_cov$Treatment, levels=c("Small population size",'Large population size','Large arena size','Small arena size'))
PhenVarBoot_Table_plot_cov$Cov_component <- factor(PhenVarBoot_Table_plot_cov$Cov_component, levels=c("cov_MS_IS",'cov_MS_FS','cov_MS_pFec','cov_IS_FS','cov_IS_pFec','cov_FS_pFec','cov_MS_Fec'))
PhenVarBoot_Table_plot_cov_arena=PhenVarBoot_Table_plot_cov[PhenVarBoot_Table_plot_cov$Treatment!='Large population size',]
PhenVarBoot_Table_plot_cov_arena=PhenVarBoot_Table_plot_cov_arena[PhenVarBoot_Table_plot_cov_arena$Treatment!='Small population size',]
PhenVarBoot_Table_plot_cov_pop=PhenVarBoot_Table_plot_cov[PhenVarBoot_Table_plot_cov$Treatment!='Large arena size',]
PhenVarBoot_Table_plot_cov_pop=PhenVarBoot_Table_plot_cov_pop[PhenVarBoot_Table_plot_cov_pop$Treatment!='Small arena size',]

PhenVarBoot_Table$Treatment<- factor(PhenVarBoot_Table$Treatment, levels=c("Small population size",'Large population size','Large arena size','Small arena size'))
PhenVarBoot_Table$Variance_component <- factor(PhenVarBoot_Table$Variance_component, levels=c("MS",'IS','FS','pFec','cov_mMS_PS','cov_mMS_pFec','cov_PS_pFec','fMS','fFec','cov_fMS_fFec'))
PhenVarBoot_Table_arena=PhenVarBoot_Table[PhenVarBoot_Table$Treatment!='Large population size',]
PhenVarBoot_Table_arena=PhenVarBoot_Table_arena[PhenVarBoot_Table_arena$Treatment!='Small population size',]
PhenVarBoot_Table_pop=PhenVarBoot_Table[PhenVarBoot_Table$Treatment!='Large arena size',]
PhenVarBoot_Table_pop=PhenVarBoot_Table_pop[PhenVarBoot_Table_pop$Treatment!='Small arena size',]

### Plot: Variance decomposition for population size including IS and FS #### 
BarPlot_5_2<- ggplot(PhenVarBoot_Table_pop[1:8,], aes(x=Variance_component, y=Variance, alpha=Treatment)) + 
  scale_y_continuous(limits = c(0, 0.6), breaks = seq(0,0.6,0.15), expand = c(0 ,0)) + 
  geom_hline(yintercept=0, linetype="solid", color = "black", size=1) +
  geom_bar(stat="identity", color="black", position=position_dodge(),fill=colpal2[2]) +
  geom_errorbar(aes(ymin=l95_CI, ymax=u95_CI, group = Treatment), width=.3,size=.5,alpha=1, position=position_dodge(.9)) +
  ylab('Variance') +xlab('') +ggtitle('')+labs(tag = "A")+
  scale_x_discrete(breaks=waiver(),labels = c('MS','IS','FS','pFec'))+ 
   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.9),
        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"))+
  scale_alpha_manual(values=c(0.65,1),name = "Treatment", labels = c('Small group','Large group'))

### Plot: Variance decomposition for arena size including IS and FS #### 
BarPlot_6_2<-ggplot(PhenVarBoot_Table_arena[1:8,], aes(x=Variance_component, y=Variance, alpha=Treatment)) + 
  scale_y_continuous(limits = c(0, 0.6), breaks = seq(0,0.6,0.15), expand = c(0 ,0)) + 
  geom_hline(yintercept=0, linetype="solid", color = "black", size=1) +
  geom_bar(stat="identity", color="black", position=position_dodge(),fill=colpal2[2]) +
  geom_errorbar(aes(ymin=l95_CI, ymax=u95_CI, group = Treatment), width=.3,size=.5,alpha=1, position=position_dodge(.9)) +
  ylab('') +xlab('') +ggtitle('')+labs(tag = "B")+
  scale_x_discrete(breaks=waiver(),labels = c('MS','IS','FS','pFec'))+
  scale_alpha_manual(values=c(0.65,1),name = "Treatment", labels = c('Large arena','Small arena'))+
  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(), 
        legend.position = c(0.8, 0.9),
        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"))

### Plot: Covariances for population size including IS and FS #### 
BarPlot_1cv<- ggplot(PhenVarBoot_Table_plot_cov_pop[1:12,], aes(x=Cov_component, y=Variance, alpha=Treatment)) + 
  scale_y_continuous(limits = c(-0.50, 0.35), breaks = seq(-0.5, 0.25, 0.25), expand = c(0 ,0)) + 
  geom_hline(yintercept=0, linetype="solid", color = "black", size=1) +
  geom_bar(stat="identity", color="black", position=position_dodge(),fill=colpal2[2]) +
  geom_errorbar(aes(ymin=l95_CI, ymax=u95_CI, group = Treatment), width=.3,size=.5,alpha=1, position=position_dodge(.9)) +
  ylab('Variance') +xlab('') +ggtitle('')+labs(tag = "A")+
  scale_x_discrete(breaks=waiver(),labels = c('2 cov\n(MS,\nIS)','2 cov\n(MS,\nFS)','2 cov\n(MS,\npFec)','2 cov\n(IS,\nFS)','2 x cov\n(IS,\npFec)','2 cov\n(FS,\npFec)'))+ 
  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.9),
        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=7, 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"))+
  scale_alpha_manual(values=c(0.65,1),name = "Treatment", labels = c('Small group','Large group'))

### Plot: Covariances for arena size including IS and FS #### 
BarPlot_2cv<-ggplot(PhenVarBoot_Table_plot_cov_arena[1:12,], aes(x=Cov_component, y=Variance, alpha=Treatment)) + 
  scale_y_continuous(limits = c(-0.50, 0.35), breaks = seq(-0.5, 0.25, 0.25), expand = c(0 ,0)) + 
  geom_hline(yintercept=0, linetype="solid", color = "black", size=1) +
  geom_bar(stat="identity", color="black", position=position_dodge(),fill=colpal2[2]) +
  geom_errorbar(aes(ymin=l95_CI, ymax=u95_CI, group = Treatment), width=.3,size=.5,alpha=1, position=position_dodge(.9)) +
  ylab('') +xlab('') +ggtitle('')+labs(tag = "B")+
  scale_x_discrete(breaks=waiver(),labels = c('2 cov\n(MS,\nIS)','2 cov\n(MS,\nFS)','2 cov\n(MS,\npFec)','2 cov\n(IS,\nFS)','2 cov\n(IS,\npFec)','2 cov\n(FS,\npFec)'))+ 
  scale_alpha_manual(values=c(0.65,1),name = "Treatment", labels = c('Large arena','Small arena'))+
  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(), 
        legend.position = c(0.8, 0.9),
        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=7, 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"))

Figure S7

### Figure S8
Figure_S7<-grid.arrange(BarPlot_5_2+labs(tag = "A"),BarPlot_6_2+labs(tag = "B"),BarPlot_1cv+labs(tag = "C")+xlab('Variance component'),BarPlot_2cv+labs(tag = "D")+xlab('Variance component'), nrow = 2,ncol=2)
Figure S7: Variance (A + B) and covariance (C + D) components of reproductive success into mating success (MS), insemination success (IS), fertilization success (FS) and partner fecundity (pFec) for males for group size treatment (A + C) and arena size treatment (B + D). Mean and 95%CI estimated via bootstrapping (Table S7).

Figure S7: Variance (A + B) and covariance (C + D) components of reproductive success into mating success (MS), insemination success (IS), fertilization success (FS) and partner fecundity (pFec) for males for group size treatment (A + C) and arena size treatment (B + D). Mean and 95%CI estimated via bootstrapping (Table S7).

Fig_S7=plot_grid(Figure_S7, ncol=1, rel_heights=c(0.1, 1)) # rel_heights values control title margins

Permuation test for treatment comparison of variance decomposition including IS and FS

Finally, we tested if the (co-) variance components insemination success and fertilization success differed between the treatments (large vs small population size & small vs large arena size).

## Permuation test for treatment comparison of variance decomposition including IS and FS ####
### Insemination success (IS) ####
# Arena size
Treat_diff_Male_arena_InSuc=c(Small_arena_M_InSuc_bootvar$t)-c(Large_arena_M_InSuc_bootvar$t)

t_Treat_diff_Male_arena_InSuc=mean(Treat_diff_Male_arena_InSuc,na.rm=TRUE)
t_Treat_diff_Male_arena_InSuc_lower=quantile(Treat_diff_Male_arena_InSuc,.025,na.rm=TRUE)
t_Treat_diff_Male_arena_InSuc_upper=quantile(Treat_diff_Male_arena_InSuc,.975,na.rm=TRUE)

# Permutation test to calculate p value
comb_data=c(D_data_Large_arena$rel_m_InSuc,D_data_Small_arena$rel_m_InSuc)

diff.observed = var(na.omit((D_data_Small_arena$rel_m_InSuc)))-var(na.omit((D_data_Large_arena$rel_m_InSuc)))

number_of_permutations = 100000
diff.random = NULL
for (i in 1 : number_of_permutations) {
  
  # Sample from the combined dataset
  a.random = sample (na.omit(comb_data), length(c(D_data_Large_arena$rel_m_InSuc)), TRUE)
  b.random = sample (na.omit(comb_data), length(c(D_data_Small_arena$rel_m_InSuc)), TRUE)
  
  # Null (permuated) difference
  diff.random[i] =  var(na.omit(a.random))-var(na.omit(b.random))
}

# P-value is the fraction of how many times the permuted difference is equal or more extreme than the observed difference

t_Treat_diff_Male_arena_InSuc_p = sum(abs(diff.random) >= as.numeric(abs(diff.observed)))/   number_of_permutations

# Population size
Treat_diff_Male_pop_InSuc=c(Large_pop_M_InSuc_bootvar$t)-c(Small_pop_M_InSuc_bootvar$t)

t_Treat_diff_Male_pop_InSuc=mean(Treat_diff_Male_pop_InSuc,na.rm=TRUE)
t_Treat_diff_Male_pop_InSuc_lower=quantile(Treat_diff_Male_pop_InSuc,.025,na.rm=TRUE)
t_Treat_diff_Male_pop_InSuc_upper=quantile(Treat_diff_Male_pop_InSuc,.975,na.rm=TRUE)

# Permutation test to calculate p value
comb_data=c(D_data_Small_pop$rel_m_InSuc,D_data_Large_pop$rel_m_InSuc)

diff.observed = var(na.omit((D_data_Large_pop$rel_m_InSuc)))-var(na.omit((D_data_Small_pop$rel_m_InSuc))) 

number_of_permutations = 100000
diff.random = NULL
for (i in 1 : number_of_permutations) {
  
  # Sample from the combined dataset
  a.random = sample (na.omit(comb_data), length(c(D_data_Small_pop$rel_m_InSuc)), TRUE)
  b.random = sample (na.omit(comb_data), length(c(D_data_Large_pop$rel_m_InSuc)), TRUE)
  
  # Null (permuated) difference
  diff.random[i] =  var(na.omit(a.random))-var(na.omit(b.random))
}

# P-value is the fraction of how many times the permuted difference is equal or more extreme than the observed difference

t_Treat_diff_Male_pop_InSuc_p = sum(abs(diff.random) >= as.numeric(abs(diff.observed)))/   number_of_permutations

### Fertilization success (FS) ####
# Arena size
Treat_diff_Male_arena_feSuc=c(Small_arena_M_feSuc_bootvar$t)-c(Large_arena_M_feSuc_bootvar$t)

t_Treat_diff_Male_arena_feSuc=mean(Treat_diff_Male_arena_feSuc,na.rm=TRUE)
t_Treat_diff_Male_arena_feSuc_lower=quantile(Treat_diff_Male_arena_feSuc,.025,na.rm=TRUE)
t_Treat_diff_Male_arena_feSuc_upper=quantile(Treat_diff_Male_arena_feSuc,.975,na.rm=TRUE)

# Permutation test to calculate p value
comb_data=c(D_data_Large_arena$rel_m_feSuc,D_data_Small_arena$rel_m_feSuc)

diff.observed =  var(na.omit((D_data_Small_arena$rel_m_feSuc)))-var(na.omit((D_data_Large_arena$rel_m_feSuc)))

number_of_permutations = 100000
diff.random = NULL
for (i in 1 : number_of_permutations) {
  
  # Sample from the combined dataset
  a.random = sample (na.omit(comb_data), length(c(D_data_Large_arena$rel_m_feSuc)), TRUE)
  b.random = sample (na.omit(comb_data), length(c(D_data_Small_arena$rel_m_feSuc)), TRUE)
  
  # Null (permuated) difference
  diff.random[i] = var(na.omit(a.random)) - var(na.omit(b.random))
}

# P-value is the fraction of how many times the permuted difference is equal or more extreme than the observed difference

t_Treat_diff_Male_arena_feSuc_p = sum(abs(diff.random) >= as.numeric(abs(diff.observed)))/   number_of_permutations

# Population size
Treat_diff_Male_pop_feSuc=c(Large_pop_M_feSuc_bootvar$t)-c(Small_pop_M_feSuc_bootvar$t)

t_Treat_diff_Male_pop_feSuc=mean(Treat_diff_Male_pop_feSuc,na.rm=TRUE)
t_Treat_diff_Male_pop_feSuc_lower=quantile(Treat_diff_Male_pop_feSuc,.025,na.rm=TRUE)
t_Treat_diff_Male_pop_feSuc_upper=quantile(Treat_diff_Male_pop_feSuc,.975,na.rm=TRUE)

# Permutation test to calculate p value
comb_data=c(D_data_Small_pop$rel_m_feSuc,D_data_Large_pop$rel_m_feSuc)

diff.observed =  var(na.omit((D_data_Large_pop$rel_m_feSuc)))-var(na.omit((D_data_Small_pop$rel_m_feSuc)))

number_of_permutations = 100000
diff.random = NULL
for (i in 1 : number_of_permutations) {
  
  # Sample from the combined dataset
  a.random = sample (na.omit(comb_data), length(c(D_data_Small_pop$rel_m_feSuc)), TRUE)
  b.random = sample (na.omit(comb_data), length(c(D_data_Large_pop$rel_m_feSuc)), TRUE)
  
  # Null (permuated) difference
  diff.random[i] = var(na.omit(a.random)) - var(na.omit(b.random))
}

# P-value is the fraction of how many times the permuted difference is equal or more extreme than the observed difference

t_Treat_diff_Male_pop_feSuc_p = sum(abs(diff.random) >= as.numeric(abs(diff.observed)))/   number_of_permutations

### Extract data and write results table ####
CompTreat_Table_Male_arena_InSuc <- as.data.frame(cbind("Male", "Arena size", "IS", t_Treat_diff_Male_arena_InSuc, t_Treat_diff_Male_arena_InSuc_lower, t_Treat_diff_Male_arena_InSuc_upper, t_Treat_diff_Male_arena_InSuc_p))
names(CompTreat_Table_Male_arena_InSuc)=c('V1','V2','V3','V4','V5','V6','V7')
CompTreat_Table_Male_arena_feSuc <- as.data.frame(cbind("Male", "Arena size", "FS", t_Treat_diff_Male_arena_feSuc, t_Treat_diff_Male_arena_feSuc_lower, t_Treat_diff_Male_arena_feSuc_upper, t_Treat_diff_Male_arena_feSuc_p))
names(CompTreat_Table_Male_arena_feSuc)=c('V1','V2','V3','V4','V5','V6','V7')
CompTreat_Table_Male_pop_InSuc <- as.data.frame(cbind("Male", "Population size", "IS", t_Treat_diff_Male_pop_InSuc, t_Treat_diff_Male_pop_InSuc_lower, t_Treat_diff_Male_pop_InSuc_upper, t_Treat_diff_Male_pop_InSuc_p))
names(CompTreat_Table_Male_pop_InSuc)=c('V1','V2','V3','V4','V5','V6','V7')
CompTreat_Table_Male_pop_feSuc <- as.data.frame(cbind("Male", "Population size", "FS", t_Treat_diff_Male_pop_feSuc, t_Treat_diff_Male_pop_feSuc_lower, t_Treat_diff_Male_pop_feSuc_upper, t_Treat_diff_Male_pop_feSuc_p))
names(CompTreat_Table_Male_pop_feSuc)=c('V1','V2','V3','V4','V5','V6','V7')

Table_VarianceDecomposition_TreatComp <- as.data.frame(as.matrix(rbind(CompTreat_Table_Male_pop_mMS,CompTreat_Table_Male_arena_mMS,
                                                                       CompTreat_Table_Male_pop_InSuc,CompTreat_Table_Male_arena_InSuc,
                                                                       CompTreat_Table_Male_pop_feSuc,CompTreat_Table_Male_arena_feSuc,
                                                                       CompTreat_Table_Male_pop_mFec,CompTreat_Table_Male_arena_mFec,
                                                                       CompTreat_Table_Female_pop_fMS,CompTreat_Table_Female_arena_fMS,
                                                                       CompTreat_Table_Female_pop_fFec,CompTreat_Table_Female_arena_fFec)))

colnames(Table_VarianceDecomposition_TreatComp)[1] <- "Sex"
colnames(Table_VarianceDecomposition_TreatComp)[2] <- "Treatment"
colnames(Table_VarianceDecomposition_TreatComp)[3] <- "Variance_component"
colnames(Table_VarianceDecomposition_TreatComp)[4] <- "Variance"
colnames(Table_VarianceDecomposition_TreatComp)[5] <- "l95_CI"
colnames(Table_VarianceDecomposition_TreatComp)[6] <- "u95_CI"
colnames(Table_VarianceDecomposition_TreatComp)[7] <- "p-value"
Table_VarianceDecomposition_TreatComp[,4]=round(as.numeric(Table_VarianceDecomposition_TreatComp[,4]),digits=2)
Table_VarianceDecomposition_TreatComp[,5]=round(as.numeric(Table_VarianceDecomposition_TreatComp[,5]),digits=2)
Table_VarianceDecomposition_TreatComp[,6]=round(as.numeric(Table_VarianceDecomposition_TreatComp[,6]),digits=2)
Table_VarianceDecomposition_TreatComp[,7]=round(as.numeric(Table_VarianceDecomposition_TreatComp[,7]),digits=3)
rownames(Table_VarianceDecomposition_TreatComp) <- c()

Table S11: Influence of density treatment (group size and arena) on the variance and covariance components of reproductive success into mating success (MS), insemination success (IS), fertilization success (FS) and partner fecundity (pFec) for males. Negative effect sizes indicate larger values at lower density and positive effect sizes larger values at higher density.

kable(Table_VarianceDecomposition_TreatComp)
Sex Treatment Variance_component Variance l95_CI u95_CI p-value
Male Population size MS 0.17 -0.01 0.37 0.021
Male Arena size MS -0.11 -0.31 0.08 0.127
Male Population size IS -0.02 -0.15 0.12 0.685
Male Arena size IS 0.11 -0.04 0.24 0.021
Male Population size FS 0.12 0.04 0.21 0.000
Male Arena size FS -0.05 -0.14 0.05 0.072
Male Population size pFec -0.03 -0.11 0.05 0.275
Male Arena size pFec 0.01 -0.07 0.10 0.641
Female Population size MS 0.34 0.11 0.60 0.000
Female Arena size MS 0.15 -0.08 0.40 0.061
Female Population size Fec -0.31 -0.91 0.27 0.126
Female Arena size Fec -0.25 -0.87 0.32 0.210

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        generics_0.1.3      farver_2.1.1       
[31] ellipsis_0.3.2      cachem_1.0.7        withr_2.5.0        
[34] cli_3.6.1           magrittr_2.0.3      crayon_1.5.2       
[37] evaluate_0.20       ps_1.7.2            fs_1.6.1           
[40] fansi_1.0.4         nlme_3.1-157        MASS_7.3-56        
[43] tools_4.2.0         hms_1.1.2           lifecycle_1.0.3    
[46] stringr_1.5.0       munsell_0.5.0       callr_3.7.3        
[49] compiler_4.2.0      jquerylib_0.1.4     rlang_1.0.6        
[52] nloptr_2.0.3        rstudioapi_0.14     rmarkdown_2.20     
[55] gtable_0.3.1        abind_1.4-5         R6_2.5.1           
[58] fastmap_1.1.1       bit_4.0.5           utf8_1.2.3         
[61] rprojroot_2.0.3     stringi_1.7.12      parallel_4.2.0     
[64] Rcpp_1.0.10         vctrs_0.5.2         tidyselect_1.2.0   
[67] xfun_0.37