将变量传递给 R 中的 WinBugs 模型
Passing variable to WinBugs model in R
我正在使用 R2WinBugs 包。我想将之前在 R 脚本中计算的两个参数传递给模型函数
c0yy <- 0.1
syy <- 0.0001
#Model
model <- function(c0yy,syy){
#Likelihood
for(i in 1:n){
y[i] ~ dnorm(mu[i],cyy)
}
#Regression formula
for(i in 1:n){
mu[i] <- alpha + gamma * x[i]
}
#Priors for the regression parameters
alpha ~ dnorm(0,0.000001)
gamma ~ dnorm(0,0.000001)
#Priors for the precision parameter
cyy ~ dnorm(c0yy,syy)
#Monitored variables
beta <- gamma/(alpha-1)
}
filename <- file.path(tempdir(), "Olm.txt")
write.model(model, filename)
但是我得到这个错误
made use of undefined node c0yy
而如果我在模型函数中替换 c0yy
和 syy
的值,它就可以工作。有什么帮助吗?
谢谢
您绑定传递给模型的值是数据。在 BUGS(和 R2WinBUGS)中,数据作为独立于您定义的模型的实体传递给程序。为了包含数据,您可以将它们放入列表中,例如;
my.mcmc <- bugs(data = list(c0yy = 0.1, syy= 0.0001), params = "beta', model.file = "Olm.txt", n.iter=10000)
您还需要从模型脚本中删除 <- function(c0yy,syy)
。
我正在使用 R2WinBugs 包。我想将之前在 R 脚本中计算的两个参数传递给模型函数
c0yy <- 0.1
syy <- 0.0001
#Model
model <- function(c0yy,syy){
#Likelihood
for(i in 1:n){
y[i] ~ dnorm(mu[i],cyy)
}
#Regression formula
for(i in 1:n){
mu[i] <- alpha + gamma * x[i]
}
#Priors for the regression parameters
alpha ~ dnorm(0,0.000001)
gamma ~ dnorm(0,0.000001)
#Priors for the precision parameter
cyy ~ dnorm(c0yy,syy)
#Monitored variables
beta <- gamma/(alpha-1)
}
filename <- file.path(tempdir(), "Olm.txt")
write.model(model, filename)
但是我得到这个错误
made use of undefined node c0yy
而如果我在模型函数中替换 c0yy
和 syy
的值,它就可以工作。有什么帮助吗?
谢谢
您绑定传递给模型的值是数据。在 BUGS(和 R2WinBUGS)中,数据作为独立于您定义的模型的实体传递给程序。为了包含数据,您可以将它们放入列表中,例如;
my.mcmc <- bugs(data = list(c0yy = 0.1, syy= 0.0001), params = "beta', model.file = "Olm.txt", n.iter=10000)
您还需要从模型脚本中删除 <- function(c0yy,syy)
。