0

我是 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 循环。而且我也不能将它放在先验或似然循环中。

干杯

4

0 回答 0