#' qemiss2
#'
#' \code{qemiss2} is the emission part of the Q function in E-step,
#' i.e.: Sum_{i,t,k} log[fk(x_t)] * L^i_k(t). (with negative sign).
#' \code{qemiss2} calculates the target function for each k
#' instead of all k.
#'
#' @export
#' @param pars a vector of length 2. c(alpha[k], beta[k])
#' @param X a list of vectors of observed states x
#' @param E a vector of normalizing constant for each observed chain in X
#' @param L a list of matrix L from \code{computeL}
#' @param k a scalar indicating which state is calculated
#' @return A scalar, the (negative) value of the target function
#' that would later be minimized.
#'
#' @examples
#' df <- uORF
#' X <- L <- list()
#' E <- c()
#' for (i in 1:2){
#' X[[i]] <- df[[i]]$x
#' RNA <- df[[i]]$RNA
#' E[i]=df[[i]]$E; trans=df[[i]]$trans;
#' a=df[[i]]$v; b=df[[i]]$v/df[[i]]$m
#' la <- forwardAlg(X[[i]], RNA, trans, a, b, E[i])
#' lb <- backwardAlg(X[[i]], RNA, trans, a, b, E[i])
#' L[[i]] <- computeL(la, lb)
#' }
#' pars <- c(df[[1]]$v, df[[1]]$v/df[[1]]$m)
#'
#' qe <- 0
#' for (k in 1:21){
#' qe <- qe + qemiss2(pars[c(k,21+k)],X,E,L,k)
#' }
#' print(qe)
#' print(qemiss(pars,X,E,L))
qemiss2 <- function(pars, X, E, L, k){
pars <- abs(pars)
alpha <- pars[1]
beta <- pars[2]
qe = 0
for (i in 1:length(X)){
for (t in 1:length(X[[i]])){
lf_tk <- lnb(X[[i]][t], alpha, beta, E[i])
qe <- qe + lf_tk * L[[i]][t,k]
}
}
return(-qe)
}
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.