## ----label="data", fig.show='hold', fig.height=4, fig.width=7, warning=FALSE, message=FALSE---- library(PhylogeneticEM) data(monkeys) plot(params_BM(p = 2), data = monkeys$dat, phylo = monkeys$phy, show.tip.label = TRUE, cex = 0.5, no.margin = TRUE) ## ----label="Fit_EM", warning=FALSE, message=FALSE, eval=FALSE----------------- # res <- PhyloEM(phylo = monkeys$phy, # Y_data = monkeys$dat, # process = "scOU", ## scalar OU model # random.root = TRUE, ## Root is stationary # stationary.root = TRUE, # nbr_alpha = 4, ## Number of alpha values tested (should be raised) # K_max = 10, ## Maximal number of shifts # parallel_alpha = TRUE, ## This can be set to TRUE for # Ncores = 2) ## parallel computations # res ## ----label="Fit_EM_int", echo=FALSE, warning=FALSE, message=FALSE------------- res <- PhyloEM(phylo = monkeys$phy, Y_data = monkeys$dat, process = "scOU", ## scalar OU model random.root = TRUE, ## Root is stationary stationary.root = TRUE, nbr_alpha = 4, ## Number of alpha values tested (should be raised) K_max = 10, ## Maximal number of shifts parallel_alpha = FALSE) ## This can be set to TRUE for res ## ----fig.show='hold', fig.height=4, fig.width=7, warning=FALSE---------------- plot(res) ## ----fig.show='hold', fig.height=4, fig.width=4, warning=FALSE---------------- plot_criterion(res) ## ----fig.show='hold', fig.height=4, fig.width=7, warning=FALSE---------------- plot(res, params = params_process(res, K = 5)) ## ----echo=FALSE--------------------------------------------------------------- params_5 <- params_process(res, K = 5) ## ----fig.show='hold', fig.height=4, fig.width=8, warning=FALSE---------------- plot(equivalent_shifts(monkeys$phy, params_process(res, K = 5)), show_shifts_values = FALSE, shifts_cex = 0.5) ## ----label="Fit_EM_rot", warning=FALSE, message=FALSE, eval = FALSE----------- # # An arbitrary rotation # theta <- pi/4 # rot <- matrix(c(cos(theta), -sin(theta), sin(theta), cos(theta)), # nrow = 2, ncol = 2) # # # Rotate data # Yrot <- t(rot) %*% monkeys$dat # rownames(Yrot) <- rownames(monkeys$dat) # # # PhyloEM on rotated data # res_rot <- PhyloEM(phylo = monkeys$phy, # Y_data = Yrot, ## rotated data # process = "scOU", # random.root = TRUE, # stationary.root = TRUE, # nbr_alpha = 4, # K_max = 10, # parallel_alpha = TRUE, # Ncores = 2) ## ----label="Fit_EM_rot_int", echo=FALSE, warning=FALSE, message=FALSE--------- # An arbitrary rotation theta <- pi/4 rot <- matrix(c(cos(theta), -sin(theta), sin(theta), cos(theta)), nrow = 2, ncol = 2) # Rotate data Yrot <- t(rot) %*% monkeys$dat rownames(Yrot) <- rownames(monkeys$dat) # PhyloEM on rotated data res_rot <- PhyloEM(phylo = monkeys$phy, Y_data = Yrot, ## rotated data process = "scOU", random.root = TRUE, stationary.root = TRUE, nbr_alpha = 4, K_max = 10, parallel_alpha = FALSE) ## ----fig.show='hold', fig.height=4, fig.width=7, warning=FALSE---------------- plot(res_rot) ## ----fig.show='hold', fig.height=3, fig.width=3, warning=FALSE---------------- plot(res, params = params_process(res, K = 3), no.margin = TRUE) plot(res_rot, params = params_process(res, K = 3), no.margin = TRUE) ## ----fig.show='hold', fig.height=4, fig.width=4, warning=FALSE---------------- plot_criterion(res, "log_likelihood") plot_criterion(res_rot, "log_likelihood", pch = "+", add = TRUE) ## ----fig.show='hold', fig.height=4, fig.width=4, warning=FALSE---------------- plot_criterion(res) plot_criterion(res_rot, pch = "+", add = TRUE) ## ----label="merge", warning=FALSE--------------------------------------------- res_merge <- merge_rotations(res, res_rot) ## ----fig.show='hold', fig.height=4, fig.width=4, warning=FALSE---------------- plot_criterion(res_merge) ## ----label="Fit_EM_rot2", warning=FALSE, message = FALSE, eval = FALSE-------- # # An other rotation # theta <- pi/3 # rot2 <- matrix(c(cos(theta), -sin(theta), sin(theta), cos(theta)), # nrow = 2, ncol = 2) # # # Rotate data # Yrot2 <- t(rot2) %*% monkeys$dat # rownames(Yrot2) <- rownames(monkeys$dat) # # # PhyloEM on rotated data # res_rot2 <- PhyloEM(phylo = monkeys$phy, # Y_data = Yrot2, # process = "scOU", # random.root = TRUE, # stationary.root = TRUE, # nbr_alpha = 2, ## Note that this can also be different # K_max = 10, # parallel_alpha = TRUE, # Ncores = 2) # # # Merge # res_merge2 <- merge_rotations(res, res_rot, res_rot2) ## ----label="Fit_EM_rot2_int", echo=FALSE, warning=FALSE, message=FALSE-------- # An other rotation theta <- pi/3 rot2 <- matrix(c(cos(theta), -sin(theta), sin(theta), cos(theta)), nrow = 2, ncol = 2) # Rotate data Yrot2 <- t(rot2) %*% monkeys$dat rownames(Yrot2) <- rownames(monkeys$dat) # PhyloEM on rotated data res_rot2 <- PhyloEM(phylo = monkeys$phy, Y_data = Yrot2, process = "scOU", random.root = TRUE, stationary.root = TRUE, nbr_alpha = 2, ## Note that this can also be different K_max = 10, parallel_alpha = FALSE) # Merge res_merge2 <- merge_rotations(res, res_rot, res_rot2) ## ----fig.show='hold', fig.height=4, fig.width=4, warning=FALSE---------------- plot_criterion(res_merge2) ## ----label="Fit_EM_negative", warning=FALSE, message = FALSE, eval = FALSE---- # res_neg <- PhyloEM(phylo = monkeys$phy, # Y_data = monkeys$dat, # process = "scOU", # random.root = FALSE, ## root needs to be fixed # K_max = 10, # parallel_alpha = TRUE, # Ncores = 2, # nbr_alpha = 4, ## 2 negative, 2 positive (should be more) # allow_negative = TRUE) ## allow negative alpha in the grid ## ----label="Fit_EM_negative_int", echo=FALSE, warning=FALSE, message=FALSE---- res_neg <- PhyloEM(phylo = monkeys$phy, Y_data = monkeys$dat, process = "scOU", random.root = FALSE, ## root needs to be fixed K_max = 10, parallel_alpha = FALSE, nbr_alpha = 4, ## 2 negative, 2 positive (should be more) allow_negative = TRUE) ## allow negative alpha in the grid ## ----------------------------------------------------------------------------- params_process(res_neg, K = 0) ## ----fig.show='hold', fig.height=4, fig.width=4, warning=FALSE---------------- plot_criterion(res_neg, "BGHmlraw")