Description Usage Arguments Details Value Functions See Also Examples
Functions for combining data, effects and observation matrices into
inla.stack
objects, and extracting information from such
objects.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | inla.stack.remove.unused(stack)
inla.stack.compress(stack, remove.unused = TRUE)
inla.stack(..., compress = TRUE, remove.unused = TRUE)
inla.stack.sum(data, A, effects, tag = "", compress = TRUE,
remove.unused = TRUE)
inla.stack.join(..., compress = TRUE, remove.unused = TRUE)
inla.stack.index(stack, tag)
inla.stack.LHS(stack)
inla.stack.RHS(stack)
inla.stack.data(stack, ...)
inla.stack.A(stack)
|
stack |
A |
remove.unused |
If |
... |
For |
compress |
If |
data |
A list or codedata.frame of named data vectors. Scalars are expanded to match the number of rows in the A matrices, or any non-scalar data vectors. An error is given if the input is inconsistent. |
A |
A list of observation matrices. Scalars are expanded to diagonal matrices matching the effect vector lengths. An error is given if the input is inconsistent or ambiguous. |
effects |
A collection of effects/predictors. Each list element corresponds
to an observation matrix, and must either be a single vector, a
list of vectors, or a |
tag |
A string specifying a tag for later identification. |
For models with a single effects collection, the outer list container for A
and effects
may be omitted.
Component size definitions:
[n_l] effect blocks
[n_k] effects
[n_i] data values
[n_jl] effect size for block l
[n_j] sum_l n_jl total effect size
Input:
[data
] p vectors,
each of length n_i
[A
] matrices of size
n_i by n_jl
[effects
] collections of effect vectors
of length n_jl
predictor(y^1, …, y^p) ~ sum_{l=1}^{n_l} A^l sum_{k=1}^{n_k} g(k, x^{k,l}) = tilde{A} sum_{k=1}^{n_k} g(k, tilde{x}^k)
where
tilde{A} = cbind( A^1, ..., A^{n_l} )
tilde{x}^k = rbind( x^{k,1}, ..., x^{k,n_l} )
and for each block l, any missing x^{k,l} is replaced by an
NA
vector.
A data stack of class inla.data.stack
. Elements:
data
=(y^1, …, y^p, \tilde{x}^1, …, \tilde{x}^{n_k})
A
=\tilde{A}
data.names
List of data names, length p
effect.names
List of effect names, length n_k
n.data
Data length, n_i
index
List indexed by tag
s, each element indexing
into i=1, …, n_i
inla.stack.remove.unused
: Remove unused entries from an existing stack
inla.stack.compress
: Compress an existing stack by removing duplicates
inla.stack
: Shorthand for inla.stack.join and inla.stack.sum
inla.stack.sum
: Create data stack as a sum of predictors
inla.stack.join
: Join two or more data stacks
inla.stack.index
: Extract tagged indices
inla.stack.LHS
: Extract data associated with the "left hand side" of the model
(e.g. the data itself, Ntrials
, link
, E
)
inla.stack.RHS
: Extract data associated with the "right hand side" of the model
(all the covariates/predictors)
inla.stack.data
: Extract data for an inla call, and optionally join with other variables
inla.stack.A
: Extract the "A matrix" for control.predictor
inla.spde.make.A
,
inla.spde.make.index
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 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 | n <- 200
loc <- matrix(runif(n*2), n, 2)
mesh <- inla.mesh.2d(loc.domain = loc,
max.edge=c(0.05, 0.2))
proj.obs <- inla.mesh.projector(mesh, loc = loc)
proj.pred <- inla.mesh.projector(mesh, loc = mesh$loc)
spde <- inla.spde2.pcmatern(mesh,
prior.range = c(0.01, 0.01),
prior.sigma = c(10, 0.01))
covar <- rnorm(n)
field <- inla.qsample(n = 1, Q = inla.spde.precision(spde, theta = log(c(0.5, 1))))[,1]
y <- 2*covar + inla.mesh.project(proj.obs, field)
A.obs <- inla.spde.make.A(mesh, loc = loc)
A.pred = inla.spde.make.A(mesh, loc = proj.pred$loc)
stack.obs <-
inla.stack(data=list(y=y),
A=list(A.obs, 1),
effects=list(c(list(Intercept = 1),
inla.spde.make.index("spatial", spde$n.spde)),
covar=covar),
tag="obs")
stack.pred <-
inla.stack(data=list(y=NA),
A=list(A.pred),
effects=list(c(list(Intercept = 1),
inla.spde.make.index("spatial", mesh$n))),
tag="pred")
stack <- inla.stack(stack.obs, stack.pred)
formula <- y ~ -1 + Intercept + covar + f(spatial, model=spde)
result1 <- inla(formula,
data=inla.stack.data(stack.obs, spde = spde),
family="gaussian",
control.predictor = list(A = inla.stack.A(stack.obs),
compute = TRUE))
plot(y, result1$summary.fitted.values[inla.stack.index(stack.obs,"obs")$data, "mean"],
main = "Observations vs posterior predicted values at the data locations")
result2 <- inla(formula,
data=inla.stack.data(stack, spde = spde),
family="gaussian",
control.predictor = list(A = inla.stack.A(stack),
compute = TRUE))
field.pred <- inla.mesh.project(proj.pred,
result2$summary.fitted.values[inla.stack.index(stack,"pred")$data, "mean"])
field.pred.sd <- inla.mesh.project(proj.pred,
result2$summary.fitted.values[inla.stack.index(stack,"pred")$data, "sd"])
plot(field, field.pred, main = "True vs predicted field")
abline(0, 1)
image(inla.mesh.project(mesh,
field = field,
dims = c(200,200)),
main = "True field")
image(inla.mesh.project(mesh,
field = field.pred,
dims = c(200,200)),
main = "Posterior field mean")
image(inla.mesh.project(mesh,
field = field.pred.sd,
dims = c(200,200)),
main = "Prediction standard deviation")
plot(field, (field.pred - field) / 1,
main = "True field vs standardised prediction residuals")
|
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.