gp | R Documentation |
Set up a Gaussian process (GP) term in brms. The function does not evaluate its arguments – it exists purely to help set up a model with GP terms.
gp(
...,
by = NA,
k = NA,
cov = "exp_quad",
iso = TRUE,
gr = TRUE,
cmc = TRUE,
scale = TRUE,
c = 5/4
)
... |
One or more predictors for the GP. |
by |
A numeric or factor variable of the same length as each predictor. In the numeric vector case, the elements multiply the values returned by the GP. In the factor variable case, a separate GP is fitted for each factor level. |
k |
Optional number of basis functions for computing Hilbert-space
approximate GPs. If |
cov |
Name of the covariance kernel. Currently supported are
|
iso |
A flag to indicate whether an isotropic ( |
gr |
Logical; Indicates if auto-grouping should be used (defaults
to |
cmc |
Logical; Only relevant if |
scale |
Logical; If |
c |
Numeric value only used in approximate GPs. Defines the
multiplicative constant of the predictors' range over which
predictions should be computed. A good default could be |
A GP is a stochastic process, which
describes the relation between one or more predictors
x = (x_1, ..., x_d)
and a response f(x)
, where
d
is the number of predictors. A GP is the
generalization of the multivariate normal distribution
to an infinite number of dimensions. Thus, it can be
interpreted as a prior over functions. The values of f( )
at any finite set of locations are jointly multivariate
normal, with a covariance matrix defined by the covariance
kernel k_p(x_i, x_j)
, where p
is the vector of parameters
of the GP:
(f(x_1), \ldots f(x_n) \sim MVN(0, (k_p(x_i, x_j))_{i,j=1}^n) .
The smoothness and general behavior of the function f
depends only on the choice of covariance kernel.
For a more detailed introduction to Gaussian processes,
see https://en.wikipedia.org/wiki/Gaussian_process.
For mathematical details on the supported kernels, please see the Stan manual: https://mc-stan.org/docs/functions-reference/matrix_operations.html under "Gaussian Process Covariance Functions".
An object of class 'gp_term'
, which is a list
of arguments to be interpreted by the formula
parsing functions of brms.
brmsformula
## Not run:
# simulate data using the mgcv package
dat <- mgcv::gamSim(1, n = 30, scale = 2)
# fit a simple GP model
fit1 <- brm(y ~ gp(x2), dat, chains = 2)
summary(fit1)
me1 <- conditional_effects(fit1, ndraws = 200, spaghetti = TRUE)
plot(me1, ask = FALSE, points = TRUE)
# fit a more complicated GP model and use an approximate GP for x2
fit2 <- brm(y ~ gp(x0) + x1 + gp(x2, k = 10) + x3, dat, chains = 2)
summary(fit2)
me2 <- conditional_effects(fit2, ndraws = 200, spaghetti = TRUE)
plot(me2, ask = FALSE, points = TRUE)
# fit a multivariate GP model with Matern 3/2 kernel
fit3 <- brm(y ~ gp(x1, x2, cov = "matern32"), dat, chains = 2)
summary(fit3)
me3 <- conditional_effects(fit3, ndraws = 200, spaghetti = TRUE)
plot(me3, ask = FALSE, points = TRUE)
# compare model fit
loo(fit1, fit2, fit3)
# simulate data with a factor covariate
dat2 <- mgcv::gamSim(4, n = 90, scale = 2)
# fit separate gaussian processes for different levels of 'fac'
fit4 <- brm(y ~ gp(x2, by = fac), dat2, chains = 2)
summary(fit4)
plot(conditional_effects(fit4), points = TRUE)
## End(Not run)
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.