Đây là kịch bản để sử dụng mô hình hỗn hợp bằng cách sử dụng 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)
Trong tình huống có ít hơn 5 cụm:
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)
Trong trường hợp này, chúng tôi đang lắp 3 cụm. Nếu chúng ta phù hợp với 5 cụm thì sao?
xyMclust4 <- Mclust(data.frame (X1,Y1), G=5)
plot(xyMclust4)
Nó có thể buộc phải thực hiện 5 cụm.
Ngoài ra, hãy giới thiệu một số tiếng ồn ngẫu nhiên:
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
cho phép phân cụm dựa trên mô hình với nhiễu, cụ thể là các quan sát xa không thuộc về bất kỳ cụm nào. mclust
cho phép chỉ định phân phối trước để chuẩn hóa sự phù hợp với dữ liệu. Một chức năngpriorControl
được cung cấp trong mclust để chỉ định trước và các tham số của nó. Khi được gọi với mặc định của nó, nó gọi một hàm khác được gọi là defaultPrior
có thể dùng làm khuôn mẫu để chỉ định các linh mục thay thế. Để bao gồm nhiễu trong mô hình hóa, một dự đoán ban đầu về các quan sát nhiễu phải được cung cấp thông qua thành phần nhiễu của đối số khởi tạo trong Mclust
hoặc mclustBIC
.
Cách khác là sử dụng mixtools
gói cho phép bạn chỉ định giá trị trung bình và sigma cho từng thành phần.
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)