我正在尝试使用 mixtool 包分析混合模型,换句话说,我想分析我的数据是单峰分布、双峰分布还是多峰分布。
为简单起见,这里举个例子:
library(mixtools)
#creating an aritifical normal distribution
mydata <- rnorm(1000, 1750, 60)
#defining the cuts and preparing it for calculations
cutp <- seq(1600, 2300, by=25)
mult <- makemultdata(mydata, cuts = cutp)
comp <- multmixmodel.sel(mult, comps = 1:3, epsilon = 0.01)
#plotting the data (in this case 2 subpopulations)
mixmdl = normalmixEM(mydata, k=2, maxit=50000)
plot(mixmdl,which=2)
lines(density(mydata), lty=2, lwd=2)
现在作为'comp'的结果,我得到:
1 2 3 Winner
AIC -Inf -94.04097 -124.04097 2
BIC -Inf -35.04097 -35.04097 2
CAIC -Inf -64.54097 -79.54097 2
ICL -Inf -35.04097 -35.04097 2
Loglik -Inf -35.04097 -35.04097 2
在我对这种处决的非常有限的理解中,我希望将 1 视为“赢家”(因为我产生了一个单一的正态分布)。但是,如您所见,我得到 1 的无限值,而 BIC、ICL 和 Loglik 的 2 和 3 具有相同的值。这违背了正态分布和更高(或相同)的概率来处理双或多模式分布。由于我一开始使用的是正态分布,因此我希望看到 1 的概率最高,并且至少在 2 和 3 之间存在一些差异。最让我困惑的是在某些测试中 2 和 3 的相同值。
所以我的问题是为什么我的方法无法将分布识别为高斯分布,而是将其分类为双峰/多峰?