gpt4 book ai didi

r - OpenBUGS : missing value in Bernoulli distribution

转载 作者:行者123 更新时间:2023-12-01 23:01:46 25 4
gpt4 key购买 nike

我正在尝试通过 R (R2OpenBUGS) 使用 OpenBUGS 将观察“时间”建模为随机变量。如果所有观察时间都可用(没有 NA),则一切正常,但如果我将其中一个时间设置为 NA,则什么也不会发生。我使用 WinBUGS 测试了相同的代码,并收到陷阱错误“NIL 取消引用(读取)”。所以我的问题是我的代码中是否确实存在错误,或者我的模型对于 BUGS 来说太奇怪了?

我的模型是这样的:

model{
for(i in 1:k){
obs[i] ~ dbern(p) #is the observation done at time 1 or 2?
y[(i-1)*2 + obs[i]+1] <- x[i]
}
for(i in 1:n){
y[i] ~ dnorm(mu,tau)
}
mu ~ dnorm(0,0.0001)
tau~ dgamma(0.001,0.001)
p ~ dunif(0,1)
}

R 代码如下所示:

library(R2OpenBUGS)
x<-obs<-rep(NA,5)
for(i in 1:k)
{
obs[i]<-sample(c(0,1),1) #observation time of ith observation
x[i]<-rnorm(1) #observed values
}

obs[2]<-NA #one of the sampling times is missing
INITS <- list(list(tau=1,mu=0,p=0.5))
DATA <- list(x=x,n=n,k=k,obs=obs)

ob <- bugs(
data=DATA,
inits=INITS,
parameters.to.save=c("tau","mu","p","y"),
model.file="BUGSModel.R",
n.chains=1,
n.iter=50,
n.burnin=10,
n.thin=1,
DIC=FALSE)

最佳答案

如果我很好地理解你的问题,你是在问这个表达式是否

obs[i] ~ dbern(p)

对于 Win/OpenBUGS 来说很奇怪,因此它不会处理缺失的值。不,我不这么认为; bugs 能够以这种方式处理缺失值,甚至可以通过后验分布来估算它们。

但我强烈怀疑

y[(i-1)*2 + obs[i]+1] <- x[i]

真的很奇怪!当您强制使用为空的观察 obs[i] 来计算索引时,这可能会导致错误问题。这真的很奇怪,你应该尝试寻找其他方法来做到这一点。首先尝试简化模型以跳过此规则,我敢打赌问题就会消失。

关于r - OpenBUGS : missing value in Bernoulli distribution,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9465825/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com