get_posterior_sample: Draw a sample from the posterior distribution

View source: R/inference_posterior.R

get_posterior_sampleR Documentation

Draw a sample from the posterior distribution

Description

Draw a sample from the approximate posterior distribution.

Usage

get_posterior_sample(map, zpost, U, obs, num)

Arguments

map

Mapping object. Usually a compound map, see create_compound_map

zpost

Vector of posterior estimates of the independent variables (i.e., associated with nodes without parent nodes)

U

Prior covariance matrix of the independent variables

obs

Vector with observed values of dependent nodes. Must be of same size as zprior. An NA value in this vector means that the corresponding variable was not observed.

num

Number of samples

Value

Return a matrix in which each column contains a realization of the independent variables from the approximate posterior distribution.

Note

The samples are obtained by relying on an approximation to the true posterior covariance matrix. The samples are an accurate reflection of the true posterior covariance matrix if the non-linear relationships in the Bayesian network defined by map are in good approximation linear in the domain associated with significant values of the posterior density function.

Examples

library(Matrix)
params <- list(
  mapname = "mymap",
  maptype = "linearinterpol_map",
  src_idx = 1:10,
  tar_idx = 11:15,
  src_x = 1:10,
  tar_x = 3:7
)
mymap <- create_linearinterpol_map()
mymap$setup(params)

U <- Diagonal(n=15, x=c(rep(1e3, 10), rep(1, 5)))
zprior <- rep(0, 15)
zref <- rep(0, 15)
obs <- c(rep(NA,10), 5:9)

# glsalgo only works for linear relationships
# LMalgo can also deal with non-linear relationships
zpost <- glsalgo(mymap, zprior, U, obs)
optres <- LMalgo(mymap, zprior, U, obs)
zpost2 <- optres$zpost

# posterior estimates of values on computational grid
zpost[1:10]
# posterior estimates of error variables associated with observations
zpost[11:15]
# get posterior covariance block of independent variables
get_posterior_cov(mymap, zpost, U, obs, 1:5, 5:10)
# draw samples of independent variables from posterior distribution
get_posterior_sample(mymap, zpost, U, obs, 10)

gschnabel/nucdataBaynet documentation built on Feb. 3, 2023, 4:13 a.m.