| qsample {INLA} | R Documentation |
Generate samples from a GMRF using the GMRFLib implementation
Description
This function generate samples from a GMRF using the GMRFLib implementation
Usage
inla.qsample(
n = 1L,
Q,
b,
mu,
sample,
constr,
reordering = INLA::inla.reorderings(),
seed = 0L,
logdens = ifelse(missing(sample), FALSE, TRUE),
compute.mean = ifelse(missing(sample), FALSE, TRUE),
num.threads = NULL,
selection = NULL,
verbose = inla.getOption("verbose"),
.debug = FALSE
)
Arguments
n |
Number of samples. Only used if |
Q |
The precision matrix or a filename containing it. |
b |
The linear term |
mu |
The mu term |
sample |
A matrix of optional samples where each column is a sample. If set, then evaluate the log-density for each sample only. |
constr |
Optional linear constraints; see |
reordering |
The type of reordering algorithm to be used for
|
seed |
Control the RNG. If PLEASE NOTE1: If PLEASE NOTE2: If the PARDISO sparse matrix library is used, continuity of the samples with respect to small changes in the precision matrix, can be expected but is not guaranteed. If this feature is required, please use the TAUCS sparse matrix library. |
logdens |
If |
compute.mean |
If |
num.threads |
Maximum number of threads the |
selection |
A vector of indices of each sample to return. |
verbose |
Logical. Run in verbose mode or not. |
.debug |
Logical. Internal debug-mode. |
Value
The log-density has form -1/2(x-mu)^T Q (x-mu) + b^T x
If logdens is FALSE, then inla.qsample returns the
samples in a matrix, where each column is a sample. If logdens or
compute.mean is TRUE, then a list with names sample,
logdens and mean is returned. The samples are stored in the
matrix sample where each column is a sample, and the log densities of
each sample are stored as the vector logdens. The mean (include
corrections for the constraints, if any) is store in the vector mean.
Author(s)
Havard Rue hrue@r-inla.org
Examples
g = system.file("demodata/germany.graph", package="INLA")
Q = inla.graph2matrix(g)
diag(Q) = dim(Q)[1L]
x = inla.qsample(10, Q)
## Not run: matplot(x)
x = inla.qsample(10, Q, logdens=TRUE)
## Not run: matplot(x$sample)
n = 3
Q = diag(n)
ns = 2
## sample and evaluate a sample
x = inla.qsample(n, Q=Q, logdens=TRUE)
xx = inla.qsample(Q=Q, sample = x$sample)
print(x$logdens - xx$logdens)
## the use of a constraint
constr = list(A = matrix(rep(1, n), 1, n), e = 0)
x = inla.qsample(n, Q=Q, constr=constr)
print(constr$A %*% x)
## control the RNG (require serial mode)
x = inla.qsample(n, Q=Q, seed = 123, num.threads="1:1")
## restart from same seed, only sample 1
xx = inla.qsample(n=1, Q=Q, seed = 123, num.threads="1:1")
## continue from the save state, sample the remaining 2
xxx = inla.qsample(n=n-1, Q=Q, seed = -1, num.threads="1:1")
## should be 0
print(x - cbind(xx, xxx))