qsample {INLA} | R Documentation |
This function generate samples from a GMRF using the GMRFLib implementation
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 = if (seed == 0L) "0:0" else NULL, selection = NULL, verbose = FALSE)
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. |
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
.
Havard Rue hrue@r-inla.org
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))