我是 BUGS 和 R 的新手,但我正在将 R 中的 BRugs 库用于贝叶斯统计的大学单元。我对部分作业问题有疑问。
我们假设给定的长度为 5 的数据集来自二项分布,并选择一个平坦的先验(我选择了 Beta(1,1))。随机变量是 Y_i,感兴趣的参数是 m_i 和 p_i。
它要我找到 p_i 的范围;
r = max_{i=1,...,10} p_i - min_{i=1,...,10} p_i
但我无法弄清楚如何实现这个等式。这是我尝试过的:
model{
## likelihood
for(i in 1:N){
y[i] ~ dbin(p, m[i])
yy[i] ~ dbin(pp[i], mm[i])
}
## parameters of interest
pp_prev <- mean(pp[1])
for(i in 2:N){
pp_max <- max(pp_prev, mean(pp[i]))
pp_min <- min(pp_prev, mean(pp[i]))
pp_prev <- mean(pp[i])
}
r <- pp_max - pp_min
## prior
p ~ dbeta(1, 1)
for(i in 1:N){
pp[i] ~ dbeta(1, 1)
}
}
我运行命令:
```{r}
library(BRugs)
cat(readLines("model.bug"), sep="\n")
modelCheck("model.bug")
yi <- c(10, 30, 34, 18, 36)
mi <- c(35, 440, 450, 70, 200)
bugsData(list(y=yi, yy=yi, m=mi, mm=mi, N=length(yi)), file="data.txt")
modelData("data.txt")
modelCompile(numChains=4)
```
这给出了输出:
Error in handleRes(res) : NA
我也尝试过一些变体,但它似乎不喜欢 for 循环。而且我也不能将它放在先验或似然循环中。
干杯