R/loglikcond.R

Defines functions loglikcond

# ' X is the entire dataset (const &)

loglikcond <- function(X = X, mui = mui, Sigma = Sigma, M = M, i = i, Zc = Zc) {
   res = dmvnorm(x = X[i, ], mean = mui, sigma = Sigma) # vraisemblance globale de l'individu
   quimank_i = which(M[i, ] == 1)
   if (length(quimank_i) > 0) {
      Sigma_M_obs = matrix(Sigma[quimank_i, -quimank_i], nrow = length(quimank_i))
      Sigma_obs_obs = Sigma[-quimank_i, -quimank_i]
      prodmat = Sigma_M_obs %*% solve(Sigma_obs_obs)
      mu = mui[quimank_i] + prodmat %*% (X[i, -quimank_i] - mui[-quimank_i])
      sigma = Sigma[quimank_i, quimank_i] - prodmat %*% t(Sigma_M_obs) # matrice variance-covariance
      res = res / dmvnorm(x = X[i, quimank_i], mean = mu, sigma = sigma) # on divise par la vraisemblance conditionnelle des manquants pour obtenir la marginale
      # attention sigma minuscule dans les deux lignes precedentes
   }
   return(log(res))
}

Try the CorReg package in your browser

Any scripts or data that you put into this service are public.

CorReg documentation built on Feb. 20, 2020, 5:07 p.m.