bayesian - Dirichlet 参数在 JAGS 中不更新
问题描述
我正在尝试在 JAGS 中运行分层 Dirichlet 模型,但我没有更新并且必须做错事。我尝试用伽玛分布来近似它:
#Creating some data
set.seed(555)
cat1=rbeta(15,20,60)
cat2=rbeta(15,20,80)
cat3=rbeta(15,20,160)
cat4=1-cat1-cat2-cat3
dat_dirich=list(
dirF=cbind(cat1, cat2, cat3, cat4),
AL=c(1,1,1,1),
K=4
)
require(runjags)
{
catch_mod="model{
for(y in 1:15){
dirF[y,1:K]~ddirch(alpha_dirF1B[y,1:K])
#Approximation with Gamma
for(a in 1:K){
alpha_dirF1B[y,a]<-P2[y,a]/sum(P2[y,1:K])
P2[y,a]~dgamma(alpha_dirF1[a,y],1)#1 or kappa_dirF
}
#hierarchical structure
alpha_dirF1[1:K,y]~ddirch(AL*kappa_dirF)
}
kappa_dirF~dunif(0.1,5000) #kappa_dirF~dlnorm(0,0.01)
}"
}
解决方案
您必须调用run.jags()
代码中的某个位置。这应该看起来像
results <- run.jags(catch_mod, data = dat_dirich, n.chains = XXX, ...)
这在runjags
( https://cran.r-project.org/web/packages/runjags/vignettes/quickjags.html )的小插图中进行了描述
推荐阅读
- java - Java中的贝塞尔曲线与点
- c# - C# WCF 客户端参数异常 XmlNode[] 无法转换为类型“...”
- ios - 如何在我的 ios 应用程序中检索嵌套的 firebase 数据?
- python - 如何合并 2 个不同长度的数据框并保留第一个数据框的所有位置?
- python - 无法导入 Selenium 包
- vb6 - 我如何以编程方式知道哪一个是物理 MAC 地址?
- javascript - 如何制作斯坦福专业页面中的动画?
- c# - 检查是否使用带有 Wix 的 CustomAction 安装了 .NETCore
- oracle - 错误 ORA-01722:创建实体化视图时编号无效(Oracle SDE 问题?)
- visual-studio-code - 有什么方法可以直观地更改 VS Code 中特定编辑器的表示?