首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >R,depmixS4包中转移矩阵的求取

R,depmixS4包中转移矩阵的求取
EN

Stack Overflow用户
提问于 2018-05-14 10:12:43
回答 3查看 1.1K关注 0票数 0

我通过使用depmix$包中的depmix()和fit()构造了一个2状态HMM,并得到了一个depmix.fitted对象,它通过使用汇总()向我显示了转换概率矩阵。是否有可能提取转移概率矩阵并将其保存为向量?摘要(模型,其中=“过渡”)不起作用.

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

代码语言:javascript
复制
{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 }
EN

回答 3

Stack Overflow用户

发布于 2018-10-24 07:45:30

您可以获得转移概率矩阵,并使用函数getpars()将其保存为向量。

代码语言:javascript
复制
getpars(depmix.fitted)[3:6]
票数 1
EN

Stack Overflow用户

发布于 2019-02-10 08:36:23

实际上有个电话要得到后验概率。例如,这是我运行的代码

代码语言:javascript
复制
  hmm <- depmix(returns ~ 1, family = gaussian(), nstates = 2, data=data.frame(returns=returns))
  hmmfit <- fit(hmm)
  post_probs <- posterior(hmmfit)
票数 0
EN

Stack Overflow用户

发布于 2019-02-14 11:58:10

将您的建议与Irina的建议结合起来,并将其扩展到多个状态,您可以使用以下方法(忽略第一行来创建数据框架):

代码语言:javascript
复制
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))
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50327876

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档