Aquí está el script para el uso de la mezcla de modelo de uso de la 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)
En una situación donde hay menos de 5 categorías:
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)
En este caso estamos encajando 3 grupos. Lo que si que caben 5 clusters ?
xyMclust4 <- Mclust(data.frame (X1,Y1), G=5)
plot(xyMclust4)
Se puede forzar a hacer 5 grupos.
También vamos a introducir algunos de ruido aleatorio:
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)
mclust
permite el agrupamiento basado en el modelo con el ruido, es decir, alejadas de las observaciones que no pertenecen a ningún grupo. mclust
permite especificar una distribución previa para regularizar el ajuste a los datos. Una función priorControl
es proporcionado en mclust para especificar el prior y sus parámetros. Cuando se llama con sus valores por defecto, llama a otra función llamada defaultPrior
que puede servir como una plantilla para especificar la alternativa de los priores. Para incluir el ruido en el modelado, una estimación inicial de el ruido de las observaciones debe ser suministrada a través del ruido de los componentes de la inicialización del argumento en Mclust
o mclustBIC
.
La otra alternativa sería el uso de mixtools
paquete que le permite especificar la media y la sigma para cada uno de los componentes.
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)