我使用depmixS $ package中的 depmix()和 fit()制定了一个2态HMM,并得到了一个depmix.fitted对象,它向我展示了使用 summary()转换概率矩阵。 是否有可能提取转移概率矩阵并将其保存为向量? 摘要(型号,"转换")不起作用...
我发现的最简单的解决方案如下:
{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 }
答案 0 :(得分:0)
您可以使用函数getpars()
获取转换概率矩阵并将其另存为向量:
getpars(depmix.fitted)[3:6]
答案 1 :(得分:0)
实际上有一个求后验概率的电话。 例如,这是我运行的代码
hmm <- depmix(returns ~ 1, family = gaussian(), nstates = 2, data=data.frame(returns=returns))
hmmfit <- fit(hmm)
post_probs <- posterior(hmmfit)
答案 2 :(得分:0)
将您的建议与Irina Telina的建议相结合,并将其扩展到多个州,您可以使用以下内容(忽略第一行来创建数据框):
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))