在R,depmixS4包中获得转移矩阵

在R,depmixS4包中获得转移矩阵,r,hidden-markov-models,R,Hidden Markov Models,我使用depmixS$包中的depmix()和fit()公式化了一个2状态HMM,得到了一个depmix.fitted对象,它通过summary()向我显示了转移概率矩阵。 是否有可能提取转移概率矩阵并将其保存为向量?摘要(model,which=“transition”)不起作用 我找到的最简单的解决方案可能是: {a<-(depmix.fitted class)@transition[[1]]@parameters$coefficients b<-(depmix.fitted c

我使用depmixS$包中的depmix()和fit()公式化了一个2状态HMM,得到了一个depmix.fitted对象,它通过summary()向我显示了转移概率矩阵。 是否有可能提取转移概率矩阵并将其保存为向量?摘要(model,which=“transition”)不起作用

我找到的最简单的解决方案可能是:

{a<-(depmix.fitted class)@transition[[1]]@parameters$coefficients
b<-(depmix.fitted class)@transition[[2]]@parameters$coefficients 

transmat<-matrix(data= c(a,b), ncol = 2, byrow = TRUE) #combine transition probabilities to the transition probabilities matrix }

{a您可以使用函数
getpars()
获取转移概率矩阵并将其保存为向量:


事实上,我们需要得到后验概率。 例如,这就是我运行的代码

  hmm <- depmix(returns ~ 1, family = gaussian(), nstates = 2, data=data.frame(returns=returns))
  hmmfit <- fit(hmm)
  post_probs <- posterior(hmmfit)

hmm将您的建议与Irina Telina的建议相结合,并将其扩展到多个州,您可以使用以下方法(忽略第一行以创建数据帧):

df_测试
  hmm <- depmix(returns ~ 1, family = gaussian(), nstates = 2, data=data.frame(returns=returns))
  hmmfit <- fit(hmm)
  post_probs <- posterior(hmmfit)
df_test<-setNames(data.frame(rnorm(100,mean=rnorm(1),sd=runif(1))),"returns")
numk<-5
for (i in 1:numk-1){
  df_test<-rbind(df_test,setNames(data.frame(rnorm(100,mean=rnorm(1),sd=runif(1))),
                                  "returns"))
}
hmm <- depmix(returns ~ 1, family = gaussian(), nstates = numk, data=df_test)
hmmfit <- fit(hmm)
trmat<-matrix(getpars(hmmfit)[(nstates(hmmfit)+1):(nstates(hmmfit)^2+nstates(hmmfit))],
              byrow=TRUE,nrow=nstates(hmmfit),ncol=nstates(hmmfit))