R/prices.GBM.cluster.R

Defines functions prices.GBM.cluster

Documented in prices.GBM.cluster

#' 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)
}
EFForTS-B10/Refforts documentation built on March 26, 2023, 5:45 p.m.