嵌套索引VS.在贝叶斯分层模型规范中嵌套for循环

时间:2015-08-18 16:42:57

标签: bayesian jags

我在“贝叶斯方法:社会和行为方法”(2015),第三版杰夫吉尔一书中提到了两种指定贝叶斯分层模型的方法。

本书中的三个例子(如下所示)是关于贝叶斯分层模型的。模型中的主要差异用红色圈出:

在示例1中,嵌套结构通过嵌套索引 alpha [state.id [i]]表示。两个for循环分别指定。但是,在示例2和3中,层次结构是通过嵌套for循环而不是嵌套索引来指定的。此外,ij出现在相同的方括号内(示例2中为Q[i,j],示例3中为mu[i,j]),与仅有一个索引的示例1形成对比(ij)会出现在方括号中。

我的问题: 嵌套索引VS之间有什么区别。在指定贝叶斯分层模型时嵌套for循环?示例1是否可以采用与示例2和3类似的方式建模,反之亦然?如何在两种方法之间进行选择?

如果您对了解示例的详细信息感到更舒服,我将为您提供完整的示例。

谢谢!

Example 1

Example 2

Example 3

1 个答案:

答案 0 :(得分:0)

是的,示例1可以类似于示例2和3编写,反之亦然。如果第一个迭代器的每个值具有与第二个迭代器相同的值,则这是最简单的。否则你最终会得到像

这样的东西
for(i in 1:VALUE) {
  for (j in 1:TIME[i]){
    ...
  }
}

然后使用矩阵(或更一般地说是阵列),例如示例2中的Q和示例3中的mu不是很自然。

我通常使用嵌套索引方法,因为我通常将数据存储在R data.frame中,这很容易适用于嵌套索引方法。在第一个例子中,state.id,contracting,gov.influence等都是data.frame的列。我还发现嵌套索引中的代码更容易阅读,但是我可以通过创建信息迭代器来改进我在使用嵌套for循环的情况下的代码。

因为你可以用任何一种方式编写任何一个例子,你选择的最终是一个偏好的问题。