## ----global-options, include=FALSE--------------------------------------------------------------------------------------------------------------------------------------------------------------------
if (requireNamespace("knitr", quietly = TRUE)) {
  kc <- get("opts_chunk", envir = asNamespace("knitr"))
  kc$set(
    collapse   = TRUE,
    comment    = "#>",
    fig.retina = 2,
    fig.align  = "center",
    fig.width  = 6,
    fig.height = 3,
    warning    = FALSE,
    message    = FALSE
  )
} else {
  warning("Package 'knitr' not available; vignette chunk options not set.")
}
old_options <- options(width = 200, digits = 5)

paste0 <- base::paste0
paste  <- base::paste


## ----eval = TRUE, echo = FALSE------------------------------------------------------------------------------------------------------------------------------------------------------------------------
library(iSTAY)

## ----eval = FALSE, echo = TRUE------------------------------------------------------------------------------------------------------------------------------------------------------------------------
# ## Install iSTAY package from CRAN
# # install.packages("iSTAY")
# 
# ## Install the latest development version from GitHub
# install.packages('devtools')
# library(devtools)
# install_github("AnneChao/iSTAY")
# 
# ## Load packages
# library(iSTAY)
# library(ggplot2)

## ----eval=FALSE---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
# iSTAY_Single(data, order.q = c(1, 2), Alltime = TRUE, start_T = NULL, end_T = NULL)

## ----eval=FALSE---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
# iSTAY_Multiple(data, order.q = c(1, 2), equal_weights = FALSE, Alltime = TRUE, start_T = NULL, end_T = NULL)

## ----eval=FALSE---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
# iSTAY_Hier(data, structure, order.q = c(1, 2), Alltime = TRUE, start_T = NULL, end_T = NULL)

## ----eval=FALSE---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
# ggiSTAY_qprofile(output)

## ----eval=FALSE---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
# ggiSTAY_analysis(output, x_variable, by_group = NULL, model = "LMM")

## ----eval=F-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
# data("Data_Jena_20_metacommunities")
# metacommunities <- Data_Jena_20_metacommunities
# head(round(metacommunities[[1]][,1:5],2), 10)

## ----echo=F-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
data("Data_Jena_20_metacommunities")
metacommunities <- Data_Jena_20_metacommunities
head(round(metacommunities[[1]][,1:5],2), 10)

## ----eval=F-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
# data("Data_Jena_20_metacommunities")
# communities_aggregated <- do.call(rbind, Data_Jena_20_metacommunities)
# head(round(communities_aggregated[,1:5],2), 10)

## ----echo=F-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
data("Data_Jena_20_metacommunities")
communities_aggregated <- do.call(rbind, Data_Jena_20_metacommunities)
head(round(communities_aggregated[,1:5],2), 10)

## ----eval=F-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
# data("Data_Jena_76_community_populations")
# communities <- Data_Jena_76_community_populations
# head(round(communities[[1]][,1:5],2), 10)

## ----echo=F-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
data("Data_Jena_76_community_populations")
communities <- Data_Jena_76_community_populations
head(round(communities[[1]][,1:5],2), 10)

## ----eval=F-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
# data("Data_Jena_hierarchical_structure")
# head(Data_Jena_hierarchical_structure, 10)

## ----echo=F-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
data("Data_Jena_hierarchical_structure")
head(Data_Jena_hierarchical_structure, 10)

## ----eval=F-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
# data("Data_Jena_20_metacommunities")
# communities_aggregated <- do.call(rbind, Data_Jena_20_metacommunities)
# output_two_plots_q <- iSTAY_Single(data = communities_aggregated[which(rownames(communities_aggregated) %in% c("B1_4.B1A04", "B4_2.B4A14")),],
#                                order.q=seq(0.1,2,0.1),
#                                Alltime = TRUE)
# head(output_two_plots_q, 10)

## ----echo=F-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
communities_aggregated <- do.call(rbind, Data_Jena_20_metacommunities)
output_two_plots_q <- iSTAY_Single(data = communities_aggregated[which(rownames(communities_aggregated) %in% c("B1_4.B1A04", "B4_2.B4A14")),],
                               order.q=seq(0.1,2,0.1), 
                               Alltime = TRUE)

head(cbind(output_two_plots_q[,1:2],"Stability"=round(output_two_plots_q[,3],3)), 10)


