GPModel
objectCreate a GPModel
which contains a Gaussian process and / or mixed effects model with grouped random effects
GPModel(likelihood = "gaussian", group_data = NULL,
group_rand_coef_data = NULL, ind_effect_group_rand_coef = NULL,
drop_intercept_group_rand_effect = NULL, gp_coords = NULL,
gp_rand_coef_data = NULL, cov_function = "matern", cov_fct_shape = 1.5,
gp_approx = "none", num_parallel_threads = NULL,
cov_fct_taper_range = 1, cov_fct_taper_shape = 1, num_neighbors = 20L,
vecchia_ordering = "random", ind_points_selection = "kmeans++",
num_ind_points = 500L, cover_tree_radius = 1,
matrix_inversion_method = "cholesky", seed = 0L, cluster_ids = NULL,
likelihood_additional_param = NULL, free_raw_data = FALSE,
vecchia_approx = NULL, vecchia_pred_type = NULL,
num_neighbors_pred = NULL)
A GPModel
containing ontains a Gaussian process and / or mixed effects model with grouped random effects
A string
specifying the likelihood function (distribution) of the response variable.
Available options:
"gaussian"
"bernoulli_probit": binary data with Bernoulli likelihood and a probit link function
"bernoulli_logit": binary data with Bernoulli likelihood and a logit link function
"gamma": gamma distribution with a with log link function
"poisson": Poisson distribution with a with log link function
"negative_binomial": negative binomial distribution with a with log link function
"t": t-distribution (e.g., for robust regression)
"t_fix_df": t-distribution with the degrees-of-freedom (df) held fixed and not estimated.
The df can be set via the likelihood_additional_param
parameter
Note: other likelihoods could be implemented upon request
A vector
or matrix
whose columns are categorical grouping variables.
The elements being group levels defining grouped random effects.
The elements of 'group_data' can be integer, double, or character.
The number of columns corresponds to the number of grouped (intercept) random effects
A vector
or matrix
with numeric covariate data
for grouped random coefficients
A vector
with integer indices that
indicate the corresponding categorical grouping variable (=columns) in 'group_data' for
every covariate in 'group_rand_coef_data'. Counting starts at 1.
The length of this index vector must equal the number of covariates in 'group_rand_coef_data'.
For instance, c(1,1,2) means that the first two covariates (=first two columns) in 'group_rand_coef_data'
have random coefficients corresponding to the first categorical grouping variable (=first column) in 'group_data',
and the third covariate (=third column) in 'group_rand_coef_data' has a random coefficient
corresponding to the second grouping variable (=second column) in 'group_data'
A vector
of type logical
(boolean).
Indicates whether intercept random effects are dropped (only for random coefficients).
If drop_intercept_group_rand_effect[k] is TRUE, the intercept random effect number k is dropped / not included.
Only random effects with random slopes can be dropped.
A matrix
with numeric coordinates (= inputs / features) for defining Gaussian processes
A vector
or matrix
with numeric covariate data for
Gaussian process random coefficients
A string
specifying the covariance function for the Gaussian process.
Available options:
"exponential": Exponential covariance function (using the parametrization of Diggle and Ribeiro, 2007)
"gaussian": Gaussian, aka squared exponential, covariance function (using the parametrization of Diggle and Ribeiro, 2007)
"matern": Matern covariance function with the smoothness specified by
the cov_fct_shape
parameter (using the parametrization of Rasmussen and Williams, 2006)
"powered_exponential": powered exponential covariance function with the exponent specified by
the cov_fct_shape
parameter (using the parametrization of Diggle and Ribeiro, 2007)
"wendland": Compactly supported Wendland covariance function (using the parametrization of Bevilacqua et al., 2019, AOS)
"matern_space_time": Spatio-temporal Matern covariance function with different range parameters for space and time.
Note that the first column in gp_coords
must correspond to the time dimension
"matern_ard": anisotropic Matern covariance function with Automatic Relevance Determination (ARD),
i.e., with a different range parameter for every coordinate dimension / column of gp_coords
"gaussian_ard": anisotropic Gaussian, aka squared exponential, covariance function with Automatic Relevance Determination (ARD),
i.e., with a different range parameter for every coordinate dimension / column of gp_coords
A numeric
specifying the shape parameter of the covariance function
(=smoothness parameter for Matern covariance)
This parameter is irrelevant for some covariance functions such as the exponential or Gaussian
A string
specifying the large data approximation
for Gaussian processes. Available options:
"none": No approximation
"vecchia": A Vecchia approximation; see Sigrist (2022, JMLR) for more details
"tapering": The covariance function is multiplied by a compactly supported Wendland correlation function
"fitc": Fully Independent Training Conditional approximation aka modified predictive process approximation; see Gyger, Furrer, and Sigrist (2024) for more details
"full_scale_tapering": A full scale approximation combining an inducing point / predictive process approximation with tapering on the residual process; see Gyger, Furrer, and Sigrist (2024) for more details
"vecchia_latent": similar as "vecchia" but a Vecchia approximation is applied to the latent Gaussian process for likelihood == "gaussian". For likelihood != "gaussian", "vecchia" and "vecchia_latent" are equivalent
An integer
specifying the number of parallel threads for OMP.
If num_parallel_threads = NULL, all available threads are used
A numeric
specifying the range parameter
of the Wendland covariance function and Wendland correlation taper function.
We follow the notation of Bevilacqua et al. (2019, AOS)
A numeric
specifying the shape (=smoothness) parameter
of the Wendland covariance function and Wendland correlation taper function.
We follow the notation of Bevilacqua et al. (2019, AOS)
An integer
specifying the number of neighbors for
the Vecchia approximation. Note: for prediction, the number of neighbors can
be set through the 'num_neighbors_pred' parameter in the 'set_prediction_data'
function. By default, num_neighbors_pred = 2 * num_neighbors. Further,
the type of Vecchia approximation used for making predictions is set through
the 'vecchia_pred_type' parameter in the 'set_prediction_data' function
A string
specifying the ordering used in
the Vecchia approximation. Available options:
"none": the default ordering in the data is used
"random": a random ordering
"time": ordering accorrding to time (only for space-time models)
"time_random_space": ordering according to time and randomly for all spatial points with the same time points (only for space-time models)
A string
specifying the method for choosing inducing points
Available options:
"kmeans++: the k-means++ algorithm
"cover_tree": the cover tree algorithm
"random": random selection from data points
An integer
specifying the number of inducing
points / knots for, e.g., a predictive process approximation
A numeric
specifying the radius (= "spatial resolution")
for the cover tree algorithm
A string
specifying the method used for inverting covariance matrices.
Available options:
"cholesky": Cholesky factorization
"iterative": iterative methods. A combination of conjugate gradient, Lanczos algorithm, and other methods. This is currently only supported for the following cases:
likelihood != "gaussian" and gp_approx == "vecchia" (non-Gaussian likelihoods with a Vecchia-Laplace approximation)
likelihood == "gaussian" and gp_approx == "full_scale_tapering" (Gaussian likelihood with a full-scale tapering approximation)
An integer
specifying the seed used for model creation
(e.g., random ordering in Vecchia approximation)
A vector
with elements indicating independent realizations of
random effects / Gaussian processes (same values = same process realization).
The elements of 'cluster_ids' can be integer, double, or character.
A numeric
specifying an additional parameter for the likelihood
which cannot be estimated for this likelihood
(e.g., degrees of freedom for likelihood = "t_fix_df"
).
This is not to be confused with any auxiliary parameters that can be estimated and accessed through
the function get_aux_pars
after estimation.
Note that this likelihood_additional_param
parameter is irrelevant for many likelihoods.
If likelihood_additional_param = NULL
, the following internal default values are used:
df = 2 for likelihood = "t_fix_df"
A boolean
. If TRUE, the data (groups, coordinates, covariate data for random coefficients)
is freed in R after initialization
Discontinued. Use the argument gp_approx
instead
A string
specifying the type of Vecchia approximation used for making predictions.
This is discontinued here. Use the function 'set_prediction_data' to specify this
an integer
specifying the number of neighbors for making predictions.
This is discontinued here. Use the function 'set_prediction_data' to specify this
Fabio Sigrist
# See https://github.com/fabsig/GPBoost/tree/master/R-package for more examples
data(GPBoost_data, package = "gpboost")
#--------------------Grouped random effects model: single-level random effect----------------
gp_model <- GPModel(group_data = group_data[,1], likelihood="gaussian")
#--------------------Gaussian process model----------------
gp_model <- GPModel(gp_coords = coords, cov_function = "matern", cov_fct_shape = 1.5,
likelihood="gaussian")
#--------------------Combine Gaussian process with grouped random effects----------------
gp_model <- GPModel(group_data = group_data,
gp_coords = coords, cov_function = "matern", cov_fct_shape = 1.5,
likelihood="gaussian")
Run the code above in your browser using DataLab