2

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のファイルパスを短くする、作業ディレクトリに「データ」ファイルがこれ以上ないことを確認する、データ変数名の名前のリストを使用するなど.

しかし、私はまだこれを機能させることができません。私は何を間違っていますか?

4

1 に答える 1

5

私の記憶では、入力データや出力パラメータに何らかの問題があるとこのエラーが発生します。コードに潜在的な問題がいくつか見つかりました。

  1. datos <- list("edad","enfer", "n")これは間違っている と思います: datos <- list(edad = edad, enfer = enfer, n = n)R 変数名だけでなく、実際のデータを渡したいので、 like を使用する必要がありました! これを出力パラメータと混同しないでください!

  2. phiノードは計算されますが、監視されません。これが問題になるかどうかはわかりませんが、WinBUGS はこのように奇妙な動作をすることがあります。試してみる!

  3. 初期値はランダムに生成する必要があり、このように固定する必要はありません (rnorm(1, 0, 0.01)など)。

于 2013-01-31T13:47:38.667 に答える