用rjags估计截断正态分布的均值和方差

时间:2016-01-20 09:47:41

标签: r bayesian truncation jags

我想估计在特定值处截断的正态分布的总体均值和标准差。更具体地说,我想通过使用截断的分布来获得未截断分布的这些估计。

我使用rjags包进行此操作,但我得到的估计值甚至不接近总体均值和标准差。结果,我可能犯了一个错误,但我不知道错误是什么。以下是代码:

library(rjags)

sigma <- 1 # Standard deviation in population

y <- qnorm(seq(1/101, 1/101*100, 1/101), mean = 0, sd = sigma) # Observed scores
y <- y[y > 0] # Truncated scores
k <- length(y) # Number oberved effect sizes which are left after truncation

### Model
modelstring <- "
model
{
  for(i in 1:k){
        y[i] ~ dnorm(mu,prec)T(0, )
    }
    mu ~ dnorm(0,.001)
    sigma ~ dunif(0,100)
    prec <- 1/(sigma*sigma)
  }
"

### Running jags
model <- jags.model(textConnection(modelstring),
                   data = list('y' = y,
                               'k' = k),
                   n.chains = 4,
                   n.adapt = 1000)

update(model, 10000)

jags.samples(model,
             c('mu', 'sigma'),
             10000)

融合似乎没问题,使用更多信息丰富的先前发行版也没有真正帮助。

请注意,这个问题:https://stackoverflow.com/questions/33552737/truncated-normal-distribution-in-rjags是相关的,但问题没有得到解答。

提前谢谢!

0 个答案:

没有答案