R/mc_simulate.R

Defines functions mc_simulate

Documented in mc_simulate

#' Run Markov Chain Simulation
#'
#' @param months numeric array of months for each daily time step
#' @param initial initial state
#' @param transitions monthly list of transition matrices generated by mc_fit()
#' @param states character vector of markov states
#' @export
#' @examples
#' transitions <- mc_fit(x=sample(c('d', 'w', 'e'), size=720, replace=TRUE, prob=c(0.5, 0.3, 0.2)), months=rep(rep(seq(1, 12), each=30), times=2))
#' mc_simulate(months=rep(1:12, each=30), initial='d', transitions=transitions, states=c('d', 'w', 'e'))
#'
mc_simulate <- function(months, initial, transitions, states=c('d', 'w', 'e')) {
  n <- length(months)

  chain <- rep(NA_character_, times=n)
  chain[1] <- initial

  for (i in 2:n) {
    chain[i] <- sample(states, size=1, prob=transitions[[months[i-1]]][chain[i-1], ])
  }

  chain <- ordered(chain, levels=states)

  chain
}
walkerjeffd/weathergen documentation built on July 26, 2022, 7:20 a.m.