我正在使用Mixture of Hidden Markov Model (MHMM)来聚类我的数据。为此,我使用了Package" seqHMM"在R.我的问题是,是否有可能获得每个集群内的实际观测值。
例如,在我的分析之后,我有3个集群,我想在每个集群中找到确切的观察结果,是否可能?
示例:
首先,我创建了三个HMM,其中包含转移概率初始概率sc_init1
,sc_init2
,sc_init3
和sc_trans1
,sc_trans2
,{{1} },最后分别为排放概率sc_trans3
,sc_emiss1
,sc_emiss2
。然后我将它们组合成MHMM,其中包含三个簇:
sc_emiss3
我的数据mhmm_init <- list(sc_init1, sc_init2, sc_init3)
mhmm_trans <- list(sc_trans1, sc_trans2, sc_trans3)
mhmm_emiss <- list(sc_emiss1,sc_emiss2, sc_emiss3)
mhmm<- build_mhmm(observations=seq, transition_probs=mhmm_trans, emission_probs=mhmm_emission, initial_probs=mhmm_initial, cluster_names = c("Cluster 1", "Cluster 2", "Cluster 3”))
是纵向数据。现在构建了模型,我使用seq
函数估计了模型参数,如下所示
fit_model
通过使用set.seed(1011) #1011
mhmm_fit <- fit_model(mhmm, local_step = TRUE, threads = 1,
control_em = list(restart = list(times =10)))
mhmm_final <- mhmm_fit$model
,我可以获得关于我的三个聚类中的每一个的若干信息,例如转移概率,初始概率和发射概率。例如,如果我想获得群集1的这些估计,我可以使用以下代码轻松获取它们:
mhmm_final
我的问题是我如何在每个群集中获得观察结果。有一个代码可用于mhmm_final$transition_probs$`Cluster 1`
mhmm_final$emission_probs$`Cluster 1`
mhmm_final$initial_probs$`Cluster 1`
的观察,但是这行代码给了我所有三个集群中的所有观察结果。我想在每个集群中找到确切的观察结果,在本例中为Cluster 1。
假设我有10个序列(seq 1,seq 2,seq 3,seq 4,seq 5,seq 6,seq 7,seq 8,seq 9,seq 10),我将它们聚类成三个组这种方法。我想知道这些序列中的每一个都属于哪个集群。
答案 0 :(得分:3)
您可以从摘要中获取最可能的群集:
summary(mhmm_final)$most_probable_cluster