Nothing
## ----global_options, include=FALSE--------------------------------------------
knitr::opts_chunk$set(fig.width=5, fig.height=5, warning=FALSE, cache = F)
## ---- echo = F, message = F---------------------------------------------------
set.seed(123)
## ---- eval = F----------------------------------------------------------------
# install.packages("BayesianTools")
## -----------------------------------------------------------------------------
library(BayesianTools)
citation("BayesianTools")
## -----------------------------------------------------------------------------
set.seed(123)
## ---- eval = F----------------------------------------------------------------
# sessionInfo()
## -----------------------------------------------------------------------------
ll <- generateTestDensityMultiNormal(sigma = "no correlation")
bayesianSetup = createBayesianSetup(likelihood = ll, lower = rep(-10, 3), upper = rep(10, 3))
## -----------------------------------------------------------------------------
iter = 10000
settings = list(iterations = iter, message = FALSE)
out <- runMCMC(bayesianSetup = bayesianSetup, sampler = "Metropolis", settings = settings)
## -----------------------------------------------------------------------------
print(out)
summary(out)
## -----------------------------------------------------------------------------
plot(out) # plot internally calls tracePlot(out)
correlationPlot(out)
marginalPlot(out, prior = TRUE)
## -----------------------------------------------------------------------------
marginalLikelihood(out)
DIC(out)
MAP(out)
## ---- eval = F----------------------------------------------------------------
# getSample(out, start = 100, end = NULL, thin = 5, whichParameters = 1:2)
## ---- echo = T----------------------------------------------------------------
iter = 1000
settings = list(iterations = iter, nrChains = 3, message = FALSE)
out <- runMCMC(bayesianSetup = bayesianSetup, sampler = "Metropolis", settings = settings)
## -----------------------------------------------------------------------------
print(out)
summary(out)
## -----------------------------------------------------------------------------
plot(out)
## -----------------------------------------------------------------------------
#getSample(out, coda = F)
gelmanDiagnostics(out, plot = T)
## ---- eval = F----------------------------------------------------------------
# ll = logDensity(x)
## -----------------------------------------------------------------------------
ll <- generateTestDensityMultiNormal(sigma = "no correlation")
bayesianSetup = createBayesianSetup(likelihood = ll, lower = rep(-10, 3), upper = rep(10, 3))
## ---- eval = FALSE------------------------------------------------------------
# ## Definition of likelihood function
# likelihood <- function(matrix){
# # Calculate likelihood in parallel
# # Return vector of likelihood valus
# }
#
# ## Create Bayesian Setup
# BS <- createBayesianSetup(likelihood, parallel = "external", ...)
#
# ## Run MCMC
# runMCMC(BS, sampler = "SMC", ...)
## ---- eval = FALSE------------------------------------------------------------
# ## n = Number of cores
# n=2
# x <- c(1:10)
# likelihood <- function(param) return(sum(dnorm(x, mean = param, log = T)))
# bayesianSetup <- createBayesianSetup(likelihood, parallel = n, lower = -5, upper = 5)
#
# ## give runMCMC a matrix with n rows of proposals as startValues or sample n times from the previous created sampler
# out <- runMCMC(bayesianSetup, settings = list(iterations = 1000))
## ---- eval = FALSE------------------------------------------------------------
# ### Create cluster with n cores
# cl <- parallel::makeCluster(n)
#
# ## Definition of the likelihood
# likelihood <- function(X) sum(dnorm(c(1:10), mean = X, log = T))
#
# ## Definition of the likelihood which will be calculated in parallel. Instead of the parApply function, we could also define a costly parallelized likelihood
# pLikelihood <- function(param) parallel::parApply(cl = cl, X = param, MARGIN = 1, FUN = likelihood)
#
# ## export functions, dlls, libraries
# # parallel::clusterEvalQ(cl, library(BayesianTools))
# parallel::clusterExport(cl, varlist = list(likelihood))
#
# ## create BayesianSetup
# bayesianSetup <- createBayesianSetup(pLikelihood, lower = -10, upper = 10, parallel = 'external')
#
# ## For this case we want to parallelize the internal chains, therefore we create a n row matrix with startValues, if you parallelize a model in the likelihood, do not set a n*row Matrix for startValue
# settings = list(iterations = 100, nrChains = 1, startValue = bayesianSetup$prior$sampler(n))
#
# ## runMCMC
# out <- runMCMC(bayesianSetup, settings, sampler = "DEzs")
## ---- eval = FALSE------------------------------------------------------------
# ### Create cluster with n cores
# cl <- parallel::makeCluster(n)
#
# ## export your model
# # parallel::clusterExport(cl, varlist = list(complexModel))
#
# ## Definition of the likelihood
# likelihood <- function(param) {
# # ll <- complexModel(param)
# # return(ll)
# }
#
# ## create BayesianSetup and settings
# bayesianSetup <- createBayesianSetup(likelihood, lower = -10, upper = 10, parallel = 'external')
# settings = list(iterations = 100, nrChains = 1)
#
# ## runMCMC
# out <- runMCMC(bayesianSetup, settings)
#
## ---- eval = FALSE------------------------------------------------------------
# ### Definition of likelihood function
# x <- c(1:10)
# likelihood <- function(param) return(sum(dnorm(x, mean = param, log = T)))
#
# ## Create BayesianSetup and settings
# bayesianSetup <- createBayesianSetup(likelihood, lower = -10, upper = 10, parallel = F)
# settings = list(iterations = 100000)
#
# ## Start cluster with n cores for n chains and export BayesianTools library
# cl <- parallel::makeCluster(n)
# parallel::clusterEvalQ(cl, library(BayesianTools))
#
# ## calculate parallel n chains, for each chain the likelihood will be calculated on one core
# out <- parallel::parLapply(cl, 1:n, fun = function(X, bayesianSetup, settings) runMCMC(bayesianSetup, settings, sampler = "DEzs"), bayesianSetup, settings)
#
# ## Combine the chains
# out <- createMcmcSamplerList(out)
## -----------------------------------------------------------------------------
# Create a BayesianSetup
ll <- generateTestDensityMultiNormal(sigma = "no correlation")
bayesianSetup = createBayesianSetup(likelihood = ll, lower = rep(-10, 3), upper = rep(10, 3))
settings = list(iterations = 2500, message = FALSE)
out <- runMCMC(bayesianSetup = bayesianSetup, settings = settings)
newPrior = createPriorDensity(out, method = "multivariate", eps = 1e-10, lower = rep(-10, 3), upper = rep(10, 3), best = NULL)
bayesianSetup <- createBayesianSetup(likelihood = ll, prior = newPrior)
settings = list(iterations = 1000, message = FALSE)
out <- runMCMC(bayesianSetup = bayesianSetup, settings = settings)
## ---- message = F-------------------------------------------------------------
ll <- generateTestDensityMultiNormal(sigma = "no correlation")
bayesianSetup = createBayesianSetup(likelihood = ll, lower = rep(-10, 3), upper = rep(10, 3))
settings = list(iterations = 10000, nrChains= 3, message = FALSE)
out <- runMCMC(bayesianSetup = bayesianSetup, sampler = "Metropolis", settings = settings)
plot(out)
marginalPlot(out, prior = T)
correlationPlot(out)
gelmanDiagnostics(out, plot=T)
# option to restart the sampler
settings = list(iterations = 1000, nrChains= 1, message = FALSE)
out <- runMCMC(bayesianSetup = bayesianSetup, sampler = "Metropolis", settings = settings)
out2 <- runMCMC(bayesianSetup = out)
out3 <- runMCMC(bayesianSetup = out2)
#plot(out)
#plot(out3)
# create new prior from posterior sample
newPriorFromPosterior <- createPriorDensity(out2)
## -----------------------------------------------------------------------------
iter = 10000
## -----------------------------------------------------------------------------
applySettingsDefault(sampler = "Metropolis")
## ---- results = 'hide', eval = F----------------------------------------------
# settings <- list(iterations = iter, adapt = F, DRlevels = 1, gibbsProbabilities = NULL, temperingFunction = NULL, optimize = F, message = FALSE)
# out <- runMCMC(bayesianSetup = bayesianSetup, sampler = "Metropolis", settings = settings)
# plot(out)
## ---- results = 'hide', eval = F----------------------------------------------
# settings <- list(iterations = iter, adapt = F, DRlevels = 1, gibbsProbabilities = NULL, temperingFunction = NULL, optimize = T, message = FALSE)
# out <- runMCMC(bayesianSetup = bayesianSetup, sampler = "Metropolis", settings = settings)
# plot(out)
## ---- results = 'hide', eval = F----------------------------------------------
# settings <- list(iterations = iter, adapt = T, DRlevels = 1, gibbsProbabilities = NULL, temperingFunction = NULL, optimize = T, message = FALSE)
# out <- runMCMC(bayesianSetup = bayesianSetup, sampler = "Metropolis", settings = settings)
# plot(out)
## ---- results = 'hide', eval = F----------------------------------------------
# settings <- list(iterations = iter, adapt = F, DRlevels = 2, gibbsProbabilities = NULL, temperingFunction = NULL, optimize = T, message = FALSE)
# out <- runMCMC(bayesianSetup = bayesianSetup, sampler = "Metropolis", settings = settings)
# plot(out)
## ---- results = 'hide', eval = F----------------------------------------------
# settings <- list(iterations = iter, adapt = T, DRlevels = 2, gibbsProbabilities = NULL, temperingFunction = NULL, optimize = T, message = FALSE)
# out <- runMCMC(bayesianSetup = bayesianSetup, sampler = "Metropolis", settings = settings)
# plot(out)
## ---- results = 'hide', eval = F----------------------------------------------
# settings <- list(iterations = iter, adapt = T, DRlevels = 1, gibbsProbabilities = c(1,0.5,0), temperingFunction = NULL, optimize = T, message = FALSE)
# out <- runMCMC(bayesianSetup = bayesianSetup, sampler = "Metropolis", settings = settings)
# plot(out)
## ---- results = 'hide', eval = F----------------------------------------------
# temperingFunction <- function(x) 5 * exp(-0.01*x) + 1
# settings <- list(iterations = iter, adapt = F, DRlevels = 1, gibbsProbabilities = c(1,1,0), temperingFunction = temperingFunction, optimize = T, message = FALSE)
# out <- runMCMC(bayesianSetup = bayesianSetup, sampler = "Metropolis", settings = settings)
# plot(out)
## ---- results = 'hide', eval = F----------------------------------------------
# settings <- list(iterations = iter, message = FALSE)
# out <- runMCMC(bayesianSetup = bayesianSetup, sampler = "DE", settings = settings)
# plot(out)
## ---- results = 'hide', eval = F----------------------------------------------
# settings <- list(iterations = iter, message = FALSE)
# out <- runMCMC(bayesianSetup = bayesianSetup, sampler = "DEzs", settings = settings)
# plot(out)
## ---- results = 'hide', eval = F----------------------------------------------
# settings <- list(iterations = iter, message = FALSE)
# out <- runMCMC(bayesianSetup = bayesianSetup, sampler = "DREAM", settings = settings)
# plot(out)
## ---- results = 'hide', eval = FALSE------------------------------------------
# settings <- list(iterations = iter, message = FALSE)
# out <- runMCMC(bayesianSetup = bayesianSetup, sampler = "DREAMzs", settings = settings)
# plot(out)
## ---- eval = F----------------------------------------------------------------
# settings = list(iterations = iter, message = FALSE)
#
# out <- runMCMC(bayesianSetup = bayesianSetup, sampler = "Twalk", settings = settings)
## ---- eval = T----------------------------------------------------------------
settings <- list(iterations = iter, nrChains = 3, message = FALSE)
out <- runMCMC(bayesianSetup = bayesianSetup, sampler = "Metropolis", settings = settings)
plot(out)
#chain = getSample(out, coda = T)
gelmanDiagnostics(out, plot = F)
## ---- results = 'hide', eval = F----------------------------------------------
# settings <- list(initialParticles = iter, iterations= 1)
# out <- runMCMC(bayesianSetup = bayesianSetup, sampler = "SMC", settings = settings)
# plot(out)
## ---- results = 'hide', eval = F----------------------------------------------
# settings <- list(initialParticles = iter, iterations= 10)
# out <- runMCMC(bayesianSetup = bayesianSetup, sampler = "SMC", settings = settings)
# plot(out)
## -----------------------------------------------------------------------------
sampleSize = 30
x <- (-(sampleSize-1)/2):((sampleSize-1)/2)
y <- 1 * x + 1*x^2 + rnorm(n=sampleSize,mean=0,sd=10)
plot(x,y, main="Test Data")
## -----------------------------------------------------------------------------
likelihood1 <- function(param){
pred = param[1] + param[2]*x + param[3] * x^2
singlelikelihoods = dnorm(y, mean = pred, sd = 1/(param[4]^2), log = T)
return(sum(singlelikelihoods))
}
likelihood2 <- function(param){
pred = param[1] + param[2]*x
singlelikelihoods = dnorm(y, mean = pred, sd = 1/(param[3]^2), log = T)
return(sum(singlelikelihoods))
}
## -----------------------------------------------------------------------------
setUp1 <- createBayesianSetup(likelihood1, lower = c(-5,-5,-5,0.01), upper = c(5,5,5,30))
setUp2 <- createBayesianSetup(likelihood2, lower = c(-5,-5,0.01), upper = c(5,5,30))
## ---- results = 'hide'--------------------------------------------------------
settings = list(iterations = 15000, message = FALSE)
out1 <- runMCMC(bayesianSetup = setUp1, sampler = "Metropolis", settings = settings)
#tracePlot(out1, start = 5000)
M1 = marginalLikelihood(out1)
M1
settings = list(iterations = 15000, message = FALSE)
out2 <- runMCMC(bayesianSetup = setUp2, sampler = "Metropolis", settings = settings)
#tracePlot(out2, start = 5000)
M2 = marginalLikelihood(out2)
M2
## -----------------------------------------------------------------------------
exp(M1$ln.ML - M2$ln.ML)
## -----------------------------------------------------------------------------
exp(M1$ln.ML) / ( exp(M1$ln.ML) + exp(M2$ln.ML))
## -----------------------------------------------------------------------------
DIC(out1)$DIC
DIC(out2)$DIC
## -----------------------------------------------------------------------------
# This will not work, since likelihood1 has no sum argument
# WAIC(out1)
# likelihood with sum argument
likelihood3 <- function(param, sum = TRUE){
pred <- param[1] + param[2]*x + param[3] * x^2
singlelikelihoods <- dnorm(y, mean = pred, sd = 1/(param[4]^2), log = T)
return(if (sum == TRUE) sum(singlelikelihoods) else singlelikelihoods)
}
setUp3 <- createBayesianSetup(likelihood3, lower = c(-5,-5,-5,0.01), upper = c(5,5,5,30))
out3 <- runMCMC(bayesianSetup = setUp3, sampler = "Metropolis", settings = settings)
WAIC(out3)
Any scripts or data that you put into this service are public.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.