smooth_samples {gratia} | R Documentation |
Posterior draws for individual smooths
Description
Returns draws from the posterior distributions of smooth functions in a GAM. Useful, for example, for visualising the uncertainty in individual estimated functions.
Usage
smooth_samples(model, ...)
## S3 method for class 'gam'
smooth_samples(
model,
select = NULL,
term = deprecated(),
n = 1,
data = newdata,
method = c("gaussian", "mh", "inla", "user"),
seed = NULL,
freq = FALSE,
unconditional = FALSE,
n_cores = 1L,
n_vals = 200,
burnin = 1000,
thin = 1,
t_df = 40,
rw_scale = 0.25,
rng_per_smooth = FALSE,
draws = NULL,
partial_match = NULL,
mvn_method = c("mvnfast", "mgcv"),
...,
newdata = NULL,
ncores = NULL
)
Arguments
model |
a fitted model of the supported types |
... |
arguments passed to other methods. For |
select |
character; select which smooth's posterior to draw from.
The default ( |
term |
|
n |
numeric; the number of posterior samples to return. |
data |
data frame; new observations at which the posterior draws
from the model should be evaluated. If not supplied, the data used to fit
the model will be used for |
method |
character; which method should be used to draw samples from
the posterior distribution. |
seed |
numeric; a random seed for the simulations. |
freq |
logical; |
unconditional |
logical; if |
n_cores |
number of cores for generating random variables from a
multivariate normal distribution. Passed to |
n_vals |
numeric; how many locations to evaluate the smooth at if
|
burnin |
numeric; number of samples to discard as the burnin draws.
Only used with |
thin |
numeric; the number of samples to skip when taking |
t_df |
numeric; degrees of freedom for t distribution proposals. Only
used with |
rw_scale |
numeric; Factor by which to scale posterior covariance
matrix when generating random walk proposals. Negative or non finite to
skip the random walk step. Only used with |
rng_per_smooth |
logical; if TRUE, the behaviour of gratia version 0.8.1 or earlier is used, whereby a separate call the the random number generator (RNG) is performed for each smooth. If FALSE, a single call to the RNG is performed for all model parameters |
draws |
matrix; user supplied posterior draws to be used when
|
partial_match |
logical; should smooths be selected by partial matches
with |
mvn_method |
character; one of |
newdata |
Deprecated: use |
ncores |
Deprecated; use |
Value
A tibble with additional classes "smooth_samples"
and
'"posterior_samples".
For the "gam"
method, the columns currently returned (not in this order)
are:
-
.smooth
; character vector. Indicates the smooth function for that particular draw, -
.term
; character vector. Similar tosmooth
, but will contain the full label for the smooth, to differentiate factor-by smooths for example. -
.by
; character vector. If the smooth involves aby
term, the by variable will be named here,NA_character_
otherwise. -
.row
; integer. A vector of valuesseq_len(n_vals)
, repeated ifn > 1L
. Indexes the row indata
for that particular draw. -
.draw
; integer. A vector of integer values indexing the particular posterior draw that each row belongs to. -
.value
; numeric. The value of smooth function for this posterior draw and covariate combination. -
xxx
; numeric. A series of one or more columns containing data required for the smooth, named as per the variables involved in the respective smooth. Additional columns will be present in the case of factor by smooths, which will contain the level for the factor named in
by_variable
for that particular posterior draw.
Warning
The set of variables returned and their order in the tibble is subject to change in future versions. Don't rely on position.
Author(s)
Gavin L. Simpson
Examples
load_mgcv()
dat <- data_sim("eg1", n = 400, seed = 2)
m1 <- gam(y ~ s(x0) + s(x1) + s(x2) + s(x3), data = dat, method = "REML")
sms <- smooth_samples(m1, select = "s(x0)", n = 5, seed = 42)
sms
## A factor by example (with a spurious covariate x0)
dat <- data_sim("eg4", n = 1000, seed = 2)
## fit model...
m2 <- gam(y ~ fac + s(x2, by = fac) + s(x0), data = dat)
sms <- smooth_samples(m2, n = 5, seed = 42)
draw(sms)