使用 R 的多项式-hmm

multinomial-hmm using R

我有以下类型的数据:

df <- data.frame(id = rep(1, each = 40), 
                        year = seq(1961,2000),
                        x1 = rbinom(40, size = 1, prob = 1 - 0.6) * rpois(40, lambda = 4),
                        X2 = rbinom(40, size = 1, prob = 1 - 0.7) * rpois(40, lambda = 4),
                        X3 = rbinom(40, size = 1, prob = 1 - 0.6) * rpois(40, lambda = 5),
                        X4 = rbinom(40, size = 1, prob = 1 - 0.7) * rpois(40, lambda = 6))

正如您在我的数据中看到的那样,有四个计数变量。 我想估计一个多项式 HMM,因为我期望有一个潜在变量 C,它具有影响 Pr(X_t=xt) 的 3 种可能状态(假设每个向量 X_t 相互马尔可夫链 C_t 上的独立条件)。例如,我希望如果 C_t=1 我们会观察到 X_t 的向量更像这样 (4,1,0,0),如果 C_T=2 X_t 更像这样 (0,1,1,0) 并且如果 C=3 则更有可能观察到像这样 (0,0,1,5).[=12] 的 X_t 向量=]

我还没有找到能够估计这种类型模型的包,所以目前,我使用的是 depmixS4 包。

library(depmixS4)
mod<-depmix(list(X1 ~ 1, X2 ~ 1, X3 ~ 1, X4 ~ 1), data=df, nstates=3,
                  family=list(poisson(), poisson(), poisson(),poison()))

但是,根据我的理论预期,我不确定这是否是一个正确的模型。我可以以不同的方式使用 depmix 以更适合我的模型吗?

您可以简单地使用多项式分布作为响应。我假设您的意思是让 X1, ..., X4 指代单个分类变量的四个水平?然后这些变量中的每一个都包含特定年份中某个级别的计数?一种选择是适合以下模型:

> library(depmixS4)
Loading required package: nnet
Loading required package: MASS
Loading required package: Rsolnp
Loading required package: nlme
> set.seed(1)
> df <- data.frame(id = rep(1, each = 40), 
+                  year = seq(1961,2000),
+                  X1 = rbinom(40, size = 1, prob = 1 - 0.6) * rpois(40, lambda = 4),
+                  X2 = rbinom(40, size = 1, prob = 1 - 0.7) * rpois(40, lambda = 4),
+                  X3 = rbinom(40, size = 1, prob = 1 - 0.6) * rpois(40, lambda = 5),
+                  X4 = rbinom(40, size = 1, prob = 1 - 0.7) * rpois(40, lambda = 6))
> # matrix for single multinomial response variable
> X <- as.matrix(df[,c("X1", "X2", "X3", "X4")])
> 
> # formulate model
> mod<-depmix(X ~ 1, data=df, nstates=3,
+             family=multinomial("identity"))
> 
> # fit model
> fmod <- fit(mod)
converged at iteration 22 with logLik: -161.5714 
> 
> # show results
> summary(fmod)
Initial state probabilities model 
pr1 pr2 pr3 
  0   0   1 

Transition matrix 
        toS1  toS2  toS3
fromS1 0.290 0.355 0.356
fromS2 0.132 0.328 0.540
fromS3 0.542 0.191 0.267

Response parameters 
Resp 1 : multinomial 
    Re1.pr1 Re1.pr2 Re1.pr3 Re1.pr4
St1   0.092    0.56   0.288   0.061
St2   0.033    0.00   0.423   0.544
St3   0.608    0.00   0.392   0.000