## ----fig.align='center'-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
ggiSTAY_qprofile(output = output_two_plots_q)

## ----eval=FALSE---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
# output_communities_aggregated_div <- iSTAY_Single(data = communities_aggregated, order.q = c(1,2), Alltime = TRUE)
# output_communities_aggregated_div <- data.frame(output_communities_aggregated_div,
#                                 log2_sowndiv = log2(as.numeric(do.call(rbind,
#                                                    strsplit(output_communities_aggregated_div[,1],"[._]+"))[,2])),
#                                 block=do.call(rbind, strsplit(output_communities_aggregated_div[,1],"[._]+"))[,1])
# colnames(output_communities_aggregated_div)[1] <- c("Dataset")
# head(output_communities_aggregated_div, 10)

## ----echo=FALSE, digits=3-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------
output_communities_aggregated_div <- iSTAY_Single(data = communities_aggregated, order.q = c(1,2), Alltime = TRUE)
output_communities_aggregated_div <- data.frame(output_communities_aggregated_div,
                                log2_sowndiv = log2(as.numeric(do.call(rbind,
                                                   strsplit(output_communities_aggregated_div[,1],"[._]+"))[,2])),
                                block=do.call(rbind, strsplit(output_communities_aggregated_div[,1],"[._]+"))[,1])
colnames(output_communities_aggregated_div)[1] <- c("Dataset")
head(cbind(output_communities_aggregated_div[,1:2],"Stability"=round(output_communities_aggregated_div[,3],3),output_communities_aggregated_div[,4:5]), 10)


## ----fig.width = 7------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
ggiSTAY_analysis(output = output_communities_aggregated_div, x_variable = "log2_sowndiv", 
                by_group = "block", model = "LMM")

## ----eval=F-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
# individual_populations <- Data_Jena_462_populations
# output_two_populations_q <- iSTAY_Single(data = individual_populations[which(rownames(individual_populations) %in% c("B1A06_B1_16_BM_Ant.odo", "B1A06_B1_16_BM_Cam.pat")),],
#                                        order.q=seq(0.1,2,0.1), Alltime=TRUE)
# head(output_two_populations_q, 10)

## ----echo=F-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
individual_populations <- Data_Jena_462_populations
output_two_populations_q <- iSTAY_Single(data = individual_populations[which(rownames(individual_populations) %in% c("B1A06_B1_16_BM_Ant.odo", "B1A06_B1_16_BM_Cam.pat")),],
                                       order.q=seq(0.1,2,0.1), Alltime=TRUE)

head(cbind(output_two_populations_q[,1:2],"Stability"=round(output_two_populations_q[,3],3)), 10)

## ----fig.align='center'-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
ggiSTAY_qprofile(output = output_two_populations_q)

## ----eval=FALSE---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
# output_individual_populations_div <- iSTAY_Single(data = individual_populations,
#                                          order.q = c(1,2), Alltime=TRUE)
# output_individual_populations_div <- data.frame(output_individual_populations_div,
#                               log2_sowndiv = log2(as.numeric(do.call(rbind,
#                                       strsplit(output_individual_populations_div[,1],"[._]+"))[,3])),
#                               block = do.call(rbind,
#                                     strsplit(output_individual_populations_div[,1],"[._]+"))[,2])
# head(output_individual_populations_div, 10)

## ----echo=FALSE---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
output_individual_populations_div <- iSTAY_Single(data = individual_populations,
                                         order.q = c(1,2), Alltime=TRUE)
output_individual_populations_div <- data.frame(output_individual_populations_div,
                              log2_sowndiv = log2(as.numeric(do.call(rbind,
                                      strsplit(output_individual_populations_div[,1],"[._]+"))[,3])),
                              block = do.call(rbind,
                                    strsplit(output_individual_populations_div[,1],"[._]+"))[,2])

head(cbind(output_individual_populations_div[,1:2],"Stability"=round(output_individual_populations_div[,3],3),output_individual_populations_div[,4:5]), 10)


## ----fig.width = 7------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
ggiSTAY_analysis(output=output_individual_populations_div, x_variable="log2_sowndiv",
                    by_group="block", model="LMM")

