在WinBUGS中复制R的prod()函数

时间:2018-10-04 19:10:06

标签: vector winbugs r2winbugs

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

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

例如:

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

但是

在BUGS中,如果a <-2,并且对于(i in 1:n){a <-a * A [i]},该循环将无法正常工作,因为'a'被定义了两次。

1 个答案:

答案 0 :(得分:0)

您好,欢迎访问该网站!

请记住,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])

请注意,我正在对数标度上工作,然后取总和的指数-从数学上讲,它等于乘积,但是在计算上更稳定。

希望有帮助,

马特