期望值命令R和JAGS

时间:2019-02-02 20:53:14

标签: r jags

假设这是我的贝叶斯模型,如何计算威布尔分布的期望值?是否存在用于在R和JAGS中找到Weibull分布的期望值的命令?谢谢

model{  
#likelihood function  
for (i in 1:n)   
    {  
        t[i] ~ dweib(v,lambda)#MTBF    

        }    

#Prior for MTBF  
v ~ dgamma(0.0001, 0.0001)   
lambda ~ dgamma(0.0001, 0.0001)     
  }  

  #inits
list(v=1, lambda=1,mu=0,tau=1)

#Data
list(n=10, t=c(5.23333333,8.95,8.6,230.983333,1.55,85.1,193.033333,322.966667,306.716667,1077.8)

1 个答案:

答案 0 :(得分:1)

使用带有参数vlambda的{​​{3}}的Weibull分布的平均值或期望值是:

lambda * Gamma(1 + 1 / v)

JAGS不具有Gamma功能,但是我们可以使用 确实具有的功能:logfact。您可以将此行添加到代码中,并跟踪派生参数exp_weibull

exp_weibull <- lambda * exp(logfact(1/v))

Gamma只是阶乘(x-1),因此均值稍微简化了一点。我说明 下面带有一些R函数,该推导如何相同。

lambda <- 5
v <- 2

mu_traditional <- lambda * gamma(1 + 1/v)
mu_logged <- lambda * exp(lfactorial(1/v))
identical(mu_traditional, mu_logged)
[1] TRUE

编辑: 似乎JAGS也具有Gamma分布的对数:loggam。因此,另一种解决方案是

exp_weibull <- lambda * exp(loggam(1 + 1/v))