Problem: pmclustEnv$Z.colSums[i.k] is sometimes zero leading to NaNs in likelihood
with multiple processes.
Reproduce:
#generate 12 gaussian clusters
X.spmd = result
barrier();
K <- 12
barrier();
PARAM.org <- set.global(K = K)
PARAM.org <- initial.em(PARAM.org)
The issue can be observed as
Error in if (any(u < .pmclustEnv$CONTROL$U.min | u > .pmclustEnv$CONTROL$U.max)) { :
missing value where TRUE/FALSE needed
With instrumented code one can see that
.pmclustEnv$Z.colSums[i.k]
is zero in pmclust/R/pm_em_base.r
function:
m.step.spmd <- function(PARAM){
if(exists("X.spmd", envir = .pmclustEnv)){
X.spmd <- get("X.spmd", envir = .pmclustEnv)
}
### MLE For ETA
PARAM$ETA <- .pmclustEnv$Z.colSums / sum(.pmclustEnv$Z.colSums)
PARAM$log.ETA <- log(PARAM$ETA)
...
Thank you, Audris