首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >型号选择- mclust

型号选择- mclust
EN

Stack Overflow用户
提问于 2016-11-08 23:13:52
回答 1查看 2.1K关注 0票数 1

我使用MCLUST软件包在R中进行了潜类/聚类分析。我对我的论文进行了修改和重新提交,审查人员建议为集群解决方案编制一个适合指数的表格(到目前为止,我在文本中报告了BIC )。当我看一些使用LCA方法的论文时,他们报告了BIC、样本大小调整的BIC和熵;MCLUST给出的唯一适合的统计数据是BIC。我能找到熵图,但找不到熵统计。对我来说,重新进行对Mplus的分析有点晚了(我在这些论文中发现了这一分析是用于LCA的)。坦率地说,使用另一个集群包重新运行我的分析已经有点晚了。从我所有的阅读来看,听起来MCLUST做的事情与其他一些k-意思的集群方法略有不同。而且--似乎有时会选择BIC最低的模型(在一些论文中),但在MCLUST中,选择的是最高的模型?为什么?

那么,在使用MCLUST时,在编写过程中还报告了哪些其他模型选择统计数据?拥有bIC是标准的/好的吗?我该怎么证明呢?

EN

回答 1

Stack Overflow用户

发布于 2016-11-09 01:56:40

只是几个想法,之前使用过mclust。

1) mclust使用正确的BIC选择方法;见本文:

https://stats.stackexchange.com/questions/237220/mclust-model-selection

请看最下面的部分,但是用BIC来总结一下,这取决于您是否使用公式中的负号来优化low和high:

BIC的一般定义是BIC=−2×ln(L(θ|x))+k×ln(n)BIC=−2×ln(L(θ|x))+k×ln(n);mclust不包括负成分。

2) mclust使用混合模型来执行聚类(即基于模型的聚类);它与k-方法有很大的不同,因此我会谨慎地使用“与其他一些k--意思的聚类方法略有不同”的措辞(主要是在“其他”的含义中);模型选择的过程在mclust手册中作了简要描述:

mclust通过EM算法,为根据BIC选择的模型和分量数,提供了一种用最大似然法拟合数据的高斯混合。根据参考文献中引用的文章中描述的方法,按照熵准则分层次地组合相应的分量。BIC选择的解决方案和类数之间的解决方案作为clustCombi类对象返回。

更有用的是看一看实际的论文来进行彻底的解释:

https://www.stat.washington.edu/raftery/Research/PDF/Baudry2010.pdf或这里https://www.ncbi.nlm.nih.gov/pmc/articles/PMC2953822/

mclust提供的熵图被解释为用于因子分析的scree图(即通过寻找一个弯头来确定最佳的类数);我认为scree图对于证明簇数的选择是有用的,这些图属于附录。

除了BIC之外,mclust还返回ICL统计数据,因此您可以选择向审阅者报告这一情况:

https://cran.r-project.org/web/packages/mclust/vignettes/mclust.html (参见如何使其输出统计信息的示例)

3)如果您想要创建一个entPlot值的表,您可以这样提取它们(从?entPlot示例中):

代码语言:javascript
复制
## Not run: 
data(Baudry_etal_2010_JCGS_examples)
# run Mclust to get the MclustOutput
output <- clustCombi(ex4.2, modelNames = "VII") 

entPlot(output$MclustOutput$z, output$combiM, reg = c(2,3)) 
# legend: in red, the single-change-point piecewise linear regression;
#         in blue, the two-change-point piecewise linear regression.

# added code to extract entropy values from the plot

combiM <- output$combiM
Kmax <- ncol(output$MclustOutput$z)
z0 <- output$MclustOutput$z
ent <- numeric()

for (K in Kmax:1) {
  z0 <- t(combiM[[K]] %*% t(z0))
  ent[K] <- -sum(mclust:::xlog(z0))
}

data.frame(`Number of clusters` = 1:Kmax, `Entropy` = round(ent, 3))

  Number.of.clusters Entropy
1                  1   0.000
2                  2   0.000
3                  3   0.079
4                  4   0.890
5                  5   6.361
6                  6  20.158
7                  7  35.336
8                  8 158.008
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40498023

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档