Learn R Programming

CNprep (version 1.0)

consolidate:

Usage

consolidate(emfit, minover)

Arguments

emfit
minover

Value

    Examples

    Run this code
    ##---- Should be DIRECTLY executable !! ----
    ##-- ==>  Define data, use random,
    ##--	or do  help(data=index)  for the standard data sets.
    
    ## The function is currently defined as
    function (emfit, minover) 
    {
        newem <- list(mu = emfit$parameters$mean, pro = emfit$parameters$pro, 
            z = emfit$z, groups = matrix(nrow = length(emfit$parameters$mean), 
                ncol = length(emfit$parameters$mean), data = 0), 
            ngroups = length(emfit$parameters$mean))
        diag(newem$groups) <- 1
        while (newem$ngroups > 1) {
            avz <- (t(newem$z)/colSums(newem$z)) %*% newem$z
            diag(avz) <- 0
            if (max(avz) > minover) {
                g1 <- col(avz)[rev(order(avz))][1]
                g2 <- row(avz)[rev(order(avz))][1]
                gl <- min(g1, g2)
                gr <- max(g1, g2)
                newem$z[, gl] <- newem$z[, gl] + newem$z[, gr]
                newem$z <- matrix(ncol = ncol(newem$z) - 1, nrow = nrow(newem$z), 
                    data = newem$z[, -gr])
                newem$mu[gl] <- (newem$mu[gl] * newem$pro[gl] + newem$mu[gr] * 
                    newem$pro[gr])/(newem$pro[gl] + newem$pro[gr])
                newem$mu <- newem$mu[-gr]
                newem$pro[gl] <- newem$pro[gl] + newem$pro[gr]
                newem$pro <- newem$pro[-gr]
                newem$groups[gl, ] <- newem$groups[gl, ] + newem$groups[gr, 
                    ]
                newem$groups <- matrix(ncol = ncol(newem$groups), 
                    nrow = newem$ngroups - 1, data = newem$groups[-gr, 
                      ])
                newem$ngroups <- newem$ngroups - 1
            }
            else break
        }
        return(newem)
      }

    Run the code above in your browser using DataLab