在 WinBUGS 中复制 R 的 prod() 函数
Replicating R's prod() function in WinBUGS
如何使用 WinBUGS 计算单个向量中所有值的乘积?
我试过在同一个向量上使用 for 循环。
例如:
在 R 中,如果 A <- [1,2,3,4],prod(A) = 24。
然而,
在BUGS中,如果a <- 2 , and for (i in 1:n){ a <- a * A[i] },这个循环不能工作,因为'a'被定义了两次.
您好,欢迎来到本网站!
请记住,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])
请注意,我使用的是对数刻度,然后取和的指数 - 这在数学上等同于乘积,但计算更稳定。
希望对您有所帮助,
马特
如何使用 WinBUGS 计算单个向量中所有值的乘积?
我试过在同一个向量上使用 for 循环。
例如:
在 R 中,如果 A <- [1,2,3,4],prod(A) = 24。
然而,
在BUGS中,如果a <- 2 , and for (i in 1:n){ a <- a * A[i] },这个循环不能工作,因为'a'被定义了两次.
您好,欢迎来到本网站!
请记住,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])
请注意,我使用的是对数刻度,然后取和的指数 - 这在数学上等同于乘积,但计算更稳定。
希望对您有所帮助,
马特