Berikut ini skrip untuk menggunakan model campuran menggunakan 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)
Dalam situasi di mana ada kurang dari 5 klaster:
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)
Dalam hal ini kami memasang 3 kluster. Bagaimana jika kita muat 5 klaster?
xyMclust4 <- Mclust(data.frame (X1,Y1), G=5)
plot(xyMclust4)
Itu bisa memaksa untuk membuat 5 cluster.
Mari kita kenalkan beberapa noise acak:
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
memungkinkan pengelompokan berbasis model dengan noise, yaitu pengamatan terluar yang bukan milik cluster mana pun. mclust
memungkinkan untuk menentukan distribusi sebelumnya untuk mengatur kecocokan dengan data. Sebuah fungsi priorControl
disediakan dalam mclust untuk menentukan prior dan parameternya. Ketika dipanggil dengan default-nya, ia memanggil fungsi lain yang disebut defaultPrior
yang dapat berfungsi sebagai templat untuk menentukan prior prior. Untuk memasukkan noise dalam pemodelan, tebakan awal pengamatan noise harus diberikan melalui komponen noise dari argumen inisialisasi dalam Mclust
atau mclustBIC
.
Alternatif lain adalah dengan menggunakan mixtools
paket yang memungkinkan Anda menentukan mean dan sigma untuk setiap komponen.
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)