Getting R2WinBUGS to talk to WinBUGS 1.4 on Ubuntu 12.04 LTS
Want to share your content on R-bloggers? click here if you have a blog, or here if you don't.
Disclaimer 1: WinBUGS is old and not maintained. There are other packages to use, if you would like to take advantage of more modern developments in MCMC such as:
- PyMC which transparently implements adaptive Metropolis-Hastings proposals (among other great features), or
- the LaplacesDemon R package, which dispenses guidance on whether or not your chain converged, or
- the as of yet released STAN, which will use an automatically tuned Hamiltonian Monte Carlo sampler when it can and (presumably) a WinBUGS like Gibbs sampler when it can’t.
Disclaimer 2: There are also WinBUGS alternatives, like JAGS and OpenBUGS, that are both currently maintained and cross platform (Windows, Mac, and linux). They are worth checking out if you want to maintain some legacy BUGS code.
If you are set on using WinBUGS, the installation is remarkably easy on Ubuntu (easier than Windows 7, in fact).The steps are as follows:
1. Install R. (R 2.14.2)
2. Install wine. (wine-1.4)
3. Install WinBUGS via wine and setup R2WinBugs. That guide was written for Ubuntu 10.04. Some modifications for Ubuntu 12.04:
- Ignore the bits about wine 1.0. Wine 1.4 works great.
- The R2WinBUGS example won’t work. When you run this:
> schools.sim <- bugs( data, inits, parameters, model.file, n.chains=3, n.iter=5000)
WinBUGS will pop-up, but it will get stuck at its license screen. If you close the license screen, nothing happens. If you close the WinBUGS window, you get:
schools.sim p11-kit: couldn't load module: /usr/lib/i386-linux-gnu/pkcs11/gnome-keyring-pkcs11.so: /usr/lib/i386-linux-gnu/pkcs11/gnome-keyring-pkcs11.so: cannot open shared object file: No such file or directory err:ole:CoGetClassObject class {0003000a-0000-0000-c000-000000000046} not registered err:ole:CoGetClassObject class {0003000a-0000-0000-c000-000000000046} not registered err:ole:CoGetClassObject no class object {0003000a-0000-0000-c000-000000000046} could be created for context 0x3</code> Error in bugs.run(n.burnin, bugs.directory, WINE = WINE, useWINE = useWINE, : Look at the log file and try again with 'debug=TRUE' to figure out what went wrong within Bugs.
Which isn’t a particularly helpful error message.
- The error is that the intermediate files that R2WinBUGS produces are not getting shared with WinBUGS, so WinBUGS thinks it doesn’t have to do anything. As mentioned by ‘zcronix’ in the comment thread for the instructions, it is a two step fix: (1) create a temporary directory to store those files and (2) tell R2WinBugs about it with the working.directory and clearWD options.
In your shell:nathanvan@nathanvan-N61Jq:~$ cd .wine/drive_c/ nathanvan@nathanvan-N61Jq:~/.wine/drive_c$ mkdir temp nathanvan@nathanvan-N61Jq:~/.wine/drive_c$ cd temp nathanvan@nathanvan-N61Jq:~/.wine/drive_c/temp$ mkdir Rtmp
In R:
> schools.sim <- bugs( data, inits, parameters, model.file, n.chains=3, n.iter=5000, working.directory='~/.wine/drive_c/temp/Rtmp/', clearWD=TRUE)
Hopefully that will work for you too.
R-bloggers.com offers daily e-mail updates about R news and tutorials about learning R and many other topics. Click here if you're looking to post or find an R/data-science job.
Want to share your content on R-bloggers? click here if you have a blog, or here if you don't.