The regular expectationmaximization algorithm for general multivariate Gaussian mixture models.
EMAlgorithm(x, theta, m, eps = 1e06, max.ite = 1e+05, trace.theta = FALSE, verbose = FALSE)
x  A 

theta  A list of parameters of class 
m 

eps  The maximal required difference in successive likelihoods to establish convergence. 
max.ite  The maximum number of iterations. 
trace.theta  Logical. If 
verbose  Set to 
A list of length 3 with elements:
A list of the estimated parameters as described in
rtheta
.
A numeric vector of the loglikelihood trace.
A matrix where kappa[i,j]
is the probability that
x[i, ]
is realized from the j
'th component.
Though not as versatile, the algorithm can be a faster alternative
to Mclust
in the mclust
package. If theta
is not given,
a kmeans clustering is used to determine the initial theta
.
Anders Ellern Bilgrau <anders.ellern.bilgrau@gmail.com>
set.seed(3) true.theta < rtheta(d = 2, m = 3, method = "old") true.theta$sigma < lapply(true.theta$sigma, cov2cor) # Scale if (FALSE) { plot(true.theta, nlevels = 20, add.ellipses = TRUE) } data < SimulateGMCMData(n = 1000, theta = true.theta) start.theta < rtheta(d = 2, m = 3) start.theta$mu < t(kmeans(data$z, 3)$centers) # More sensible location estimates start.theta < as.theta(start.theta) # Coerce the matrix to a list res < GMCM:::EMAlgorithm(data$z, theta = start.theta) par(mfrow = c(1,2)) plot(data$z, cex = 0.5, pch = 16, main = "Simulated data", col = rainbow(3)[data$K]) plot(data$z, cex = 0.5, pch = 16, main = "GMM clustering", col = rainbow(3)[apply(res$kappa,1,which.max)])