## ----eval=F-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
# communities <- Data_Jena_76_community_populations
# output_two_communities_equal_q <- iSTAY_Multiple(
#   data = communities[which(names(communities) %in% c("B1A04_B1_4", "B4A14_B4_2"))],
#   order.q = seq(0.1, 2, 0.1),
#   equal_weights = TRUE,
#   Alltime = TRUE
# )
# head(output_two_communities_equal_q, 10)

## ----echo=F-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
communities <- Data_Jena_76_community_populations
output_two_communities_equal_q <- iSTAY_Multiple(
  data = communities[which(names(communities) %in% c("B1A04_B1_4", "B4A14_B4_2"))],
  order.q = seq(0.1, 2, 0.1),
  equal_weights = TRUE,
  Alltime = TRUE
)
head(output_two_communities_equal_q, 10)

## ----fig.align='center', fig.width = 7, fig.height = 4.5----------------------------------------------------------------------------------------------------------------------------------------------
ggiSTAY_qprofile(output = output_two_communities_equal_q)

## ----eval=F-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
# output_two_communities_biomass_q <- iSTAY_Multiple(
#   data = communities[which(names(communities) %in% c("B1A04_B1_4", "B4A14_B4_2"))],
#   order.q = seq(0.1, 2, 0.1),
#   equal_weights = FALSE,
#   Alltime = TRUE
# )
# head(output_two_communities_biomass_q, 10)

## ----echo=F-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
output_two_communities_biomass_q <- iSTAY_Multiple(
  data = communities[which(names(communities) %in% c("B1A04_B1_4", "B4A14_B4_2"))],
  order.q = seq(0.1, 2, 0.1),
  equal_weights = FALSE,
  Alltime = TRUE
)
head(output_two_communities_biomass_q, 10)

## ----fig.align='center', fig.width = 7, fig.height = 4.5----------------------------------------------------------------------------------------------------------------------------------------------
ggiSTAY_qprofile(output = output_two_communities_biomass_q)

## ----eval=FALSE---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
# output_communities_equal_div <- iSTAY_Multiple(
#   data = communities,
#   order.q = c(1, 2),
#   equal_weights = TRUE,
#   Alltime = TRUE
# )
# 
# output_communities_equal_div <- data.frame(
#   output_communities_equal_div,
#   log2_sowndiv = log2(as.numeric(do.call(rbind,
#     strsplit(output_communities_equal_div[, 1], "[._]+"))[, 3])),
#   block = do.call(rbind,
#     strsplit(output_communities_equal_div[, 1], "_"))[, 2]
# )
# rownames(output_communities_equal_div) <- NULL
# head(cbind(output_communities_equal_div[, 1:2],
#            round(output_communities_equal_div[, 3:6], 3),
#            output_communities_equal_div[, 7:9]), 10)

## ----echo=FALSE---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
output_communities_equal_div <- iSTAY_Multiple(
  data = communities,
  order.q = c(1, 2),
  equal_weights = TRUE,
  Alltime = TRUE
)

output_communities_equal_div <- data.frame(
  output_communities_equal_div,
  log2_sowndiv = log2(as.numeric(do.call(rbind,
    strsplit(output_communities_equal_div[, 1], "[._]+"))[, 3])),
  block = do.call(rbind,
    strsplit(output_communities_equal_div[, 1], "_"))[, 2]
)
rownames(output_communities_equal_div) <- NULL
head(cbind(output_communities_equal_div[, 1:2],
           round(output_communities_equal_div[, 3:6], 3),
           output_communities_equal_div[, 7:9]), 10)

## ----fig.width = 8, fig.height = 9.5------------------------------------------------------------------------------------------------------------------------------------------------------------------
ggiSTAY_analysis(output = output_communities_equal_div,
                 x_variable = "log2_sowndiv",
                 by_group = "block",
                 model = "LMM")

## ----eval=FALSE---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
# output_communities_biomass_div <- iSTAY_Multiple(
#   data = communities,
#   order.q = c(1, 2),
#   equal_weights = FALSE,
#   Alltime = TRUE
# )
# 
# output_communities_biomass_div <- data.frame(
#   output_communities_biomass_div,
#   log2_sowndiv = log2(as.numeric(do.call(rbind,
#     strsplit(output_communities_biomass_div[, 1], "[._]+"))[, 3])),
#   block = do.call(rbind,
#     strsplit(output_communities_biomass_div[, 1], "_"))[, 2]
# )
# rownames(output_communities_biomass_div) <- NULL
# head(cbind(output_communities_biomass_div[, 1:2],
#            round(output_communities_biomass_div[, 3:6], 3),
#            output_communities_biomass_div[, 7:9]), 10)

