Expectations (fitted values) of the response drawn from the posterior distribution of fitted model using a Gaussian approximation to the posterior or a simple Metropolis Hastings sampler.
fitted_samples(model, ...)# S3 method for gam
fitted_samples(
model,
n = 1,
data = newdata,
seed = NULL,
scale = c("response", "linear_predictor"),
method = c("gaussian", "mh", "inla", "user"),
n_cores = 1,
burnin = 1000,
thin = 1,
t_df = 40,
rw_scale = 0.25,
freq = FALSE,
unconditional = FALSE,
draws = NULL,
mvn_method = c("mvnfast", "mgcv"),
...,
newdata = NULL,
ncores = NULL
)
A tibble (data frame) with 3 columns containing the posterior predicted values in long format. The columns are
row
(integer) the row of data
that each posterior draw relates to,
draw
(integer) an index, in range 1:n
, indicating which draw each row
relates to,
response
(numeric) the predicted response for the indicated row of
data
.
a fitted model of the supported types
arguments passed to other methods. For fitted_samples()
, these
are passed on to mgcv::predict.gam()
. For posterior_samples()
these are
passed on to fitted_samples()
. For predicted_samples()
these are
passed on to the relevant simulate()
method.
numeric; the number of posterior samples to return.
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 data
, if available in model
.
numeric; a random seed for the simulations.
character; what scale should the fitted values be returned on?
"linear predictor"
is a synonym for "link"
if you prefer that
terminology.
character; which method should be used to draw samples from
the posterior distribution. "gaussian"
uses a Gaussian (Laplace)
approximation to the posterior. "mh"
uses a Metropolis Hastings sampler
that alternates t proposals with proposals based on a shrunken version of
the posterior covariance matrix. "inla"
uses a variant of Integrated
Nested Laplace Approximation due to Wood (2019), (currently not
implemented). "user"
allows for user-supplied posterior draws
(currently not implemented).
number of cores for generating random variables from a
multivariate normal distribution. Passed to mvnfast::rmvn()
.
Parallelization will take place only if OpenMP is supported (but appears
to work on Windows with current R
).
numeric; number of samples to discard as the burnin draws.
Only used with method = "mh"
.
numeric; the number of samples to skip when taking n
draws.
Results in thin * n
draws from the posterior being taken. Only used with
method = "mh"
.
numeric; degrees of freedom for t distribution proposals. Only
used with method = "mh"
.
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 method = "mh"
.
logical; TRUE
to use the frequentist covariance matrix of
the parameter estimators, FALSE
to use the Bayesian posterior
covariance matrix of the parameters.
logical; if TRUE
(and freq == FALSE
) then the
Bayesian smoothing parameter uncertainty corrected covariance matrix is
used, if available.
matrix; user supplied posterior draws to be used when
method = "user"
.
character; one of "mvnfast"
or "mgcv"
. The default is
uses mvnfast::rmvn()
, which can be considerably faster at generate large
numbers of MVN random values than mgcv::rmvn()
, but which might not work
for some marginal fits, such as those where the covariance matrix is close
to singular.
Deprecated: use data
instead.
Deprecated; use n_cores
instead. The number of cores for
generating random variables from a multivariate normal distribution.
Passed to mvnfast::rmvn()
. Parallelization will take place only if
OpenMP is supported (but appears to work on Windows with current R
).
Gavin L. Simpson
Wood, S.N., (2020). Simplified integrated nested Laplace approximation. Biometrika 107, 223--230. tools:::Rd_expr_doi("10.1093/biomet/asz044")
load_mgcv()
# \dontshow{
op <- options(pillar.sigfig = 3, cli.unicode = FALSE)
# }
dat <- data_sim("eg1", n = 1000, dist = "normal", scale = 2, seed = 2)
m1 <- gam(y ~ s(x0) + s(x1) + s(x2) + s(x3), data = dat, method = "REML")
fs <- fitted_samples(m1, n = 5, seed = 42)
# \donttest{
fs
# }
# can generate own set of draws and use them
drws <- generate_draws(m1, n = 2, seed = 24)
fs2 <- fitted_samples(m1, method = "user", draws = drws)
# \donttest{
fs2
# }
# \dontshow{
options(op)
# }
Run the code above in your browser using DataLab