basic test OK, but problem with 'fast' EMGLLF output in last EMilie test
[valse.git] / pkg / R / EMGLLF.R
index 03f0a75..08ff203 100644 (file)
@@ -19,7 +19,8 @@
 #'   rho : parametre de variance renormalisé, calculé par l'EM
 #'   pi : parametre des proportions renormalisé, calculé par l'EM
 #'   LLF : log vraisemblance associée à cet échantillon, pour les valeurs estimées des paramètres
-#'   S : ... affec : ...
+#'   S : ...
+#'   affec : ...
 #'
 #' @export
 EMGLLF <- function(phiInit, rhoInit, piInit, gamInit, mini, maxi, gamma, lambda, 
@@ -72,7 +73,6 @@ EMGLLF <- function(phiInit, rhoInit, piInit, gamInit, mini, maxi, gamma, lambda,
   ps2 <- array(0, dim = c(p, m, k))
   X2 <- array(0, dim = c(n, p, k))
   Y2 <- array(0, dim = c(n, m, k))
-  EPS <- 1e-15
 
   for (ite in 1:maxi)
   {
@@ -179,7 +179,7 @@ EMGLLF <- function(phiInit, rhoInit, piInit, gamInit, mini, maxi, gamma, lambda,
 
     sumPen <- sum(pi^gamma * b)
     last_llh <- llh
-    llh <- -sumLogLLH/n + lambda * sumPen
+    llh <- -sumLogLLH/n #+ lambda * sumPen
     dist <- ifelse(ite == 1, llh, (llh - last_llh)/(1 + abs(llh)))
     Dist1 <- max((abs(phi - Phi))/(1 + abs(phi)))
     Dist2 <- max((abs(rho - Rho))/(1 + abs(rho)))
@@ -190,5 +190,6 @@ EMGLLF <- function(phiInit, rhoInit, piInit, gamInit, mini, maxi, gamma, lambda,
       break
   }
 
-  list(phi = phi, rho = rho, pi = pi, llh = llh, S = S)
+       affec = apply(gam, 1, which.max)
+  list(phi = phi, rho = rho, pi = pi, llh = llh, S = S, affec=affec)
 }