evaluate.posterior: Stan model posterior evaluation

Description Usage Arguments Details Value Examples

Description

Evaluates posterior of Stan model at specified evaluation point

Usage

1
2
3
evaluate.posterior(ikde.model, eval.point, burn.iter = 1000,
  sample.iter = 1000, control = NULL, refresh = NULL,
  display.output = FALSE, show.trace = FALSE)

Arguments

ikde.model

An object of class ikde.model, does not necessarily have to be built

eval.point

A list of parameter names and the point to evaluate the posterior

burn.iter

Number of warmup iterations

sample.iter

Number of sampling iterations

control

Control parameters used in the Markov chain. See ?rstan::stan for details.

refresh

How frequently should progress be reported, in numbers of iterations

display.output

Boolean indicating whether output from rstan::stan should be printed

show.trace

Boolean indicating whether to show trace plots

Details

Uses list of ikde.model objects created by create.restricted.models to estimate posterior density. Each ikde.model is fit, then conditional posterior density is estimated at the specified point.

Value

A real number indicating value of the log-posterior at the specified evaluation point

Examples

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
data(lm.generated)

X <- lm.generated$X
y <- lm.generated$y

data <- list(N = list(type = "int<lower=1>", dim = 1, value = nrow(X)),
             k = list(type = "int<lower=1>", dim = 1, value = ncol(X)),
             X = list(type = "matrix", dim = "[N, k]", value = X),
             y = list(type = "vector", dim = "[N]", value = y))
parameters <- list(beta = list(type = "vector", dim = "[k]"),
                   sigma_sq = list(type = "real<lower=0>", dim = 1))
model <- list(priors = c("beta ~ normal(0, 10);",
                         "sigma_sq ~ inv_gamma(1, 1);"),
              likelihood = c("y ~ normal(X * beta, sqrt(sigma_sq));"))

ikde.model <- define.model(data, parameters, model)
ikde.model <- build.model(ikde.model)
stan.fit <- fit.model(ikde.model)
stan.extract <- rstan::extract(stan.fit)

eval.point <- list(beta = apply(stan.extract$beta, 2, mean),
                   sigma_sq = mean(stan.extract$sigma_sq))

# Only an estimation, may not exactly match presented result
evaluate.posterior(ikde.model, eval.point)
# [1] -1.889711

tkmckenzie/ikde documentation built on May 13, 2019, 9:53 p.m.