Builds all transition probability matrices of an inhomogeneous-HSMM-approximating HMM
Builds all transition probability matrices of an inhomogeneous-HSMM-approximating HMM
Hidden semi-Markov models (HSMMs) are a flexible extension of HMMs. For direct numerical maximum likelhood estimation, HSMMs can be represented as HMMs on an enlarged state space (of size M) and with structured transition probabilities.
This function computes the transition matrices of a periodically inhomogeneos HSMMs.
tpm_ihsmm(omega, dm, eps =1e-10)
Arguments
omega: embedded transition probability matrix
Either a matrix of dimension c(N,N) for homogeneous conditional transition probabilities (as computed by tpm_emb), or an array of dimension c(N,N,n) for inhomogeneous conditional transition probabilities (as computed by tpm_emb_g).
dm: state dwell-time distributions arranged in a list of length N
Each list element needs to be a matrix of dimension c(n, N_i), where each row t is the (approximate) probability mass function of state i at time t.
eps: rounding value: If an entry of the transition probabily matrix is smaller, than it is rounded to zero. Usually, this should not be changed.
Returns
list of dimension length n - max(sapply(dm, ncol)), containing sparse extended-state-space transition probability matrices for each time point (except the first max(sapply(dm, ncol)) - 1).
Examples
N =2# time-varying mean dwell timesn =100z = runif(n)beta = matrix(c(2,2,0.1,-0.1), nrow =2)Lambda = exp(cbind(1, z)%*% t(beta))sizes = c(15,15)# approximating chain with 30 states# state dwell-time distributionsdm = lapply(1:N,function(i) sapply(1:sizes[i]-1, dpois, lambda = Lambda[,i]))## homogeneous conditional transition probabilites# diagonal elements are zero, rowsums are oneomega = matrix(c(0,1,1,0), nrow = N, byrow =TRUE)# calculating extended-state-space t.p.m.sGamma = tpm_ihsmm(omega, dm)## inhomogeneous conditional transition probabilites# omega can be an arrayomega = array(omega, dim = c(N,N,n))# calculating extended-state-space t.p.m.sGamma = tpm_ihsmm(omega, dm)