Ecco lo script per l'utilizzo del modello di miscela con mcluster.
X <- c(rnorm(200, 10, 3), rnorm(200, 25,3), rnorm(200,35,3), rnorm(200,65, 3), rnorm(200,80,5))
Y <- c(rnorm(1000, 30, 2))
plot(X,Y, ylim = c(10, 60), pch = 19, col = "gray40")
require(mclust)
xyMclust <- Mclust(data.frame (X,Y))
plot(xyMclust)

In una situazione in cui ci sono meno di 5 cluster:
X1 <- c(rnorm(200, 10, 3), rnorm(200, 25,3), rnorm(200,35,3), rnorm(200,80,5))
Y1 <- c(rnorm(800, 30, 2))
xyMclust <- Mclust(data.frame (X1,Y1))
plot(xyMclust)

xyMclust4 <- Mclust(data.frame (X1,Y1), G=3)
plot(xyMclust4)

In questo caso stiamo inserendo 3 cluster. Che cosa succede se inseriamo 5 cluster?
xyMclust4 <- Mclust(data.frame (X1,Y1), G=5)
plot(xyMclust4)
Può forzare a creare 5 cluster.

Inoltre introduciamo un po 'di rumore casuale:
X2 <- c(rnorm(200, 10, 3), rnorm(200, 25,3), rnorm(200,35,3), rnorm(200,80,5), runif(50,1,100 ))
Y2 <- c(rnorm(850, 30, 2))
xyMclust1 <- Mclust(data.frame (X2,Y2))
plot(xyMclust1)
mclustconsente il clustering basato sul modello con rumore, vale a dire osservazioni periferiche che non appartengono a nessun cluster. mclustconsente di specificare una distribuzione precedente per regolarizzare l'adattamento ai dati. Una funzione priorControlè fornita in mclust per specificare il precedente e i suoi parametri. Quando viene chiamato con i suoi valori predefiniti, invoca un'altra funzione chiamata defaultPriorche può servire da modello per specificare i priori alternativi. Per includere il rumore nella modellazione, è necessario fornire un'ipotesi iniziale delle osservazioni sul rumore tramite il componente noise dell'argomento di inizializzazione in Mclusto mclustBIC.

L'altra alternativa sarebbe quella di utilizzare il mixtools pacchetto che consente di specificare mean e sigma per ciascun componente.
X2 <- c(rnorm(200, 10, 3), rnorm(200, 25,3), rnorm(200,35,3),
rnorm(200,80,5), rpois(50,30))
Y2 <- c(rnorm(800, 30, 2), rpois(50,30))
df <- cbind (X2, Y2)
require(mixtools)
out <- mvnormalmixEM(df, lambda = NULL, mu = NULL, sigma = NULL,
k = 5,arbmean = TRUE, arbvar = TRUE, epsilon = 1e-08, maxit = 10000, verb = FALSE)
plot(out, density = TRUE, alpha = c(0.01, 0.05, 0.10, 0.12, 0.15), marginal = TRUE)
