Как с помощью WinBUGS вычислить произведение всех значений в одном векторе?
Я пробовал использовать цикл for для того же вектора.
Например:
В R, если A <- [1,2,3,4], prod (A) = 24.
Однако,
В ОШИБКАх, если a <- 2, и для (i in 1: n) {a <- a * A [i]}, этот цикл не может работать, потому что 'a' определено дважды.
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])
Обратите внимание, что я работаю с логарифмической шкалой, а затем беру экспоненту суммы - это математически эквивалентно произведению, но является гораздо более стабильным в вычислительном отношении вычислением.
Надеюсь, это поможет,
Matt
Похожие вопросы
Новые вопросы
vector
Вектор - это одномерный массив: он содержит компоненты, доступ к которым можно получить с помощью интегрального индекса. В некоторых языках размер вектора может увеличиваться или уменьшаться по мере необходимости, чтобы приспособить добавление и удаление элементов после того, как вектор был создан. Используйте «векторную графику» для графического отображения.