3

我正在尝试复制一些代码并且遇到了 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

我有分析的结果,所以如果有另一种方法对“原始数据”文件进行贝叶斯分析(在具有 [-3,0] 事件窗口的 14 天模型中),或者如果有人愿意说明什么是代码错误,我将永远感激不尽。

代码是:

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()
4

1 回答 1

2

如果不坐在您的 PC 前,很难确定... 也许这与 R2WinBUGS 在错误的目录中查找 WinBUGS.exe 有关?bugs.directory您可以使用函数中的参数将 R2WinBUGS 指向正确的位置bugs

如果没有,请尝试安装OpenBUGS并尝试使用R2OpenBUGS

于 2015-08-12T10:31:43.573 回答