这是使用 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)

在集群少于 5 个的情况下:
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)

在这种情况下,我们正在拟合 3 个集群。如果我们适合 5 个集群呢?
xyMclust4 <- Mclust(data.frame (X1,Y1), G=5)
plot(xyMclust4)
它可以强制制作5个集群。

另外让我们介绍一些随机噪声:
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
允许基于模型的噪声聚类,即不属于任何聚类的离群观察。mclust
允许指定先验分布以规范对数据的拟合。mclust 中提供了一个函数priorControl
,用于指定先验及其参数。当使用其默认值调用时,它会调用另一个被调用的函数,该函数defaultPrior
可以用作指定替代先验的模板。为了在建模中包含噪声,噪声观测值的初始猜测必须通过Mclust
或中初始化参数的噪声分量提供mclustBIC
。

另一种选择是使用允许您为每个组件指定均值和西格玛的包mixtools
。
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)
