#' 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
}
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.