【问题标题】:Questions about fitting a normal+lognormal mixture model关于拟合正态+对数正态混合模型的问题
【发布时间】:2016-09-22 22:16:52
【问题描述】:

我现在正在使用包含两个分量的混合模型:正态和对数正态来拟合向量。 我尝试使用 JAGS,代码如下:

model {
   for(i in 1:N) {
     y[i] <- latent[i,index[i]+1]
     index[i] ~dbern(pi)
     latent[i,1]~ dlnorm(mu1,tau1)
     latent[i,2]~ dnorm(mu2,tau2)}
     pi ~ dbeta(0.5,0.5)
     mu1 ~ dnorm(0.4,0.000001)
     tau1~ dgamma(0.001,0.001)
     mu2 ~ dnorm(4,0.000001)
     tau2~ dgamma(0.001,0.001)
}

但是,它不适用于错误消息“y[1] 是逻辑节点,无法观察到”。 我也试过了

y[i] <- pi*z1+(1-pi)*z2

z1 ~ dnorm(mu1,tau1)

z2 ~ dlnorm(mu2,tau2)

...

但它给出了同样的错误信息。看来我必须为 y[i] 分配一个分布。任何人都可以帮助克服这个问题吗?或解决这种混合模型的其他方法也将不胜感激!

【问题讨论】:

    标签: jags mixture-model winbugs14


    【解决方案1】:

    如果你只是想混合这两种模型,你可以这样做:

    model {
       for(i in 1:N) {
         index[i] ~dbern(pi)
         latent[i]~ (dlnorm(mu1,tau1)*(1-index[i]))+(dnorm(mu2,tau2)*index[i]) 
    }
         pi ~ dbeta(0.5,0.5)
         mu1 ~ dnorm(0.4,0.000001)
         tau1~ dgamma(0.001,0.001)
         mu2 ~ dnorm(4,0.000001)
         tau2~ dgamma(0.001,0.001)
    }
    

    这样,在模型的每一步中,它要么选择使用对数正态模型,要么选择正态模型。如果您跟踪index,它将告诉您在 MCMC 链中的每个步骤中选择了哪种分布(索引 = 1 = 正态,索引 = 0 = 对数正态)。此外,您可以将 index 的总和除以 MCMC 链中的步数,以获得选择 1 的次数比例(正常)。

    【讨论】:

    • 您好,感谢您的回复!我尝试了您的代码,但错误消息是“解析模型文件时出错:第 4 行靠近“(”“
    • 啊。将latent[i]~ (dlnorm(mu1,tau1)*(1-index[i]))+(dnorm(mu2,tau2)*index[i]) 更改为y[i]~ (dlnorm(mu1,tau1)*(1-index[i]))+(dnorm(mu2,tau2)*index[i]),看看是否可行。如果是,我将编辑答案。
    猜你喜欢
    • 2013-06-07
    • 2016-04-17
    • 2021-10-23
    • 2014-09-22
    • 2020-03-09
    • 2020-12-04
    • 1970-01-01
    • 2019-07-10
    • 2017-11-16
    相关资源
    最近更新 更多