simulate.dsmm {dsmmR}R Documentation

Simulate a sequence given a drifting semi-Markov kernel.

Description

Generic function that simulates a sequence under the rule of a drifting semi-Markov kernel. The number of simulated states is nsim, while the kernel is retrieved from the object obj via inheritance from the S3 class dsmm.

Usage

## S3 method for class 'dsmm'
simulate(
  object,
  nsim = NULL,
  seed = NULL,
  max_seq_length = NULL,
  klim = 100,
  ...
)

Arguments

object

An object of S3 class dsmm, dsmm_fit_nonparametric, dsmm_nonparametric, dsmm_fit_parametric or dsmm_parametric.

nsim

Optional. An integer specifying the number of simulations to be made from the drifting semi-Markov kernel. The maximum value of nsim is the model size which is specified in obj. This is also the default value. We define a special case for nsim = 0, where only the initial distribution is considered and only the simulation of its sojourn time will be made, without the next state.

seed

Optional. An integer specifying the initialization of the random number generator.

max_seq_length

Optional. A positive integer that will ensure the simulated sequence will not have a maximum total length greater than max_seq_length (however, it is possible for the total length to be less than max_seq_length).

klim

Optional. Positive integer. Passed down to get_kernel for the parametric object, with class dsmm_parametric. Default value is 100.

...

Optional. Attributes passed down from the simulate method.

Value

Returns the simulated sequence for the given drifting semi-Markov model. It is a character vector based on nsim simulations, with a maximum length of max_seq_length.

This sequence is not to be confused with the embedded Markov chain. The user can apply the base::rle() function on this simulated sequence, if he wishes to obtain the corresponding embedded Markov chain and the sojourn times.

See Also

About random number generation in R: RNG.

Fitting a model through a sequence from this function: fit_dsmm.

For the theoretical background of drifting semi-Markov models: dsmmR.

For obtaining the lengths and values of equals values in a vector: rle.

Examples

# Setup.
sequence <- create_sequence("DNA", len = 1000)
states <- sort(unique(sequence))
d <- 1
obj_model_3 <- fit_dsmm(sequence = sequence,
                        states = states,
                        degree = d,
                        f_is_drifting = TRUE,
                        p_is_drifting = FALSE)

# Using the method `simulate.dsmm()`.
simulated_seq <- simulate(obj_model_3, seed = 1)
short_sim <- simulate(obj = obj_model_3, nsim = 10, seed = 1)
cut_sim <- simulate(obj = obj_model_3, max_seq_length = 10, seed = 1)
str(simulated_seq)
str(short_sim)
str(cut_sim)

# To obtain the embedded Markov chain (EMC) and the corresponding sojourn times
# of any simulated sequence, we can simply use the `base::rle()` function.

sim_seq_emc <- base::rle(cut_sim)$values # embedded Markov chain
sim_seq_sojourn_times <- base::rle(cut_sim)$lengths # sojourn times
cat("Start of the simulated sequence: ", head(cut_sim),
    "...\nThe embedded Markov chain:       ", head(sim_seq_emc),
    "...\nThe sojourn times:               ", head(sim_seq_sojourn_times), "...")


[Package dsmmR version 1.0.5 Index]