嵌套索引 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 而不是嵌套索引来指定的。此外,i
和j
出现在相同的方括号内(示例2中的Q[i,j]
和示例3中的mu[i,j]
),对比示例1中只有一个索引(i
或 j
)出现在方括号中。
我的问题:
嵌套索引 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 循环的情况下,我可能会通过创建信息迭代器来改进我的代码。
由于您可以用任何一种方式编写示例,因此您选择哪种方式最终取决于您的偏好。
我在 Jeff Gill 的第三版 "Bayesian methods: a social and behavioural approach" (2015) 一书中遇到了两种指定贝叶斯层次模型的方法。
书中的三个例子(如下)是关于贝叶斯层次模型的。模型中的主要差异已用红色圈出:
在示例 1 中,嵌套结构通过 嵌套索引 alpha[state.id[i]] 表示。这两个 for 循环是单独指定的。但是,在示例 2 和 3 中,层次结构是通过 nested for loop 而不是嵌套索引来指定的。此外,i
和j
出现在相同的方括号内(示例2中的Q[i,j]
和示例3中的mu[i,j]
),对比示例1中只有一个索引(i
或 j
)出现在方括号中。
我的问题: 嵌套索引 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 循环的情况下,我可能会通过创建信息迭代器来改进我的代码。
由于您可以用任何一种方式编写示例,因此您选择哪种方式最终取决于您的偏好。