在R(包seqHMM)中获取隐藏马尔可夫模型(MHMM)混合的每个簇内的观察结果

时间:2018-01-30 07:37:06

标签: r cluster-analysis sequence hidden-markov-models seqhmm

我正在使用Mixture of Hidden Markov Model (MHMM)来聚类我的数据。为此,我使用了Package" seqHMM"在R.我的问题是,是否有可能获得每个集群内的实际观测值。

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

示例:

首先,我创建了三个HMM,其中包含转移概率初始概率sc_init1sc_init2sc_init3sc_trans1sc_trans2,{{1} },最后分别为排放概率sc_trans3sc_emiss1sc_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),我将它们聚类成三个组这种方法。我想知道这些序列中的每一个都属于哪个集群。

1 个答案:

答案 0 :(得分:3)

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

summary(mhmm_final)$most_probable_cluster