Nothing
## -----------------------------------------------------------------------------
library(bridgesampling)
### generate data ###
set.seed(12345)
mu <- 0
tau2 <- 0.5
sigma2 <- 1
n <- 20
theta <- rnorm(n, mu, sqrt(tau2))
y <- rnorm(n, theta, sqrt(sigma2))
## ----eval=FALSE---------------------------------------------------------------
# ### set prior parameters ###
# mu0 <- 0
# tau20 <- 1
# alpha <- 1
# beta <- 1
## ---- eval=FALSE--------------------------------------------------------------
# library("nimble")
#
# # models
# codeH0 <- nimbleCode({
# invTau2 ~ dgamma(1, 1)
# tau2 <- 1/invTau2
# for (i in 1:20) {
# theta[i] ~ dnorm(0, sd = sqrt(tau2))
# y[i] ~ dnorm(theta[i], sd = 1)
# }
# })
# codeH1 <- nimbleCode({
# mu ~ dnorm(0, sd = 1)
# invTau2 ~ dgamma(1, 1)
# tau2 <- 1/invTau2
# for (i in 1:20) {
# theta[i] ~ dnorm(mu, sd = sqrt(tau2))
# y[i] ~ dnorm(theta[i], sd = 1)
# }
# })
#
# ## steps for H0:
# modelH0 <- nimbleModel(codeH0)
# modelH0$setData(y = y) # set data
# cmodelH0 <- compileNimble(modelH0) # make compiled version from generated C++
#
# ## steps for H1:
# modelH1 <- nimbleModel(codeH1)
# modelH1$setData(y = y) # set data
# cmodelH1 <- compileNimble(modelH1) # make compiled version from generated C++
#
## ---- eval=FALSE--------------------------------------------------------------
#
# # build MCMC functions, skipping customization of the configuration.
# mcmcH0 <- buildMCMC(modelH0,
# monitors = modelH0$getNodeNames(stochOnly = TRUE,
# includeData = FALSE))
# mcmcH1 <- buildMCMC(modelH1,
# monitors = modelH1$getNodeNames(stochOnly = TRUE,
# includeData = FALSE))
# # compile the MCMC function via generated C++
# cmcmcH0 <- compileNimble(mcmcH0, project = modelH0)
# cmcmcH1 <- compileNimble(mcmcH1, project = modelH1)
#
# # run the MCMC. This is a wrapper for cmcmc$run() and extraction of samples.
# # the object samplesH1 is actually not needed as the samples are also in cmcmcH1
# samplesH0 <- runMCMC(cmcmcH0, niter = 1e5, nburnin = 1000, nchains = 2,
# progressBar = FALSE)
# samplesH1 <- runMCMC(cmcmcH1, niter = 1e5, nburnin = 1000, nchains = 2,
# progressBar = FALSE)
## ---- echo=FALSE--------------------------------------------------------------
load(system.file("extdata/", "vignette_example_nimble.RData",
package = "bridgesampling"))
## ----eval=FALSE---------------------------------------------------------------
# # compute log marginal likelihood via bridge sampling for H0
# H0.bridge <- bridge_sampler(cmcmcH0, silent = TRUE)
#
# # compute log marginal likelihood via bridge sampling for H1
# H1.bridge <- bridge_sampler(cmcmcH1, silent = TRUE)
## -----------------------------------------------------------------------------
print(H0.bridge)
print(H1.bridge)
## ----eval=FALSE---------------------------------------------------------------
# # compute percentage errors
# H0.error <- error_measures(H0.bridge)$percentage
# H1.error <- error_measures(H1.bridge)$percentage
## -----------------------------------------------------------------------------
print(H0.error)
print(H1.error)
## -----------------------------------------------------------------------------
# compute Bayes factor
BF01 <- bf(H0.bridge, H1.bridge)
print(BF01)
## -----------------------------------------------------------------------------
# compute posterior model probabilities (assuming equal prior model probabilities)
post1 <- post_prob(H0.bridge, H1.bridge)
print(post1)
## -----------------------------------------------------------------------------
# compute posterior model probabilities (using user-specified prior model probabilities)
post2 <- post_prob(H0.bridge, H1.bridge, prior_prob = c(.6, .4))
print(post2)
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.