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

Nested indexing VS. nested for loop in Bayesian hierarchical model specification

我在 Jeff Gill 的第三版 "Bayesian methods: a social and behavioural approach" (2015) 一书中遇到了两种指定贝叶斯层次模型的方法。

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

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

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

如果您更愿意了解示例的详细信息,我会为您提供完整的示例。

谢谢!

是的,示例 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 循环的情况下,我可能会通过创建信息迭代器来改进我的代码。

由于您可以用任何一种方式编写示例,因此您选择哪种方式最终取决于您的偏好。