#' Cluster multiple GBM series
#'
#' @description Get parameter files from efforts-abm folder
#'
#' @param series tibble with at least 2 series of GBM price data
#' @param type dtwclust parameter type
#' @param k dtwclust parameter k
#' @param distance dtwclust parameter distance
#' @param centroid dtwclust parameter centroid
#' @param seed dtwclust parameter seed
#' @param trace dtwclust parameter trace
#' @param window.size dtwclust parameter window.size
#'
#' @return a cluster object
#'
#' @details
#'
#' This function uses the dtwclust package to cluster multiple time series.
#' The input object can be generated by nesting several calls to prices.GBM.one.series() - see example.
#'
#' @examples
#'
#' \dontrun{
#'
#' n.series <- 100
#' path.series <- purrr::map_dfr(1:n.series, function(x){
#' prices.GBM.one.series(years=50, id=x)
#' })
#' }
#'
#'
#' @aliases prices.GBM.cluster
#' @rdname prices.GBM.cluster
#'
#' @export
prices.GBM.cluster <- function(series, type="partitional", k=20L, distance="dtw_basic", centroid="pam", seed=3247L, trace=TRUE, window.size=20L)
{
crops <- unique(series$crop)
pcs <- purrr::map(crops, function(c){
ts <- purrr::map(unique(series$series), function(x) {
series.x <- series %>%
dplyr::filter(crop == c) %>%
dplyr::filter(series == x)
return(series.x$price)
})
pc <- dtwclust::tsclust(ts,
type = type,
k = k,
distance = distance,
centroid = centroid,
seed = seed,
trace = trace,
args = dtwclust::tsclust_args(dist = list(window.size = window.size)))
return(pc)
})
names(pcs) <- crops
return(pcs)
}
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.