JAGS中的分层数据

时间:2018-09-07 11:52:08

标签: r jags mixture-model

我正在尝试通过拟合层次模型来对数据集进行建模。我通过使用下面的Jags代码来做到这一点:

NORM_errors2 <-'model{     # model specifiction
  for (i in 1:length(obsval)){ 
    obsval[i] ~ dnorm(val[i],pow(err[i],-2))
    val[i] ~ dnorm(cent[I[i]],pow(sig[I[i]],-2))
    I[i] ~ dcat(p[])
  }

  sig[1] ~ dunif(0,2)
  sig[2] ~ dunif(0,2) 
  cent[1] ~ dunif(1,5) 
  cent[2] ~ dunif(cent[1],5) 
  p[1] ~ dunif(0,1)
  p[2] <-1-p[1]
}

使用以下R代码调用:

NORM_fit <- jags(data = AS_data,
             parameters = params0,
             model = textConnection(NORM_errors2),
             n.chains = 3,
             n.iter = 100000,
             n.thin = 10,
             n.burnin = 30000
)

其中:

AS_data <- list(
  obsval = dens,
  err = err,
  N = 26
)

和:

dens <- c(2.12, 2.71, 3.44, 2.76, 2.72, 0.96, 2, 3.26, 2.5, 1.2, 1.62, 
  1.96, 2.6, 1.3, 2.67, 4.4, 1.8, 4.9, 2.39, 1.62, 1.47, 0.89, 
  2.52, 1.21, 0.9, 0.8
)
err <- c(0.04, 0.11, 0.12, 1.2, 0.12, 0.3, 0.6, 0.6, 0.3, 0.4, 0.3, 
  0.34, 0.5, 0.2, 0.03, 2.1, 0.8, 3.9, 0.9, 1.05, 0.95, 0.13, 0.3, 
  0.25, 0.1, 0.15
)

对于上下文-我有一个样本,该样本带有污染的测量值和定义的错误“ err”。我试图在这样的假设下建模:观测值来自单分量正态分布,真实的未观测值来自两分量正态模型。

我的问题是,我得到的结果将非零概率返回到低于1的值。从问题的上下文来看,这不可能成立。我的问题是如何让Jags意识到这一约束,以便我可以得到一个更合理的模型,同时仍然保留可靠的区间和点估计。

非常感谢您的帮助:)

0 个答案:

没有答案