繁体   English   中英

为R指定JAGS或BUGS中的离散weibull分布

[英]Specify a discrete weibull distribution in JAGS or BUGS for R

我正在使用R中的JAGS将weibull模型拟合到离散值。将weibull拟合到连续数据没有问题,但是当我切换到离散值时遇到麻烦。

这是一些数据,以及适合JAGS中的weibull模型的代码:

#draw data from a weibull distribution
y <- rweibull(200, shape = 1, scale = 0.9)
#y <- round(y)

#load jags, specify a jags model.
library(runjags)

j.model ="
model{
for (i in 1:N){
y[i] ~ dweib(shape[i], scale[i])

shape[i] <- b1
scale[i] <- b2
}

#priors
b1 ~ dnorm(0, .0001) I(0, )
b2 ~ dnorm(0, .0001) I(0, )
}
"

#load data as list
data <- list(y=y, N = length(y))

#run jags model.
jags.out <-     run.jags(j.model,
                         data=data,
                         n.chains=3,
                         monitor=c('b1','b2')
                        )
summary(jags.out)

该模型非常合适。 但是,如果我使用y <- round(y)将y值转换为离散值,并运行相同的模型,则它将失败,并Error in node y[7], Node inconsistent with parents出现Error in node y[7], Node inconsistent with parents 每次尝试时,节点的特定数量都会更改,但是它始终是一个很小的数字。

我知道可以通过在所有值中添加一个很小的数字来进行此操作,但是,这不能说明数据是离散的这一事实。 我知道存在离散的weibull分布,但是如何在JAGS中实现一个呢?

您可以使用“一个把戏”在JAGS中实现离散的weibull分布。 这里使用pmf 我们可以创建一个函数来生成一些数据:

pmf_weib <- function(x, scale, shape){

  exp(-(x/scale)^shape) - exp(-((x+1)/scale)^shape)
}

# probability of getting 0 through 200 with scale = 7 and shape = 4
probs <- pmf_weib(seq(0,200), 7, 4) 

y <- sample(0:200, 100, TRUE, probs ) # sample from those probabilities

为了使“惯用技巧”起作用,通常必须将新的pmf除以某个大常数,以确保概率在0到1之间。虽然看起来离散的weibull的pmf已经确保了这一点,但我们仍然添加了一些无论如何,模型中的大常数。 因此,这是该模型现在的样子:

j.model ="
data{ 
C <- 10000
for(i in 1:N){
ones[i] <- 1
}
}
model{
for (i in 1:N){
discrete_weib[i] <- exp(-(y[i]/scale)^shape) - exp(-((y[i]+1)/scale)^shape)

ones[i] ~ dbern(discrete_weib[i]/C)
}

#priors
scale ~ dnorm(0, .0001) I(0, )
shape ~ dnorm(0, .0001) I(0, )
}
"

请注意,我们在数据参数中添加了1)一个矢量和一个大常数的向量,2)离散weibull的pmf,以及3)通过伯努利试验运行该概率。

您可以使用与上面相同的代码来拟合模型,这是摘要,表明该模型成功恢复了参数值(比例= 7和形状= 4)。

       Lower95   Median  Upper95     Mean        SD Mode       MCerr MC%ofSD SSeff
scale 6.968277 7.289216 7.629413 7.290810 0.1695400   NA 0.001364831     0.8 15431
shape 3.843055 4.599420 5.357713 4.611583 0.3842862   NA 0.003124576     0.8 15126

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM