fwHMM.Rd
This function samples the latent Markov chain of a hidden Markov model given the observed values.
fwHMM(X, pInit, Q, pEmit, seed = 123, cluster = NULL, display_progress = FALSE)
X | an integer matrix of size n-by-p containing the original variables. |
---|---|
pInit | an array of length K, containing the marginal distribution of the states for the first variable. |
Q | an array of size (p-1,K,K), containing a list of p-1 transition matrices between the K states of the Markov chain. |
pEmit | an array of size (p,M,K), containing the emission probabilities for each of the M possible emission states, from each of the K hidden states and the p variables. |
seed | an integer random seed (default: 123). |
cluster | a computing cluster object created by makeCluster (default: NULL). |
display_progress | whether to show progress bar (default: FALSE). |
An integer matrix of size n-by-p containing the knockoff variables.
Each element of the matrix X should be an integer value between 0 and M-1. The transition matrices contained in Q are defined with the same convention as in knockoffDMC. The emission propability matrices contained in pEmit are defined such that \(P[X_{j}=k|H_{j}=l]=\mathrm{pEmit}[j,k,l]\), where \(H_j\) is the latent variable associated to \(X_j\).
Sesia M, Sabatti C, Candès EJ (2019). “Gene hunting with hidden Markov model knockoffs.” Biometrika, 106, 1--18. doi: 10.1093/biomet/asy033 .
Other hmm: fwGenotypes
,
fwHaplotypes
# Generate data p=10; K=5; M=3; pInit = rep(1/K,K) Q = array(stats::runif((p-1)*K*K),c(p-1,K,K)) for(j in 1:(p-1)) { Q[j,,] = Q[j,,] / rowSums(Q[j,,]) } pEmit = array(stats::runif(p*M*K),c(p,M,K)) for(j in 1:p) { pEmit[j,,] = pEmit[j,,] / rowSums(pEmit[j,,]) } X = sampleHMM(pInit, Q, pEmit, n=20) # Forward-backward sampling H = fwHMM(X, pInit, Q, pEmit)