我尝试从R调用winBUGS来估计逻辑回归。我使用了以下代码:
# Directorio de trabajo
setwd("~/3 Diplomado/7 Bayesiana/8t1")
# paquete para hablarse con WinBUGS desde R
library(R2WinBUGS)
# cargamos datos
reg <- read.table("enf.csv", header = TRUE, sep = ",")
edad <- reg$edad
enfer <- reg$efer
n <- length(reg$edad)
# Primeras filas de los datos
head(reg)
# Nombres de los datos para alimentar al modelo en WinBUGS
datos <- list("edad","enfer", "n")
# Construimos el modelo
modelo <- function(){
for (i in 1:n) {
enfer[i] ~ dbin(theta[i], 1)
logit(theta[i]) < - beta0 + beta1 * edad[i]
phi[i]<-theta[i]/(1-theta[i])
}
beta0 ~ dnorm(0, 0.0001)
beta1 ~ dnorm(0, 0.0001)
}
## escribimos el modelo a un archivo .bug file:
write.model(modelo, "modelo.bug")
## Para echarle un vistazo al modelo:
file.show("modelo.bug")
# Distribuciones iniciales
iniciales <- function(){
list(beta0=1,beta1=1)
}
# Corremos esto en WinBUGS
regresionlogistica.sim = bugs(datos,iniciales,
model.file="modelo.bug",
parameters=c("beta0","beta1"),
n.chains=1,n.iter=20000,n.burnin=5000,n.thin=1,
bugs.directory="C:/Users/pythonxy/Documents/3 Diplomado/7 Bayesiana/winbugs14",
working.directory="~/3 Diplomado/7 Bayesiana/8t1",
codaPkg=FALSE)WinBUGS打开,但我得到一个错误。“不兼容的副本”。我一直在寻找这个错误,发现很多人都经历过这个错误。我已经尝试了建议的解决方案:缩短model.bug的文件路径,确保工作目录中没有更多的“数据”文件,使用数据变量名称的列表,等等。
但我还是不能让它工作。我做错了什么?
发布于 2013-01-31 21:47:39
如果我没记错的话,如果输入数据或输出参数有问题,就会出现这个错误。我在你的代码中发现了几个潜在的问题:
datos <- list("edad","enfer", "n")是错误的:你应该使用like datos <- list(edad = edad, enfer = enfer, n = n),因为你想传递实际的数据,而不仅仅是R变量名!不要将此与计算但不监视的输出parameters!phi节点相混淆。我不确定这是否会是一个问题,但WinBUGS有时会以这种方式表现得很奇怪。rnorm(1, 0, 0.01)等)https://stackoverflow.com/questions/14596307
复制相似问题