Assessing moderators
Effect of sperm competition type: Sperm
sp %>% filter(SpermComp2 != "Testes length" & Response == "Sperm total length") %>% group_by(SpermComp2) %>% summarize(EffectSizes = sum(!is.na(EffectSizeKey)), Studies = length(unique(PrimaryKey)), Mean = round(mean(SampleSizeSpecies),1), Min = min(SampleSizeSpecies), Max = max(SampleSizeSpecies)) %>% mutate("Sample Size" = paste(Mean," (" ,Min,"-", Max, ")")) %>% select(-Mean,-Min,-Max) %>%
kable(booktabs=TRUE, caption="Number of effect sizes, studies and mean (range) sample size of species grouped by sperm competition type, excluding 'testes length' and only for estimates of sperm total length") %>%
kable_styling(c("hover", "condensed"), full_width = F) %>%
column_spec(1, bold = T) %>%
collapse_rows(columns = 1, valign = "top")
Table 4.2: Number of effect sizes, studies and mean (range) sample size of species grouped by sperm competition type, excluding ?testes length? and only for estimates of sperm total length
SpermComp2
|
EffectSizes
|
Studies
|
Sample Size
|
Behavioural estimate
|
19
|
15
|
28.5 ( 2 - 130 )
|
Genetic estimate
|
8
|
6
|
29.1 ( 12 - 55 )
|
Testes size
|
61
|
45
|
43.3 ( 3 - 232 )
|
# Model with intercept
mod.stl.mod.sc0 <- rma.mv(yi=Z, V=Var_Z, mods = ~ factor(SpermComp2), random = list( ~1 |PrimaryKey, ~1 | EffectSizeKey), method='REML', data=sp %>% filter(SpermComp2 != "Testes length" & Response == "Sperm total length"))
summary(mod.stl.mod.sc0, digits=3)
# Model without intercept
mod.stl.mod.sc <- rma.mv(yi=Z, V=Var_Z, mods = ~ SpermComp2 -1, random = list( ~1 |PrimaryKey, ~1 | EffectSizeKey), method='REML', data=sp %>% filter(SpermComp2 != "Testes length" & Response == "Sperm total length"))
summary(mod.stl.mod.sc, digits=3)
# Model Results (includes a prediction interval)
orchard.stl.mod.sc <- orchaRd::mod_results(mod.stl.mod.sc, mod="SpermComp2")
pred <- orchard.stl.mod.sc$mod_table # Makes it easier to repeat same plot
# I2
I2.stl.mod.sc <- i2_ml(mod.stl.mod.sc)
# R2
R2.stl.mod.sc <- r2_ml(mod.stl.mod.sc)
# Forest Plot
mod <- mod.stl.mod.sc # Which model?
x_loc = -2 # Where does the summary statistic need to go?
x_loc2 = 21 # Where does the second summary statistic need to go?
x_loc3 = 33
col = '#b90702' # What color does the summary statistic need to be?
data = sp %>%
filter(SpermCompetition2 != "Testes length" & Response == "Sperm total length") %>%
arrange(SpermCompetition2, Z) %>%
add_row(EffectSizeKey="", Z=0, ci.lb=0, ci.ub=0, .before=20) %>%
add_row(EffectSizeKey=" ", Z=0, ci.lb=0, ci.ub=0, .before=20) %>%
add_row(EffectSizeKey=" ", Z=0, ci.lb=0, ci.ub=0, .before=20) %>%
add_row(EffectSizeKey=" ", Z=0, ci.lb=0, ci.ub=0, .before=31) %>%
add_row(EffectSizeKey=" ", Z=0, ci.lb=0, ci.ub=0, .before=31) %>%
add_row(EffectSizeKey=" ", Z=0, ci.lb=0, ci.ub=0, .before=31) %>%
mutate(EffectSizeKey = factor(EffectSizeKey, levels= EffectSizeKey)) # Which data and organise by Z. Adding empty rows to add the second summary stat.
#label = levels(pred$name)
label = c("Behavioural estimates k=19", "Genetic estimates k=8", "Testes size k=61")
x1 = (length(data[data$SpermCompetition2 == "Behavioral estimate",]$Z) / 2)
x2 = x1 + (length(data[data$SpermCompetition2 == "Genetic estimate",]$Z))
x3 = x2 + (length(data[data$SpermCompetition2 == "Testes mass",]$Z)) + 12
y = max(data$ci.ub) - 1.2
ggplot() +
geom_hline(yintercept = 0, lty = 1, lwd = 2, colour = "black") +
geom_pointrange(data = data,aes(x = EffectSizeKey, y = Z, ymin = ci.lb, ymax = ci.ub), size=0.1) +
geom_errorbar(aes(x=x_loc, ymin=pred$lowerPR[1], ymax = pred$upperPR[1]), color='#ffcc00', width=1)+
geom_point(aes(x=x_loc, y=mod$b[1]),size=4, color=col, pch=18)+
geom_errorbar(aes(x=x_loc, ymin=mod$ci.lb[1], ymax = mod$ci.ub[1]), color=col, width=3)+
geom_errorbar(aes(x=x_loc2, ymin=pred$lowerPR[2], ymax = pred$upperPR[2]), color='#ffcc00', width=1)+
geom_point(aes(x=x_loc2, y=mod$b[2]),size=4, color=col, pch=18)+
geom_errorbar(aes(x=x_loc2, ymin=mod$ci.lb[2], ymax = mod$ci.ub[2]), color=col, width=3)+
geom_errorbar(aes(x=x_loc3, ymin=pred$lowerPR[3], ymax = pred$upperPR[3]), color='#ffcc00', width=1)+
geom_point(aes(x=x_loc3, y=mod$b[3]),size=4, color=col, pch=18)+
geom_errorbar(aes(x=x_loc3, ymin=mod$ci.lb[3], ymax = mod$ci.ub[3]), color=col, width=3)+
coord_flip()+
theme_classic() +
labs(x="Study",
y="Fisher's Z") +
expand_limits(x= -5) +
scale_x_discrete(drop=FALSE) +
annotate("text", x = c(x1,x2,x3), y = c(y,y,y), label = label, size=4)
# Orchard Plot
orchard_plot(orchard.stl.mod.sc,
mod="SpermComp2",
xlab = "Correlation Coefficient (r)",
angle=45,
transfm='tanh') +
scale_fill_manual(values=c("#007aa3", "#ffcc00","#00ff73","#7a469b")) +
scale_colour_manual(values=c("#007aa3", "#ffcc00","#00ff73","#7a469b"))
ggsave("Figure2-sperm-precision.tiff")
There is no difference in the estimates (Fisher?s Z) of the different sperm competition variables when considering sperm total length only (Qm=0.954, P=0.621). The estimates of the different sperm components are all different from zero and translate into correlation coefficients r of 0.25, 0.4 and 0.26 respectively.
Note:
?Testes length? was excluded from the testes size estimate because that estimate differed significantly from the other estimates of testes size (see Proxies for testes size: Sperm).
Length of different sperm components in relation to sperm competition
sp %>% group_by(Response3) %>% summarize(EffectSizes = sum(!is.na(EffectSizeKey)), Studies = length(unique(PrimaryKey)), Mean = round(mean(SampleSizeSpecies),1), Min = min(SampleSizeSpecies), Max = max(SampleSizeSpecies)) %>% mutate("Sample Size" = paste(Mean," (" ,Min,"-", Max, ")")) %>% select(-Mean, -Min, -Max) %>%
kable(caption="Number of effect sizes, studies and mean (range) sample size of species of different sperm components") %>%
kable_styling(c("hover", "condensed"), full_width = F) %>%
column_spec(1, bold = T) %>%
collapse_rows(columns = 1, valign = "top")
Table 4.3: Number of effect sizes, studies and mean (range) sample size of species of different sperm components
Response3
|
EffectSizes
|
Studies
|
Sample Size
|
Sperm flagellum length
|
34
|
26
|
47.8 ( 2 - 232 )
|
Sperm midpiece length
|
28
|
21
|
45.6 ( 2 - 194 )
|
Sperm head length
|
30
|
23
|
47.2 ( 2 - 232 )
|
Sperm total length
|
94
|
64
|
37.8 ( 2 - 232 )
|
mod.sl.overall0 <- rma.mv(yi=Z, V=Var_Z, mods = ~ factor(Response3), random = list( ~1 |PrimaryKey, ~1 | EffectSizeKey), method='REML', data=sp)
summary(mod.sl.overall0, digits=3)
mod.sl.overall <- rma.mv(yi=Z, V=Var_Z, mods = ~ Response3 -1, random = list( ~1 |PrimaryKey, ~1|EffectSizeKey), method='REML', data=sp)
summary(mod.sl.overall, digits=3)
# Model Results (includes a prediction interval)
orchard.sl.overall <- orchaRd::mod_results(mod.sl.overall, mod="Response3")
pred <- orchard.sl.overall$mod_table # Makes it easier to repeat same plot
# I2
I2.sl.overall <- i2_ml(mod.sl.overall)
# R2
R2.sl.overall <- r2_ml(mod.sl.overall)
# Forest Plot
mod <- mod.sl.overall # Which model?
x_loc = -2 # Where does the summary statistic need to go?
x_loc2 = 36 # Where does the second summary statistic need to go?
x_loc3 = 67
x_loc4 = 100
col = '#b90702' # What color does the summary statistic need to be?
data = sp %>%
arrange(Response3, Z) %>%
add_row(EffectSizeKey="", Z=0, ci.lb=0, ci.ub=0, .before=35) %>%
add_row(EffectSizeKey=" ", Z=0, ci.lb=0, ci.ub=0, .before=35) %>%
add_row(EffectSizeKey=" ", Z=0, ci.lb=0, ci.ub=0, .before=35) %>%
add_row(EffectSizeKey=" ", Z=0, ci.lb=0, ci.ub=0, .before=66) %>%
add_row(EffectSizeKey=" ", Z=0, ci.lb=0, ci.ub=0, .before=66) %>%
add_row(EffectSizeKey=" ", Z=0, ci.lb=0, ci.ub=0, .before=66) %>%
add_row(EffectSizeKey=" ", Z=0, ci.lb=0, ci.ub=0, .before=99) %>%
add_row(EffectSizeKey=" ", Z=0, ci.lb=0, ci.ub=0, .before=99) %>%
add_row(EffectSizeKey=" ", Z=0, ci.lb=0, ci.ub=0, .before=99) %>%
mutate(EffectSizeKey = factor(EffectSizeKey, levels= EffectSizeKey)) # Which data and organise by Z. Adding empty rows to add the second summary stat.
#label = levels(pred$name)
label = c("Sperm flagellum length k=34", "Sperm midpiece length k=28", "Sperm head length k=30", "Sperm total length k=94")
x1 = (length(data[data$Response3 == "Sperm flagellum length",]$Z) / 2)
x2 = 45
x3 = 75
x4 = 130
y = max(data$ci.ub) - 1.5
ggplot() +
geom_hline(yintercept = 0, lty = 1, lwd = 2, colour = "black") +
geom_pointrange(data = data,aes(x = EffectSizeKey, y = Z, ymin = ci.lb, ymax = ci.ub), size=0.1) +
geom_errorbar(aes(x=x_loc, ymin=pred$lowerPR[1], ymax = pred$upperPR[1]), color='#ffcc00', width=1)+
geom_point(aes(x=x_loc, y=mod$b[1]),size=4, color=col, pch=18)+
geom_errorbar(aes(x=x_loc, ymin=mod$ci.lb[1], ymax = mod$ci.ub[1]), color=col, width=3)+
geom_errorbar(aes(x=x_loc2, ymin=pred$lowerPR[2], ymax = pred$upperPR[2]), color='#ffcc00', width=1)+
geom_point(aes(x=x_loc2, y=mod$b[2]),size=4, color=col, pch=18)+
geom_errorbar(aes(x=x_loc2, ymin=mod$ci.lb[2], ymax = mod$ci.ub[2]), color=col, width=3)+
geom_errorbar(aes(x=x_loc3, ymin=pred$lowerPR[3], ymax = pred$upperPR[3]), color='#ffcc00', width=1)+
geom_point(aes(x=x_loc3, y=mod$b[3]),size=4, color=col, pch=18)+
geom_errorbar(aes(x=x_loc3, ymin=mod$ci.lb[3], ymax = mod$ci.ub[3]), color=col, width=3)+
geom_errorbar(aes(x=x_loc4, ymin=pred$lowerPR[4], ymax = pred$upperPR[4]), color='#ffcc00', width=1)+
geom_point(aes(x=x_loc4, y=mod$b[4]),size=4, color=col, pch=18)+
geom_errorbar(aes(x=x_loc4, ymin=mod$ci.lb[4], ymax = mod$ci.ub[4]), color=col, width=3)+
coord_flip()+
theme_classic() +
labs(x="Study",
y="Fisher's Z") +
expand_limits(x= -5) +
scale_x_discrete(drop=FALSE) +
annotate("text", x = c(x1,x2,x3,x4), y = c(y,y,y,y), label = label, size=4)
# Orchard Plot
orchard_plot(orchard.sl.overall,
mod="Response2",
xlab = "Correlation Coefficient (r)",
angle=45,
transfm='tanh') +
scale_fill_manual(values=c("#007aa3", "#ffcc00","#00ff73","#7a469b")) +
scale_colour_manual(values=c("#007aa3", "#ffcc00","#00ff73","#7a469b"))
ggsave("Figure3-spermcomponents-precision.tiff")
There is a difference between the different sperm components (Qm=8.04, P=0.045). The estimates are all different from zero, and translate into correlation coefficients r of 0.39 for Sperm flagellum length, 0.3 for Sperm midpiece length, 0.22 for Sperm head length and 0.37 for Sperm total length. Thus, overall there is a positive relationship between sperm competition and sperm length.
NOTE:
The same analysis was performed again without Sperm midpiece volume as response variable, and without Testes length as proxy for testes size (see Sensitivity analysis). The results did not change. The analysis was done again without those points because they are influential data points (see Effect of different sperm components and Proxies for testes size: Sperm).
Fertilization mode: Sperm
NOTE: Excluding studies with both internal and external fertilizers.
# Sample size
ss.s.fert <- sp %>% group_by(Fertilization) %>% filter(Response == "Sperm total length" & Fertilization != "Both") %>% summarize(EffectSizes = sum(!is.na(EffectSizeKey)), Studies = length(unique(PrimaryKey)), Mean = round(mean(SampleSizeSpecies),1), Min = min(SampleSizeSpecies), Max = max(SampleSizeSpecies)) %>% mutate("Sample Size" = paste(Mean," (" ,Min,"-", Max, ")"))
ss.s.fert %>% select(-Mean, -Min, -Max) %>%
kable(caption="Number of effect sizes, studies and mean (range) sample size of species of internal and external fertilizing animals in the sperm meta-analysis") %>%
kable_styling(c("hover", "condensed"), full_width = F) %>%
column_spec(1, bold = T) %>%
collapse_rows(columns = 1, valign = "top")
Table 4.4: Number of effect sizes, studies and mean (range) sample size of species of internal and external fertilizing animals in the sperm meta-analysis
Fertilization
|
EffectSizes
|
Studies
|
Sample Size
|
External
|
10
|
6
|
50.9 ( 7 - 130 )
|
Internal
|
82
|
57
|
36.5 ( 2 - 232 )
|
# model with intercept
mod.stl.fert0 <- rma.mv(yi=Z, V=Var_Z, mods = ~ factor(Fertilization), random = list( ~1 |PrimaryKey, ~1 | EffectSizeKey), method='REML', data=sp %>% filter(Fertilization != "Both" & Response == "Sperm total length"))
summary(mod.stl.fert0, digits=3)
# model without intercept
mod.stl.fert <- rma.mv(yi=Z, V=Var_Z, mods = ~ Fertilization-1, random = list( ~1 |PrimaryKey, ~1 | EffectSizeKey), method='REML', data=sp %>% filter(Fertilization != "Both" & Response == "Sperm total length"))
summary(mod.stl.fert, digits=3)
# I2
I2.stl.fert<- i2_ml(mod.stl.fert)
# R2
R2.stl.fert <- r2_ml(mod.stl.fert)
# Model Results (includes a prediction interval)
orchard.stl.fert <- orchaRd::mod_results(mod.stl.fert, mod="Fertilization")
pred <- orchard.stl.fert$mod_table # Makes it easier to repeat same plot
# Orchard Plot
orchard_plot(orchard.stl.fert,
mod="Fertilization",
xlab = "Correlation Coefficient (r)",
# N=tes$SampleSize,
angle=45,
transfm='tanh') +
scale_fill_manual(values=c("#007aa3", "#ffcc00")) +
scale_colour_manual(values=c("#007aa3", "#ffcc00"))
There is no difference in the estimates of internally and externally fertilizing species (Qm=0.329, P=0.566). The estimates are not (all) different from zero. See Summary of moderators: Sperm.
Phylogenetic control: Sperm
# sample size
sp <- sp %>% mutate(PC = case_when(PhylogeneticControl == 0 ~ "No",
PhylogeneticControl == 1 ~ "Yes"))
ss.s.pc <- sp %>% filter(Response == "Sperm total length") %>% group_by(PhylogeneticControl) %>% summarize(EffectSizes = sum(!is.na(EffectSizeKey)), Studies = length(unique(PrimaryKey)), Mean = round(mean(SampleSizeSpecies),1), Min = min(SampleSizeSpecies), Max = max(SampleSizeSpecies)) %>% mutate("Sample Size" = paste(Mean," (" ,Min,"-", Max, ")"))
ss.s.pc %>% select(-Mean,-Min,-Max) %>%
kable(caption="Number of effect sizes, studies and mean (range) sample size of species with (=1) and without (=0) phylogenetic control in the sperm meta-analysis") %>%
kable_styling(c("hover", "condensed"), full_width = F) %>%
column_spec(1, bold = T) %>%
collapse_rows(columns = 1, valign = "top")
Table 4.5: Number of effect sizes, studies and mean (range) sample size of species with (=1) and without (=0) phylogenetic control in the sperm meta-analysis
PhylogeneticControl
|
EffectSizes
|
Studies
|
Sample Size
|
0
|
28
|
23
|
31 ( 2 - 232 )
|
1
|
66
|
44
|
40.7 ( 5 - 226 )
|
# model with intercept
mod.stl.pc0 <- rma.mv(yi=Z, V=Var_Z, mods = ~ factor(PhylogeneticControl), random = list( ~1 |PrimaryKey, ~1 | EffectSizeKey), method='REML', data=sp %>% filter(Response == "Sperm total length"))
summary(mod.stl.pc0, digits=3)
# model without intercept
mod.stl.pc <- rma.mv(yi=Z, V=Var_Z, mods = ~ PC-1, random = list( ~1 |PrimaryKey, ~1 | EffectSizeKey), method='REML', data=sp %>% filter(Response == "Sperm total length"))
summary(mod.stl.pc, digits=3)
# I2
I2.stl.pc <- i2_ml(mod.stl.pc)
# R2
R2.stl.pc <- r2_ml(mod.stl.pc)
# Model Results (includes a prediction interval)
orchard.stl.pc <- orchaRd::mod_results(mod.stl.pc, mod="PC")
pred <- orchard.stl.pc$mod_table # Makes it easier to repeat same plot
# Orchard Plot
orchard_plot(orchard.stl.pc,
mod="PhylogeneticControl",
xlab = "Correlation Coefficient (r)",
# N=tes$SampleSize,
angle=45,
transfm='tanh') +
scale_fill_manual(values=c("#007aa3","#ffcc00")) +
scale_colour_manual(values=c("#007aa3","#ffcc00"))
There is a difference in the estimates between sperm length and sperm competition that were controlled for phylogenetic dependency and those that were not (Qm=9.331, P=0.002). The estimates are all different from zero. See Summary of moderators: Sperm.
Animal phylum: Sperm
samplesize.sp.animals <- sp %>% group_by(Phylum, Class, Order) %>% summarize(EffectSizes = sum(!is.na(EffectSizeKey)), Studies = length(unique(PrimaryKey)), Mean = round(mean(SampleSizeSpecies),1), Min = min(SampleSizeSpecies), Max = max(SampleSizeSpecies)) %>% mutate("Sample Size" = paste(Mean," (" ,Min,"-", Max, ")"))
samplesize.sp.animals %>% select(-Mean,-Min,-Max) %>%
kable(caption="Number of effect sizes, studies, and mean (range) sample size of species of different animal phyla, classes and orders in the sperm meta-analysis") %>%
kable_styling(c("hover", "condensed"), full_width = F) %>%
column_spec(1, bold = T) %>%
collapse_rows(columns = 1:2, valign = "top")
Table 4.6: Number of effect sizes, studies, and mean (range) sample size of species of different animal phyla, classes and orders in the sperm meta-analysis
Phylum
|
Class
|
Order
|
EffectSizes
|
Studies
|
Sample Size
|
Arthropoda
|
Arachnida
|
Scorpiones
|
2
|
1
|
8 ( 8 - 8 )
|
Insecta
|
|
1
|
1
|
3 ( 3 - 3 )
|
Coleoptera
|
5
|
5
|
17.6 ( 10 - 30 )
|
Diptera
|
9
|
9
|
20.8 ( 11 - 55 )
|
Hemiptera
|
3
|
1
|
2 ( 2 - 2 )
|
Hymenoptera
|
3
|
2
|
20.3 ( 12 - 27 )
|
Lepidoptera
|
2
|
2
|
76 ( 25 - 127 )
|
Chordata
|
Actinopterygii
|
|
3
|
2
|
32.3 ( 12 - 46 )
|
Cichliformes
|
6
|
3
|
12.8 ( 7 - 29 )
|
Amphibia
|
Anura
|
16
|
4
|
56.2 ( 22 - 130 )
|
Aves
|
|
10
|
3
|
12 ( 3 - 42 )
|
Galliformes
|
6
|
3
|
24.5 ( 22 - 31 )
|
Passeriformes
|
37
|
11
|
62.8 ( 3 - 232 )
|
Psittaciformes
|
1
|
1
|
10 ( 10 - 10 )
|
Chondrichthyes
|
|
4
|
1
|
16.5 ( 16 - 18 )
|
Mammalia
|
|
24
|
7
|
94.5 ( 14 - 226 )
|
Artiodactyla
|
9
|
4
|
30.8 ( 3 - 53 )
|
Carnivora
|
1
|
1
|
19 ( 19 - 19 )
|
Insectivora
|
3
|
1
|
4 ( 4 - 4 )
|
Primates
|
15
|
6
|
26.9 ( 15 - 34 )
|
Rodentia
|
22
|
15
|
24.5 ( 2 - 106 )
|
Reptilia
|
Squamata
|
4
|
1
|
25 ( 25 - 25 )
|
# Sample size
ss.s.phylum <- sp %>% filter(Response=="Sperm total length") %>% group_by(Phylum) %>% summarize(EffectSizes = sum(!is.na(EffectSizeKey)), Studies = length(unique(PrimaryKey)), Mean = round(mean(SampleSizeSpecies),1), Min = min(SampleSizeSpecies), Max = max(SampleSizeSpecies)) %>% mutate("Sample Size" = paste(Mean," (" ,Min,"-", Max, ")"))
ss.s.phylum %>% select(-Mean,-Min,-Max) %>%
kable(caption="Number of effect sizes, studies and mean (range) sample size of species of the different phyla included in the sperm meta-analysis") %>%
kable_styling(c("hover", "condensed"), full_width = F) %>%
column_spec(1, bold = T) %>%
collapse_rows(columns = 1, valign = "top")
# model with intercept
mod.stl.phylum0 <- rma.mv(yi=Z, V=Var_Z, mods = ~ factor(Phylum), random = list( ~1 |PrimaryKey, ~1 | EffectSizeKey), method='REML', data=sp %>% filter(Response=="Sperm total length"))
summary(mod.stl.phylum0, digits=3)
# model with intercept
mod.stl.phylum <- rma.mv(yi=Z, V=Var_Z, mods = ~ Phylum-1, random = list( ~1 |PrimaryKey, ~1 | EffectSizeKey), method='REML', data=sp %>% filter(Response=="Sperm total length"))
summary(mod.stl.phylum, digits=3)
# I2
I2.stl.phylum <- i2_ml(mod.stl.phylum)
# R2
R2.stl.phylum <- r2_ml(mod.stl.phylum)
# Model Results (includes a prediction interval)
orchard.stl.phylum <- orchaRd::mod_results(mod.stl.phylum, mod="Phylum")
pred <- orchard.stl.phylum$mod_table # Makes it easier to repeat same plot
# Orchard Plot
orchard_plot(orchard.stl.phylum,
mod="Phylum",
xlab = "Correlation Coefficient (r)",
# N=tes$SampleSize,
angle=45,
transfm='tanh') +
scale_fill_manual(values=c("#007aa3", "#ffcc00")) +
scale_colour_manual(values=c("#007aa3", "#ffcc00"))
There is a difference in the correlation between sperm length and sperm competition for different animal phyla (Qm=8.687, P=0.003). The estimates are all different from zero. See Summary of moderators: Sperm.
Model covariates: Sperm
sp <- sp %>% mutate(MP = case_when(ModelPredictors == 0 ~ "No covariates",
ModelPredictors == 1 ~ "Body size covariate",
ModelPredictors == 2 ~ "Body size and other covariates"))
ss.s.cov <- sp %>% filter(ModelPredictors != "NA" & Response == "Sperm total length") %>% group_by(ModelPredictors) %>% summarize(EffectSizes = sum(!is.na(EffectSizeKey)), Studies = length(unique(PrimaryKey)), Mean = round(mean(SampleSizeSpecies),1), Min = min(SampleSizeSpecies), Max = max(SampleSizeSpecies)) %>% mutate("Sample Size" = paste(Mean," (" ,Min,"-", Max, ")"))
ss.s.cov %>% select(-Mean,-Min,-Max) %>%
kable(caption="Number of effect sizes, studies and mean (range) sample size of species for estimates with no covariates (=0), only body mass (=1) or more covariates (=2) in the model in the sperm meta-analysis") %>%
kable_styling(c("hover", "condensed"), full_width = F) %>%
column_spec(1, bold = T) %>%
collapse_rows(columns = 1, valign = "top")
Table 4.7: Number of effect sizes, studies and mean (range) sample size of species for estimates with no covariates (=0), only body mass (=1) or more covariates (=2) in the model in the sperm meta-analysis
ModelPredictors
|
EffectSizes
|
Studies
|
Sample Size
|
0
|
43
|
31
|
26.1 ( 2 - 127 )
|
1
|
39
|
24
|
54.7 ( 4 - 232 )
|
2
|
12
|
11
|
24.8 ( 10 - 67 )
|
# model with intercept
mod.stl.cov0 <- rma.mv(yi=Z, V=Var_Z, mods = ~ factor(ModelPredictors), random = list( ~1 |PrimaryKey, ~1 | EffectSizeKey), method='REML', data=sp %>% filter(ModelPredictors != "NA" & Response == "Sperm total length"))
summary(mod.stl.cov0, digits=3)
# model without intercept
mod.stl.cov <- rma.mv(yi=Z, V=Var_Z, mods = ~ MP-1, random = list( ~1 |PrimaryKey, ~1 | EffectSizeKey), method='REML', data=sp %>% filter(ModelPredictors != "NA" & Response == "Sperm total length"))
summary(mod.stl.cov, digits=3)
# I2
I2.stl.cov <- i2_ml(mod.stl.cov)
# R2
R2.stl.cov <- r2_ml(mod.stl.cov)
# Model Results (includes a prediction interval)
orchard.stl.cov <- orchaRd::mod_results(mod.stl.cov, mod="MP")
pred <- orchard.stl.cov$mod_table # Makes it easier to repeat same plot
# Orchard Plot
orchard_plot(orchard.stl.cov,
mod="MP",
xlab = "Correlation Coefficient (r)",
# N=tes$SampleSize,
angle=45,
transfm='tanh') +
scale_fill_manual(values=c("#007aa3", "#ffcc00","#00ff73","#7a469b")) +
scale_colour_manual(values=c("#007aa3", "#ffcc00","#00ff73","#7a469b"))
There is no difference in the estimates that resulted from analyses that have no covariates, body size as covariate or more covariates in the model (Qm=4.282, P=0.118). The estimates are not (all) different from zero. See Summary of moderators: Sperm.
Level of correlation: Sperm
# Sample size
sp <- sp %>%
mutate(LC=case_when(
LevelCorrelation == 'Group' ~ 'Species',
LevelCorrelation == 'Species' ~ 'Species',
LevelCorrelation == 'Genus' ~ 'Genus'
))
ss.s.corr <- sp %>% filter(Response=="Sperm total length") %>% group_by(LC) %>% summarize(EffectSizes = sum(!is.na(EffectSizeKey)), Studies = length(unique(PrimaryKey)), Mean = round(mean(SampleSizeSpecies),1), Min = min(SampleSizeSpecies), Max = max(SampleSizeSpecies)) %>% mutate("Sample Size" = paste(Mean," (" ,Min,"-", Max, ")"))
ss.s.corr %>% select(-Mean,-Min,-Max) %>%
kable(caption="Number of effect sizes, studies and mean (range) sample size of species for estimates calculated at different analysis levels in the sperm meta-analysis") %>%
kable_styling(c("hover", "condensed"), full_width = F) %>%
column_spec(1, bold = T) %>%
collapse_rows(columns = 1, valign = "top")
Table 4.8: Number of effect sizes, studies and mean (range) sample size of species for estimates calculated at different analysis levels in the sperm meta-analysis
LC
|
EffectSizes
|
Studies
|
Sample Size
|
Genus
|
4
|
2
|
50.2 ( 26 - 123 )
|
Species
|
90
|
63
|
37.2 ( 2 - 232 )
|
# Level of Correlation
mod.stl.corr0 <- rma.mv(yi=Z, V=Var_Z, mods = ~ factor(LC), random = list( ~1 |PrimaryKey, ~1 | EffectSizeKey), method='REML', data=sp %>% filter(Response=="Sperm total length"))
summary(mod.stl.corr0, digits=3)
# Level of Correlation no intercept
mod.stl.corr <- rma.mv(yi=Z, V=Var_Z, mods = ~ LC-1, random = list( ~1 |PrimaryKey, ~1 | EffectSizeKey), method='REML', data=sp %>% filter(Response == "Sperm total length"))
summary(mod.stl.corr, digits=3)
# I2
I2.stl.corr <- i2_ml(mod.stl.corr)
# R2
R2.stl.corr <- r2_ml(mod.stl.corr)
# Model Results (includes a prediction interval)
orchard.stl.corr <- orchaRd::mod_results(mod.stl.corr, mod="LC")
pred <- orchard.stl.corr$mod_table # Makes it easier to repeat same plot
# Orchard Plot
orchard_plot(orchard.stl.corr,
mod="LC",
xlab = "Correlation Coefficient (r)",
# N=tes$SampleSize,
angle=45,
transfm='tanh') +
scale_fill_manual(values=c("#007aa3", "#ffcc00","#00ff73")) +
scale_colour_manual(values=c("#007aa3", "#ffcc00","#00ff73"))
There is no difference in estimates resulting from analyses on the genus or species level of correlation (Qm=0.062, P=0.803). The estimates are not (all) different from zero. See Summary of moderators: Sperm.
Effect of risk or intensity of sperm competition: Sperm
ss.s.roi <- sp %>% group_by(RiskOrIntensity) %>% filter(Response == "Sperm total length") %>% summarize(EffectSizes = sum(!is.na(EffectSizeKey)), Studies = length(unique(PrimaryKey)), Mean = round(mean(SampleSizeSpecies),1), Min = min(SampleSizeSpecies), Max = max(SampleSizeSpecies)) %>% mutate("Sample Size" = paste(Mean," (" ,Min,"-", Max, ")"))
ss.s.roi %>% select(-Mean,-Min,-Max) %>%
kable(caption="Number of effect sizes, studies and mean (range) sample size of species for sperm competition risk and intensity estimates in the sperm meta-analysis (only sperm total length)") %>%
kable_styling(c("hover", "condensed"), full_width = F) %>%
column_spec(1, bold = T) %>%
collapse_rows(columns = 1, valign = "top")
Table 4.9: Number of effect sizes, studies and mean (range) sample size of species for sperm competition risk and intensity estimates in the sperm meta-analysis (only sperm total length)
RiskOrIntensity
|
EffectSizes
|
Studies
|
Sample Size
|
Sperm competition intensity
|
3
|
2
|
19 ( 8 - 27 )
|
Sperm competition risk
|
91
|
63
|
38.4 ( 2 - 232 )
|
ss.s.roi.sc <- sp %>% group_by(SpermComp3, RiskOrIntensity) %>% filter(Response == "Sperm total length") %>% summarize(EffectSizes = sum(!is.na(EffectSizeKey)), Studies = length(unique(PrimaryKey)), Mean = round(mean(SampleSizeSpecies),1), Min = min(SampleSizeSpecies), Max = max(SampleSizeSpecies)) %>% mutate("Sample Size" = paste(Mean," (" ,Min,"-", Max, ")"))
ss.s.roi.sc %>% select(-Mean, -Min,-Max) %>%
kable(caption="Number of effect sizes, studies and mean (range) sample size of species for sperm competition risk and intensity estimates in the sperm meta-analysis (only sperm total length), separated by testes size, behavioural and genetic estimates of sperm competition") %>%
kable_styling(c("hover", "condensed"), full_width = F) %>%
column_spec(1, bold = T) %>%
collapse_rows(columns = 1, valign = "top")
Table 4.10: Number of effect sizes, studies and mean (range) sample size of species for sperm competition risk and intensity estimates in the sperm meta-analysis (only sperm total length), separated by testes size, behavioural and genetic estimates of sperm competition
SpermComp3
|
RiskOrIntensity
|
EffectSizes
|
Studies
|
Sample Size
|
Behavioural estimate
|
Sperm competition intensity
|
1
|
1
|
8 ( 8 - 8 )
|
Sperm competition risk
|
18
|
14
|
29.6 ( 2 - 130 )
|
Genetic estimate
|
Sperm competition intensity
|
2
|
1
|
24.5 ( 22 - 27 )
|
Sperm competition risk
|
6
|
5
|
30.7 ( 12 - 55 )
|
Testes size
|
Sperm competition risk
|
67
|
51
|
41.5 ( 3 - 232 )
|
# Model with intercept
mod.stl.roi0 <- rma.mv(yi=Z, V=Var_Z, mods=~factor(RiskOrIntensity), random = list( ~1|PrimaryKey, ~1 | EffectSizeKey), slab=Reference, method='REML', data=sp %>% filter(Response == "Sperm total length"))
summary(mod.stl.roi0, digits=3)
# Model without intercept
mod.stl.roi <- rma.mv(yi=Z, V=Var_Z, mods=~RiskOrIntensity -1, random = list( ~1|PrimaryKey, ~1 | EffectSizeKey), slab=Reference, method='REML', data=sp %>% filter(Response == "Sperm total length"))
summary(mod.stl.roi, digits=3)
# Model Results (includes a prediction interval)
orchard.stl.roi <- orchaRd::mod_results(mod.stl.roi, mod="RiskOrIntensity")
pred <- orchard.stl.roi$mod_table # Makes it easier to repeat same plot
# I2
I2.stl.roi <- i2_ml(mod.stl.roi)
# R2
R2.stl.roi <- r2_ml(mod.stl.roi)
# Orchard Plot
orchard_plot(orchard.stl.roi,
mod="Int",
xlab = "Correlation Coefficient (r)",
# N=tes$SampleSize,
angle=45,
transfm='tanh') +
scale_fill_manual(values=c("#007aa3","#ffcc00", "#00ff73")) +
scale_colour_manual(values=c("#007aa3","#ffcc00", "#00ff73"))
There is no difference in the correlation between sperm total length and sperm competition risk or sperm competition intensity (Qm=0.562, P=0.453). The estimates are not (all) different from zero. See Summary of moderators: Sperm.
Proxies for testes size: Sperm
sp %>% filter(SpermCompetition %in% c('Testes area', 'Testes length', 'Testes mass', 'Testes volume') & Response == "Sperm total length") %>% group_by(SpermCompetition) %>% summarize(EffectSizes = sum(!is.na(EffectSizeKey)), Studies = length(unique(PrimaryKey)), Mean = round(mean(SampleSizeSpecies),1), Min = min(SampleSizeSpecies), Max = max(SampleSizeSpecies)) %>% mutate("Sample Size" = paste(Mean," (" ,Min,"-", Max, ")")) %>% select(-Mean,-Min,-Max) %>%
kable(caption="Number of effect sizes, studies and mean (range) sample size of species for different proxies of testes size for sperm total length only") %>%
kable_styling(c("hover", "condensed"), full_width = F) %>%
column_spec(1, bold = T) %>%
collapse_rows(columns = 1, valign = "top")
Table 4.11: Number of effect sizes, studies and mean (range) sample size of species for different proxies of testes size for sperm total length only
SpermCompetition
|
EffectSizes
|
Studies
|
Sample Size
|
Testes area
|
1
|
1
|
20 ( 20 - 20 )
|
Testes length
|
6
|
6
|
22.5 ( 11 - 55 )
|
Testes mass
|
59
|
43
|
44.1 ( 3 - 232 )
|
Testes volume
|
1
|
1
|
20 ( 20 - 20 )
|
# model with intercept
mod.stl.tsprox0 <- rma.mv(yi=Z, V=Var_Z, mods = ~ SpermCompetition, random = list( ~1 |PrimaryKey, ~1 | EffectSizeKey), method='REML', data=sp %>% filter(SpermCompetition %in% c('Testes area', 'Testes length', 'Testes mass', 'Testes volume') & Response == "Sperm total length"))
summary(mod.stl.tsprox0, digits=3)
# model without intercept
mod.stl.tsprox <- rma.mv(yi=Z, V=Var_Z, mods = ~ SpermCompetition-1, random = list( ~1 |PrimaryKey, ~1 | EffectSizeKey), method='REML', data=sp %>% filter(SpermCompetition %in% c('Testes area', 'Testes length', 'Testes mass', 'Testes volume') & Response == "Sperm total length"))
summary(mod.stl.tsprox, digits=3)
# I2
I2.stl.tsprox <- i2_ml(mod.stl.tsprox)
# R2
R2.stl.tsprox <- r2_ml(mod.stl.tsprox)
# Model Results (includes a prediction interval)
orchard.stl.tsprox <- orchaRd::mod_results(mod.stl.tsprox, mod="SpermCompetition")
pred <- orchard.stl.tsprox$mod_table # Makes it easier to repeat same plot
# Orchard Plot
orchard_plot(orchard.stl.tsprox,
mod="SpermCompetition",
xlab = "Correlation Coefficient (r)",
# N=tes$SampleSize,
angle=45,
transfm='tanh') +
scale_fill_manual(values=c("#007aa3", "#ffcc00","#00ff73","#7a469b")) +
scale_colour_manual(values=c("#007aa3", "#ffcc00","#00ff73","#7a469b"))
# So we cannot say that sperm length is the same as testes mass. So we can either include it and test if the estimate changes, or exclude it.
There is a difference in the correlation between sperm length and different proxies of testes size (Qm=23.563, P<0.0001). The estimates are not (all) different from zero. Testes length is different from the other estimates.
Effect of different sperm components
sp %>% group_by(Response) %>% summarize(EffectSizes = sum(!is.na(EffectSizeKey)), Studies = length(unique(PrimaryKey)), Mean = round(mean(SampleSizeSpecies),1), Min = min(SampleSizeSpecies), Max = max(SampleSizeSpecies)) %>% mutate("Sample Size" = paste(Mean," (" ,Min,"-", Max, ")")) %>% select(-Mean,-Min,-Max) %>%
kable(caption="Number of effect sizes, studies and mean (range) sample size of species for different sperm components included in the sperm meta-analysis") %>%
kable_styling(c("hover", "condensed"), full_width = F) %>%
column_spec(1, bold = T) %>%
collapse_rows(columns = 1, valign = "top")
Table 4.12: Number of effect sizes, studies and mean (range) sample size of species for different sperm components included in the sperm meta-analysis
Response
|
EffectSizes
|
Studies
|
Sample Size
|
Sperm flagellum length
|
33
|
26
|
47.9 ( 2 - 232 )
|
Sperm head area
|
1
|
1
|
11 ( 11 - 11 )
|
Sperm head length
|
29
|
22
|
48.4 ( 2 - 232 )
|
Sperm midpiece length
|
24
|
20
|
48.1 ( 2 - 194 )
|
Sperm midpiece volume
|
4
|
1
|
31 ( 31 - 31 )
|
Sperm principal + end piece
|
1
|
1
|
45 ( 45 - 45 )
|
Sperm total length
|
94
|
64
|
37.8 ( 2 - 232 )
|
# Head area vs head length
# model with intercept
mod.sp.head0 <- rma.mv(yi=Z, V=Var_Z, mods = ~ factor(Response), random = list( ~1 |PrimaryKey, ~1 | EffectSizeKey), method='REML', data=sp %>% filter(Response %in% c("Sperm head area", "Sperm head length")))
summary(mod.sp.head0, digits=3)
# model without intercept
mod.sp.head <- rma.mv(yi=Z, V=Var_Z, mods = ~ factor(Response)-1, random = list( ~1 |PrimaryKey, ~1 | EffectSizeKey), method='REML', data=sp %>% filter(Response %in% c("Sperm head area", "Sperm head length")))
summary(mod.sp.head, digits=3)
# OK, doesn't differ so we can combine them
# Sperm flagellum length vs Sperm principal + end piece
# model with intercept
mod.sp.flagellum0 <- rma.mv(yi=Z, V=Var_Z, mods = ~ factor(Response), random = list( ~1 |PrimaryKey, ~1 | EffectSizeKey), method='REML', data=sp %>% filter(Response %in% c("Sperm flagellum length", "Sperm principal + end piece")))
summary(mod.sp.flagellum0, digits=3)
# model without intercept
mod.sp.flagellum <- rma.mv(yi=Z, V=Var_Z, mods = ~ factor(Response)-1, random = list( ~1 |PrimaryKey, ~1 | EffectSizeKey), method='REML', data=sp %>% filter(Response %in% c("Sperm flagellum length", "Sperm principal + end piece")))
summary(mod.sp.flagellum, digits=3)
# OK, doesn't differ so we can combine them
# Sperm midpiece length vs Sperm midpiece volume
# model with intercept
mod.sp.midpiece0 <- rma.mv(yi=Z, V=Var_Z, mods = ~ factor(Response), random = list( ~1 |PrimaryKey, ~1 | EffectSizeKey), method='REML', data=sp %>% filter(Response %in% c("Sperm midpiece length", "Sperm midpiece volume")))
summary(mod.sp.midpiece0, digits=3)
mod.sp.midpiece <- rma.mv(yi=Z, V=Var_Z, mods = ~ factor(Response)-1, random = list( ~1 |PrimaryKey, ~1 | EffectSizeKey), method='REML', data=sp %>% filter(Response %in% c("Sperm midpiece length", "Sperm midpiece volume")))
summary(mod.sp.midpiece, digits=3)
# this differs. Sperm midpiece volume is heaps larger than sperm midpiece length.
There is no difference in the estimates (Fisher?s Z) of the different sperm head size estimates (Qm=2.433, P=0.119).
There is no difference in the estimates (Fisher?s Z) of the different sperm flagellum size estimates (Qm=0.011, P=0.916).
There is a difference in the estimates (Fisher?s Z) of the different sperm midpiece size estimates (Qm=4.805, P=0.028). The estimate for sperm midpiece length = 0.24, with confidence interval [0.06; 0.41], while that for sperm midpiece volume = 0.75 with confidence interval [0.33; 1.17].
Summary of moderators: Sperm
# Other moderators
table_moderators_sperm <- data.frame("name" = c( "Sperm Competition"
,"Sperm Competition"
, "Phylogenetic Control"
, "Phylogenetic Control"
, "Model Covariates"
, "Model Covariates"
, "Model Covariates"
, paste0("Fertilization Mode",
footnote_marker_symbol(1))
, paste0("Fertilization Mode",
footnote_marker_symbol(1))
, "Animal Phylum"
, "Animal Phylum"
, "Level of Correlation"
, "Level of Correlation"),
"R2_Marginal" = c(rep(R2.stl.roi[1],2)
, rep(R2.stl.pc[1],2)
, rep(R2.stl.cov[1],3)
, rep(R2.stl.fert[1],2)
, rep(R2.stl.phylum[1],2)
, rep(R2.stl.corr[1],2)),
"Qm" = c(rep(mod.stl.roi0$QM,2)
, rep(mod.stl.pc0$QM,2)
, rep(mod.stl.cov0$QM,3)
, rep(mod.stl.fert0$QM,2)
, rep(mod.stl.phylum0$QM,2)
, rep(mod.stl.corr0$QM,2)),
"P" = c(rep(mod.stl.roi0$QMp,2)
, rep(mod.stl.pc0$QMp,2)
, rep(mod.stl.cov0$QMp,3)
, rep(mod.stl.fert0$QMp,2)
, rep(mod.stl.phylum0$QMp,2)
, rep(mod.stl.corr0$QMp,2)),
"k" = c(mod.stl.roi0$k, NA
, mod.stl.pc0$k, NA
, mod.stl.cov0$k, NA, NA
, mod.stl.fert0$k, NA
, mod.stl.phylum0$k, NA
, mod.stl.corr0$k, NA),
"k_levels" = c(ss.s.roi$EffectSizes[1]
,ss.s.roi$EffectSizes[2]
,ss.s.pc$EffectSizes[1]
,ss.s.pc$EffectSizes[2]
,ss.s.cov$EffectSizes[1]
,ss.s.cov$EffectSizes[2]
,ss.s.cov$EffectSizes[3]
,ss.s.fert$EffectSizes[1]
,ss.s.fert$EffectSizes[2]
,ss.s.phylum$EffectSizes[1]
,ss.s.phylum$EffectSizes[2]
,ss.s.corr$EffectSizes[1]
,ss.s.corr$EffectSizes[2]),
"No_Levels" = c(length(mod.stl.roi$b), NA
, length(mod.stl.pc$b), NA
, length(mod.stl.cov$b), NA, NA
, length(mod.stl.fert0$b), NA
, length(mod.stl.phylum$b), NA
, length(mod.stl.corr$b), NA),
"Level_mod" = c(levels(orchard.stl.roi$mod_table$name)[1]
,levels(orchard.stl.roi$mod_table$name)[2]
,levels(orchard.stl.pc$mod_table$name)[1]
,levels(orchard.stl.pc$mod_table$name)[2]
,levels(orchard.stl.cov$mod_table$name)[1]
,levels(orchard.stl.cov$mod_table$name)[2]
,levels(orchard.stl.cov$mod_table$name)[3]
,levels(orchard.stl.fert$mod_table$name)[1]
,levels(orchard.stl.fert$mod_table$name)[2]
,levels(orchard.stl.phylum$mod_table$name)[1]
,levels(orchard.stl.phylum$mod_table$name)[2]
,levels(orchard.stl.corr$mod_table$name)[1]
,levels(orchard.stl.corr$mod_table$name)[2]),
"Level_name" = c("Intensity"
,"Risk"
,"No"
,"Yes"
,"No covariates"
,"Body mass covariate"
,"More covariates"
,levels(orchard.stl.fert$mod_table$name)[1]
,levels(orchard.stl.fert$mod_table$name)[2]
,levels(orchard.stl.phylum$mod_table$name)[1]
,levels(orchard.stl.phylum$mod_table$name)[2]
,levels(orchard.stl.corr$mod_table$name)[1]
,levels(orchard.stl.corr$mod_table$name)[2]),
"Z" = c(mod.stl.roi$zval[1]
,mod.stl.roi$zval[2]
, mod.stl.pc$zval[1]
, mod.stl.pc$zval[2]
, mod.stl.cov$zval[1]
, mod.stl.cov$zval[2]
, mod.stl.cov$zval[3]
, mod.stl.fert$zval[1]
, mod.stl.fert$zval[2]
, mod.stl.phylum$zval[1]
, mod.stl.phylum$zval[2]
, mod.stl.corr$zval[1]
, mod.stl.corr$zval[2]),
"PZ" = c(mod.stl.roi$pval[1]
,mod.stl.roi$pval[2]
, mod.stl.pc$pval[1]
, mod.stl.pc$pval[2]
, mod.stl.cov$pval[1]
, mod.stl.cov$pval[2]
, mod.stl.cov$pval[3]
, mod.stl.fert$pval[1]
, mod.stl.fert$pval[2]
, mod.stl.phylum$pval[1]
, mod.stl.phylum$pval[2]
, mod.stl.corr$pval[1]
, mod.stl.corr$pval[2]),
"ci.lb" = c(mod.stl.roi$ci.lb[1]
,mod.stl.roi$ci.lb[2]
, mod.stl.pc$ci.lb[1]
, mod.stl.pc$ci.lb[2]
, mod.stl.cov$ci.lb[1]
, mod.stl.cov$ci.lb[2]
, mod.stl.cov$ci.lb[3]
, mod.stl.fert$ci.lb[1]
, mod.stl.fert$ci.lb[2]
, mod.stl.phylum$ci.lb[1]
, mod.stl.phylum$ci.lb[2]
, mod.stl.corr$ci.lb[1]
, mod.stl.corr$ci.lb[2]),
"ci.ub" = c(mod.stl.roi$ci.ub[1]
,mod.stl.roi$ci.ub[2]
, mod.stl.pc$ci.ub[1]
, mod.stl.pc$ci.ub[2]
, mod.stl.cov$ci.ub[1]
, mod.stl.cov$ci.ub[2]
, mod.stl.cov$ci.ub[3]
, mod.stl.fert$ci.ub[1]
, mod.stl.fert$ci.ub[2]
, mod.stl.phylum$ci.ub[1]
, mod.stl.phylum$ci.ub[2]
, mod.stl.corr$ci.ub[1]
, mod.stl.corr$ci.ub[2]),
"beta" = c(mod.stl.roi$beta[1]
,mod.stl.roi$beta[2]
, mod.stl.pc$beta[1]
, mod.stl.pc$beta[2]
, mod.stl.cov$beta[1]
, mod.stl.cov$beta[2]
, mod.stl.cov$beta[3]
, mod.stl.fert$beta[1]
, mod.stl.fert$beta[2]
, mod.stl.phylum$beta[1]
, mod.stl.phylum$beta[2]
, mod.stl.corr$beta[1]
, mod.stl.corr$beta[2]))
table_mods <- table_moderators_sperm %>% transmute(Moderator = name,
"R2(%)" = round(R2_Marginal * 100,2),
Qm =round(Qm, 2),
"P(Qm)" = cell_spec(ifelse(P < 0.001, "<0.001", round(P,3) ), "html", bold = ifelse(P < 0.05, TRUE,FALSE)),
k = ifelse(is.na(k), "", k),
k_level = k_levels,
Level = Level_name,
beta = round(beta,2),
ci.lb = round(ci.lb,2),
ci.ub = round(ci.ub,2),
"95%CI" = paste("[",ci.lb,";", ci.ub, "]"),
Z = round(Z,2),
"P(Z)" = cell_spec(ifelse(PZ < 0.0001, "<0.0001", ifelse(PZ <0.001, "<0.001", round(PZ,3) )), "html", bold = ifelse(PZ < 0.05, TRUE,FALSE)))
# names(table_mods)
colnames(table_mods)[2] <- "*R^2^ (%)*"
colnames(table_mods)[3] <- "*Q<sub>m</sub>*"
colnames(table_mods)[4] <- "*P(Q<sub>m</sub>)*"
colnames(table_mods)[5] <- "*k<sub>total</sub>*"
colnames(table_mods)[6] <- "*k*"
colnames(table_mods)[8] <- "*β*"
colnames(table_mods)[11] <- "*95% CI*"
colnames(table_mods)[12] <- "*Z*"
colnames(table_mods)[13] <- "*P(Z)*"
table_mods %>% select(-ci.lb, -ci.ub) %>% kable(format="html", escape=F, caption="Summary Table Meta-Regressions Sperm (Only Sperm Total Length)") %>%
kable_styling(c("hover", "condensed"), full_width = F) %>%
column_spec(1, bold = T) %>%
collapse_rows(columns = 1:5, valign = "top") %>%
add_header_above(c(" " = 1, "Moderator Effects" = 4, "Estimates Different From 0?" = 6)) %>%
footnote("* Excluding studies with both internal and external fertilizers", title_format = "bold")
Table 4.13: Summary Table Meta-Regressions Sperm (Only Sperm Total Length)
|
Moderator Effects
|
Estimates Different From 0?
|
Moderator
|
R2 (%)
|
Qm
|
P(Qm)
|
ktotal
|
k
|
Level
|
?
|
95% CI
|
Z
|
P(Z)
|
Sperm Competition
|
1.00
|
0.56
|
0.453
|
94
|
3
|
Intensity
|
0.08
|
[ -0.7; 0.86 ]
|
0.19
|
0.846
|
|
91
|
Risk
|
0.38
|
[ 0.23; 0.52 ]
|
5.14
|
<0.0001
|
Phylogenetic Control
|
11.80
|
9.33
|
0.002
|
94
|
28
|
No
|
0.66
|
[ 0.43; 0.89 ]
|
5.64
|
<0.0001
|
|
66
|
Yes
|
0.26
|
[ 0.11; 0.41 ]
|
3.31
|
<0.001
|
Model Covariates
|
6.92
|
4.28
|
0.118
|
94
|
43
|
No covariates
|
0.19
|
[ -0.12; 0.50 ]
|
1.20
|
0.23
|
|
39
|
Body mass covariate
|
0.27
|
[ 0.06; 0.48 ]
|
2.56
|
0.011
|
|
12
|
More covariates
|
0.52
|
[ 0.32; 0.72 ]
|
5.09
|
<0.0001
|
Fertilization Mode*
|
0.70
|
0.33
|
0.566
|
92
|
10
|
External
|
0.28
|
[ -0.16; 0.71 ]
|
1.25
|
0.21
|
|
82
|
Internal
|
0.41
|
[ 0.27; 0.55 ]
|
5.56
|
<0.0001
|
Animal Phylum
|
10.53
|
8.69
|
0.003
|
94
|
23
|
Arthropoda
|
0.65
|
[ 0.42; 0.88 ]
|
5.57
|
<0.0001
|
|
71
|
Chordata
|
0.26
|
[ 0.12; 0.41 ]
|
3.48
|
<0.001
|
Level of Correlation
|
0.06
|
0.06
|
0.803
|
94
|
4
|
Genus
|
0.43
|
[ -0.07; 0.94 ]
|
1.67
|
0.094
|
|
90
|
Species
|
0.37
|
[ 0.23; 0.51 ]
|
5.06
|
<0.0001
|
Note:
|
* Excluding studies with both internal and external fertilizers
|