3

我正在使用混合隐马尔可夫模型 (MHMM)来聚类我的数据。为此,我在 R 中使用了包“ seqHMM ”。我的问题是是否可以获得每个集群内的实际观察结果。

例如,在我的分析之后,我有 3 个集群,我想在每个集群中找到确切的观察结果,这可能吗?

例子:

起初,我创建了三个 HMM,它们的转移概率分别为sc_init1sc_init2sc_init3sc_trans1sc_trans2、,sc_trans3最后分别具有发射概率sc_emiss1、。然后我将它们组合成具有三个集群的 MHMM,如下所示:sc_emiss2sc_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

通过使用mhmm_final,我可以获得关于我的三个集群中的每一个的一些信息,例如转移概率、初始概率和发射概率。例如,如果我想获得集群 1 的这些估计值,我可以使用以下代码轻松获得它们:

mhmm_final$transition_probs$`Cluster 1`

mhmm_final$emission_probs$`Cluster 1`

mhmm_final$initial_probs$`Cluster 1`

我的问题是如何在每个集群中获得观察结果。有一个代码可用于观察,mhmm_final$observations但是这行代码为我提供了所有三个集群中的所有观察结果。我想在每个集群中找到确切的观察结果,在本例中为集群 1。

假设我有 10 个序列(seq 1、seq 2、seq 3、seq 4、seq 5、seq 6、seq 7、seq 8、seq 9、seq 10),我用这种方法将它们分成三组。我想知道这些序列中的每一个属于哪个集群。

4

1 回答 1

4

您可以从摘要中获得最可能的集群:

summary(mhmm_final)$most_probable_cluster
于 2018-02-01T04:15:15.387 回答