## ----echo=FALSE---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
output_communities_biomass_div <- iSTAY_Multiple(
  data = communities,
  order.q = c(1, 2),
  equal_weights = FALSE,
  Alltime = TRUE
)

output_communities_biomass_div <- data.frame(
  output_communities_biomass_div,
  log2_sowndiv = log2(as.numeric(do.call(rbind,
    strsplit(output_communities_biomass_div[, 1], "[._]+"))[, 3])),
  block = do.call(rbind,
    strsplit(output_communities_biomass_div[, 1], "_"))[, 2]
)
rownames(output_communities_biomass_div) <- NULL
head(cbind(output_communities_biomass_div[, 1:2],
           round(output_communities_biomass_div[, 3:6], 3),
           output_communities_biomass_div[, 7:9]), 10)

## ----fig.width = 8, fig.height = 9.5------------------------------------------------------------------------------------------------------------------------------------------------------------------
ggiSTAY_analysis(output = output_communities_biomass_div,
                 x_variable = "log2_sowndiv",
                 by_group = "block",
                 model = "LMM")

## ----eval=F-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
# metacommunities <- Data_Jena_20_metacommunities
# output_two_metacommunities_equal_q <- iSTAY_Multiple(
#   data = metacommunities[which(names(metacommunities) %in% c("B1_1", "B3_2"))],
#   order.q = seq(0.1, 2, 0.1),
#   equal_weights = TRUE,
#   Alltime = TRUE
# )
# head(output_two_metacommunities_equal_q, 10)

## ----echo=F-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
metacommunities <- Data_Jena_20_metacommunities
output_two_metacommunities_equal_q <- iSTAY_Multiple(
  data = metacommunities[which(names(metacommunities) %in% c("B1_1", "B3_2"))],
  order.q = seq(0.1, 2, 0.1),
  equal_weights = TRUE,
  Alltime = TRUE
)
head(output_two_metacommunities_equal_q, 10)

## ----fig.align='center', fig.width = 7, fig.height = 4.5----------------------------------------------------------------------------------------------------------------------------------------------
ggiSTAY_qprofile(output = output_two_metacommunities_equal_q)

## ----eval=F-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
# output_two_metacommunities_biomass_q <- iSTAY_Multiple(
#   data = metacommunities[which(names(metacommunities) %in% c("B1_1", "B3_2"))],
#   order.q = seq(0.1, 2, 0.1),
#   equal_weights = FALSE,
#   Alltime = TRUE
# )
# head(output_two_metacommunities_biomass_q, 10)

## ----echo=F-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
output_two_metacommunities_biomass_q <- iSTAY_Multiple(
  data = metacommunities[which(names(metacommunities) %in% c("B1_1", "B3_2"))],
  order.q = seq(0.1, 2, 0.1),
  equal_weights = FALSE,
  Alltime = TRUE
)
head(output_two_metacommunities_biomass_q, 10)

## ----fig.align='center', fig.width = 7, fig.height = 4.5----------------------------------------------------------------------------------------------------------------------------------------------
ggiSTAY_qprofile(output = output_two_metacommunities_biomass_q)

## ----eval=FALSE---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
# output_metacommunities_equal_div <- iSTAY_Multiple(
#   data = metacommunities,
#   order.q = c(1, 2),
#   equal_weights = TRUE,
#   Alltime = TRUE
# )
# 
# output_metacommunities_equal_div <- data.frame(
#   output_metacommunities_equal_div,
#   log2_sowndiv = log2(as.numeric(do.call(rbind,
#     strsplit(output_metacommunities_equal_div[, 1], "_"))[, 2])),
#   block = do.call(rbind,
#     strsplit(output_metacommunities_equal_div[, 1], "_"))[, 1]
# )
# rownames(output_metacommunities_equal_div) <- NULL
# head(cbind(output_metacommunities_equal_div[, 1:2],
#            round(output_metacommunities_equal_div[, 3:6], 3),
#            output_metacommunities_equal_div[, 7:9]), 10)

