我从R运行winbugs,我需要在R输出中使用一些变量。当我在R中输入schools.sim$mean$theta[1]
时,我得到10.2。但是,当我键入schools.sim$2.5%$theta[1]
时会出现错误消息。任何一个我做错了什么或任何其他方式得到贝叶斯间隔?
这是一个例子
Here is the R code
library(R2WinBUGS)
data(schools)
J <- nrow(schools)
y <- schools$estimate
sigma.y <- schools$sd
data <- list ("J", "y", "sigma.y")
inits <- function(){
list(theta = rnorm(J, 0, 100), mu.theta = rnorm(1, 0, 100),
sigma.theta = runif(1, 0, 100))
}
schools.sim <- bugs(data, inits, model.file = "D:/model.txt",
parameters = c("theta", "mu.theta", "sigma.theta"),
n.chains = 3, n.iter = 1000,
bugs.directory = "D:/PROGRAMLAR/WinBUGS14/")
schools.sim
这是winbugs代码,必须在model.txt
中存储为D
。
model {
for (j in 1:J)
{
y[j] ~ dnorm (theta[j], tau.y[j])
theta[j] ~ dnorm (mu.theta, tau.theta)
tau.y[j] <- pow(sigma.y[j], -2)
}
mu.theta ~ dnorm (0.0, 1.0E-6)
tau.theta <- pow(sigma.theta, -2)
sigma.theta ~ dunif (0, 1000)
}
别忘了更改存储winbugs文件夹的bug目录。
答案 0 :(得分:1)
使用quantile
:
> quantile(runif(100))$0%
Error: unexpected numeric constant in "quantile(runif(100))$0"
只需使用:
> quantile(runif(100))['0%']
0%
0.03293488
问题是%
是R中的保留字符。