Ошибка R2WinBUGS в R

Я пытаюсь продублировать некоторый код и у меня возникают проблемы с WinBUGS. Код был написан в 2010 году, и я думаю, что тогда пакет был установлен с дополнительными файлами, которые R сейчас ищет и не может найти (отсюда и ошибка), но я не уверен.

R прекращает попытки запустить #bugs.directory (см. код), и возникает ошибка:

Error in file(con, "rb") : cannot open the connection
In addition: Warning message:
In file(con, "rb") :
  cannot open file 'C:/Users/Hiwi/Documents/R/Win-library/3.0/R2winBUGS/System/Rsrc/Registry.odc': No such file or directory
Error in bugs.run(n.burnin, bugs.directory, WINE = WINE, useWINE = useWINE,  : 
  WinBUGS executable does not exist in C:/Users/Hiwi/Documents/R/Win-library/3.0/R2winBUGS

У меня есть результаты анализа, поэтому, если есть другой способ проведения байесовского анализа для файла «необработанных данных» (в 14-дневной модели с окном событий [-3,0]) или если кто-то ПОЖАЛУЙСТА, прольет свет на то, что ошибся с кодом, буду вечно благодарен.

Код:

rm(list=ls(all=TRUE))   

setwd("C:/Users/Hiwi/Dropbox/Oracle/Oracle CD files/analysis/chapter6_a")

library(foreign)

rawdata <- read.dta("nyt.dta",convert.factors = F)

library(MASS)
summary(glm.nb(rawdata$num_events_14 ~ rawdata$nyt_num))


# WinBUGS code

library("R2WinBUGS")
nb.model <- function(){
        for (i in 1:n){ # loop for all observations 
               # stochastic component
               dv[i]~dnegbin( p[i], r)
               # link and linear predictor
               p[i] <- r/(r+lambda[i])
               log(lambda[i] ) <- b[1] + b[2] * iv[i]
        }
        #
        # prior distributions
        r <- exp(logr)
    logr ~ dnorm(0.0, 0.01)

    b[1]~dnorm(0,0.001)  # prior  (please note: second element is 1/variance)
    b[2]~dnorm(0,0.001)  # prior
}


write.model(nb.model, "negativebinomial.bug")


n <- dim(rawdata)[1] # number of observations


winbug.data <- list(dv = rawdata$num_events_14, 
                    iv = rawdata$nyt_num,
                    n=n)

winbug.inits <- function(){list(logr = 0 ,b=c(2.46,-.37)
                                )} # Ausgangswerte aus der Uniformverteilung zwischen -1 und 1

bug.erg <- bugs(data=winbug.data,
    inits=winbug.inits, 
    #inits=NULL,
    parameters.to.save = c("b","r"),
    model.file="negativebinomial.bug",
    n.chains=3, n.iter=10000, n.burnin=5000,
    n.thin=1,
    codaPkg=T,
    debug=F,
    #bugs.directory="C:/Users/Hiwi/Documents/R/Win-library/3.0/R2winBUGS/"
    bugs.directory="C:/Users/Hiwi/Documents/R/Win-library/3.0/R2winBUGS"
    )


tempdir()
setwd(tempdir())
file.rename("codaIndex.txt","simIndex.txt")
file.rename("coda1.txt","sim1.txt")
file.rename("coda2.txt","sim2.txt")
file.rename("coda3.txt","sim3.txt")

posterior <- rbind(read.coda("sim1.txt","simIndex.txt"),read.coda("sim2.txt","simIndex.txt"),read.coda("sim3.txt","simIndex.txt"))
post.df <- as.data.frame(posterior)
summary(post.df)
quantile(post.df[,2],probs=c(.025,.975))
quantile(post.df[,2],probs=c(.05,.95))
quantile(post.df[,2],probs=c(.10,.90))
tempdir()

person Maya Hadar    schedule 12.08.2015    source источник


Ответы (1)


Трудно сказать наверняка, не сидя за компьютером... Может быть, это как-то связано с тем, что R2WinBUGS ищет WinBUGS.exe не в том каталоге? Вы можете указать R2WinBUGS в нужном месте, используя аргумент bugs.directory в функции bugs.

Если нет, попробуйте установить OpenBUGS и отправьте R2OpenBUGS.

person guyabel    schedule 12.08.2015