1

使用 WinBUGS,如何计算单个向量中所有值的乘积?

我尝试在同一个向量上使用 for 循环。

例如:

在 R 中,如果 A <- [1,2,3,4],prod(A) = 24。

然而,

在 BUGS 中,如果 a <- 2 和 for (i in 1:n){ a <- a * A[i] },则此循环无法工作,因为 'a' 定义了两次。

4

1 回答 1

1

您好,欢迎来到该网站!

请记住,BUGS 是一种声明性语法,而不是一种编程语言,因此您不能像 R 之类的语言那样覆盖变量值。因此,您需要创建一些中间节点来执行您的计算。

如果您有以下数据:

A <- [1,2,3,4]
nA <- 4

然后你可以在你的模型中包含:

sumlogA[1] <- 0
for(i in 1:nA){
    sumlogA[i+1] <- sumlogA[i] + log(A[i])
}
prodA <- exp(sumlogA[nA+1])

请注意,我正在使用对数刻度,然后取和的指数 - 这在数学上等同于乘积,但计算上更加稳定。

希望有帮助,

马特

于 2018-10-09T11:26:40.450 回答