从depmixS4包获得HMM的估计协方差矩阵

时间:2015-03-11 13:51:39

标签: r hidden-markov-models

我正在使用隐藏马尔可夫模型的depmixS4包。

我将它应用于具有m个状态的n个向量的联合多元高斯分布。我的问题涉及获得估计的参数 - 特别是:

我的问题
如何获得估计的m个协方差矩阵?

2 个答案:

答案 0 :(得分:1)

在上述示例的扩展中,以下脚本显示了如何扩展到3维案例。请注意输入/输出参数使用方差/协方差矩阵而不是标准偏差,如上例中的名称所示

# DepMixS4- Multivariate Normal
# Exmaple from the Help Page extended to three dimensions        

library(depmixS4)        

# generate data from two different 3-dim normal distributions
#mean 
m1 <- c(0,0,1) 
# the first one has equal covariance of size 0.3
# Sigma1 denotes the covariance matrix
Sigma1 <- matrix(c(2,0.3,0.3,0.3,1,0.3,0.3,0.3,1),nrow=3)
#mean
m2 <- c(1,0,0)
# the second one has equal covariance of size -0.3
Sigma2 <- matrix(c(2,-0.3,-0.3,-0.3,1,-0.3,-0.3,-0.3,1),nrow=3)        

y1 <- mvrnorm(1000,m1,Sigma1)
y2 <- mvrnorm(1000,m2,Sigma2)
# Check that Sigma1_11 is indeed variance:
# The following gives approx 2, as it should be
var(y1[,1])    


# this creates data with a single change point
y <- rbind(y1,y2)        

# now use makeDepmix to create a depmix model for this 3-dim normal timeseries
# response is a 2-dim list of response models. 
rModels <-  list()
rModels[[1]] <- list(MVNresponse(y~1))
rModels[[2]] <- list(MVNresponse(y~1))        

trstart=c(0.9,0.1,0.1,0.9)        

transition <- list()
transition[[1]] <- transInit(~1,nstates=2,data=data.frame(1),pstart=c(trstart[1:2]))
transition[[2]] <- transInit(~1,nstates=2,data=data.frame(1),pstart=c(trstart[3:4]))        

instart=runif(2)
inMod <- transInit(~1,ns=2,ps=instart,data=data.frame(1))        

mod <- makeDepmix(response=rModels,transition=transition,prior=inMod)        

fm3 <- fit(mod,emc=em.control(random=FALSE))      

summary(fm3)    

最后一个命令给出输出(只有最后一部分)

Response parameters 
    Re1.coefficients1 Re1.coefficients2 Re1.coefficients3 Re1.Sigma1 Re1.Sigma2 Re1.Sigma3 Re1.Sigma4 Re1.Sigma5 Re1.Sigma6
St1        0.92688362        0.04410173      -0.004027074   2.042186 -0.3347858 -0.2467676   1.066815 -0.3113216  0.9507479
St2        0.03676585        0.05259029       1.022748735   2.037637  0.4235656  0.3856682   1.146025  0.3401500  0.9763637

估计的方差/协方差矩阵与字段

 s_11 s_12 s_13
      s_22 s_23 
           s_33

(可以通过对称填充空字段)  在输出中给出  Re1.Sigma1,...,Re1.Sigma6

答案 1 :(得分:0)

我直接询问了包的编辑,得到了以下答案:

  

请参阅get()

     

如果您使用多变量数据运行示例,请执行以下操作:

?makeDepmix
     

Sigma1-3是协方差矩阵的(唯一)值。