Function to extract random samples from the posterior distribution of the parameters of a jags model.

jags.samples(model, variable.names, n.iter, thin = 1,
             type="trace", force.list=FALSE, ...)

Arguments

model

a jags model object

variable.names

a character vector giving the names of variables to be monitored

n.iter

number of iterations to monitor

thin

thinning interval for monitors

type

type of monitor (can be vectorised)

force.list

option to consistently return a named list of monitor types even if a single monitor type is requested

...

optional arguments passed to the update method for jags model objects

Details

The jags.samples function creates monitors for the given variables, runs the model for n.iter iterations and returns the monitored samples.

Value

A list of mcarray objects, with one element for each element of the variable.names argument. If more than one type of monitor is requested (or if force.list is TRUE) then the return value will be a (named) list of lists of mcarray objects, with one element for each monitor type.

Author

Martyn Plummer

Examples

  data(LINE)
  LINE$recompile()
#> Compiling model graph
#>    Resolving undeclared variables
#>    Allocating nodes
#> Graph information:
#>    Observed stochastic nodes: 5
#>    Unobserved stochastic nodes: 3
#>    Total graph size: 36
#> 
#> Initializing model
#> 
  LINE.samples <- jags.samples(LINE, c("alpha","beta","sigma"),
  n.iter=1000)
  LINE.samples
#> $alpha
#> mcarray:
#> [1] 3.006265
#> 
#> Marginalizing over: iteration(1000),chain(2) 
#> 
#> $beta
#> mcarray:
#> [1] 0.7949662
#> 
#> Marginalizing over: iteration(1000),chain(2) 
#> 
#> $sigma
#> mcarray:
#> [1] 1.006746
#> 
#> Marginalizing over: iteration(1000),chain(2) 
#> 
  LINE.samples <- jags.samples(LINE, c("alpha","beta","sigma"),
  force.list=TRUE, n.iter=1000)
  LINE.samples
#> $trace
#> $trace$alpha
#> mcarray:
#> [1] 2.994909
#> 
#> Marginalizing over: iteration(1000),chain(2) 
#> 
#> $trace$beta
#> mcarray:
#> [1] 0.7942458
#> 
#> Marginalizing over: iteration(1000),chain(2) 
#> 
#> $trace$sigma
#> mcarray:
#> [1] 1.016406
#> 
#> Marginalizing over: iteration(1000),chain(2) 
#> 
#> 
  LINE.samples <- jags.samples(LINE, c("alpha","alpha"),
  n.iter=1000, type=c("trace","mean"))
  LINE.samples$trace
#> $alpha
#> mcarray:
#> [1] 3.008104
#> 
#> Marginalizing over: iteration(1000),chain(2) 
#> 
  LINE.samples$mean
#> $alpha
#> mcarray:
#> [1] 3.008104
#> 
#> Marginalizing over: chain(2) 
#>