## ----echo=FALSE---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
output_metacommunities_equal_div <- iSTAY_Multiple(
  data = metacommunities,
  order.q = c(1, 2),
  equal_weights = TRUE,
  Alltime = TRUE
)

output_metacommunities_equal_div <- data.frame(
  output_metacommunities_equal_div,
  log2_sowndiv = log2(as.numeric(do.call(rbind,
    strsplit(output_metacommunities_equal_div[, 1], "_"))[, 2])),
  block = do.call(rbind,
    strsplit(output_metacommunities_equal_div[, 1], "_"))[, 1]
)
rownames(output_metacommunities_equal_div) <- NULL
head(cbind(output_metacommunities_equal_div[, 1:2],
           round(output_metacommunities_equal_div[, 3:6], 3),
           output_metacommunities_equal_div[, 7:9]), 10)

## ----fig.width = 8, fig.height = 9.5------------------------------------------------------------------------------------------------------------------------------------------------------------------
ggiSTAY_analysis(output = output_metacommunities_equal_div,
                 x_variable = "log2_sowndiv",
                 by_group = "block",
                 model = "LMM")

## ----eval=FALSE---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
# output_metacommunities_biomass_div <- iSTAY_Multiple(
#   data = metacommunities,
#   order.q = c(1, 2),
#   equal_weights = FALSE,
#   Alltime = TRUE
# )
# 
# output_metacommunities_biomass_div <- data.frame(
#   output_metacommunities_biomass_div,
#   log2_sowndiv = log2(as.numeric(do.call(rbind,
#     strsplit(output_metacommunities_biomass_div[, 1], "_"))[, 2])),
#   block = do.call(rbind,
#     strsplit(output_metacommunities_biomass_div[, 1], "_"))[, 1]
# )
# rownames(output_metacommunities_biomass_div) <- NULL
# head(cbind(output_metacommunities_biomass_div[, 1:2],
#            round(output_metacommunities_biomass_div[, 3:6], 3),
#            output_metacommunities_biomass_div[, 7:9]), 10)

## ----echo=FALSE---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
output_metacommunities_biomass_div <- iSTAY_Multiple(
  data = metacommunities,
  order.q = c(1, 2),
  equal_weights = FALSE,
  Alltime = TRUE
)

output_metacommunities_biomass_div <- data.frame(
  output_metacommunities_biomass_div,
  log2_sowndiv = log2(as.numeric(do.call(rbind,
    strsplit(output_metacommunities_biomass_div[, 1], "_"))[, 2])),
  block = do.call(rbind,
    strsplit(output_metacommunities_biomass_div[, 1], "_"))[, 1]
)
rownames(output_metacommunities_biomass_div) <- NULL
head(cbind(output_metacommunities_biomass_div[, 1:2],
           round(output_metacommunities_biomass_div[, 3:6], 3),
           output_metacommunities_biomass_div[, 7:9]), 10)

## ----fig.width = 8, fig.height = 9.5------------------------------------------------------------------------------------------------------------------------------------------------------------------
ggiSTAY_analysis(output = output_metacommunities_biomass_div,
                 x_variable = "log2_sowndiv",
                 by_group = "block",
                 model = "LMM")

## ----eval=F-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
# data("Data_Jena_462_populations")
# data("Data_Jena_hierarchical_structure")
# output_hier_q <- iSTAY_Hier(data = Data_Jena_462_populations,
#                             structure = Data_Jena_hierarchical_structure,
#                            order.q=seq(0.1,2,0.1), Alltime=TRUE)
# head(cbind(output_hier_q[,1:2], round(output_hier_q[,3:6],3)), 10)

## ----echo=F-------------------------------------------------------------------

data("Data_Jena_462_populations")
data("Data_Jena_hierarchical_structure")
output_hier_q <- iSTAY_Hier(data = Data_Jena_462_populations,
                            structure = Data_Jena_hierarchical_structure,
                           order.q=seq(0.1,2,0.1), Alltime=TRUE)
head(cbind(output_hier_q[,1:2], round(output_hier_q[,3:6],3)), 10)
on.exit(options(old_options)) # Restore user options to comply with CRAN policy


## ----fig.align='left', fig.width = 5, fig.height = 3--------------------------
hierplot <- ggiSTAY_qprofile(output=output_hier_q)
hierplot[[1]]

## ----fig.align='left', fig.width = 9.5, fig.height = 3------------------------
hierplot[[2]]

