【问题标题】:R2WinBUGS error - Trap - incompatible copyR2WinBUGS 错误 - 陷阱 - 不兼容的副本
【发布时间】:2023-04-02 10:12:01
【问题描述】:

我正在尝试从 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 的文件路径更短,确保工作目录中没有更多“数据”文件,使用数据变量名称的名称列表等。

但我仍然无法让它工作。我做错了什么?

【问题讨论】:

  • 只是为了澄清...当您单独在 WinBUGS 中运行模型时(即不通过 R)运行模型是否有效?
  • 是的,是的。有什么想法吗?
  • hmm....当您在 bugs 命令中设置 debug=TRUE 时,能否将 WinBUGS 的日志文件提供给我们?

标签: r winbugs winbugs14 r2winbugs


【解决方案1】:

如果我没记错的话,如果输入数据或输出参数有问题,就会出现这个错误。我在您的代码中发现了几个潜在问题:

  1. 我认为datos &lt;- list("edad","enfer", "n") 是错误的:你应该使用 like datos &lt;- list(edad = edad, enfer = enfer, n = n),因为您要传递实际数据,而不仅仅是 R 变量名!不要将此与输出参数混淆!

  2. phi 节点已计算但未监控。我不确定这是否是个问题,但 WinBUGS 有时会以这种方式表现得很奇怪。试试看!

  3. 初始值应该随机生成,而不是像这样固定(如rnorm(1, 0, 0.01)等)

【讨论】:

  • 同意,但不一定是关于#3。有时确定性初始值更方便,尤其是出于调试目的。
  • @BenBolker,请注意!但我想这个过程的其余部分无论如何都不会是确定性的......
  • 不,现在是找不到变量edad,找不到enfer,找不到n...
  • 完成!谢谢!实际上 datos
  • @JEquihua,对不起,我在代码中的实际操作就像datos &lt;- list(edad = edad, enfer = enfer, n = n),我编辑了我的答案!我以为datos &lt;- list(edad, enfer, n) 会这样做,但事实并非如此,对不起!无论如何,你已经以不同的方式解决了这个问题?有什么帮助,问题出在哪里?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-03-16
  • 1970-01-01
  • 1970-01-01
  • 2020-02-07
  • 1970-01-01
  • 2014-12-13
相关资源
最近更新 更多