make a hhsmmspec model for a specified emission distribution
Provides a hhsmmspec model by using the parameters obtained by initial_estimate
for the emission distribution characterized by mstep and dens.emission
make_model( par, mstep = mixmvnorm_mstep, dens.emission = dmixmvnorm, semi = NULL, M, sojourn )
par
: the parameters obtained by initial_estimate
mstep
: the mstep function of the EM algorithm with an style simillar to that of mixmvnorm_mstep
dens.emission
: the density of the emission distribution with an style simillar to that of dmixmvnorm
semi
: logical and of one of the following forms:
NULL
if ltr
=TRUE then semi = c(rep(TRUE,nstate-1),FALSE)
, else semi = rep(TRUE,nstate)
M
: maximum number of waiting times in each state
sojourn
: the sojourn time distribution which is one of the following cases:
"nonparametric"
non-parametric sojourn distribution"nbinom"
negative binomial sojourn distribution"logarithmic"
logarithmic sojourn distribution"poisson"
poisson sojourn distribution"gamma"
gamma sojourn distribution"weibull"
weibull sojourn distribution"lnorm"
log-normal sojourn distribution"auto"
automatic determination of the sojourn distribution using the chi-square testa hhsmmspec
model containing the following items:
init
initial probabilities of statestransition
transition matrixparms.emission
parameters of the mixture normal emission (mu
, sigma
, mix.p
)sojourn
list of sojourn distribution parameters and its type
dens.emission
the emission probability density functionmstep
the M step function of the EM algorithmsemi
a logical vector of length nstate with the TRUE associated states are considered as semi-MarkovianJ <- 3 initial <- c(1, 0, 0) semi <- c(FALSE, TRUE, FALSE) P <- matrix(c(0.8, 0.1, 0.1, 0.5, 0, 0.5, 0.1, 0.2, 0.7), nrow = J, byrow = TRUE) par <- list(mu = list(list(7, 8), list(10, 9, 11), list(12, 14)), sigma = list(list(3.8, 4.9), list(4.3, 4.2, 5.4), list(4.5, 6.1)), mix.p = list(c(0.3, 0.7), c(0.2, 0.3, 0.5), c(0.5, 0.5))) sojourn <- list(shape = c(0, 3, 0), scale = c(0, 10, 0), type = "gamma") model <- hhsmmspec(init = initial, transition = P, parms.emis = par, dens.emis = dmixmvnorm, sojourn = sojourn, semi = semi) train <- simulate(model, nsim = c(10, 8, 8, 18), seed = 1234, remission = rmixmvnorm) clus = initial_cluster(train, nstate = 3, nmix = c(2, 2, 2), ltr = FALSE, final.absorb = FALSE, verbose = TRUE) par = initial_estimate(clus, verbose = TRUE) model = make_model(par, semi = NULL, M = max(train$N), sojourn = "gamma")
Morteza Amini, morteza.amini@ut.ac.ir , Afarin Bayat, aftbayat@gmail.com
Useful links