Hier ist ein Skript für die Verwendung eines Mischungsmodells mit 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 einer Situation, in der weniger als 5 Cluster vorhanden sind:
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 diesem Fall passen wir 3 Cluster an. Was ist, wenn wir 5 Cluster passen?
xyMclust4 <- Mclust(data.frame (X1,Y1), G=5)
plot(xyMclust4)
Es kann erzwingen, 5 Cluster zu bilden.
Lassen Sie uns auch ein zufälliges Rauschen einführen:
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
Ermöglicht modellbasiertes Clustering mit Rauschen, dh Nebenbeobachtungen, die zu keinem Cluster gehören. mclust
Ermöglicht die Angabe einer vorherigen Verteilung, um die Anpassung an die Daten zu regulieren. In priorControl
mclust wird eine Funktion zur Angabe des Prior und seiner Parameter bereitgestellt. Wenn es mit seinen Standardeinstellungen aufgerufen wird, ruft es eine andere aufgerufene Funktion auf, defaultPrior
die als Vorlage für die Angabe alternativer Prioritäten dienen kann. Um Rauschen in die Modellierung einzubeziehen, muss eine erste Schätzung der Rauschbeobachtungen über die Rauschkomponente des Initialisierungsarguments in Mclust
oder erfolgen mclustBIC
.
Die andere Alternative wäre die Verwendung eines mixtools
Pakets , mit dem Sie Mittelwert und Sigma für jede Komponente angeben können.
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)