我想估计在特定值处截断的正态分布的总体均值和标准差。更具体地说,我想通过使用截断的分布来获得未截断分布的这些估计。
我使用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是相关的,但问题没有得到解答。
提前谢谢!