2015-08-12 5 views
2

Я пытаюсь дублировать некоторый код, и я сталкиваюсь с проблемами с WinBUGS. Код был написан в 2010 году, и я думаю, что тогда пакет был установлен с дополнительными файлами, которые R теперь ищет и не может найти (отсюда ошибка), но я не уверен.Ошибка R2WinBUGS в 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 

У меня есть результаты анализа, так что если есть другой способ ведения байесовского анализа для " rawdata "(в 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() 

ответ

2

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

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

Смежные вопросы