BayesianTools (version 0.1.6)

createPrior: Creates a standardized prior class

Description

Creates a standardized prior class

Usage

createPrior(density = NULL, sampler = NULL, lower = NULL,
  upper = NULL, best = NULL)

Arguments

density

Prior density

sampler

Sampling function for density (optional)

lower

vector with lower bounds of parameters

upper

vector with upper bounds of parameter

best

vector with "best" parameter values

Details

This is the general prior generator. It is highly recommended to not only implement the density, but also the sampler function. If this is not done, the user will have to provide explicit starting values for many of the MCMC samplers. Note the existing, more specialized prior function. If your prior can be created by those, they are preferred. Note also that priors can be created from an existing MCMC output from BT, or another MCMC sample, via createPriorDensity.

See Also

createPriorDensity createBetaPrior createUniformPrior createTruncatedNormalPrior createBayesianSetup

Examples

Run this code
# NOT RUN {
# Create a general prior distribution by specifying an arbitrary density function and a
# corresponding sampling function
density = function(par){
  d1 = dunif(par[1], -2,6, log =TRUE)
  d2 = dnorm(par[2], mean= 2, sd = 3, log =TRUE)
  return(d1 + d2)
}

# The sampling is optional but recommended because the MCMCs can generate automatic starting
# conditions if this is provided
sampler = function(n=1){
  d1 = runif(n, -2,6)
  d2 = rnorm(n, mean= 2, sd = 3)
  return(cbind(d1,d2))
}

prior <- createPrior(density = density, sampler = sampler, 
                     lower = c(-3,-3), upper = c(3,3), best = NULL)


# Use this prior in an MCMC 

ll <- function(x) sum(dnorm(x, log = TRUE)) # multivariate normal ll
bayesianSetup <- createBayesianSetup(likelihood = ll, prior = prior)

settings = list(iterations = 1000)
out <- runMCMC(bayesianSetup = bayesianSetup, settings = settings)

# see ?createPriorDensity for how to create a new prior from this output

# }

Run the code above in your browser using DataLab