1

我在 Jeff Gill 的第三版“贝叶斯方法:一种社会和行为方法”(2015 年)一书中遇到了两种指定贝叶斯层次模型的方法。

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

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

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

如果您对了解示例的细节感到更自在,我将为您提供完整的示例。

谢谢!

示例 1

示例 2

示例 3

4

1 回答 1

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

由于您可以以任何一种方式编写任一示例,因此您选择哪种方式最终成为偏好问题。

于 2015-08-18T19:43:20.517 回答