问题描述
我是 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 循环。而且我也不能把它放在先验循环或似然循环中。
干杯
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)