Репликация функции R prod () в WinBUGS - PullRequest
0 голосов
/ 04 октября 2018

Как использовать WinBUGS, как вычислить произведение всех значений в одном векторе?

Я пытался использовать цикл for для того же вектора.

Например:

В R, если A <- [1,2,3,4], prod (A) = 24. </p>

Однако,

в BUGS, если a <- 2, и для (i в 1: n) {a <- a * A [i]} этот цикл не может работать, поскольку 'a' определяется дважды. </p>

1 Ответ

0 голосов
/ 09 октября 2018

Привет и добро пожаловать на сайт!

Помните, что 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])

Обратите внимание, что я работаю в логарифмическом масштабе, а затем беру показатель степени суммы - это математически эквивалентно произведению, но гораздо более вычислительно устойчивый расчет.

Надеюсь, что поможет,

Мэтт

...