Fix numerical problems in EMGLLF (R version)
[valse.git] / pkg / R / initSmallEM.R
index d1ade1c..056d7e7 100644 (file)
@@ -8,7 +8,7 @@
 #' @export
 #' @importFrom methods new
 #' @importFrom stats cutree dist hclust runif
-initSmallEM <- function(k, X, Y, fast = TRUE)
+initSmallEM <- function(k, X, Y, fast)
 {
   n <- nrow(Y)
   m <- ncol(Y)
@@ -54,8 +54,8 @@ initSmallEM <- function(k, X, Y, fast = TRUE)
       {
         dotProduct <- tcrossprod(Y[i, ] %*% rhoInit1[, , r, repet]
           - X[i, ] %*% phiInit1[, , r, repet])
-        Gam[i, r] <- piInit1[repet, r]
-          det(rhoInit1[, , r, repet]) * exp(-0.5 * dotProduct)
+        Gam[i, r] <- piInit1[repet, r] * 
+          det(rhoInit1[, , r, repet]) * exp(-0.5 * dotProduct)
       }
       sumGamI <- sum(Gam[i, ])
       gamInit1[i, , repet] <- Gam[i, ]/sumGamI
@@ -67,8 +67,7 @@ initSmallEM <- function(k, X, Y, fast = TRUE)
     init_EMG <- EMGLLF(phiInit1[, , , repet], rhoInit1[, , , repet], piInit1[repet, ],
       gamInit1[, , repet], miniInit, maxiInit, gamma = 1, lambda = 0, X, Y,
       eps = 1e-04, fast)
-    LLFEessai <- init_EMG$LLF
-    LLFinit1[repet] <- LLFEessai[length(LLFEessai)]
+    LLFinit1[[repet]] <- init_EMG$llh
   }
   b <- which.min(LLFinit1)
   phiInit <- phiInit1[, , , b]