---
title: "GerminationCombined"
output: html_document
date: "2024-07-31"
---
```{r setup, include=FALSE}
knitr::opts_chunk$set(echo = TRUE)
```
```{r Setup}
library(tidyverse);library(lme4);library(emmeans);library(sjPlot);library(sjmisc);library(lmerTest);library(ggplot2);library(ggpubr);library(ggeffects);library(partR2);library(survival); library(cmprsk); library(tidycmprsk); library(ggsurvfit); library(paletteer);library(ape);library(phyr);library(phytools); library(V.PhyloMaker);library(BIOMASS);library(coda);library(MCMCglmm)
germ_combined <- read.csv("germ_combined.csv")
germ_combined_time <- read.csv("germ_combined_time.csv")
germ <- read.csv("germ.csv")
germ_time <- read.csv("germ_time.csv")
comatsa_seeds2 <- read.csv("comatsa_seeds2.csv")
comatsa_seeds2_time <- read.csv("comatsa_seeds2_time.csv")
mammal_tree <- read.tree("mammal_megatree.tre")
```
```{r Captive and Wild Combined}
#Germination Rate
combined_model <- glm(data= germ_combined, Germination ~ Treatment*Type, family=binomial())
summary_combined_model <- summary(combined_model)
combined_model_time <- lm(data= germ_combined_time, Time ~ Treatment*Type, family=binomial())
summary_combined_model_time <- summary(combined_model_time)
combined_model_time2 <- lm(data= germ_combined_time, Time ~ Treatment+Type, family=binomial())
summary_combined_model_time2 <- summary(combined_model_time2)
combined_predict <- ggpredict(combined_model, terms = c("Type", "Treatment"))
combined_predict2 <- as.data.frame(cbind(combined_predict$predicted, combined_predict$std.error, combined_predict$conf.low, combined_predict$conf.high))
colnames(combined_predict2) <- c("predicted", "std.error", "conf.low", "conf.high")
combined_predict2$Treatment <- c("Gut-passed, Washed", "Gut-passed ","Control","Control, Washed","Gut-passed, Washed", "Gut-passed ","Control","Control, Washed")
combined_predict2$Type <- c(rep("Captive", 4), rep("Wild", 4))
combined_plot <- ggplot(data=combined_predict2, aes(x= Type, y=predicted, color=Treatment,shape = Treatment))+
geom_pointrange(aes(ymin=conf.low, ymax=conf.high), size=0.7,
position=position_dodge(.5))+
theme_classic()+
ylab("Germination Rate")+
xlab("Data Type")+
theme(axis.text.x = element_text( vjust = 1, hjust=1))+
guides(fill=guide_legend(title="Habitat"), alpha=FALSE)+
scale_alpha_manual(values= c(0.2,1))+
scale_color_manual("Treatment:",values = c("black", "gray56", "goldenrod4", "goldenrod1"))+
scale_shape_manual("Treatment:",values = c(19,17,15,8))
#Time-to-germination
combined_predict_time <- ggpredict(combined_model_time2, terms = c("Type", "Treatment"))
combined_predict_time2 <- as.data.frame(cbind(combined_predict_time$predicted, combined_predict_time$std.error, combined_predict_time$conf.low, combined_predict_time$conf.high))
colnames(combined_predict_time2) <- c("predicted", "std.error", "conf.low", "conf.high")
combined_predict_time2$Treatment <- c("Gut-passed, Washed", "Gut-passed ","Control","Control, Washed","Gut-passed, Washed", "Gut-passed ","Control","Control, Washed")
combined_predict_time2$Type <- c(rep("Captive", 4), rep("Wild", 4))
combined_plot_time <- ggplot(data=combined_predict_time2, aes(x= Type, y=predicted, color=Treatment, shape = Treatment))+
geom_pointrange(aes(ymin=conf.low, ymax=conf.high), size=0.7,
position=position_dodge(.5))+
theme_classic()+
ylab("Time (Days)")+
xlab("Data Type")+
theme(axis.text.x = element_text(vjust = 1, hjust=1))+
guides(fill=guide_legend(title="Habitat"), alpha=FALSE)+
scale_alpha_manual(values= c(0.2,1))+
scale_color_manual("Treatment:", values = c( "black", "gray56", "goldenrod4", "goldenrod1"))+
scale_shape_manual("Treatment:",values = c(19,17,15,8))
#More Plots
my_comparisons <- list( c("Wild", "Captive") )
length_plot <- ggplot(data = germ_combined, aes(x = Type, y=Length)) +
geom_boxplot()+
ylab("log Seed Length (mm)")+
xlab("Data Type")+
theme_classic()
germ_combined2 <- germ_combined %>% dplyr::select(Weight, Type, Lemur)%>% distinct() %>% filter(Lemur !="UNKNOWN") %>% drop_na()
weight_plot <- ggplot(data = germ_combined2, aes(x = Type, y=Weight)) +
geom_boxplot()+
ylab("log Body Weight (g)")+
xlab("Data Type")+
theme_classic()
ggarrange(combined_plot, combined_plot_time, length_plot, weight_plot, common.legend = TRUE, labels = c("a", "b", "c", "d"), heights = c(2,2,1,1))
ggarrange(combined_plot, combined_plot_time,common.legend = TRUE, labels = c("a", "b"))
ggarrange(length_plot, weight_plot,common.legend = TRUE, labels = c("a", "b"))
```
```{r Set up phylogenies}
#Lemur Phylogeny
lemur_species <- c("Lemur_catta", "Eulemur_mongoz", "Eulemur_flavifrons", "Varecia_rubra", "Eulemur_coronatus", "Varecia_variegata", "Microcebus_murinus", "Cheirogaleus_medius")
germ$Lemur_Species2 <- germ$Lemur_Species
germ$Lemur_Species2[germ$Lemur_Species2=="L. catta"] <- "Lemur_catta"
germ$Lemur_Species2[germ$Lemur_Species2=="E. mongoz"] <- "Eulemur_mongoz"
germ$Lemur_Species2[germ$Lemur_Species2=="E. flavifrons"]<- "Eulemur_flavifrons"
germ$Lemur_Species2[germ$Lemur_Species2=="V. rubra"]<- "Varecia_rubra"
germ$Lemur_Species2[germ$Lemur_Species2=="E. coronatus"]<- "Eulemur_coronatus"
germ$Lemur_Species2[germ$Lemur_Species2=="V. variegata"]<- "Varecia_variegata"
germ$Lemur_Species2[germ$Lemur_Species2=="M. murinus"]<- "Microcebus_murinus"
germ$Lemur_Species2[germ$Lemur_Species2=="C. medius"]<- "Cheirogaleus_medius"
germ$Lemur_Species2[germ$Lemur_Species2=="*Control"] <- NA
germ$Lemur_Species2[germ$Lemur_Species2=="Control"] <- NA
species <- c("Lemur_catta", "Eulemur_mongoz", "Eulemur_flavifrons", "Varecia_rubra",
"Eulemur_coronatus", "Varecia_variegata", "Microcebus_murinus",
"Cheirogaleus_medius")
split_names <- strsplit(species, "_")
species_list <- data.frame(
species = species,
genus = sapply(split_names, `[`, 1),
stringsAsFactors = FALSE
)
gen_list <- data.frame(
genus = c("Lemur", "Eulemur", "Varecia", "Microcebus", "Cheirogaleus"),
family = c("Lemuridae", "Lemuridae", "Lemuridae", "Cheirogaleidae", "Cheirogaleidae"),
order = c("Primates", "Primates", "Primates", "Primates", "Primates"),
stringsAsFactors = FALSE
)
lemur_tree <- read.tree("~/Downloads/fbd421new.tre")
trimmed_tree <- drop.tip(lemur_tree, setdiff(lemur_tree$tip.label, species))
ultrametric_tree <- force.ultrametric(trimmed_tree)
lemur_Ainv <- inverseA(ultrametric_tree)$Ainv
rownames(lemur_Ainv) <- colnames(lemur_Ainv) <- c("Node2","Node7","Node3","Node4","Node5","Node6", ultrametric_tree$tip.label)
lemur_Ainv_filtered <- lemur_Ainv[lemur_species, lemur_species, drop = FALSE]
#Plant Phylogeny
germ$Plant_Species_Common_Name2 <- germ$Plant_Species_Common_Name
germ$Plant_Species_Common_Name2[germ$Plant_Species_Common_Name2=="Capsicum annuum"]<-"Capsicum_annuum"
germ$Plant_Species_Common_Name2[germ$Plant_Species_Common_Name2=="Cucumis melo var. cantalupensis"]<-"Cucumis_melo"
germ$Plant_Species_Common_Name2[germ$Plant_Species_Common_Name2=="Solanum lycopersicum"]<-"Solanum_lycopersicum"
germ$Plant_Species_Common_Name2[germ$Plant_Species_Common_Name2=="Actinidia deliciosa"]<-"Actinidia_deliciosa"
germ$Plant_Species_Common_Name2[germ$Plant_Species_Common_Name2=="Selenicereus undatus"]<-"Selenicereus_undatus"
germ$Plant_Species_Common_Name2[germ$Plant_Species_Common_Name2=="Cucumis melo L."]<-"Cucumis_melo"
germ$Plant_Species_Common_Name2[germ$Plant_Species_Common_Name2=="Cucurbita moschata"]<-"Cucurbita_moschata"
germ$Plant_Species_Common_Name2[germ$Plant_Species_Common_Name2=="Rubus fruticosus"]<-"Rubus_fruticosus"
germ$Plant_Species_Common_Name2[germ$Plant_Species_Common_Name2=="Malus pumila"]<-"Malus_pumila"
germ$Plant_Species_Common_Name2[germ$Plant_Species_Common_Name2=="Oxycoccus macrocarpus"]<-"Oxycoccus_macrocarpus"
plant_species <- data.frame(unique(germ$Plant_Species_Common_Name2))
plant_species$genus <- c("Capsicum", "Cucumis", "Solanum", "Actinidia", "Selenicereus", "Cucurbita", "Rubus", "Malus", "Oxycoccus")
colnames(plant_species)[1] <- "species"
plant_species$species <- gsub("_", " ", plant_species$species)
plant_family <- getTaxonomy(plant_species$genus)
plant_species$family <- plant_family$family
plant_phylogeny <- V.PhyloMaker::phylo.maker(sp.list = plant_species, tree = GBOTB.extended)
plant_phylogeny2 <- plant_phylogeny$scenario.3
plant_species2 <- gsub(" ", "_", plant_species$species)
plant_phylogeny2$node.label <- NULL
species_Ainv <- inverseA(plant_phylogeny2)$Ainv
rownames(species_Ainv) <- colnames(species_Ainv) <- c("Node2","Node6","Node3","Node4","Node5","Node7","Node8", plant_phylogeny2$tip.label)
species_Ainv_filtered <- species_Ainv[plant_species2, plant_species2, drop = FALSE]
germ_time$Plant_Species_Common_Name2 <- germ_time$Plant_Species_Common_Name
germ_time$Plant_Species_Common_Name2[germ_time$Plant_Species_Common_Name2=="Capsicum annuum"]<-"Capsicum_annuum"
germ_time$Plant_Species_Common_Name2[germ_time$Plant_Species_Common_Name2=="Cucumis melo var. cantalupensis"]<-"Cucumis_melo"
germ_time$Plant_Species_Common_Name2[germ_time$Plant_Species_Common_Name2=="Solanum lycopersicum"]<-"Solanum_lycopersicum"
germ_time$Plant_Species_Common_Name2[germ_time$Plant_Species_Common_Name2=="Actinidia deliciosa"]<-"Actinidia_deliciosa"
germ_time$Plant_Species_Common_Name2[germ_time$Plant_Species_Common_Name2=="Selenicereus undatus"]<-"Selenicereus_undatus"
germ_time$Plant_Species_Common_Name2[germ_time$Plant_Species_Common_Name2=="Cucumis melo L."]<-"Cucumis_melo"
germ_time$Plant_Species_Common_Name2[germ_time$Plant_Species_Common_Name2=="Cucurbita moschata"]<-"Cucurbita_moschata"
germ_time$Plant_Species_Common_Name2[germ_time$Plant_Species_Common_Name2=="Rubus fruticosus"]<-"Rubus_fruticosus"
germ_time$Plant_Species_Common_Name2[germ_time$Plant_Species_Common_Name2=="Malus pumila"]<-"Malus_pumila"
germ_time$Plant_Species_Common_Name2[germ_time$Plant_Species_Common_Name2=="Oxycoccus macrocarpus"]<-"Oxycoccus_macrocarpus"
#Wild plants
comatsa_seeds2$Plante[comatsa_seeds2$Plante=="Cryptocaria"] <- "Cryptocarya"
plant_species_wild <- as.data.frame(unique(comatsa_seeds2$Plante))
colnames(plant_species_wild)[1] <- "genus"
plant_family2 <- getTaxonomy(plant_species_wild$genus)
plant_species_wild$family <- plant_family2$family
plant_species_wild$species <- c("Grewia nervosa", "Cryptocarya concinna", "Syzygium calcadense", "Pandanus carmichaelii", "Adina cordifolia", "Sterculia lanceolata")
plant_species_wild <- plant_species_wild[,c(3,1,2)]
plant_phylogeny_wild <- V.PhyloMaker::phylo.maker(sp.list = plant_species_wild, tree = GBOTB.extended)
plant_phylogeny2_wild <- plant_phylogeny_wild$scenario.3
plant_phylogeny2_wild$tip.label <- c("Adina", "Sterculia", "Grewia", "Syzygium", "Pandanus", "Cryptocarya")
plot(plant_phylogeny2_wild)
plant_species2_wild <- gsub(" ", "_", plant_species_wild$species)
plant_phylogeny2$node.label <- NULL
plant_phylogeny2_wild$node.label <- NULL
species_Ainv_wild <- inverseA(plant_phylogeny2_wild)$Ainv
rownames(species_Ainv_wild) <- colnames(species_Ainv_wild) <- c("Node2","Node3","Node4","Node5", plant_phylogeny2_wild$tip.label)
species_Ainv_filtered_wild <- species_Ainv_wild[plant_species_wild$genus, plant_species_wild$genus, drop = FALSE]
#Map Traits
lengths_captive <- germ %>% select(Length, Plant_Species_Common_Name2) %>% drop_na()%>% group_by(Plant_Species_Common_Name2) %>% summarise(Length=mean(Length))
lengths_wild <- comatsa_seeds2 %>% select(L, Plante) %>% drop_na()%>% group_by(Plante) %>% summarise(Length=mean(L))
mean_trait <- c(Actinidia_deliciosa = 2.276723,
Capsicum_annuum = 4.547217,
Cucumis_melo = 10.732763,
Cucurbita_moschata = 13.052039 ,
Malus_pumila = 7.986889,
Oxycoccus_macrocarpus=2.102167,
Rubus_fruticosus=3.401143,
Selenicereus_undatus=2.238268,
Solanum_lycopersicum=4.064198)
mean_trait2 <- c(Adina = 15.067674 ,
Cryptocarya = 16.778761,
Grewia = 6.380765,
Pandanus = 13.412530,
Sterculia =9.464398,
Syzygium=11.544171)
trait_map <- contMap(plant_phylogeny2, mean_trait, plot = FALSE, lwd = 4, outline = FALSE, ftype = "reg", type = "phylogram")
plot(trait_map, lwd = 4, mar = c(5, 4, 8, 2))
trait_map3 <- contMap(plant_phylogeny2_wild, mean_trait2, plot = FALSE, lwd = 4, outline = FALSE, ftype = "reg", type = "phylogram")
plot(trait_map3, lwd = 4, mar = c(5, 4, 8, 2))
```
```{r Captive Treatment Models}
#Germination Rate
germ_filtered <- germ %>% filter(Lemur_Species !="*Control", Lemur_Species !="Control", Treatment !="Control") %>% drop_na(Lemur_Species) %>% mutate(animal = as.factor(Lemur_Species2), species = as.factor(Plant_Species_Common_Name2)) %>% drop_na(Length, Treatment)
germ_filtered$Lemur_Name <- interaction(germ_filtered$Lemur_Species, germ_filtered$Name)
germ$Lemur_Name <- interaction(germ$Lemur_Species, germ$Name)
germ_time$Lemur_Name <- interaction(germ_time$Lemur_Species, germ_time$Name)
ginverse_list <- list(animal = lemur_Ainv_filtered, species = species_Ainv_filtered)
germ$Treatment <- as.factor(germ$Treatment)
prior <- list(
G = list(
G1 = list(V = 1, nu = 0.002),
G2 = list(V = 1, nu = 0.002)
),
R = list(V = 1, fix = 1)
)
prior_t2 <- list(
G = list(
G1 = list(V = 1, nu = 0.002), # species random effect
G2 = list(V = 1, nu = 0.002), # Lemur_Species2 random effect
G3 = list(V = 1, nu = 0.002) # Lemur_Name random effect
),
R = list(V = 1, nu = 0.002) # Residual variance (fixed)
)
treatment_phylo1 <- MCMCglmm(
germ ~ Treatment,
random = ~ animal + species + Lemur_Name,
family = "categorical",
ginverse = ginverse_list,
data = germ_filtered,
prior = prior_t2,
verbose = FALSE,
nitt=15000,
burnin = 1500,
thin = 1
)
treatment_phylo1b <- MCMCglmm(
germ ~ Treatment,
random = ~ animal + species + Lemur_Name,
family = "categorical",
ginverse = ginverse_list,
data = germ_filtered,
prior = prior_t2,
verbose = FALSE,
nitt=15000,
burnin = 1500,
thin = 1
)
treatment_phylo1c <- MCMCglmm(
germ ~ Treatment,
random = ~ animal + species + Lemur_Name,
family = "categorical",
ginverse = ginverse_list,
data = germ_filtered,
prior = prior_t2,
verbose = FALSE,
nitt=15000,
burnin = 1500,
thin = 1
)
treatment_phylo1_summary <- summary(treatment_phylo1)
treatment_phylo1_summary$DIC
plot(treatment_phylo1$Sol)
treatment_phylo1mcmc_chains <- mcmc.list(as.mcmc(treatment_phylo1$Sol), as.mcmc(treatment_phylo1b$Sol), as.mcmc(treatment_phylo1c$Sol))
treatment_phylo1gelman_results <- gelman.diag(treatment_phylo1mcmc_chains)
plot(treatment_phylo1mcmc_chains)
treatment_phylo2 <- MCMCglmm(
germ ~ Treatment,
random = ~ species + Lemur_Species2 +Lemur_Name,
family = "categorical",
ginverse = list(species = species_Ainv_filtered),
data = germ_filtered,
prior = prior_t2,
verbose = FALSE,
nitt=15000,
burnin = 1500,
thin = 1
)
treatment_phylo2b <- MCMCglmm(
germ ~ Treatment,
random = ~ species + Lemur_Species2 +Lemur_Name,
family = "categorical",
ginverse = list(species = species_Ainv_filtered),
data = germ_filtered,
prior = prior_t2,
verbose = FALSE,
nitt=15000,
burnin = 1500,
thin = 1
)
treatment_phylo2c <- MCMCglmm(
germ ~ Treatment,
random = ~ species + Lemur_Species2 +Lemur_Name,
family = "categorical",
ginverse = list(species = species_Ainv_filtered),
data = germ_filtered,
prior = prior_t2,
verbose = FALSE,
nitt=15000,
burnin = 1500,
thin = 1
)
treatment_phylo2mcmc_chains <- mcmc.list(as.mcmc(treatment_phylo2$Sol), as.mcmc(treatment_phylo2b$Sol), as.mcmc(treatment_phylo2c$Sol))
treatment_phylo2gelman_results <- gelman.diag(treatment_phylo2mcmc_chains)
plot(treatment_phylo2mcmc_chains)
treatment_phylo2_summary <- summary(treatment_phylo2)
treatment_phylo2_summary$DIC
germ$species <- germ$Plant_Species_Common_Name2
treatment_phylo3 <- MCMCglmm(
germ ~ Treatment,
random = ~ species + Lemur_Species2+Lemur_Name,
family = "categorical",
ginverse = list(species = species_Ainv_filtered),
data = germ,
prior = prior_t2,
verbose = FALSE,
nitt=15000,
burnin = 1500,
thin = 1
)
treatment_phylo3b <- MCMCglmm(
germ ~ Treatment,
random = ~ species + Lemur_Species2+Lemur_Name,
family = "categorical",
ginverse = list(species = species_Ainv_filtered),
data = germ,
prior = prior_t2,
verbose = FALSE,
nitt=15000,
burnin = 1500,
thin = 1
)
treatment_phylo3c <- MCMCglmm(
germ ~ Treatment,
random = ~ species + Lemur_Species2+Lemur_Name,
family = "categorical",
ginverse = list(species = species_Ainv_filtered),
data = germ,
prior = prior_t2,
verbose = FALSE,
nitt=15000,
burnin = 1500,
thin = 1
)
treatment_phylo3mcmc_chains <- mcmc.list(as.mcmc(treatment_phylo3$Sol), as.mcmc(treatment_phylo3b$Sol), as.mcmc(treatment_phylo3c$Sol))
treatment_phylo3gelman_results <- gelman.diag(treatment_phylo3mcmc_chains)
plot(treatment_phylo2mcmc_chains)
treatment_phylo3_summary <- summary(treatment_phylo3)
germ$Treatment2 <- NULL
germ$Treatment2[germ$Treatment=="Gut-passed, Washed"] <- "aGut-passed, Washed"
germ$Treatment2[germ$Treatment=="Gut-passed"] <- "Gut-passed, Unwashed"
germ$Treatment2[germ$Treatment=="Control"] <- "Control"
germ$Treatment2[germ$Treatment=="Control, Washed"] <- "Control, Washed"
treatment_phylo3_test <- MCMCglmm(
germ ~ Treatment2,
random = ~ species + Lemur_Species2+Lemur_Name,
family = "categorical",
ginverse = list(species = species_Ainv_filtered),
data = germ,
prior = prior_t2,
verbose = FALSE
)
summary(treatment_phylo3_test)
#Time-to-germination
germ_time$species <- germ_time$Plant_Species_Common_Name2
treatment_phylo4 <- MCMCglmm(
log(GerminationTime) ~ Treatment,
random = ~ species + Lemur_Species,
family = "gaussian",
ginverse = list(species = species_Ainv_filtered),
data = germ_time,
prior = prior,
verbose = FALSE,
nitt=15000,
burnin = 1500,
thin = 1
)
treatment_phylo4b <- MCMCglmm(
log(GerminationTime) ~ Treatment,
random = ~ species + Lemur_Species,
family = "gaussian",
ginverse = list(species = species_Ainv_filtered),
data = germ_time,
prior = prior,
verbose = FALSE,
nitt=15000,
burnin = 1500,
thin = 1
)
treatment_phylo4c <- MCMCglmm(
log(GerminationTime) ~ Treatment,
random = ~ species + Lemur_Species,
family = "gaussian",
ginverse = list(species = species_Ainv_filtered),
data = germ_time,
prior = prior,
verbose = FALSE,
nitt=15000,
burnin = 1500,
thin = 1
)
treatment_phylo4mcmc_chains <- mcmc.list(as.mcmc(treatment_phylo4$Sol), as.mcmc(treatment_phylo4b$Sol), as.mcmc(treatment_phylo4c$Sol))
treatment_phylo4gelman_results <- gelman.diag(treatment_phylo4mcmc_chains)
treatment_phylo4gelman_results
treatment_phylo4_summary <- summary(treatment_phylo4)
germ_time$Treatment2 <- NULL
germ_time$Treatment2[germ_time$Treatment=="Gut-passed, Washed"] <- "aGut-passed, Washed"
germ_time$Treatment2[germ_time$Treatment=="Gut-passed"] <- "Gut-passed, Unwashed"
germ_time$Treatment2[germ_time$Treatment=="Control"] <- "Control"
germ_time$Treatment2[germ_time$Treatment=="Control, Washed"] <- "Control, Washed"
treatment_phylo4_test <- MCMCglmm(
log(GerminationTime) ~ Treatment2,
random = ~ species + Lemur_Species,
family = "gaussian",
ginverse = list(species = species_Ainv_filtered),
data = germ_time,
prior = prior,
verbose = FALSE
)
summary(treatment_phylo4_test)
#Survival Analysis
#Set up data
germ_time2 <- germ %>% select(Germination.Date, Date, germ, Treatment, Lemur_Species, Plant_Species_Common_Name, Length_log, mLength_log, Sex, Age, Weight, mWeight, GerminationTime)
germ_time2$GerminationTime[is.na(germ_time2$GerminationTime)] <- 101
germ_time2$germ <- as.factor(germ_time2$germ)
germ_time2 <- germ_time2 %>% filter(GerminationTime <102) %>% filter(GerminationTime >0)
#Treatment survival model
treatment_survival_results <- cuminc(Surv(GerminationTime, germ) ~ Treatment, data = germ_time2)%>%
tbl_cuminc() %>%
add_p()
```
```{r Captive Treatment Lambda}
#Lambda including lemur phylogeny
vcv_samples <- treatment_phylo1$VCV
var_animal <- vcv_samples[, "animal"]
var_species <- vcv_samples[, "species"]
var_residual <- vcv_samples[, "units"] # This may not be present for categorical models
total_variance <- var_animal + var_species + var_residual
lambda_animal <- var_animal / total_variance
lambda_species <- var_species / total_variance
lambda_animal_mean <- mean(lambda_animal)
lambda_animal_ci <- HPDinterval(as.mcmc(lambda_animal), prob = 0.95)
lambda_species_mean <- mean(lambda_species)
lambda_species_ci <- HPDinterval(as.mcmc(lambda_species), prob = 0.95)
cat("Lambda for animal:\n")
cat("Mean λ:", lambda_animal_mean, "\n") # 0.09152821
cat("95% CI for λ:", lambda_animal_ci[1], "-", lambda_animal_ci[2], "\n\n")# 0.003771899 - 0.2293603
cat("Lambda for species:\n")
cat("Mean λ:", lambda_species_mean, "\n")#0.78193
cat("95% CI for λ:", lambda_species_ci[1], "-", lambda_species_ci[2], "\n")#0.5912612 - 0.9520928
#Germination Rate Treatment Model
vcv_samples <- treatment_phylo3$VCV
var_phylo <- vcv_samples[, "species"]
var_lemur <- vcv_samples[, "Lemur_Species2"]
var_residual <- vcv_samples[, "units"] # This might not exist if residual variance is fixed for categorical family
total_variance <- var_phylo + var_lemur + var_residual
lambda_samples <- var_phylo / total_variance
lambda_mean <- mean(lambda_samples)
lambda_ci <- HPDinterval(as.mcmc(lambda_samples), prob = 0.95)
print(paste("Mean λ:", lambda_mean))#"Mean λ: 0.75313912417734"
print(paste("95% CI for λ:", lambda_ci[1], "-", lambda_ci[2]))#"95% CI for λ: 0.573266226720467 - 0.929096659831858"
#Time-To-Germination Treatment Model
vcv_samples <- treatment_phylo4$VCV
var_species <- vcv_samples[, "species"]
var_lemur <- vcv_samples[, "Lemur_Species"]
var_residual <- vcv_samples[, "units"]
total_variance <- var_species + var_lemur + var_residual
lambda_species <- var_species / total_variance
lambda_species_mean <- mean(lambda_species)
lambda_species_ci <- HPDinterval(as.mcmc(lambda_species), prob = 0.95)
cat("Lambda for species:\n")
cat("Mean λ:", lambda_species_mean, "\n")# 0.2648558
cat("95% CI for λ:", lambda_species_ci[1], "-", lambda_species_ci[2], "\n")#0.07588762 - 0.4752233 4821844
```
```{r Plot Captive Treatment Results}
#Germination Rate
intercept_samples <- treatment_phylo3$Sol[, "(Intercept)"]
treatment_effects_samples <- treatment_phylo3$Sol[, grepl("^Treatment", colnames(treatment_phylo3$Sol))]
logistic <- function(x) exp(x) / (1 + exp(x))
intercept_probs <- logistic(intercept_samples)
treatment_probs <- apply(treatment_effects_samples, 2, function(effect) logistic(intercept_samples + effect))
intercept_probs_mcmc <- as.mcmc(intercept_probs)
treatment_probs_mcmc <- lapply(1:ncol(treatment_probs), function(i) as.mcmc(treatment_probs[, i]))
mean_intercept_prob <- mean(intercept_probs)
ci_intercept <- HPDinterval(intercept_probs_mcmc, prob = 0.95)
mean_treatment_probs <- sapply(treatment_probs_mcmc, mean)
ci_treatment <- sapply(treatment_probs_mcmc, function(x) HPDinterval(as.mcmc(x), prob = 0.95))
treatment_levels <- c(levels(germ$Treatment))
plot_data <- data.frame(
Treatment = treatment_levels,
Mean_Prob = c(mean_intercept_prob, mean_treatment_probs),
Lower_CI = c(ci_intercept[1], ci_treatment[1, ]),
Upper_CI = c(ci_intercept[2], ci_treatment[2, ])
)
treatment_plot <- ggplot(data=plot_data, aes(x= Treatment, y=Mean_Prob, shape=Treatment, color=Treatment))+
geom_pointrange(aes(ymin=Lower_CI, ymax=Upper_CI), size=0.7,
position=position_dodge(.5),color = c("black", "gray56", "goldenrod4", "goldenrod1"))+
theme_classic()+
ylab("Probability")+
xlab("Treatment")+
theme(axis.text.x = element_text(angle = 45, vjust = 1, hjust=1))+
guides(fill=guide_legend(title="Habitat"), alpha=FALSE)+
scale_alpha_manual(values= c(0.2,1))+
scale_shape_manual(values = c(19,17,15,8))+guides(shape = "none")
#Time-to-germination
intercept_samples <- treatment_phylo4$Sol[, "(Intercept)"]
treatment_effects_samples <- treatment_phylo4$Sol[, grepl("^Treatment", colnames(treatment_phylo4$Sol))]
intercept_samples_mcmc <- as.mcmc(intercept_samples)
treatment_effects_mcmc <- lapply(1:ncol(treatment_effects_samples), function(i) as.mcmc(treatment_effects_samples[, i]))
mean_intercept_log <- mean(intercept_samples)
ci_intercept_log <- HPDinterval(intercept_samples_mcmc, prob = 0.95)
mean_treatment_preds_log <- sapply(treatment_effects_mcmc, function(effect) mean(intercept_samples + effect))
ci_treatment_preds_log <- t(sapply(treatment_effects_mcmc, function(effect) HPDinterval(as.mcmc(intercept_samples + effect), prob = 0.95)))
mean_predictions_log <- c(mean_intercept_log, mean_treatment_preds_log)
ci_predictions_log <- rbind(ci_intercept_log, ci_treatment_preds_log)
mean_predictions <- exp(mean_predictions_log)
ci_predictions <- exp(ci_predictions_log)
treatment_levels <- c( levels(as.factor(germ_time$Treatment)))
predictions_df <- data.frame(
Treatment = treatment_levels,
Mean_Predicted = mean_predictions,
Lower_CI = ci_predictions[, 1],
Upper_CI = ci_predictions[, 2]
)
treatment_plotTime <- ggplot(data=predictions_df, aes(x= Treatment, y=Mean_Predicted, shape=Treatment, color=Treatment))+
geom_pointrange(aes(ymin=Lower_CI, ymax=Upper_CI), size=0.7,
position=position_dodge(.5),color = c("black", "gray56", "goldenrod4", "goldenrod1"))+
theme_classic()+
ylab("Time (Days)")+
xlab("Treatment")+
theme(axis.text.x = element_text(angle = 45, vjust = 1, hjust=1))+
guides(fill=guide_legend(title="Habitat"), alpha=FALSE)+
scale_alpha_manual(values= c(0.2,1))+
scale_shape_manual(values = c(19,17,15,8))+guides(shape = "none")
#Survival plot
treatment_survival_plot <- cuminc(Surv(GerminationTime, germ) ~ Treatment, data = germ_time2)%>%
ggcuminc()+ theme_classic()+
add_confidence_interval()+
ylab("Cumulative Germ.")+
xlab("Time (Days)")+
scale_fill_manual(values = c("black", "gray56", "goldenrod4", "goldenrod1"))+
scale_color_manual(values = c("black", "gray56", "goldenrod4", "goldenrod1"))+
theme(legend.position="bottom")
ggarrange(treatment_plot, treatment_plotTime,treatment_survival_plot, labels = c("a", "b", "c"), ncol = 1, nrow=3)
```
```{r Captive Species Models}
#Germination Rate
germ_filtered$Lemur_Species <- as.factor(germ_filtered$Lemur_Species)
germ_filtered$germ <- as.factor(germ_filtered$germ)
prior2 <- list(
G = list(
G1 = list(V = 1, nu = 0.002)
),
R = list(
V = 1, nu = 0.002
)
)
species_phylo2 <- MCMCglmm(
germ ~ Treatment + Lemur_Species,
random = ~ species,
family = "categorical",
ginverse = list(species = species_Ainv_filtered),
data = germ_filtered,
prior = prior2,
verbose = FALSE,
nitt=15000,
burnin = 1500,
thin = 1
)
species_phylo2b <- MCMCglmm(
germ ~ Treatment + Lemur_Species,
random = ~ species,
family = "categorical",
ginverse = list(species = species_Ainv_filtered),
data = germ_filtered,
prior = prior2,
verbose = FALSE,
nitt=15000,
burnin = 1500,
thin = 1
)
species_phylo2c <- MCMCglmm(
germ ~ Treatment + Lemur_Species,
random = ~ species,
family = "categorical",
ginverse = list(species = species_Ainv_filtered),
data = germ_filtered,
prior = prior2,
verbose = FALSE,
nitt=15000,
burnin = 1500,
thin = 1
)
species_phylo2mcmc_chains <- mcmc.list(as.mcmc(species_phylo2$Sol), as.mcmc(species_phylo2b$Sol), as.mcmc(species_phylo2c$Sol))
species_phylo2gelman_results <- gelman.diag(species_phylo2mcmc_chains)
species_phylo2gelman_results
species_phylo2_summary <- summary(species_phylo2)
#Time-to-germination
germ_time_clean <- germ_time %>% drop_na(Treatment, Lemur_Species) %>% filter(Lemur_Species!="*Control")
germ_time_clean$species <- germ_time_clean$Plant_Species_Common_Name2
species_phylo3 <- MCMCglmm(
log(GerminationTime) ~ Treatment + Lemur_Species,
random = ~ species,
family = "gaussian",
ginverse = list(species = species_Ainv_filtered),
data = germ_time_clean,
prior = prior2,
verbose = FALSE,
nitt=15000,
burnin = 1500,
thin = 1
)
species_phylo3b <- MCMCglmm(
log(GerminationTime) ~ Treatment + Lemur_Species,
random = ~ species,
family = "gaussian",
ginverse = list(species = species_Ainv_filtered),
data = germ_time_clean,
prior = prior2,
verbose = FALSE,
nitt=15000,
burnin = 1500,
thin = 1
)
species_phylo3c <- MCMCglmm(
log(GerminationTime) ~ Treatment + Lemur_Species,
random = ~ species,
family = "gaussian",
ginverse = list(species = species_Ainv_filtered),
data = germ_time_clean,
prior = prior2,
verbose = FALSE,
nitt=15000,
burnin = 1500,
thin = 1
)
species_phylo3mcmc_chains <- mcmc.list(as.mcmc(species_phylo3$Sol), as.mcmc(species_phylo3b$Sol), as.mcmc(species_phylo3c$Sol))
species_phylo3gelman_results <- gelman.diag(species_phylo3mcmc_chains)
species_phylo3gelman_results
species_phylo3_summary <- summary(species_phylo3)
species_output <- as.data.frame(rbind(species_phylo2_summary$solutions,species_phylo3_summary$solutions))
species_output$Variable <- rownames(species_output)
species_output$post.mean <- round(species_output$post.mean, 3)
species_output$`l-95% CI` <- round(species_output$`l-95% CI`, 3)
species_output$`u-95% CI` <- round(species_output$`u-95% CI`, 3)
species_output$pMCMC <- round(species_output$pMCMC, 3)
write.csv(species_output, "species_output.csv")
#Species survival model
cumulative_species <- cuminc(Surv(GerminationTime, germ) ~ Lemur_Species, data = germ_time2)%>%
tbl_cuminc() %>%
add_p()
```
```{r Plot Captive Species Models}
#Germination Rate
summary(species_phylo2)
intercept_samples <- species_phylo2$Sol[, "(Intercept)"]
species_effects_samples <- species_phylo2$Sol[, grepl("^Lemur_Species", colnames(species_phylo2$Sol))]+0.56209
logistic <- function(x) exp(x) / (1 + exp(x))
intercept_probs <- logistic(intercept_samples)
intercept_probs <- matrix(sapply(intercept_samples , logistic), nrow = 13500, ncol = 7)
species_probs <- matrix(sapply(species_effects_samples, logistic), nrow = 13500, ncol = 7)
intercept_probs_mcmc <- as.mcmc(intercept_probs)
species_probs_mcmc <- lapply(1:ncol(species_probs), function(i) as.mcmc(species_probs[, i]))
intercept_samples2 <- intercept_samples -0.21683
intercept_probs2 <- logistic(intercept_samples2)
intercept_probs2 <- matrix(sapply(intercept_samples2 , logistic), nrow = 13500, ncol = 7)
intercept_probs_mcmc2 <- as.mcmc(intercept_probs2)
species_effects_samples2 <- species_effects_samples -0.21683
species_probs2 <- matrix(sapply(species_effects_samples2, logistic), nrow = 13500, ncol = 7)
species_probs_mcmc2 <- lapply(1:ncol(species_probs2), function(i) as.mcmc(species_probs2[, i]))
mean_intercept_prob <- mean(intercept_probs)
ci_intercept <- HPDinterval(intercept_probs_mcmc, prob = 0.95)
mean_species_probs <- sapply(species_probs_mcmc, mean)
ci_species <- sapply(species_probs_mcmc, function(x) HPDinterval(as.mcmc(x), prob = 0.95))
species_levels <- c(levels(germ_filtered$Lemur_Species))
mean_intercept_prob2 <- mean(intercept_probs2)
ci_intercept2 <- HPDinterval(intercept_probs_mcmc2, prob = 0.95)
mean_species_probs2 <- sapply(species_probs_mcmc2, mean)
ci_species2 <- sapply(species_probs_mcmc2, function(x) HPDinterval(as.mcmc(x), prob = 0.95))
plot_data <- data.frame(
Species = species_levels,
Mean_Prob = c(mean_intercept_prob, mean_species_probs),
Lower_CI = c(ci_intercept[1], ci_species[1, ]),
Upper_CI = c(ci_intercept[8], ci_species[2, ])) %>% mutate(Type ="Washed")
plot_data2 <-data.frame(
Species = species_levels,
Mean_Prob = c(mean_intercept_prob2, mean_species_probs2),
Lower_CI = c(ci_intercept2[1], ci_species2[1, ]),
Upper_CI = c(ci_intercept2[8], ci_species2[2, ])) %>% mutate(Type = "Unwashed")
plot_data3 <- rbind(plot_data, plot_data2)
mean(na.omit(germ$germ[germ$Treatment=="Control"]))
mean(na.omit(germ$germ[germ$Treatment=="Control, Washed"]))
custom_colors <- c("#1f77b4", "#ff7f0e", "#2ca02c", "#d62728",
"#9467bd", "#8c564b", "#e377c2", "#17becf")
species_plot <- ggplot(data=plot_data3, aes(x= Species, y=Mean_Prob, linetype=Type))+
geom_hline(aes(yintercept=0.349835), linetype="solid", color="grey")+
geom_hline(aes(yintercept=0.4188791), linetype="dashed", color="grey")+guides(linetype= "none")+
geom_pointrange(aes(ymin=Lower_CI, ymax=Upper_CI), size=0.5,position=position_dodge(.5),color =c(custom_colors, custom_colors))+
theme_classic()+
ylab("Probability")+
xlab("Lemur Species")+
theme(axis.text.x = element_text(angle = 45, vjust = 1, hjust=1))+
guides(fill=guide_legend(title="Habitat"), alpha=FALSE)+
scale_alpha_manual(values= c(0.2,1))
#Time-to-germination
summary(species_phylo3)
intercept_samples <- species_phylo3$Sol[, "(Intercept)"]
species_effects_samples <- species_phylo3$Sol[, grepl("^Lemur_Species", colnames(species_phylo3$Sol))]+2.244992
logistic <- function(x) exp(x)
intercept_probs <- logistic(intercept_samples)
intercept_probs <- matrix(sapply(intercept_samples , logistic), nrow = 13500, ncol = 7)
species_probs <- matrix(sapply(species_effects_samples, logistic), nrow = 13500, ncol = 7)
intercept_probs_mcmc <- as.mcmc(intercept_probs)
species_probs_mcmc <- lapply(1:ncol(species_probs), function(i) as.mcmc(species_probs[, i]))
intercept_samples3 <- intercept_samples-0.075590
intercept_probs3 <- logistic(intercept_samples3)
intercept_probs3 <- matrix(sapply(intercept_samples3 , logistic), nrow = 13500, ncol = 7)
intercept_probs_mcmc3 <- as.mcmc(intercept_probs3)
species_effects_samples3 <- species_effects_samples-0.075590
species_probs3 <- matrix(sapply(species_effects_samples3, logistic), nrow = 13500, ncol = 7)
species_probs_mcmc3<- lapply(1:ncol(species_probs3), function(i) as.mcmc(species_probs3[, i]))
mean_intercept_prob <- mean(intercept_probs)
ci_intercept <- HPDinterval(intercept_probs_mcmc, prob = 0.95)
mean_species_probs <- sapply(species_probs_mcmc, mean)
ci_species <- sapply(species_probs_mcmc, function(x) HPDinterval(as.mcmc(x), prob = 0.95))
species_levels <- c(levels(germ_filtered$Lemur_Species))
mean_intercept_prob3 <- mean(intercept_probs3)
ci_intercept3 <- HPDinterval(intercept_probs_mcmc3, prob = 0.95)
mean_species_probs3 <- sapply(species_probs_mcmc3, mean)
ci_species3 <- sapply(species_probs_mcmc3, function(x) HPDinterval(as.mcmc(x), prob = 0.95))
plot_data <- data.frame(
Species = species_levels,
Mean_Prob = c(mean_intercept_prob, mean_species_probs),
Lower_CI = c(ci_intercept[1], ci_species[1, ]),
Upper_CI = c(ci_intercept[8], ci_species[2, ])) %>% mutate(Type ="Washed")
plot_data3 <-data.frame(
Species = species_levels,
Mean_Prob = c(mean_intercept_prob3, mean_species_probs3),
Lower_CI = c(ci_intercept3[1], ci_species3[1, ]),
Upper_CI = c(ci_intercept3[8], ci_species3[2, ])) %>% mutate(Type = "Unwashed")
plot_data3 <- rbind(plot_data, plot_data3)
mean(na.omit(germ_time$GerminationTime[germ_time$Treatment=="Control"]))
mean(na.omit(germ_time$GerminationTime[germ_time$Treatment=="Control, Washed"]))
species_plot_time <- ggplot(data=plot_data3, aes(x= Species, y=Mean_Prob, linetype=Type))+
geom_hline(aes(yintercept=16.5), linetype="solid", color="grey")+
geom_hline(aes(yintercept=13.10563), linetype="dashed", color="grey")+guides(linetype= "none")+
geom_pointrange(aes(ymin=Lower_CI, ymax=Upper_CI), size=0.5,position=position_dodge(.5),color =c(custom_colors, custom_colors))+
theme_classic()+
ylab("Time (Days)")+
xlab("Lemur Species")+
theme(axis.text.x = element_text(angle = 45, vjust = 1, hjust=1))+
guides(fill=guide_legend(title="Habitat"), alpha=FALSE)+
scale_alpha_manual(values= c(0.3,1))
#Species survival plot
species_survival_plot <- cuminc(Surv(GerminationTime, germ) ~ Lemur_Species, data = germ_time2)%>%
ggcuminc()+ theme_classic()+
add_confidence_interval()+
ylab("Cumulative Germ.")+
xlab("Time (Days)")+
scale_fill_manual(values = c("black", custom_colors))+
scale_color_manual(values = c("black", custom_colors))+
theme(legend.position="bottom")
ggarrange(species_plot, species_plot_time,species_survival_plot, labels = c("a", "b", "c"), ncol = 1, nrow=3)
```
```{r Lambda for Captive Species Models}
#Germination rate
vcv_samples <- species_phylo1$VCV
var_animal <- vcv_samples[, "animal"]
var_species <- vcv_samples[, "species"]
var_residual <- vcv_samples[, "units"] # This may not exist if not estimated
total_variance <- var_animal + var_species + var_residual
lambda_animal <- var_animal / total_variance
lambda_species <- var_species / total_variance
lambda_animal_mean <- mean(lambda_animal)
lambda_animal_ci <- HPDinterval(as.mcmc(lambda_animal), prob = 0.95)
lambda_species_mean <- mean(lambda_species)
lambda_species_ci <- HPDinterval(as.mcmc(lambda_species), prob = 0.95)
cat("Lambda for animal:\n")
cat("Mean λ:", lambda_animal_mean, "\n") #λ: 0.7337508
cat("95% CI for λ:", lambda_animal_ci[1], "-", lambda_animal_ci[2], "\n\n")#0.00121419 - 1
cat("Lambda for species:\n")
cat("Mean λ:", lambda_species_mean, "\n")#0.2308958
cat("95% CI for λ:", lambda_species_ci[1], "-", lambda_species_ci[2], "\n")#1.578445e-10 - 0.891191
vcv_samples <- species_phylo2$VCV
var_species <- vcv_samples[, "species"]
var_residual <- vcv_samples[, "units"] # This might be fixed or estimated
total_variance <- var_species + var_residual
lambda_species <- var_species / total_variance
lambda_species_mean <- mean(lambda_species)
lambda_species_ci <- HPDinterval(as.mcmc(lambda_species), prob = 0.95)
cat("Lambda for species:\n")
cat("Mean λ:", lambda_species_mean, "\n")#0.741633
cat("95% CI for λ:", lambda_species_ci[1], "-", lambda_species_ci[2], "\n")#0.5359009 - 0.9523722
#Time-to-germination
vcv_samples <- species_phylo3$VCV
var_species <- vcv_samples[, "species"]
var_residual <- vcv_samples[, "units"]
total_variance <- var_species + var_residual
lambda_species <- var_species / total_variance
lambda_species_mean <- mean(lambda_species)
lambda_species_ci <- HPDinterval(as.mcmc(lambda_species), prob = 0.95)
cat("Lambda for species:\n")
cat("Mean λ:", lambda_species_mean, "\n")#0.5823094
cat("95% CI for λ:", lambda_species_ci[1], "-", lambda_species_ci[2], "\n")#0.3430014 - 0.8180433
```
```{r Captive Seed Length}
#Germination Rate
germ$species <- germ$Plant_Species_Common_Name2
germ <- germ %>% drop_na(species, Treatment, Length)
seed_phlyo1 <- MCMCglmm(
germ ~ Length*Treatment,
random = ~ species + Lemur_Species,
family = "categorical",
ginverse = list(species = species_Ainv_filtered),
data = germ,
prior = prior,
verbose = FALSE,
nitt=15000,
burnin = 1500,
thin = 1
)
seed_phlyo1b <- MCMCglmm(
germ ~ Length*Treatment,
random = ~ species + Lemur_Species,
family = "categorical",
ginverse = list(species = species_Ainv_filtered),
data = germ,
prior = prior,
verbose = FALSE,
nitt=15000,
burnin = 1500,
thin = 1
)
seed_phlyo1c <- MCMCglmm(
germ ~ Length*Treatment,
random = ~ species + Lemur_Species,
family = "categorical",
ginverse = list(species = species_Ainv_filtered),
data = germ,
prior = prior,
verbose = FALSE,
nitt=15000,
burnin = 1500,
thin = 1
)
seed_phlyo1mcmc_chains <- mcmc.list(as.mcmc(seed_phlyo1$Sol), as.mcmc(seed_phlyo1b$Sol), as.mcmc(seed_phlyo1c$Sol))
seed_phlyo1gelman_results <- gelman.diag(seed_phlyo1mcmc_chains)
seed_phlyo1gelman_results
seed_phlyo1_summary <- summary(seed_phlyo1)
#Time-to-germination
germ_time$species <- germ_time$Plant_Species_Common_Name2
germ_time <- germ_time %>% drop_na(Length, Treatment) %>% mutate(Treatment = as.factor(Treatment))
seed_phlyo2 <- MCMCglmm(
log(GerminationTime) ~ Length*Treatment,
random = ~ species + Lemur_Species,
family = "gaussian",
ginverse = list(species = species_Ainv_filtered),
data = germ_time,
prior = prior,
verbose = FALSE,
nitt=15000,
burnin = 1500,
thin = 1
)
seed_phlyo2_summary <- summary(seed_phlyo2)
seed_phlyo3 <- MCMCglmm(
log(GerminationTime) ~ Length+Treatment,
random = ~ species + Lemur_Species,
family = "gaussian",
ginverse = list(species = species_Ainv_filtered),
data = germ_time,
prior = prior,
verbose = FALSE,
nitt=15000,
burnin = 1500,
thin = 1
)
seed_phlyo3b <- MCMCglmm(
log(GerminationTime) ~ Length+Treatment,
random = ~ species + Lemur_Species,
family = "gaussian",
ginverse = list(species = species_Ainv_filtered),
data = germ_time,
prior = prior,
verbose = FALSE,
nitt=15000,
burnin = 1500,
thin = 1
)
seed_phlyo3c <- MCMCglmm(
log(GerminationTime) ~ Length+Treatment,
random = ~ species + Lemur_Species,
family = "gaussian",
ginverse = list(species = species_Ainv_filtered),
data = germ_time,
prior = prior,
verbose = FALSE,
nitt=15000,
burnin = 1500,
thin = 1
)
seed_phlyo3mcmc_chains <- mcmc.list(as.mcmc(seed_phlyo3$Sol), as.mcmc(seed_phlyo3b$Sol), as.mcmc(seed_phlyo3c$Sol))
seed_phlyo3gelman_results <- gelman.diag(seed_phlyo3mcmc_chains)
seed_phlyo3gelman_results
seed_phlyo3_summary <- summary(seed_phlyo3)
captive_seeds <- as.data.frame(rbind(seed_phlyo1_summary$solutions, seed_phlyo3_summary$solutions))
captive_seeds$Variable <- rownames(captive_seeds)
captive_seeds$post.mean <- round(captive_seeds$post.mean, 3)
captive_seeds$`l-95% CI` <- round(captive_seeds$`l-95% CI`, 3)
captive_seeds$`u-95% CI` <- round(captive_seeds$`u-95% CI`, 3)
captive_seeds$pMCMC <- round(captive_seeds$pMCMC, 3)
write.csv(captive_seeds, "captive_seeds.csv")
```
```{r Lambda for Captive Seed Length}
#Germination Rate
variance_components <- seed_phlyo1$VCV
phylogenetic_variance <- variance_components[, "species"]
residual_variance <- variance_components[, "units"]
total_variance <- phylogenetic_variance + residual_variance
lambda <- phylogenetic_variance / total_variance
mean_lambda <- mean(lambda)
ci_lambda <- HPDinterval(as.mcmc(lambda), prob = 0.95)
cat("Mean lambda:", mean_lambda, "\n")#0.8630864
cat("95% CI for lambda:", ci_lambda, "\n")#0.7494259 0.9594791
#Time-to-germination
species_var <- seed_phlyo3$VCV[, "species"]
residual_var <- seed_phlyo3$VCV[, "units"]
lambda_samples <- species_var / (species_var + residual_var)
lambda_mean <- mean(lambda_samples)
lambda_CI <- quantile(lambda_samples, probs = c(0.025, 0.975))
lambda_mean
lambda_CI
```
```{r Captive Seed Length Plot}
# Germination Rate
summary(seed_phlyo1)
fixed_effects_samples <- seed_phlyo1$Sol
length_vals <- seq(min(germ$Length), max(germ$Length), length.out = 100)
treatment_levels <- levels(germ$Treatment)
pred_grid <- expand.grid(Length = length_vals, Treatment = treatment_levels)
intercept_samples <- fixed_effects_samples[, "(Intercept)"]
length_samples <- fixed_effects_samples[, "Length"]
treatment_samples <- fixed_effects_samples[, grepl("^Treatment", colnames(fixed_effects_samples)), drop = FALSE]
interaction_samples <- fixed_effects_samples[, grepl("^Length:Treatment", colnames(fixed_effects_samples)), drop = FALSE]
logistic <- function(x) exp(x) / (1 + exp(x))
predict_logit <- function(intercept, length, treatment, interaction, length_val, treatment_val) {
treatment_idx <- which(treatment_levels == treatment_val)
treatment_effect <- if (treatment_idx == 1) 0 else treatment[, treatment_idx - 1] # Assuming the first level is the reference
interaction_effect <- if (treatment_idx == 1) 0 else interaction[, treatment_idx - 1]
intercept + length * length_val + treatment_effect + interaction_effect * length_val
}
predictions_logit <- matrix(NA, nrow = nrow(pred_grid), ncol = length(intercept_samples))
for (i in 1:nrow(pred_grid)) {
length_val <- pred_grid$Length[i]
treatment_val <- as.character(pred_grid$Treatment[i])
predictions_logit[i, ] <- predict_logit(intercept_samples, length_samples, treatment_samples, interaction_samples, length_val, treatment_val)
}
predictions_prob <- logistic(predictions_logit)
pred_mean <- apply(predictions_prob, 1, mean)
pred_ci <- t(apply(predictions_prob, 1, function(x) HPDinterval(as.mcmc(x), prob = 0.95)))
pred_grid$Mean <- pred_mean
pred_grid$Lower_CI <- pred_ci[, 1]
pred_grid$Upper_CI <- pred_ci[, 2]
captive_length_rate <- ggplot(pred_grid, aes(x = Length, y = Mean, color = Treatment)) +
geom_line(size = 1) +
theme_classic() +
labs(x = "Seed Length (cm)",
y = "Probability",
color = "Treatment",
fill = "Treatment") +
scale_color_manual("Treatment:", values=c("black", "gray56", "goldenrod4", "goldenrod1"))
captive_length_rate2 <-captive_length_rate +geom_point(data=germ,aes(x = Length, y = germ),colors= c("black", "gray56", "goldenrod4", "goldenrod1"), size=1, position = position_jitter(width = 0, height = 0.02), alpha=0.3)
#Time-to-germination
fixed_effects_samples <- seed_phlyo3$Sol
length_vals <- seq(min(germ_time$Length), max(germ_time$Length), length.out = 100)
treatment_levels <- levels(germ_time$Treatment)
pred_grid <- expand.grid(Length = length_vals, Treatment = treatment_levels)
intercept_samples <- fixed_effects_samples[, "(Intercept)"]
length_samples <- fixed_effects_samples[, "Length"]
treatment_samples <- fixed_effects_samples[, grepl("^Treatment", colnames(fixed_effects_samples)), drop = FALSE]
predict_log <- function(intercept, length, treatment, length_val, treatment_val) {
treatment_idx <- which(treatment_levels == treatment_val)
treatment_effect <- if (treatment_idx == 1) 0 else treatment[, treatment_idx - 1] # Assuming the first level is the reference
intercept + length * length_val + treatment_effect
}
predictions_log <- matrix(NA, nrow = nrow(pred_grid), ncol = length(intercept_samples))
for (i in 1:nrow(pred_grid)) {
length_val <- pred_grid$Length[i]
treatment_val <- as.character(pred_grid$Treatment[i])
predictions_log[i, ] <- predict_log(intercept_samples, length_samples, treatment_samples, length_val, treatment_val)
}
predictions <- exp(predictions_log)
pred_mean <- apply(predictions, 1, mean)
pred_ci <- t(apply(predictions, 1, function(x) HPDinterval(as.mcmc(x), prob = 0.95)))
pred_grid$Mean <- pred_mean
pred_grid$Lower_CI <- pred_ci[, 1]
pred_grid$Upper_CI <- pred_ci[, 2]
captive_length_time <- ggplot(pred_grid, aes(x = Length, y = Mean, color = Treatment)) +
geom_line(size = 1) +
theme_classic() +
labs(x = "Seed Length (mm)",
y = "Time (Days)",
color = "Treatment",
fill = "Treatment") +
scale_color_manual("Treatment:", values=c("black", "gray56", "goldenrod4", "goldenrod1"))
captive_length_time2 <-captive_length_time +geom_point(data=germ_time,aes(x = Length, y = GerminationTime),colors= c("black", "gray56", "goldenrod4", "goldenrod1"), size=1, position = position_jitter(width = 0, height = 0.02), alpha=0.1) +ylim(0,20)
ggarrange(captive_length_rate2, captive_length_time2, labels = c("a", "b"), common.legend = TRUE)
```
```{r Captive Lemur Traits}
#Germination Rate
germ_filtered$Weight_z <- scale(germ_filtered$Weight)
germ_filtered$Age_z <- scale(germ_filtered$Age)
germ_filtered$Activity<-NULL
germ_filtered$Activity[germ_filtered$Lemur_Species=="C. medius"] <- "Nocturnal"
germ_filtered$Activity[germ_filtered$Lemur_Species=="M. murinus"] <- "Nocturnal"
germ_filtered$Activity[germ_filtered$Lemur_Species=="L. catta"] <- "Diurnal"
germ_filtered$Activity[germ_filtered$Lemur_Species=="E. mongoz"] <-"Diurnal"
germ_filtered$Activity[germ_filtered$Lemur_Species=="E. flavifrons"] <- "Diurnal"
germ_filtered$Activity[germ_filtered$Lemur_Species=="V. rubra"] <- "Diurnal"
germ_filtered$Activity[germ_filtered$Lemur_Species=="E. coronatus"] <- "Diurnal"
germ_filtered$Activity[germ_filtered$Lemur_Species=="V. variegata"] <- "Diurnal"
germ_filtered2 <- germ_filtered %>% drop_na(Treatment, Weight_z, Age_z, Sex, Activity)
lemur_phylo1 <- MCMCglmm(
germ ~ Treatment + Weight_z+ Age_z+ Sex +Activity,
random = ~ animal + species,
family = "categorical",
ginverse = ginverse_list,
data = germ_filtered2,
prior = prior,
verbose = FALSE,
nitt=15000,
burnin = 1500,
thin = 1
)
lemur_phylo1b <- MCMCglmm(
germ ~ Treatment + Weight_z+ Age_z+ Sex +Activity,
random = ~ animal + species,
family = "categorical",
ginverse = ginverse_list,
data = germ_filtered2,
prior = prior,
verbose = FALSE,
nitt=15000,
burnin = 1500,
thin = 1
)
lemur_phylo1c <- MCMCglmm(
germ ~ Treatment + Weight_z+ Age_z+ Sex +Activity,
random = ~ animal + species,
family = "categorical",
ginverse = ginverse_list,
data = germ_filtered2,
prior = prior,
verbose = FALSE,
nitt=15000,
burnin = 1500,
thin = 1
)
lemur_phylo1mcmc_chains <- mcmc.list(as.mcmc(lemur_phylo1$Sol), as.mcmc(lemur_phylo1b$Sol), as.mcmc(lemur_phylo1c$Sol))
lemur_phylo1gelman_results <- gelman.diag(lemur_phylo1mcmc_chains)
lemur_phylo1gelman_results
lemur_phylo1_summary <- summary(lemur_phylo1)
#Time-to-germination
germ_time_filtered <- germ_time
germ_time_filtered$Lemur_Species2 <- germ_time_filtered$Lemur_Species
germ_time_filtered$Lemur_Species2[germ_time_filtered$Lemur_Species2=="L. catta"] <- "Lemur_catta"
germ_time_filtered$Lemur_Species2[germ_time_filtered$Lemur_Species2=="E. mongoz"] <- "Eulemur_mongoz"
germ_time_filtered$Lemur_Species2[germ_time_filtered$Lemur_Species2=="E. flavifrons"]<- "Eulemur_flavifrons"
germ_time_filtered$Lemur_Species2[germ_time_filtered$Lemur_Species2=="V. rubra"]<- "Varecia_rubra"
germ_time_filtered$Lemur_Species2[germ_time_filtered$Lemur_Species2=="E. coronatus"]<- "Eulemur_coronatus"
germ_time_filtered$Lemur_Species2[germ_time_filtered$Lemur_Species2=="V. variegata"]<- "Varecia_variegata"
germ_time_filtered$Lemur_Species2[germ_time_filtered$Lemur_Species2=="M. murinus"]<- "Microcebus_murinus"
germ_time_filtered$Lemur_Species2[germ_time_filtered$Lemur_Species2=="C. medius"]<- "Cheirogaleus_medius"
germ_time_filtered$Lemur_Species2[germ_time_filtered$Lemur_Species2=="*Control"] <- NA
germ_time_filtered$Lemur_Species2[germ_time_filtered$Lemur_Species2=="Control"] <- NA
germ_time_filtered$Activity<-NULL
germ_time_filtered$Activity[germ_time_filtered$Lemur_Species=="C. medius"] <- "Nocturnal"
germ_time_filtered$Activity[germ_time_filtered$Lemur_Species=="M. murinus"] <- "Nocturnal"
germ_time_filtered$Activity[germ_time_filtered$Lemur_Species=="L. catta"] <- "Diurnal"
germ_time_filtered$Activity[germ_time_filtered$Lemur_Species=="E. mongoz"] <-"Diurnal"
germ_time_filtered$Activity[germ_time_filtered$Lemur_Species=="E. flavifrons"] <- "Diurnal"
germ_time_filtered$Activity[germ_time_filtered$Lemur_Species=="V. rubra"] <- "Diurnal"
germ_time_filtered$Activity[germ_time_filtered$Lemur_Species=="E. coronatus"] <- "Diurnal"
germ_time_filtered$Activity[germ_time_filtered$Lemur_Species=="V. variegata"] <- "Diurnal"
germ_time_filtered$animal <- germ_time_filtered$Lemur_Species2
germ_time_filtered <- germ_time_filtered %>% drop_na(Lemur_Species2, Weight, Age, Sex)
germ_time_filtered$Weight_z <- scale(germ_time_filtered$Weight)
germ_time_filtered$Age_z <- scale(germ_time_filtered$Age)
germ_time_filtered$species <- germ_time_filtered$Plant_Species_Common_Name2
lemur_phylo2 <- MCMCglmm(
log(GerminationTime) ~ Treatment + Weight_z+ Age_z+ Sex + Activity,
random = ~ animal + species,
family = "gaussian",
ginverse = ginverse_list,
data = germ_time_filtered,
prior = prior,
verbose = FALSE,
nitt=15000,
burnin = 1500,
thin = 1
)
lemur_phylo2b <- MCMCglmm(
log(GerminationTime) ~ Treatment + Weight_z+ Age_z+ Sex + Activity,
random = ~ animal + species,
family = "gaussian",
ginverse = ginverse_list,
data = germ_time_filtered,
prior = prior,
verbose = FALSE,
nitt=15000,
burnin = 1500,
thin = 1
)
lemur_phylo2c <- MCMCglmm(
log(GerminationTime) ~ Treatment + Weight_z+ Age_z+ Sex + Activity,
random = ~ animal + species,
family = "gaussian",
ginverse = ginverse_list,
data = germ_time_filtered,
prior = prior,
verbose = FALSE,
nitt=15000,
burnin = 1500,
thin = 1
)
lemur_phylo2mcmc_chains <- mcmc.list(as.mcmc(lemur_phylo2$Sol), as.mcmc(lemur_phylo2b$Sol), as.mcmc(lemur_phylo2c$Sol))
lemur_phylo2gelman_results <- gelman.diag(lemur_phylo2mcmc_chains)
lemur_phylo2gelman_results
lemur_phylo2_summary <- summary(lemur_phylo2)
lemur_traits <- as.data.frame(rbind(lemur_phylo1_summary$solutions, lemur_phylo2_summary$solutions))
lemur_traits$Variable <- rownames(lemur_traits)
lemur_traits$post.mean <- round(lemur_traits$post.mean, 3)
lemur_traits$`l-95% CI` <- round(lemur_traits$`l-95% CI`, 3)
lemur_traits$`u-95% CI` <- round(lemur_traits$`u-95% CI`, 3)
lemur_traits$pMCMC <- round(lemur_traits$pMCMC, 3)
write.csv(lemur_traits, "lemur_traits.csv")
```
```{r Captive Lemur Traits Lambda}
#Germination rate
variance_components <- lemur_phylo1$VCV
phylogenetic_variance_species <- variance_components[, "species"]
phylogenetic_variance_animal <- variance_components[, "animal"]
residual_variance <- variance_components[, "units"]
total_variance <- phylogenetic_variance_species + phylogenetic_variance_animal + residual_variance
lambda_species <- phylogenetic_variance_species / total_variance
lambda_animal <- phylogenetic_variance_animal / total_variance
mean_lambda_species <- mean(lambda_species)
ci_lambda_species <- HPDinterval(as.mcmc(lambda_species), prob = 0.95)
mean_lambda_animal <- mean(lambda_animal)
ci_lambda_animal <- HPDinterval(as.mcmc(lambda_animal), prob = 0.95)
cat("Mean lambda for species:", mean_lambda_species, "\n")# 0.7511053
cat("95% CI for lambda for species:", ci_lambda_species, "\n")# 0.516822 0.9499167
cat("Mean lambda for animal:", mean_lambda_animal, "\n")# 0.1303566
cat("95% CI for lambda for animal:", ci_lambda_animal, "\n")#0.009959614 0.3677703
#Time-to-germination
variance_components <- lemur_phylo2$VCV
phylogenetic_variance_species <- variance_components[, "species"]
phylogenetic_variance_animal <- variance_components[, "animal"]
residual_variance <- variance_components[, "units"]
total_variance <- phylogenetic_variance_species + phylogenetic_variance_animal + residual_variance
lambda_species <- phylogenetic_variance_species / total_variance
lambda_animal <- phylogenetic_variance_animal / total_variance
mean_lambda_species <- mean(lambda_species)
ci_lambda_species <- HPDinterval(as.mcmc(lambda_species), prob = 0.95)
mean_lambda_animal <- mean(lambda_animal)
ci_lambda_animal <- HPDinterval(as.mcmc(lambda_animal), prob = 0.95)
cat("Mean lambda for species:", mean_lambda_species, "\n")# 0.2384719
cat("95% CI for lambda for species:", ci_lambda_species, "\n")#0.08376675 0.4545756
cat("Mean lambda for animal:", mean_lambda_animal, "\n")#0.009057621
cat("95% CI for lambda for animal:", ci_lambda_animal, "\n")#: 0.0002206047 0.03475405
```
```{r Plot Captive Lemur Traits}
#Germination Rate
fixed_effects_samples <- lemur_phylo1$Sol
fixed_effects_names <- colnames(fixed_effects_samples)
effect_summary <- apply(fixed_effects_samples, 2, function(x) {
mean_x <- mean(x)
ci_x <- HPDinterval(as.mcmc(x), prob = 0.95)
return(c(mean = mean_x, lower = ci_x[1], upper = ci_x[2]))
})
effect_summary_df <- as.data.frame(t(effect_summary))
effect_summary_df$Effect <- rownames(effect_summary_df)
effect_summary_df$Effect[effect_summary_df$Effect=="Weight_z"] <- "Body Mass"
effect_summary_df$Effect[effect_summary_df$Effect=="TreatmentGut-passed, Washed"] <- "Gut-Passed, Washed"
effect_summary_df$Effect[effect_summary_df$Effect=="Age_z"] <- "Age"
effect_summary_df$Effect[effect_summary_df$Effect=="SexM"] <- "Male"
effect_summary_df$Effect[effect_summary_df$Effect=="ActivityNocturnal"] <- "Nocturnal"
lemur_plot_rate <- ggplot(effect_summary_df[-1,], aes(x = Effect, y = mean))+
geom_hline(yintercept=0, linetype="dashed", color="grey60") +
geom_point() +
geom_errorbar(aes(ymin = lower, ymax = upper), width = 0.2) +
coord_flip()+
theme_classic() +
labs(x = "",
y = "Estimated Effect")
#Time-to-germination
fixed_effects_samples <- lemur_phylo2$Sol
# Extract the names of the fixed effects
fixed_effects_names <- colnames(fixed_effects_samples)
# Calculate the mean and 95% credible intervals for each fixed effect
effect_summary <- apply(fixed_effects_samples, 2, function(x) {
mean_x <- mean(x)
ci_x <- HPDinterval(as.mcmc(x), prob = 0.95)
return(c(mean = mean_x, lower = ci_x[1], upper = ci_x[2]))
})
# Convert to a data frame for plotting
effect_summary_df <- as.data.frame(t(effect_summary))
effect_summary_df$Effect <- rownames(effect_summary_df)
# Convert the effects to their original scale (exp) for interpretation
effect_summary_df$mean_exp <- exp(effect_summary_df$mean)
effect_summary_df$lower_exp <- exp(effect_summary_df$lower)
effect_summary_df$upper_exp <- exp(effect_summary_df$upper)
effect_summary_df$Effect[effect_summary_df$Effect=="Weight_z"] <- "Body Mass"
effect_summary_df$Effect[effect_summary_df$Effect=="TreatmentGut-passed, Washed"] <- "Gut-Passed, Washed"
effect_summary_df$Effect[effect_summary_df$Effect=="Age_z"] <- "Age"
effect_summary_df$Effect[effect_summary_df$Effect=="SexM"] <- "Male"
effect_summary_df$Effect[effect_summary_df$Effect=="ActivityNocturnal"] <- "Nocturnal"
# Plot the effect sizes using ggplot2 and flip the axes
ggplot(effect_summary_df, aes(x = Effect, y = mean_exp)) +
geom_point() +
geom_errorbar(aes(ymin = lower_exp, ymax = upper_exp), width = 0.1) +
coord_flip() +
theme_classic() +
labs(title = "Model Effect Sizes with 95% Credible Intervals (Original Scale)",
x = "Effect",
y = "Estimated Effect Size (exp-transformed)") +
theme(axis.text.y = element_text(angle = 45, hjust = 1))
lemur_plot_time <- ggplot(effect_summary_df[-1,], aes(x = Effect, y = mean_exp))+
geom_hline(yintercept=1, linetype="dashed", color="grey60") +
geom_point() +
geom_errorbar(aes(ymin = lower_exp, ymax = upper_exp), width = 0.1) +
coord_flip()+
theme_classic() +
labs(x = "",
y = "Estimated Effect")
ggarrange(lemur_plot_rate , lemur_plot_time, labels = c("a", "b"))
```
```{r Wild Lemur Treatment}
#Germination rate
comatsa_seeds3 <- comatsa_seeds2 %>% mutate(species=Plante)
comatsa_seeds3$Germination <- as.factor(comatsa_seeds3$Germination)
comatsa_seeds3$lemr
prior_t2 <- list(
G = list(
G1 = list(V = 1, nu = 0.002), # Prior for 'species' random effect
G2 = list(V = 1, nu = 0.002) # Prior for 'Lemur_Species2' random effect
),
R = list(V = 1, fix = 1) # Residual variance for categorical data
)
wild_treatment_phylo1 <- MCMCglmm(
Germination ~ Treatment,
random = ~ species + Lemur,
family = "categorical",
ginverse = list(species = species_Ainv_filtered_wild),
data = comatsa_seeds3,
prior = prior_t2,
verbose = FALSE,
nitt=15000,
burnin = 1500,
thin = 1
)
wild_treatment_phylo1b <- MCMCglmm(
Germination ~ Treatment,
random = ~ species + Lemur,
family = "categorical",
ginverse = list(species = species_Ainv_filtered_wild),
data = comatsa_seeds3,
prior = prior_t2,
verbose = FALSE,
nitt=15000,
burnin = 1500,
thin = 1
)
wild_treatment_phylo1c <- MCMCglmm(
Germination ~ Treatment,
random = ~ species + Lemur,
family = "categorical",
ginverse = list(species = species_Ainv_filtered_wild),
data = comatsa_seeds3,
prior = prior_t2,
verbose = FALSE,
nitt=15000,
burnin = 1500,
thin = 1
)
wild_treatment_phylo1mcmc_chains <- mcmc.list(as.mcmc(wild_treatment_phylo1$Sol), as.mcmc(wild_treatment_phylo1b$Sol), as.mcmc(wild_treatment_phylo1c$Sol))
wild_treatment_phylo1gelman_results <- gelman.diag(wild_treatment_phylo1mcmc_chains)
wild_treatment_phylo1gelman_results
wild_treatment_phylo1_summary <- summary(wild_treatment_phylo1)
comatsa_seeds3$Treatment2 <- NULL
comatsa_seeds3$Treatment2[comatsa_seeds3$Treatment=="Gut Passed, Washed"] <- "aGut-passed, Washed"
comatsa_seeds3$Treatment2[comatsa_seeds3$Treatment=="Gut Passed, Unwashed"] <- "Gut-passed, Unwashed"
comatsa_seeds3$Treatment2[comatsa_seeds3$Treatment=="Control"] <- "Control"
comatsa_seeds3$Treatment2[comatsa_seeds3$Treatment=="Control, Washed"] <- "Control, Washed"
wild_treatment_phylo1_test <- MCMCglmm(
Germination ~ Treatment2,
random = ~ species + Lemur,
family = "categorical",
ginverse = list(species = species_Ainv_filtered_wild),
data = comatsa_seeds3,
prior = prior_t2,
verbose = FALSE,
nitt=15000,
burnin = 1500,
thin = 1
)
wild_treatment_phylo1_testb <- MCMCglmm(
Germination ~ Treatment2,
random = ~ species + Lemur,
family = "categorical",
ginverse = list(species = species_Ainv_filtered_wild),
data = comatsa_seeds3,
prior = prior_t2,
verbose = FALSE,
nitt=15000,
burnin = 1500,
thin = 1
)
wild_treatment_phylo1_testc <- MCMCglmm(
Germination ~ Treatment2,
random = ~ species + Lemur,
family = "categorical",
ginverse = list(species = species_Ainv_filtered_wild),
data = comatsa_seeds3,
prior = prior_t2,
verbose = FALSE,
nitt=15000,
burnin = 1500,
thin = 1
)
wild_treatment_phylo1mcmc_chains <- mcmc.list(as.mcmc(wild_treatment_phylo1$Sol), as.mcmc(wild_treatment_phylo1b$Sol), as.mcmc(wild_treatment_phylo1c$Sol))
wild_treatment_phylo1gelman_results <- gelman.diag(wild_treatment_phylo1mcmc_chains)
wild_treatment_phylo1gelman_results
summary(wild_treatment_phylo1_test)
#Time-to-germination
comatsa_seeds2_time2 <- comatsa_seeds2_time %>% filter(Germination ==1) %>% mutate(species = Plante)
comatsa_seeds2_time2$species <- as.factor(comatsa_seeds2_time2$species)
comatsa_seeds2_time2$species[comatsa_seeds2_time2$species=="Cryptocaria"] <- "Cryptocarya"
wild_treatment_phylo2 <- MCMCglmm(
log(Time) ~ Treatment,
random = ~ species + Lemur,
family = "gaussian",
ginverse = list(species = species_Ainv_filtered_wild),
data = comatsa_seeds2_time2,
prior = prior_t2,
verbose = FALSE,
nitt=15000,
burnin = 1500,
thin = 1
)
wild_treatment_phylo2b <- MCMCglmm(
log(Time) ~ Treatment,
random = ~ species + Lemur,
family = "gaussian",
ginverse = list(species = species_Ainv_filtered_wild),
data = comatsa_seeds2_time2,
prior = prior_t2,
verbose = FALSE,
nitt=15000,
burnin = 1500,
thin = 1
)
wild_treatment_phylo2c <- MCMCglmm(
log(Time) ~ Treatment,
random = ~ species + Lemur,
family = "gaussian",
ginverse = list(species = species_Ainv_filtered_wild),
data = comatsa_seeds2_time2,
prior = prior_t2,
verbose = FALSE,
nitt=15000,
burnin = 1500,
thin = 1
)
wild_treatment_phylo2mcmc_chains <- mcmc.list(as.mcmc(wild_treatment_phylo2$Sol), as.mcmc(wild_treatment_phylo2b$Sol), as.mcmc(wild_treatment_phylo2c$Sol))
wild_treatment_phylo2gelman_results <- gelman.diag(wild_treatment_phylo2mcmc_chains)
wild_treatment_phylo2gelman_results
wild_treatment_phylo2_summary <- summary(wild_treatment_phylo2)
wild_treatment <- as.data.frame(rbind(wild_treatment_phylo1_summary$solutions, wild_treatment_phylo2_summary$solutions))
wild_treatment$post.mean <- round(wild_treatment$post.mean, 3)
wild_treatment$`l-95% CI` <- round(wild_treatment$`l-95% CI`, 3)
wild_treatment$`u-95% CI` <- round(wild_treatment$`u-95% CI`, 3)
wild_treatment$pMCMC <- round(wild_treatment$pMCMC, 3)
write.csv(wild_treatment, "wild_treatment.csv")
#Survival
comatsa_seeds2_time <-comatsa_seeds2
comatsa_seeds2_time$Germination <- as.factor(comatsa_seeds2_time$Germination)
comatsa_seeds2_time$Time[is.na(comatsa_seeds2_time$Time)] <- 100
treatment_survival_comatsa <- cuminc(Surv(Time, Germination) ~ Treatment, data = comatsa_seeds2_time)%>%
tbl_cuminc() %>%
add_p()
```
```{r Wild Treatment Lambda}
#Germination Rate
variance_components <- wild_treatment_phylo1$VCV
phylogenetic_variance_species <- variance_components[, "species"]
residual_variance <- variance_components[, "units"]
total_variance <- phylogenetic_variance_species + residual_variance
lambda_species <- phylogenetic_variance_species / total_variance
mean_lambda_species <- mean(lambda_species)
ci_lambda_species <- HPDinterval(as.mcmc(lambda_species), prob = 0.95)
cat("Mean lambda for species:", mean_lambda_species, "\n")#0.8735256
cat("95% CI for lambda for species:", ci_lambda_species, "\n")#0.7404393 0.982931
#Time-to-germination
variance_components <- wild_treatment_phylo2$VCV
phylogenetic_variance_species <- variance_components[, "species"]
residual_variance <- variance_components[, "units"]
total_variance <- phylogenetic_variance_species + residual_variance
lambda_species <- phylogenetic_variance_species / total_variance
mean_lambda_species <- mean(lambda_species)
ci_lambda_species <- HPDinterval(as.mcmc(lambda_species), prob = 0.95)
cat("Mean lambda for species:", mean_lambda_species, "\n")#0.2757348
cat("95% CI for lambda for species:", ci_lambda_species, "\n")# 0.04171162 0.6061142
```
```{r Wild Treatment Plots}
#Germination rate
intercept_samples <- wild_treatment_phylo1$Sol[, "(Intercept)"]
treatment_effects_samples <- wild_treatment_phylo1$Sol[, grepl("^Treatment", colnames(wild_treatment_phylo1$Sol))]
logistic <- function(x) exp(x) / (1 + exp(x))
intercept_probs <- logistic(intercept_samples)
treatment_probs <- apply(treatment_effects_samples, 2, function(effect) logistic(intercept_samples + effect))
intercept_probs_mcmc <- as.mcmc(intercept_probs)
treatment_probs_mcmc <- lapply(1:ncol(treatment_probs), function(i) as.mcmc(treatment_probs[, i]))
mean_intercept_prob <- mean(intercept_probs)
ci_intercept <- HPDinterval(intercept_probs_mcmc, prob = 0.95)
mean_treatment_probs <- sapply(treatment_probs_mcmc, mean)
ci_treatment <- sapply(treatment_probs_mcmc, function(x) HPDinterval(as.mcmc(x), prob = 0.95))
treatment_levels <- c(levels(as.factor(germ$Treatment)))
plot_data <- data.frame(
Treatment = treatment_levels,
Mean_Prob = c(mean_intercept_prob, mean_treatment_probs),
Lower_CI = c(ci_intercept[1], ci_treatment[1, ]),
Upper_CI = c(ci_intercept[2], ci_treatment[2, ])
)
treatment_plot_wild <- ggplot(data=plot_data, aes(x= Treatment, y=Mean_Prob, shape=Treatment, color=Treatment))+
geom_pointrange(aes(ymin=Lower_CI, ymax=Upper_CI), size=0.7,
position=position_dodge(.5),color = c("black", "gray56", "goldenrod4", "goldenrod1"))+
theme_classic()+
ylab("Probability")+
xlab("Treatment")+
theme(axis.text.x = element_text(angle = 45, vjust = 1, hjust=1))+
guides(fill=guide_legend(title="Habitat"), alpha=FALSE)+
scale_alpha_manual(values= c(0.2,1))+
scale_shape_manual(values = c(19,17,15,8))+guides(shape = "none")
#Time-to-germination
intercept_samples <- wild_treatment_phylo2$Sol[, "(Intercept)"]
treatment_effects_samples <- wild_treatment_phylo2$Sol[, grepl("^Treatment", colnames(wild_treatment_phylo2$Sol))]
intercept_samples_mcmc <- as.mcmc(intercept_samples)
treatment_effects_mcmc <- lapply(1:ncol(treatment_effects_samples), function(i) as.mcmc(treatment_effects_samples[, i]))
mean_intercept_log <- mean(intercept_samples)
ci_intercept_log <- HPDinterval(intercept_samples_mcmc, prob = 0.95)
mean_treatment_preds_log <- sapply(treatment_effects_mcmc, function(effect) mean(intercept_samples + effect))
ci_treatment_preds_log <- t(sapply(treatment_effects_mcmc, function(effect) HPDinterval(as.mcmc(intercept_samples + effect), prob = 0.95)))
mean_predictions_log <- c(mean_intercept_log, mean_treatment_preds_log)
ci_predictions_log <- rbind(ci_intercept_log, ci_treatment_preds_log)
mean_predictions <- exp(mean_predictions_log)
ci_predictions <- exp(ci_predictions_log)
treatment_levels <- c( levels(germ_time$Treatment))
predictions_df <- data.frame(
Treatment = treatment_levels,
Mean_Predicted = mean_predictions,
Lower_CI = ci_predictions[, 1],
Upper_CI = ci_predictions[, 2]
)
treatment_plotTime_wild <- ggplot(data=predictions_df, aes(x= Treatment, y=Mean_Predicted, shape=Treatment, color=Treatment))+
geom_pointrange(aes(ymin=Lower_CI, ymax=Upper_CI), size=0.7,
position=position_dodge(.5),color = c("black", "gray56", "goldenrod4", "goldenrod1"))+
theme_classic()+
ylab("Time (Days)")+
xlab("Treatment")+
theme(axis.text.x = element_text(angle = 45, vjust = 1, hjust=1))+
guides(fill=guide_legend(title="Habitat"), alpha=FALSE)+
scale_alpha_manual(values= c(0.2,1))+
scale_shape_manual(values = c(19,17,15,8))+guides(shape = "none")
#Survival
treatment_survival_plot_wild <- cuminc(Surv(Time, Germination) ~ Treatment, data = comatsa_seeds2_time)%>%
ggcuminc()+ theme_classic()+
add_confidence_interval()+
ylab("Cumulative Germ.")+
scale_color_manual(values = c("black", "gray56", "goldenrod4", "goldenrod1"))+
scale_fill_manual(values = c("black", "gray56", "goldenrod4", "goldenrod1"))+
xlab("Time (Days)")+
theme(legend.position="bottom")
ggarrange(treatment_plot_wild, treatment_plotTime_wild,treatment_survival_plot_wild, labels = c("a", "b", "c"), ncol = 1, nrow=3)
```
```{r Wild Seed Length}
#Germination rate
comatsa_seeds3$L[comatsa_seeds3$L=="1302"] <- NA
comatsa_seeds3$L[comatsa_seeds3$L=="69.69"] <- NA
comatsa_seeds3 <- comatsa_seeds3 %>% drop_na(species, Treatment, L)
comatsa_seeds3$Treatment <- as.factor(comatsa_seeds3$Treatment)
seed_phlyo1_wild <- MCMCglmm(
Germination ~ L*Treatment,
random = ~ species + Lemur,
family = "categorical",
ginverse = list(species = species_Ainv_filtered_wild),
data = comatsa_seeds3,
prior = prior,
verbose = FALSE,
nitt=15000,
burnin = 1500,
thin = 1
)
seed_phlyo1_wildb <- MCMCglmm(
Germination ~ L*Treatment,
random = ~ species + Lemur,
family = "categorical",
ginverse = list(species = species_Ainv_filtered_wild),
data = comatsa_seeds3,
prior = prior,
verbose = FALSE,
nitt=15000,
burnin = 1500,
thin = 1
)
seed_phlyo1_wildc <- MCMCglmm(
Germination ~ L*Treatment,
random = ~ species + Lemur,
family = "categorical",
ginverse = list(species = species_Ainv_filtered_wild),
data = comatsa_seeds3,
prior = prior,
verbose = FALSE,
nitt=15000,
burnin = 1500,
thin = 1
)
seed_phlyo1_wildmcmc_chains <- mcmc.list(as.mcmc(seed_phlyo1_wild$Sol), as.mcmc(seed_phlyo1_wildb$Sol), as.mcmc(seed_phlyo1_wildc$Sol))
seed_phlyo1_wildgelman_results <- gelman.diag(seed_phlyo1_wildmcmc_chains)
seed_phlyo1_wildgelman_results
seed_phlyo1_summary_wild <- summary(seed_phlyo1_wild)
#time-to-germination
comatsa_seeds2_time2$L[comatsa_seeds2_time2$L=="1302"] <- NA
comatsa_seeds2_time2$L[comatsa_seeds2_time2$L=="69.69"] <- NA
comatsa_seeds2_time3 <- comatsa_seeds2_time2 %>% drop_na(L, Treatment, Time)
wild_treatment_phylo2 <- MCMCglmm(
log(Time) ~ L*Treatment,
random = ~ species + Lemur,
family = "gaussian",
ginverse = list(species = species_Ainv_filtered_wild),
data = comatsa_seeds2_time3,
prior = prior,
verbose = FALSE,
nitt=15000,
burnin = 1500,
thin = 1
)
wild_treatment_phylo2b <- MCMCglmm(
log(Time) ~ L*Treatment,
random = ~ species + Lemur,
family = "gaussian",
ginverse = list(species = species_Ainv_filtered_wild),
data = comatsa_seeds2_time3,
prior = prior,
verbose = FALSE,
nitt=15000,
burnin = 1500,
thin = 1
)
wild_treatment_phylo2c <- MCMCglmm(
log(Time) ~ L*Treatment,
random = ~ species + Lemur,
family = "gaussian",
ginverse = list(species = species_Ainv_filtered_wild),
data = comatsa_seeds2_time3,
prior = prior,
verbose = FALSE,
nitt=15000,
burnin = 1500,
thin = 1
)
wild_treatment_phylo2mcmc_chains <- mcmc.list(as.mcmc(wild_treatment_phylo2$Sol), as.mcmc(wild_treatment_phylo2b$Sol), as.mcmc(wild_treatment_phylo2c$Sol))
wild_treatment_phylo2elman_results <- gelman.diag(wild_treatment_phylo2mcmc_chains)
wild_treatment_phylo2gelman_results
wild_treatment_phylo2_summary <- summary(wild_treatment_phylo2)
wild_seeds <- as.data.frame(rbind(seed_phlyo1_summary_wild$solutions, wild_treatment_phylo2_summary$solutions))
wild_seeds$post.mean <- round(wild_seeds$post.mean,3)
wild_seeds$`l-95% CI` <- round(wild_seeds$`l-95% CI`,3)
wild_seeds$`u-95% CI` <- round(wild_seeds$`u-95% CI`,3)
wild_seeds$pMCMC <- round(wild_seeds$pMCMC,3)
write.csv(wild_seeds, "wild_seeds.csv")
```
```{r Wild Seed Lambda}
#Germination rate
ariance_components <- seed_phlyo1_wild$VCV
phylogenetic_variance_species <- variance_components[, "species"]
residual_variance <- variance_components[, "units"]
total_variance <- phylogenetic_variance_species + residual_variance
lambda_species <- phylogenetic_variance_species / total_variance
mean_lambda_species <- mean(lambda_species)
ci_lambda_species <- HPDinterval(as.mcmc(lambda_species), prob = 0.95)
cat("Mean lambda for species:", mean_lambda_species, "\n")# 0.2611769
cat("95% CI for lambda for species:", ci_lambda_species, "\n")#0.0179206 0.5745035
#Time to germination
variance_components <- wild_treatment_phylo2$VCV
phylogenetic_variance_species <- variance_components[, "species"]
residual_variance <- variance_components[, "units"]
total_variance <- phylogenetic_variance_species + residual_variance
lambda_species <- phylogenetic_variance_species / total_variance
mean_lambda_species <- mean(lambda_species)
ci_lambda_species <- HPDinterval(as.mcmc(lambda_species), prob = 0.95)
cat("Mean lambda for species:", mean_lambda_species, "\n")#0.2110462
cat("95% CI for lambda for species:", ci_lambda_species, "\n")# 0.002683472 0.5307649
```
```{r Wild Seed Length Plot}
#Germination Rate
fixed_effects_samples <- seed_phlyo1_wild$Sol
L_vals <- seq(min(comatsa_seeds3$L), max(comatsa_seeds3$L), L.out = 100)
treatment_levels <- levels(comatsa_seeds3$Treatment)
pred_grid <- expand.grid(L = L_vals, Treatment = treatment_levels)
intercept_samples <- fixed_effects_samples[, "(Intercept)"]
L_samples <- fixed_effects_samples[, "L"]
treatment_samples <- fixed_effects_samples[, grepl("^Treatment", colnames(fixed_effects_samples)), drop = FALSE]
interaction_samples <- fixed_effects_samples[, grepl("^L:Treatment", colnames(fixed_effects_samples)), drop = FALSE]
logistic <- function(x) exp(x) / (1 + exp(x))
predict_logit <- function(intercept, L, treatment, interaction, L_val, treatment_val) {
treatment_idx <- which(treatment_levels == treatment_val)
treatment_effect <- if (treatment_idx == 1) 0 else treatment[, treatment_idx - 1] # Assuming the first level is the reference
interaction_effect <- if (treatment_idx == 1) 0 else interaction[, treatment_idx - 1]
intercept + L * L_val + treatment_effect + interaction_effect * L_val
}
predictions_logit <- matrix(NA, nrow = nrow(pred_grid), ncol = length(intercept_samples))
for (i in 1:nrow(pred_grid)) {
L_val <- pred_grid$L[i]
treatment_val <- as.character(pred_grid$Treatment[i])
predictions_logit[i, ] <- predict_logit(intercept_samples, L_samples, treatment_samples, interaction_samples, L_val, treatment_val)
}
predictions_prob <- logistic(predictions_logit)
pred_mean <- apply(predictions_prob, 1, mean)
pred_ci <- t(apply(predictions_prob, 1, function(x) HPDinterval(as.mcmc(x), prob = 0.95)))
pred_grid$Mean <- pred_mean
pred_grid$Lower_CI <- pred_ci[, 1]
pred_grid$Upper_CI <- pred_ci[, 2]
p1 <- ggplot(pred_grid, aes(x = L, y = Mean, color = Treatment)) +
geom_line(size = 1) +
theme_classic() +
labs(x = "Seed Length (cm)",
y = "Probability",
color = "Treatment",
fill = "Treatment") +
scale_color_manual("Treatment:", values = c("black", "gray56", "goldenrod4", "goldenrod1"))
comatsa_seeds3$Germination <- comatsa_seeds3$Germination-1
p2 <- ggplot(comatsa_seeds3, aes(x = L, y = Germination, color = Treatment)) +
geom_point(size = 1, position = position_jitter(width = 0, height = 0.02), alpha = 0.1) +
theme_classic() +
labs(x = "Seed Length (cm)",
y = "Germination",
color = "Treatment",
fill = "Treatment") +
scale_color_manual("Treatment:",values = c("black", "gray56", "goldenrod4", "goldenrod1"))
# Display the point plot
print(p2)
levels(comatsa_seeds3$Treatment)
levels(pred_grid$Treatment)
wild_seeds_rate <- p1 + geom_point(data=comatsa_seeds3,aes(x = L, y = Germination), size=1, position = position_jitter(width = 0, height = 0.02), alpha=0.3)
#Time-to-germination
comatsa_seeds2_time3$Treatment <- as.factor(comatsa_seeds2_time3$Treatment)
fixed_effects_samples <- wild_treatment_phylo2$Sol
L_vals <- seq(min(comatsa_seeds2_time3$L), max(comatsa_seeds2_time3$L), L.out = 100)
treatment_levels <- levels(comatsa_seeds2_time3$Treatment)
pred_grid <- expand.grid(L = L_vals, Treatment = treatment_levels)
intercept_samples <- fixed_effects_samples[, "(Intercept)"]
L_samples <- fixed_effects_samples[, "L"]
treatment_samples <- fixed_effects_samples[, grepl("^Treatment", colnames(fixed_effects_samples)), drop = FALSE]
predict_log <- function(intercept, L, treatment, L_val, treatment_val) {
treatment_idx <- which(treatment_levels == treatment_val)
treatment_effect <- if (treatment_idx == 1) 0 else treatment[, treatment_idx - 1] # Assuming the first level is the reference
intercept + L * L_val + treatment_effect
}
predictions_log <- matrix(NA, nrow = nrow(pred_grid), ncol = length(intercept_samples))
for (i in 1:nrow(pred_grid)) {
L_val <- pred_grid$L[i]
treatment_val <- as.character(pred_grid$Treatment[i])
predictions_log[i, ] <- predict_log(intercept_samples, L_samples, treatment_samples, L_val, treatment_val)
}
predictions <- exp(predictions_log)
pred_mean <- apply(predictions, 1, mean)
pred_ci <- t(apply(predictions, 1, function(x) HPDinterval(as.mcmc(x), prob = 0.95)))
pred_grid$Mean <- pred_mean
pred_grid$Lower_CI <- pred_ci[, 1]
pred_grid$Upper_CI <- pred_ci[, 2]
captive_L_time <- ggplot(pred_grid, aes(x = L, y = Mean, color = Treatment)) +
geom_line(size = 1) +
theme_classic() +
labs(x = "Seed Length (mm)",
y = "Time (Days)",
color = "Treatment",
fill = "Treatment") +
scale_color_manual("Treatment:",values=c("black", "gray56", "goldenrod4", "goldenrod1"))
unique(comatsa_seeds2_time3$Treatment)
#comatsa_seeds2_time3$Treatment[comatsa_seeds2_time3$Treatment== "Gut Passed, Unwashed"] <- "Gut-passed"
#comatsa_seeds2_time3$Treatment[comatsa_seeds2_time3$Treatment== "Gut Passed, Washed"] <- "Gut-passed, Washed"
captive_L_time2 <-captive_L_time +geom_point(data=comatsa_seeds2_time3,aes(x = L, y = Time),colors= c("black", "gray56", "goldenrod4", "goldenrod1"), size=1, position = position_jitter(width = 0, height = 0.02), alpha=0.1) +ylim(0,35)
ggarrange(wild_seeds_rate, captive_L_time2, labels = c("a", "b"), common.legend = TRUE)
```