我正在使用混合隐马尔可夫模型 (MHMM)来聚类我的数据。为此,我在 R 中使用了包“ seqHMM ”。我的问题是是否可以获得每个集群内的实际观察结果。
例如,在我的分析之后,我有 3 个集群,我想在每个集群中找到确切的观察结果,这可能吗?
例子:
起初,我创建了三个 HMM,它们的转移概率分别为sc_init1
、sc_init2
、sc_init3
和sc_trans1
、sc_trans2
、,sc_trans3
最后分别具有发射概率sc_emiss1
、。然后我将它们组合成具有三个集群的 MHMM,如下所示:sc_emiss2
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
通过使用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),我用这种方法将它们分成三组。我想知道这些序列中的每一个属于哪个集群。