Overture makes writing Markov chain Monte Carlo (MCMC) samplers simpler. With overture you can:
Using overture is easy:
SampleX <- function(x) {
x + 1
}
SampleY <- function(y) {
y * y
}
Mcmc <- InitMcmc(3) # Run the chain for 3 iterations
x <- c(0, 10) # Initial value for x
y <- 2 # Initial value for y
samples <- Mcmc({
x <- SampleX(x)
y <- SampleY(y)
})
> samples$x
[,1] [,2]
[1,] 1 11
[2,] 2 12
[3,] 3 13
> samples$y
[,1]
[1,] 4
[2,] 16
[3,] 256
To save samples on disk, specify the directory where the samples should be saved:
Mcmc <- InitMcmc(3, backing.path="/save/directory/path/")
samples <- Mcmc({
x <- SampleX(x)
y <- SampleY(y)
})
The samples can be analyzed as before:
> samples$x[,]
[,1] [,2]
[1,] 1 11
[2,] 2 12
[3,] 3 13
> samples$y[,, drop=FALSE]
[,1]
[1,] 4
[2,] 16
[3,] 256
To load the samples from disk, use LoadMcmc
:
loaded.samples <- LoadMcmc("/save/directory/path/")
To convert a file-backed MCMC into a list of R in-memory matrices, use ToMemory
:
samples.in.memory <- ToMemory(loaded.samples)
> samples.in.memory
$x
[,1] [,2]
[1,] 1 11
[2,] 2 12
[3,] 3 13
$y
[,1]
[1,] 4
[2,] 16
[3,] 256
Samples from an MCMC can be viewed before its completion. First, start the slow running MCMC as a file-backed chain:
SlowMcmc <- InitMcmc(10000, backing.path="/save/directory/path/")
SlowMcmc({
x <- SlowSampler()
})
Then, in another R process while the MCMC is still running, use Peek
to load and analyze the samples taken so far:
samples.so.far <- Peek("/save/directory/path/")
samples.so.far$x[,]
More examples and details are given in the package documentation.
To install from CRAN run:
install.packages("overture")
To install from GitHub, after installing devtools run:
devtools::install_github("kurtis-s/overture")
If you aren't sure which version to install, you probably want to install from CRAN.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.