From 903bd335225810cb0600b9be8f5c59f7039d4d8f Mon Sep 17 00:00:00 2001 From: Deyu Ming Date: Thu, 12 Dec 2024 20:22:43 +0000 Subject: [PATCH] Documentation updates 1. Doc updates 2. Vignettes updates --- .Rbuildignore | 5 + NAMESPACE | 4 - NEWS.md | 6 +- R/alm.R | 53 +++--- R/design.R | 70 ++++---- R/dgp.R | 85 +++------ R/draw.R | 4 +- R/gp.R | 97 ++++------ R/initi_py.R | 2 +- R/kernel.R | 104 ----------- R/lgp.R | 6 +- R/likelihood.R | 150 ---------------- R/mice.R | 2 +- R/plot.R | 4 +- R/prediction.R | 2 +- R/serialization.R | 4 +- R/update.R | 14 +- R/utils.R | 97 +++++----- R/validation.R | 15 +- R/vigf.R | 10 +- _pkgdown.yml | 6 +- docs/categorical_summary.html | 12 +- inst/WORDLIST | 3 + man/Hetero.Rd | 39 ---- man/NegBin.Rd | 39 ---- man/Poisson.Rd | 39 ---- man/alm.Rd | 59 +++--- man/combine.Rd | 20 +-- man/continue.Rd | 20 +-- man/deserialize.Rd | 2 +- man/design.Rd | 219 +++++++++++++---------- man/dgp.Rd | 82 ++++----- man/draw.Rd | 24 +-- man/get_thread_num.Rd | 2 +- man/gp.Rd | 44 ++--- man/init_py.Rd | 4 +- man/kernel.Rd | 107 ----------- man/lgp.Rd | 46 ++--- man/mice.Rd | 63 ++++--- man/nllik.Rd | 14 +- man/pack.Rd | 2 +- man/plot.Rd | 21 +-- man/predict.Rd | 35 ++-- man/prune.Rd | 20 +-- man/read.Rd | 2 +- man/serialize.Rd | 2 +- man/set_id.Rd | 2 +- man/set_imp.Rd | 8 +- man/set_linked_idx.Rd | 2 +- man/set_seed.Rd | 2 +- man/set_thread_num.Rd | 2 +- man/set_vecchia.Rd | 12 +- man/summary.Rd | 2 +- man/trace_plot.Rd | 6 +- man/unpack.Rd | 6 +- man/update.Rd | 12 +- man/validate.Rd | 68 ++++--- man/vigf.Rd | 67 +++---- man/window.Rd | 20 +-- man/write.Rd | 15 +- vignettes/classification.Rmd | 12 +- vignettes/dgpsi.Rmd | 19 +- vignettes/images/categorical_summary.png | Bin 125876 -> 0 bytes vignettes/images/motorcycle_data.png | Bin 23904 -> 30281 bytes vignettes/images/seq2_design.png | Bin 28928 -> 27306 bytes vignettes/images/seq2_rmse.png | Bin 42434 -> 42378 bytes vignettes/images/seq_comparison.png | Bin 40166 -> 37223 bytes vignettes/images/seq_design.png | Bin 37623 -> 38811 bytes vignettes/images/seq_rmse.png | Bin 31720 -> 31608 bytes vignettes/large_scale_emulation.Rmd | 10 +- vignettes/linked_DGP.Rmd | 1 - vignettes/motorcycle.Rmd | 9 +- vignettes/seq_design.Rmd | 52 ++++-- vignettes/seq_design_2.Rmd | 83 +++++---- 74 files changed, 775 insertions(+), 1295 deletions(-) delete mode 100644 R/kernel.R delete mode 100644 R/likelihood.R delete mode 100644 man/Hetero.Rd delete mode 100644 man/NegBin.Rd delete mode 100644 man/Poisson.Rd delete mode 100644 man/kernel.Rd delete mode 100644 vignettes/images/categorical_summary.png diff --git a/.Rbuildignore b/.Rbuildignore index cda1635..920b614 100644 --- a/.Rbuildignore +++ b/.Rbuildignore @@ -11,4 +11,9 @@ ^RESEARCH-NOTICE\.md$ ^vignettes/images ^vignettes/motorcycle.Rmd$ +^vignettes/classification.Rmd$ +^vignettes/large_scale_emulation.Rmd$ +^vignettes/linked_DGP.Rmd$ +^vignettes/seq_design.Rmd$ +^vignettes/seq_design_2.Rmd$ ^LICENSE\.md$ diff --git a/NAMESPACE b/NAMESPACE index b051357..6c5b51d 100644 --- a/NAMESPACE +++ b/NAMESPACE @@ -29,9 +29,6 @@ S3method(validate,lgp) S3method(vigf,bundle) S3method(vigf,dgp) S3method(vigf,gp) -export(Hetero) -export(NegBin) -export(Poisson) export(alm) export(combine) export(continue) @@ -42,7 +39,6 @@ export(draw) export(get_thread_num) export(gp) export(init_py) -export(kernel) export(lgp) export(mice) export(nllik) diff --git a/NEWS.md b/NEWS.md index f252ac4..700633e 100644 --- a/NEWS.md +++ b/NEWS.md @@ -15,8 +15,8 @@ - The `plot()` function has been updated to generate validation plots for DGP classifiers (i.e., DGP emulators with categorical likelihoods) and linked emulators created by `lgp()` using the new data frame form for `struc`. - The `summary()` function has been redesigned to provide both summary tables and visualizations of structure and model specifications for (D)GP and linked (D)GP emulators. - A `sample_size` argument has been added to the `validate()` and `plot()` functions, allowing users to adjust the number of samples used for validation when the validation method is set to `sampling`. -- The following functions are deprecated as of this version and will be removed in the next release: `combine()`, `set_linked_idx()`, `kernel()`, `Poisson()`, `Hetero()`, and `NegBin()`. These functions are no longer maintained. Please refer to the updated package documentation for alternative workflows. -- The basic node functions `kernel()`, `Hetero()`, `Poisson()`, and `NegBin()`, along with the `struc` argument in the `gp()` and `dgp()` functions, have been deprecated as of this version and will be removed in the next release. Customization of (D)GP specifications can be achieved by modifying the other arguments in `gp()` and `dgp()`. +- `combine()` and `set_linked_idx()` are deprecated as of this version and will be removed in the next release. These two functions are no longer maintained. Please refer to the updated package documentation for alternative workflows. +- The basic node functions `kernel()`, `Hetero()`, `Poisson()`, and `NegBin()`, along with the `struc` argument in the `gp()` and `dgp()` functions, have been removed as of this version. Customization of (D)GP specifications can be achieved by modifying the other arguments in `gp()` and `dgp()`. - The `draw()` function has been updated for instances of the `bundle` class to allow drawing of design and evaluation plots of all emulators in a single figure. - The `plot()` function has been updated for linked emulators generated by `lgp()` using the new data frame form for `struc`. - The `design()` function has been redesigned to allow new specifications of the user-supplied `method` function. @@ -28,6 +28,8 @@ - The `write()` function now allows `light = TRUE` for both GP emulators and bundles of GP emulators. - Two new functions, `serialize()` and `deserialize()`, have been added to allow users to export emulators to multi-session workers for parallel processing. - Additional vignettes are available, showcasing large-scale DGP emulation and DGP classification. +- Enhanced clarity and consistency across the documentation. +- Improved examples and explanations in vignettes for better user guidance. # dgpsi 2.4.0 - One can now use `design()` to implement sequential designs using `f` and a fixed candidate set passed to `x_cand` with `y_cand = NULL`. diff --git a/R/alm.R b/R/alm.R index e6aef4d..3f3878f 100644 --- a/R/alm.R +++ b/R/alm.R @@ -7,10 +7,10 @@ #' * the S3 class `gp`. #' * the S3 class `dgp`. #' * the S3 class `bundle`. -#' @param x_cand a matrix (with each row containing a design point and column representing an input dimension) that gives a candidate set -#' from which the next design point(s) are determined. If `object` is an instance of the `bundle` class and `aggregate` is not supplied, `x_cand` could also -#' be a list with length equal to the number of emulators contained in `object`. In this case, each slot in `x_cand` should be a candidate set matrix -#' for each emulator included in the bundle. Defaults to `NULL`. +#' @param x_cand a matrix (with each row being a design point and column being an input dimension) that gives a candidate set +#' from which the next design point(s) are determined. If `object` is an instance of the `bundle` class and `aggregate` is not supplied, `x_cand` can also be a list. +#' The list must have a length equal to the number of emulators in `object`, with each element being a matrix representing the candidate set for a corresponding +#' emulator in the bundle. Defaults to `NULL`. #' @param n_start an integer that gives the number of initial design points to be used to determine next design point(s). This argument #' is only used when `x_cand` is `NULL`. Defaults to `20`. #' @param batch_size an integer that gives the number of design points to be chosen. Defaults to `1`. @@ -33,37 +33,40 @@ #' of the matrix is equal to: #' - the emulator output dimension if `object` is an instance of the `dgp` class; or #' - the number of emulators contained in `object` if `object` is an instance of the `bundle` class. -#' * the output should be a vector that aggregates scores across outputs or emulators at different design points. +#' * the output should be a vector that gives aggregate scores at different design points. #' -#' Set to `NULL` to disable the aggregation. Defaults to `NULL`. +#' Set to `NULL` to disable aggregation. Defaults to `NULL`. #' @param ... any arguments (with names different from those of arguments used in [alm()]) that are used by `aggregate` #' can be passed here. #' #' @return -#' 1. If `x_cand` is not `NULL` and: -#' - `object` is an instance of the `gp` class, a vector is returned with length equal to `batch_size`, giving the positions (i.e., row numbers) -#' of next design points from `x_cand`. -#' - `object` is an instance of the `dgp` class, a vector is returned with length equal to `batch_size * D`, giving positions (i.e., row numbers) -#' of next design points from `x_cand` to be added to the DGP emulator. `D` equals to the number of output dimensions of the DGP -#' emulator if there is no likelihood layer in the hierarchy. If `object` is a DGP emulator with either `Hetero` or `NegBin` likelihood layer, -#' `D = 2`. If `object` is a DGP emulator with a `Categorical` likelihood layer, `D` equals to one (for binary output) or `K` (for multi-class output with `K` classes). -#' - `object` is an instance of the `bundle` class, a matrix is returned with row number equal to `batch_size` and column number equal to the number of -#' emulators in the bundle, giving positions (i.e., row numbers) of next design points from `x_cand` to be added to individual emulators. -#' 2. If `x_cand = NULL` and: -#' - `object` is an instance of the `gp` class, a matrix is returned with row number equal to `batch_size`, giving the next design points to be evaluated. -#' - `object` is an instance of the `dgp` class, a matrix is returned with row number equal to `batch_size * D` where `D` is the number of output dimensions of the DGP -#' emulator if no likelihood layer is included. If `object` is a DGP emulator with either `Hetero` or `NegBin` likelihood layer, `D = 2`. If `object` is a DGP emulator -#' with a `Categorical` likelihood layer, `D` equals to one (for binary output) or `K` (for multi-class output with `K` classes). -#' - `object` is an instance of the `bundle` class, a list is returned with the length equal to the number of -#' emulators in the bundle. Each element in the list is a matrix with row number equal to `batch_size`, giving next design points to be added to individual emulators. +#' 1. If `x_cand` is not `NULL`: +#' - When `object` is an instance of the `gp` class, a vector of length `batch_size` is returned, containing the positions +#' (row numbers) of the next design points from `x_cand`. +#' - When `object` is an instance of the `dgp` class, a vector of length `batch_size * D` is returned, containing the positions +#' (row numbers) of the next design points from `x_cand` to be added to the DGP emulator. +#' * `D` is the number of output dimensions of the DGP emulator if no likelihood layer is included. +#' * For a DGP emulator with a `Hetero` or `NegBin` likelihood layer, `D = 2`. +#' * For a DGP emulator with a `Categorical` likelihood layer, `D = 1` for binary output or `D = K` for multi-class output with `K` classes. +#' - When `object` is an instance of the `bundle` class, a matrix is returned with `batch_size` rows and a column for each emulator in +#' the bundle, containing the positions (row numbers) of the next design points from `x_cand` for individual emulators. +#' 2. If `x_cand` is `NULL`: +#' - When `object` is an instance of the `gp` class, a matrix with `batch_size` rows is returned, giving the next design points to be evaluated. +#' - When `object` is an instance of the `dgp` class, a matrix with `batch_size * D` rows is returned, where: +#' - `D` is the number of output dimensions of the DGP emulator if no likelihood layer is included. +#' - For a DGP emulator with a `Hetero` or `NegBin` likelihood layer, `D = 2`. +#' - For a DGP emulator with a `Categorical` likelihood layer, `D = 1` for binary output or `D = K` for multi-class output with `K` classes. +#' - When `object` is an instance of the `bundle` class, a list is returned with a length equal to the number of emulators in the bundle. Each +#' element of the list is a matrix with `batch_size` rows, where each row represents a design point to be added to the corresponding emulator. #' #' @note -#' The column order of the first argument of `aggregate` must be consistent with the order of emulator output dimensions (if `object` is an instance of the -#' `dgp` class), or the order of emulators placed in `object` if `object` is an instance of the `bundle` class. +#' The first column of the matrix supplied to the first argument of `aggregate` must correspond to the first output dimension of the DGP emulator +#' if `object` is an instance of the `dgp` class, and so on for subsequent columns and dimensions. If `object` is an instance of the `bundle` class, +#' the first column must correspond to the first emulator in the bundle, and so on for subsequent columns and emulators. #' @references #' MacKay, D. J. (1992). Information-based objective functions for active data selection. *Neural Computation*, **4(4)**, 590-604. #' -#' @details See further examples and tutorials at . +#' @details See further examples and tutorials at <`r get_docs_url()`>. #' @examples #' \dontrun{ #' diff --git a/R/design.R b/R/design.R index 2ad2e2f..847a82b 100644 --- a/R/design.R +++ b/R/design.R @@ -51,9 +51,9 @@ #' * if `object` is an instance of the `bundle` class, `y_test` is a matrix with each row representing the outputs for the corresponding row of `x_test` and each column representing the output of the different emulators in the bundle. #' #' Set to `NULL` for LOO-based emulator validation. Defaults to `NULL`. This argument is only used if `eval = NULL`. -#' @param reset A boolean or a vector of booleans indicating whether to reset the hyperparameters of the emulator(s) to their initial values (as set during initial construction) before re-fitting. +#' @param reset A bool or a vector of bools indicating whether to reset the hyperparameters of the emulator(s) to their initial values (as set during initial construction) before re-fitting. #' The re-fitting occurs based on the frequency specified by `freq[1]`. This option is useful when hyperparameters are suspected to have converged to a local optimum affecting validation performance. -#' - If a single boolean is provided, it applies to every iteration of the sequential design. +#' - If a single bool is provided, it applies to every iteration of the sequential design. #' - If a vector is provided, its length must equal `N` (even if the re-fit frequency specified in `freq[1]` is not 1) and it will apply to the corresponding iterations of the sequential design. #' #' Defaults to `FALSE`. @@ -91,18 +91,18 @@ #' #' If no custom function is provided, a built-in evaluation metric (RMSE or log-loss, in the case of DGP emulators with categorical likelihoods) will be used. #' Defaults to `NULL`. See the *Note* section below for additional details. -#' @param verb a boolean indicating if trace information will be printed during the sequential design. +#' @param verb a bool indicating if trace information will be printed during the sequential design. #' Defaults to `TRUE`. #' @param autosave a list that contains configuration settings for the automatic saving of the emulator: -#' * `switch`: a boolean indicating whether to enable automatic saving of the emulator during sequential design. When set to `TRUE`, +#' * `switch`: a bool indicating whether to enable automatic saving of the emulator during sequential design. When set to `TRUE`, #' the emulator in the final iteration is always saved. Defaults to `FALSE`. #' * `directory`: a string specifying the directory path where the emulators will be stored. Emulators will be stored in a sub-directory #' of `directory` named 'emulator-`id`'. Defaults to './check_points'. #' * `fname`: a string representing the base name for the saved emulator files. Defaults to 'check_point'. #' * `save_freq`: an integer indicating the frequency of automatic saves, measured in the number of iterations. Defaults to `5`. -#' * `overwrite`: a boolean value controlling the file saving behavior. When set to `TRUE`, each new automatic save overwrites the previous one, +#' * `overwrite`: a bool value controlling the file saving behavior. When set to `TRUE`, each new automatic save overwrites the previous one, #' keeping only the latest version. If `FALSE`, each automatic save creates a new file, preserving all previous versions. Defaults to `FALSE`. -#' @param new_wave a boolean indicating whether the current call to [design()] will create a new wave of sequential designs or add the next sequence of designs to the most recent wave. +#' @param new_wave a bool indicating whether the current call to [design()] will create a new wave of sequential designs or add the next sequence of designs to the most recent wave. #' This argument is relevant only if waves already exist in the emulator. Creating new waves can improve the visualization of sequential design performance across different calls #' to [design()] via [draw()], and allows for specifying a different evaluation frequency in `freq`. However, disabling this option can help limit the number of waves visualized #' in [draw()] to avoid issues such as running out of distinct colors for large numbers of waves. Defaults to `TRUE`. @@ -123,9 +123,9 @@ #' if the DGP emulator was constructed without the Vecchia approximation. Otherwise, the number of processes is set to `max physical cores available %/% 2`. #' Only use multiple processes when there is a large number of GP components in different layers and optimization of GP components #' is computationally expensive. Defaults to `1`. -#' @param pruning a boolean indicating if dynamic pruning of DGP structures will be implemented during the sequential design after the total number of +#' @param pruning a bool indicating if dynamic pruning of DGP structures will be implemented during the sequential design after the total number of #' design points exceeds `min_size` in `control`. The argument is only applicable to DGP emulators (i.e., `object` is an instance of `dgp` class) -#' produced by `dgp()` with `struc = NULL`. Defaults to `TRUE`. +#' produced by `dgp()`. Defaults to `TRUE`. #' @param control a list that can supply any of the following components to control the dynamic pruning of the DGP emulator: #' * `min_size`, the minimum number of design points required to trigger dynamic pruning. Defaults to 10 times the number of input dimensions. #' * `threshold`, the \eqn{R^2} value above which a GP node is considered redundant. Defaults to `0.97`. @@ -156,8 +156,8 @@ #' If `target` is not `NULL`, the following additional elements are also included: #' - `target`: the target evaluating metric computed by the `eval` or built-in function to stop the sequential design. #' - `reached`: indicates whether the `target` was reached at the end of the sequential design: -#' - a boolean if `object` is an instance of the `gp` or `dgp` class. -#' - a vector of booleans if `object` is an instance of the `bundle` class, with its length determined as follows: +#' - a bool if `object` is an instance of the `gp` or `dgp` class. +#' - a vector of bools if `object` is an instance of the `bundle` class, with its length determined as follows: #' - equal to the number of emulators in the bundle when `eval = NULL`. #' - equal to the length of the output from `eval` when a custom `eval` function is provided. #' - a slot called `type` that gives the type of validation: @@ -201,7 +201,7 @@ #' within `f` are handled by appropriately returning `NA`s. #' * When defining `eval`, the output metric needs to be positive if [draw()] is used with `log = T`. And one needs to ensure that a lower metric value indicates #' a better emulation performance if `target` is set. -#' @details See further examples and tutorials at . +#' @details See further examples and tutorials at <`r get_docs_url()`>. #' #' @examples #' \dontrun{ @@ -3237,10 +3237,6 @@ check_reset <- function(reset, N){ check_auto <- function(object){ auto_pruning <- T # exclude user-defined structure - if (!"internal_dims" %in% names(object[['specs']])) { - auto_pruning <- F - return(auto_pruning) - } else { n_layer <- object$constructor_obj$n_layer if (object$constructor_obj$all_layer[[n_layer]][[1]]$type!='gp') { n_layer <- n_layer - 1 @@ -3257,7 +3253,7 @@ check_auto <- function(object){ } } } - } + return(auto_pruning) } @@ -3342,24 +3338,24 @@ reverse_minmax <- function(normalized_data, limits) { return(original_data) } -generic_wrapper <- function(r_func) { - function(...) { - # Capture the arguments - args <- list(...) - - # Convert Python-native arguments to R-native if necessary - args <- lapply(args, function(arg) { - if (inherits(arg, "python.builtin.object")) { - reticulate::py_to_r(arg) - } else { - arg - } - }) - - # Call the user-provided R function with converted arguments - result <- do.call(r_func, args) - - # Convert the result back to Python-native types - reticulate::r_to_py(result) - } -} +#generic_wrapper <- function(r_func) { +# function(...) { +# # Capture the arguments +# args <- list(...) +# +# # Convert Python-native arguments to R-native if necessary +# args <- lapply(args, function(arg) { +# if (inherits(arg, "python.builtin.object")) { +# reticulate::py_to_r(arg) +# } else { +# arg +# } +# }) +# +# # Call the user-provided R function with converted arguments +# result <- do.call(r_func, args) +# +# # Convert the result back to Python-native types +# reticulate::r_to_py(result) +# } +#} diff --git a/R/dgp.R b/R/dgp.R index a72d2aa..bca3321 100644 --- a/R/dgp.R +++ b/R/dgp.R @@ -5,44 +5,35 @@ #' @param X a matrix where each row is an input training data point and each column represents an input dimension. #' @param Y a matrix containing observed training output data. The matrix has its rows being output data points and columns representing #' output dimensions. When `likelihood` (see below) is not `NULL`, `Y` must be a matrix with a single column. -#' @param struc `r lifecycle::badge("deprecated")` a list that specifies a user-defined DGP structure. It should contain *L* (the number of DGP layers) sub-lists, -#' each of which represents a layer and contains a number of GP nodes (defined by [kernel()]) in the corresponding layer. -#' The final layer of the DGP structure (i.e., the final sub-list in `struc`) can be a likelihood -#' layer that contains a likelihood function (e.g., [Poisson()]). When `struc = NULL`, -#' the DGP structure is automatically generated and can be checked by applying [summary()] to the output from [dgp()] with `training = FALSE`. -#' If this argument is used (i.e., user provides a customized DGP structure), arguments `depth`, `node`, `name`, `lengthscale`, `bounds`, `prior`, -#' `share`, `nugget_est`, `nugget`, `scale_est`, `scale`, `connect`, `likelihood`, and `internal_input_idx` will NOT be used. Defaults to `NULL`. -#' -#' **The argument will be removed in the next release. To customize DGP specifications, please adjust the other arguments in the [dgp()] function.** #' @param depth number of layers (including the likelihood layer) for a DGP structure. `depth` must be at least `2`. -#' Defaults to `2`. +#' Defaults to `2`. #' @param node number of GP nodes in each layer (except for the final layer or the layer feeding the likelihood node) of the DGP. Defaults to -#' `ncol(X)`. +#' `ncol(X)`. #' @param name a character or a vector of characters that indicates the kernel functions (either `"sexp"` for squared exponential kernel or #' `"matern2.5"` for Matérn-2.5 kernel) used in the DGP emulator: #' 1. if a single character is supplied, the corresponding kernel function will be used for all GP nodes in the DGP hierarchy. #' 2. if a vector of characters is supplied, each character of the vector specifies the kernel function that will be applied to all GP nodes in the corresponding layer. #' -#' Defaults to `"sexp"`. +#' Defaults to `"sexp"`. #' @param lengthscale initial lengthscales for GP nodes in the DGP emulator. It can be a single numeric value or a vector: #' 1. if it is a single numeric value, the value will be applied as the initial lengthscales for all GP nodes in the DGP hierarchy. #' 2. if it is a vector, each element of the vector specifies the initial lengthscales that will be applied to all GP nodes in the corresponding layer. #' The vector should have a length of `depth` if `likelihood = NULL` or a length of `depth - 1` if `likelihood` is not `NULL`. #' -#' Defaults to a numeric value of `1.0`. +#' Defaults to a numeric value of `1.0`. #' @param bounds the lower and upper bounds of lengthscales in GP nodes. It can be a vector or a matrix: #' 1. if it is a vector, the lower bound (the first element of the vector) and upper bound (the second element of the vector) will be applied to #' lengthscales for all GP nodes in the DGP hierarchy. #' 2. if it is a matrix, each row of the matrix specifies the lower and upper bounds of lengthscales for all GP nodes in the corresponding layer. #' The matrix should have its row number equal to `depth` if `likelihood = NULL` or to `depth - 1` if `likelihood` is not `NULL`. #' -#' Defaults to `NULL` where no bounds are specified for the lengthscales. +#' Defaults to `NULL` where no bounds are specified for the lengthscales. #' @param prior prior to be used for MAP estimation of lengthscales and nuggets of all GP nodes in the DGP hierarchy: #' * gamma prior (`"ga"`), #' * inverse gamma prior (`"inv_ga"`), or #' * jointly robust prior (`"ref"`). #' -#' Defaults to `"ga"`. +#' Defaults to `"ga"`. #' @param share a bool indicating if all input dimensions of a GP node share a common lengthscale. Defaults to `TRUE`. #' @param nugget_est a bool or a bool vector that indicates if the nuggets of GP nodes (if any) in the final layer are to be estimated. If a single bool is #' provided, it will be applied to all GP nodes (if any) in the final layer. If a bool vector (which must have a length of `ncol(Y)`) is provided, each @@ -67,12 +58,12 @@ #' * `FALSE`: the variance of the corresponding GP in the final layer is fixed to the corresponding value defined in `scale` (see below). #' * `TRUE`: the variance of the corresponding GP in the final layer will be estimated with the initial value given by the correspondence in `scale` (see below). #' -#' Defaults to `TRUE`. This argument is only used when `struc = NULL`. +#' Defaults to `TRUE`. #' @param scale the initial variance value(s) of GP nodes (if any) in the final layer. If it is a single numeric value, it will be applied to all GP nodes (if any) #' in the final layer. If it is a vector (which must have a length of `ncol(Y)`), each numeric in the vector will be applied to the corresponding GP node -#' (if any) in the final layer. Defaults to `1`. This argument is only used when `struc = NULL`. +#' (if any) in the final layer. Defaults to `1`. #' @param connect a bool indicating whether to implement global input connection to the DGP structure. Setting it to `FALSE` may produce a better emulator in some cases at -#' the cost of slower training. Defaults to `TRUE`. This argument is only used when `struc = NULL`. +#' the cost of slower training. Defaults to `TRUE`. #' @param likelihood the likelihood type of a DGP emulator: #' 1. `NULL`: no likelihood layer is included in the emulator. #' 2. `"Hetero"`: a heteroskedastic Gaussian likelihood layer is added for stochastic emulation where the computer model outputs are assumed to follow a heteroskedastic Gaussian distribution @@ -84,7 +75,7 @@ #' When `likelihood` is not `NULL`, the value of `nugget_est` is overridden by `FALSE`. Defaults to `NULL`. #' @param training a bool indicating if the initialized DGP emulator will be trained. #' When set to `FALSE`, [dgp()] returns an untrained DGP emulator, to which one can apply [summary()] to inspect its specifications -#' (especially when a customized `struc` is provided) or apply [predict()] to check its emulation performance before training. Defaults to `TRUE`. +#' or apply [predict()] to check its emulation performance before training. Defaults to `TRUE`. #' @param verb a bool indicating if the trace information on DGP emulator construction and training will be printed during the function execution. #' Defaults to `TRUE`. #' @param check_rep a bool indicating whether to check for repetitions in the dataset, i.e., if one input @@ -109,14 +100,14 @@ #' @param burnin the number of training iterations to be discarded for #' point estimates of model parameters. Must be smaller than the training iterations `N`. If this is not specified, only the last 25% of iterations #' are used. Defaults to `NULL`. This argument is only used when `training = TRUE`. -#' @param B the number of imputations used to produce predictions. Increase the value to refine the representation of imputation uncertainty. +#' @param B the number of imputations used to produce predictions. Increase the value to refine the representation of imputation uncertainty. #' Defaults to `10`. #' @param internal_input_idx `r lifecycle::badge("deprecated")` The argument will be removed in the next release. To set up connections of emulators for linked emulations, #' please use the updated [lgp()] function instead. #' #' Column indices of `X` that are generated by the linked emulators in the preceding layers. #' Set `internal_input_idx = NULL` if the DGP emulator is in the first layer of a system or all columns in `X` are -#' generated by the linked emulators in the preceding layers. Defaults to `NULL`. This argument is only used when `struc = NULL`. +#' generated by the linked emulators in the preceding layers. Defaults to `NULL`. #' @param linked_idx `r lifecycle::badge("deprecated")` The argument will be removed in the next release. To set up connections of emulators for linked emulation, #' please use the updated [lgp()] function instead. #' @@ -164,9 +155,7 @@ #' with the light option `light = TRUE`) is loaded back to R by [read()]. #' 6. `B`: the number of imputations used to generate the emulator. #' 7. `r new_badge("new")` `vecchia`: whether the Vecchia approximation is used for the GP emulator training. -#' 8. `r new_badge("new")` `M`: the size of the conditioning set for the Vecchia approximation in the DGP emulator training. -#' -#' `internal_dims` and `external_dims` are generated only when `struc = NULL`. `M` is generated only when `vecchia = TRUE`. +#' 8. `r new_badge("new")` `M`: the size of the conditioning set for the Vecchia approximation in the DGP emulator training. `M` is generated only when `vecchia = TRUE`. #' * `constructor_obj`: a 'python' object that stores the information of the constructed DGP emulator. #' * `container_obj`: a 'python' object that stores the information for the linked emulation. #' * `emulator_obj`: a 'python' object that stores the information for the predictions from the DGP emulator. @@ -185,7 +174,7 @@ #' * [update()] to update the DGP emulator with new inputs and outputs. #' * [alm()], [mice()], and [vigf()] to locate next design points. #' -#' @details See further examples and tutorials at and learn how to customize a DGP structure. +#' @details See further examples and tutorials at <`r get_docs_url()`>. #' @note Any R vector detected in `X` and `Y` will be treated as a column vector and automatically converted into a single-column #' R matrix. Thus, if `X` is a single data point with multiple dimensions, it must be given as a matrix. #' @examples @@ -241,7 +230,7 @@ #' } #' @md #' @export -dgp <- function(X, Y, struc = NULL, depth = 2, node = ncol(X), name = 'sexp', lengthscale = 1.0, bounds = NULL, prior = 'ga', share = TRUE, +dgp <- function(X, Y, depth = 2, node = ncol(X), name = 'sexp', lengthscale = 1.0, bounds = NULL, prior = 'ga', share = TRUE, nugget_est = FALSE, nugget = NULL, scale_est = TRUE, scale = 1., connect = TRUE, likelihood = NULL, training =TRUE, verb = TRUE, check_rep = TRUE, vecchia = FALSE, M = 25, ord = NULL, N = ifelse(vecchia, 200, 500), cores = 1, blocked_gibbs = TRUE, ess_burn = 10, burnin = NULL, B = 10, internal_input_idx = NULL, linked_idx = NULL, id = NULL) { @@ -250,23 +239,12 @@ dgp <- function(X, Y, struc = NULL, depth = 2, node = ncol(X), name = 'sexp', le if (pkg.env$restart) return(invisible(NULL)) } - if (!is.null(struc)) { - # Display a combined warning message - lifecycle::deprecate_warn( - when = "2.5.0", - what = "dgp(struc)", - details = c(i = "The argument will be dropped in the next release.", - i = "To customize DGP specification, please adjust the other arguments in the `dgp()` function." - ) - ) - } - if (!is.null(internal_input_idx)) { lifecycle::deprecate_warn( when = "2.5.0", what = "dgp(internal_input_idx)", details = c(i = "The argument will be dropped in the next release.", - i = "To set up connections of GPs for linked emulation, please use the updated `lgp()` function instead." + i = "To set up connections of DGPs for linked emulation, please use the updated `lgp()` function instead." ) ) } @@ -276,7 +254,7 @@ dgp <- function(X, Y, struc = NULL, depth = 2, node = ncol(X), name = 'sexp', le when = "2.5.0", what = "dgp(linked_idx)", details = c(i = "The argument will be dropped in the next release.", - i = "To set up connections of GPs for linked emulation, please use the updated `lgp()` function instead." + i = "To set up connections of DGPs for linked emulation, please use the updated `lgp()` function instead." ) ) } @@ -306,12 +284,6 @@ dgp <- function(X, Y, struc = NULL, depth = 2, node = ncol(X), name = 'sexp', le rank_num <- pkg.env$np$linalg$matrix_rank(X) if (rank_num < n_dim_X) stop("The input matrix is not full rank. This indicates perfect multicollinearity and redundant information. We recommend identifying and removing redundant columns.") - if ( is.null(struc) ) { - is.null.struc <- TRUE - } else { - is.null.struc <- FALSE - } - if ( !is.null(likelihood) ){ if (likelihood!='Hetero' & likelihood!='Poisson' & likelihood!='NegBin' & likelihood!='Categorical' ) stop("The provided 'likelihood' is not supported.", call. = FALSE) } @@ -341,7 +313,6 @@ dgp <- function(X, Y, struc = NULL, depth = 2, node = ncol(X), name = 'sexp', le linked_idx_py <- linked_idx_r_to_py(linked_idx) #If struc is NULL - if ( is.null.struc ) { depth <- as.integer(depth) if ( depth < 2 ) stop("'depth' must >= 2. Use gp() if you want a single-layered DGP.", call. = FALSE) @@ -623,7 +594,7 @@ dgp <- function(X, Y, struc = NULL, depth = 2, node = ncol(X), name = 'sexp', le message(" done") Sys.sleep(0.5) } - } + if ( isTRUE(verb) ) message("Initializing the DGP emulator ...", appendLF = FALSE) @@ -658,10 +629,8 @@ dgp <- function(X, Y, struc = NULL, depth = 2, node = ncol(X), name = 'sexp', le res[['data']][['X']] <- unname(X) res[['data']][['Y']] <- unname(Y) res[['specs']] <- extract_specs(est_obj, "dgp") - if ( is.null.struc ) { - res[['specs']][['internal_dims']] <- if( is.null(internal_input_idx) ) 1:n_dim_X else as.integer(reticulate::py_to_r(internal_input_idx)+1) - res[['specs']][['external_dims']] <- if( is.null(internal_input_idx) ) FALSE else as.integer(reticulate::py_to_r(external_input_idx)+1) - } + res[['specs']][['internal_dims']] <- if( is.null(internal_input_idx) ) 1:n_dim_X else as.integer(reticulate::py_to_r(internal_input_idx)+1) + res[['specs']][['external_dims']] <- if( is.null(internal_input_idx) ) FALSE else as.integer(reticulate::py_to_r(external_input_idx)+1) res[['specs']][['linked_idx']] <- if ( is.null(linked_idx) ) FALSE else linked_idx res[['specs']][['vecchia']] <- vecchia res[['specs']][['M']] <- M @@ -692,9 +661,7 @@ dgp <- function(X, Y, struc = NULL, depth = 2, node = ncol(X), name = 'sexp', le #' GP components in different layers and optimization of GP components is computationally expensive. Defaults to `1`. #' @param ess_burn number of burnin steps for ESS-within-Gibbs #' at each I-step of the training. Defaults to `10`. -#' @param verb a bool indicating if a progress bar will be printed during training: -#' -#' Defaults to `TRUE`. +#' @param verb a bool indicating if a progress bar will be printed during training. Defaults to `TRUE`. #' @param burnin the number of training iterations to be discarded for #' point estimates calculation. Must be smaller than the overall training iterations #' so-far implemented. If this is not specified, only the last 25% of iterations @@ -705,7 +672,7 @@ dgp <- function(X, Y, struc = NULL, depth = 2, node = ncol(X), name = 'sexp', le #' #' @return An updated `object`. #' -#' @details See further examples and tutorials at . +#' @details See further examples and tutorials at <`r get_docs_url()`>. #' @note #' * One can also use this function to fit an untrained DGP emulator constructed by [dgp()] with `training = FALSE`. #' * The following slots: @@ -740,7 +707,7 @@ continue <- function(object, N = NULL, cores = 1, ess_burn = 10, verb = TRUE, bu if( !is.null(cores) ) { cores <- as.integer(cores) - if ( cores < 1 ) stop("cores must be >= 1.", call. = FALSE) + if ( cores < 1 ) stop("'cores' must be >= 1.", call. = FALSE) } if ( is.null(B) ){ @@ -777,10 +744,8 @@ continue <- function(object, N = NULL, cores = 1, ess_burn = 10, verb = TRUE, bu new_object[['data']][['X']] <- object$data$X new_object[['data']][['Y']] <- object$data$Y new_object[['specs']] <- extract_specs(est_obj, "dgp") - if ("internal_dims" %in% names(object[['specs']])){ - new_object[['specs']][['internal_dims']] <- object[['specs']][['internal_dims']] - new_object[['specs']][['external_dims']] <- object[['specs']][['external_dims']] - } + new_object[['specs']][['internal_dims']] <- object[['specs']][['internal_dims']] + new_object[['specs']][['external_dims']] <- object[['specs']][['external_dims']] new_object[['specs']][['linked_idx']] <- if ( is.null(linked_idx) ) FALSE else linked_idx_py_to_r(linked_idx) new_object[['specs']][['vecchia']] <- object[['specs']][['vecchia']] new_object[['specs']][['M']] <- object[['specs']][['M']] diff --git a/R/draw.R b/R/draw.R index 74d4238..6b12d43 100644 --- a/R/draw.R +++ b/R/draw.R @@ -11,7 +11,7 @@ #' - `"design"`: shows visualizations of input designs created by the sequential design procedure. #' #' Defaults to `"rmse"`. -#' @param log a boolean indicating whether to plot RMSEs, log-losses (for DGP emulators with categorical likelihoods), or custom evaluation metrics on a log scale when `type = "rmse"`. +#' @param log a bool indicating whether to plot RMSEs, log-losses (for DGP emulators with categorical likelihoods), or custom evaluation metrics on a log scale when `type = "rmse"`. #' Defaults to `FALSE`. #' @param emulator an index or vector of indices of emulators packed in `object`. This argument is only used if `object` is an instance of the `bundle` class. When set to `NULL`, all #' emulators in the bundle are drawn. Defaults to `NULL`. @@ -19,7 +19,7 @@ #' #' @return A `patchwork` object. #' -#' @details See further examples and tutorials at . +#' @details See further examples and tutorials at <`r get_docs_url()`>. #' @examples #' \dontrun{ #' diff --git a/R/gp.R b/R/gp.R index 0e9749d..08803da 100644 --- a/R/gp.R +++ b/R/gp.R @@ -4,11 +4,6 @@ #' #' @param X a matrix where each row is an input data point and each column is an input dimension. #' @param Y a matrix with only one column and each row being an output data point. -#' @param struc `r lifecycle::badge("deprecated")` an object produced by [kernel()] that gives a user-defined GP specification. When `struc = NULL`, -#' the GP specifications are automatically generated using information provided in `name`, `lengthscale`, -#' `nugget_est`, `nugget`, `scale_est`, `scale`,and `internal_input_idx`. Defaults to `NULL`. -#' -#' **The argument will be removed in the next release. To customize GP specifications, please adjust the other arguments in the [gp()] function.** #' @param name kernel function to be used. Either `"sexp"` for squared exponential kernel or #' `"matern2.5"` for Matérn-2.5 kernel. Defaults to `"sexp"`. #' @param lengthscale initial values of lengthscales in the kernel function. It can be a single numeric value or a vector of length `ncol(X)`: @@ -26,12 +21,12 @@ #' 1. `FALSE`: the nugget term is fixed to `nugget`. #' 2. `TRUE`: the nugget term will be estimated. #' -#' Defaults to `FALSE`. This argument is only used when `struc = NULL`. +#' Defaults to `FALSE`. #' @param nugget the initial nugget value. If `nugget_est = FALSE`, the assigned value is fixed during the training. #' Set `nugget` to a small value (e.g., `1e-8`) and the corresponding bool in `nugget_est` to `FALSE` for deterministic computer models where the emulator #' should interpolate the training data points. Set `nugget` to a larger value and the corresponding bool in `nugget_est` to `TRUE` for stochastic #' emulation where the computer model outputs are assumed to follow a homogeneous Gaussian distribution. Defaults to `1e-8` if `nugget_est = FALSE` and -#' `0.01` if `nugget_est = TRUE`. This argument is only used when `struc = NULL`. +#' `0.01` if `nugget_est = TRUE`. #' @param scale_est a bool indicating if the variance is to be estimated: #' 1. `FALSE`: the variance is fixed to `scale`. #' 2. `TRUE`: the variance term will be estimated. @@ -94,8 +89,6 @@ #' **The slot will be removed in the next release**. #' 8. `r new_badge("new")` `vecchia`: whether the Vecchia approximation is used for the GP emulator training. #' 9. `r new_badge("new")` `M`: the size of the conditioning set for the Vecchia approximation in the GP emulator training. -#' -#' `internal_dims` and `external_dims` are generated only when `struc = NULL`. #' * `constructor_obj`: a 'python' object that stores the information of the constructed GP emulator. #' * `container_obj`: a 'python' object that stores the information for the linked emulation. #' * `emulator_obj`: a 'python' object that stores the information for the predictions from the GP emulator. @@ -114,7 +107,7 @@ #' @references #' - Gu, M. (2019). Jointly robust prior for Gaussian stochastic process in emulation, calibration and variable selection. *Bayesian Analysis*, **14(3)**, 857-885. #' - Katzfuss, M., Guinness, J., & Lawrence, E. (2022). Scaled Vecchia approximation for fast computer-model emulation. *SIAM/ASA Journal on Uncertainty Quantification*, **10(2)**, 537-554. -#' @details See further examples and tutorials at . +#' @details See further examples and tutorials at <`r get_docs_url()`>. #' @note Any R vector detected in `X` and `Y` will be treated as a column vector and automatically converted into a single-column #' R matrix. Thus, if `X` is a single data point with multiple dimensions, it must be given as a matrix. #' @examples @@ -158,23 +151,12 @@ #' #' @md #' @export -gp <- function(X, Y, struc = NULL, name = 'sexp', lengthscale = rep(0.1, ncol(X)), bounds = NULL, prior = 'ref', nugget_est = FALSE, nugget = ifelse(nugget_est, 0.01, 1e-8), scale_est = TRUE, scale = 1., training = TRUE, verb = TRUE, vecchia = FALSE, M = 25, ord = NULL, internal_input_idx = NULL, linked_idx = NULL, id = NULL) { +gp <- function(X, Y, name = 'sexp', lengthscale = rep(0.1, ncol(X)), bounds = NULL, prior = 'ref', nugget_est = FALSE, nugget = ifelse(nugget_est, 0.01, 1e-8), scale_est = TRUE, scale = 1., training = TRUE, verb = TRUE, vecchia = FALSE, M = 25, ord = NULL, internal_input_idx = NULL, linked_idx = NULL, id = NULL) { if ( is.null(pkg.env$dgpsi) ) { init_py(verb = F) if (pkg.env$restart) return(invisible(NULL)) } - if (!is.null(struc)) { - # Display a combined warning message - lifecycle::deprecate_warn( - when = "2.5.0", - what = "gp(struc)", - details = c(i = "The argument will be dropped in the next release.", - i = "To customize GP specification, please adjust the other arguments in the `gp()` function." - ) - ) - } - if (!is.null(internal_input_idx)) { # Display a combined warning message lifecycle::deprecate_warn( @@ -220,57 +202,50 @@ gp <- function(X, Y, struc = NULL, name = 'sexp', lengthscale = rep(0.1, ncol(X) ord_wrapper <- NULL } - if ( is.null(struc) ) { - is.null.struc <- TRUE - } else { - is.null.struc <- FALSE - } - if ( name!='sexp' & name!='matern2.5' ) stop("'name' can only be either 'sexp' or 'matern2.5'.", call. = FALSE) if ( prior!='ga' & prior!='inv_ga' & prior!='ref') stop("'prior' can only be 'ga', 'inv_ga', or 'ref'.", call. = FALSE) linked_idx_py <- linked_idx_r_to_py(linked_idx) - if ( is.null.struc ) { - if ( verb ) message("Auto-generating a GP structure ...", appendLF = FALSE) + if ( verb ) message("Auto-generating a GP structure ...", appendLF = FALSE) - if ( length(lengthscale) != 1 & length(lengthscale) != n_dim_X) { - stop("length(lengthscale) must be 1 or ncol(X).", call. = FALSE) - } + if ( length(lengthscale) != 1 & length(lengthscale) != n_dim_X) { + stop("length(lengthscale) must be 1 or ncol(X).", call. = FALSE) + } - if ( !is.null(bounds) ){ - if ( !is.vector(bounds) ) { - bounds <- as.vector(bounds) - } - if ( length(bounds)!=2 ) { - stop(sprintf("length(bounds) must equal to %i.", 2), call. = FALSE) - } - if ( bounds[1]>bounds[2] ) stop("The second element of 'bounds' must be greater than the first.", call. = FALSE) - bounds <- reticulate::np_array(bounds) + if ( !is.null(bounds) ){ + if ( !is.vector(bounds) ) { + bounds <- as.vector(bounds) + } + if ( length(bounds)!=2 ) { + stop(sprintf("length(bounds) must equal to %i.", 2), call. = FALSE) } + if ( bounds[1]>bounds[2] ) stop("The second element of 'bounds' must be greater than the first.", call. = FALSE) + bounds <- reticulate::np_array(bounds) + } - if( !is.null(internal_input_idx) ) { - external_input_idx <- setdiff(1:n_dim_X, internal_input_idx) - if ( length(external_input_idx) == 0) { - internal_input_idx = NULL - external_input_idx = NULL - } else { - internal_input_idx <- reticulate::np_array(as.integer(internal_input_idx - 1)) - external_input_idx <- reticulate::np_array(as.integer(external_input_idx - 1)) - } - } else { + if( !is.null(internal_input_idx) ) { + external_input_idx <- setdiff(1:n_dim_X, internal_input_idx) + if ( length(external_input_idx) == 0) { + internal_input_idx = NULL external_input_idx = NULL + } else { + internal_input_idx <- reticulate::np_array(as.integer(internal_input_idx - 1)) + external_input_idx <- reticulate::np_array(as.integer(external_input_idx - 1)) } + } else { + external_input_idx = NULL + } - struc <- pkg.env$dgpsi$kernel(length = reticulate::np_array(lengthscale), name = name, prior_name = prior, bds = bounds, scale = scale, scale_est = scale_est, nugget = nugget, nugget_est = nugget_est, - input_dim = internal_input_idx, connect = external_input_idx) + struc <- pkg.env$dgpsi$kernel(length = reticulate::np_array(lengthscale), name = name, prior_name = prior, bds = bounds, scale = scale, scale_est = scale_est, nugget = nugget, nugget_est = nugget_est, + input_dim = internal_input_idx, connect = external_input_idx) - if ( verb ) { - message(" done") - Sys.sleep(0.5) - } + if ( verb ) { + message(" done") + Sys.sleep(0.5) } + if ( verb ) message("Initializing the GP emulator ...", appendLF = FALSE) obj <- pkg.env$dgpsi$gp(X, Y, struc, vecchia, M, ord_wrapper) @@ -294,10 +269,8 @@ gp <- function(X, Y, struc = NULL, name = 'sexp', lengthscale = rep(0.1, ncol(X) res[['data']][['X']] <- unname(X) res[['data']][['Y']] <- unname(Y) res[['specs']] <- extract_specs(obj, "gp") - if ( is.null.struc ) { - res[['specs']][['internal_dims']] <- if( is.null(internal_input_idx) ) 1:n_dim_X else as.integer(reticulate::py_to_r(internal_input_idx)+1) - res[['specs']][['external_dims']] <- if( is.null(internal_input_idx) ) FALSE else as.integer(reticulate::py_to_r(external_input_idx)+1) - } + res[['specs']][['internal_dims']] <- if( is.null(internal_input_idx) ) 1:n_dim_X else as.integer(reticulate::py_to_r(internal_input_idx)+1) + res[['specs']][['external_dims']] <- if( is.null(internal_input_idx) ) FALSE else as.integer(reticulate::py_to_r(external_input_idx)+1) res[['specs']][['linked_idx']] <- if ( is.null(linked_idx) ) FALSE else linked_idx res[['specs']][['vecchia']] <- vecchia res[['specs']][['M']] <- M diff --git a/R/initi_py.R b/R/initi_py.R index cbe196b..302032d 100644 --- a/R/initi_py.R +++ b/R/initi_py.R @@ -30,7 +30,7 @@ pkg.env$dill <- NULL #' #' @return No return value, called to install required 'python' environment. #' -#' @details See further examples and tutorials at . +#' @details See further examples and tutorials at <`r get_docs_url()`>. #' @examples #' \dontrun{ #' diff --git a/R/kernel.R b/R/kernel.R deleted file mode 100644 index 9ab9500..0000000 --- a/R/kernel.R +++ /dev/null @@ -1,104 +0,0 @@ -#' @title Initialize a Gaussian process node -#' -#' @description -#' -#' `r lifecycle::badge("deprecated")` -#' -#' This function is deprecated and will be removed in the next release. To customize -#' DGP specifications, adjust the other arguments in the `dgp()` function instead. -#' -#' @param length a vector of lengthscales. The length of the vector equals to: -#' 1. either one if the lengthscales in the kernel function are assumed same across input dimensions; or -#' 2. the total number of input dimensions, which is the sum of the number of feeding GP nodes -#' in the last layer (defined by the argument `input_dim`) and the number of connected global -#' input dimensions (defined by the argument `connect`), if the lengthscales in the kernel function -#' are assumed different across input dimensions. -#' @param scale the variance of a GP node. Defaults to `1`. -#' @param nugget the nugget term of a GP node. Defaults to `1e-6`. -#' @param name kernel function to be used. Either `"sexp"` for squared exponential kernel or -#' `"matern2.5"` for Matérn-2.5 kernel. Defaults to `"sexp"`. -#' @param prior_name prior options for the lengthscales and nugget term: gamma prior (`"ga"`), inverse gamma prior (`"inv_ga"`), -#' or jointly robust prior (`"ref"`) for the lengthscales and nugget term. Set `NULL` to disable the prior. Defaults to `"ga"`. -#' @param prior_coef a vector that contains the coefficients for different priors: -#' * for the gamma prior, it is a vector of two values specifying the shape and rate parameters of the gamma distribution. Set to `NULL` for the -#' default value `c(1.6,0.3)`. -#' * for the inverse gamma prior, it is a vector of two values specifying the shape and scale parameters of the inverse gamma distribution. Set -#' to `NULL` for the default value `c(1.6,0.3)`. -#' * for the jointly robust prior, it is a vector of a single value specifying the `a` parameter in the prior. Set to `NULL` for the -#' default value `c(0.2)`. See the reference below for the jointly robust prior. -#' -#' Defaults to `NULL`. -#' @param bounds a vector of length two that gives the lower bound (the first element of the vector) and the upper bound (the second element of the -#' vector) of all lengthscales of the GP node. Defaults to `NULL` where no bounds are specified for the lengthscales. -#' @param nugget_est set to `TRUE` to estimate the nugget term or to `FALSE` to fix the nugget term as specified -#' by the argument `nugget`. If set to `TRUE`, the value set to the argument `nugget` is used as the initial -#' value. Defaults to `FALSE`. -#' @param scale_est set to `TRUE` to estimate the variance (i.e., scale) or to `FALSE` to fix the variance (i.e., scale) as specified -#' by the argument `scale`. Defaults to `FALSE`. -#' @param input_dim a vector that contains either -#' 1. the indices of GP nodes in the feeding layer whose outputs feed into this GP node; or -#' 2. the indices of global input dimensions that are linked to the outputs of some feeding emulators, -#' if this GP node is in the first layer of a GP or DGP, which will be used for the linked emulation. -#' -#' When set to `NULL`, -#' 1. all outputs from the GP nodes in the feeding layer feed into this GP node; or -#' 2. all global input dimensions feed into this GP node. -#' -#' Defaults to `NULL`. -#' @param connect a vector that contains the indices of dimensions in the global -#' input connecting to this GP node as additional input dimensions. When set to `NULL`, no global input -#' connection is implemented. Defaults to `NULL`. When this GP node is in the first layer of a GP or DGP emulator, -#' which will consequently be used for linked emulation, `connect` gives the indices of global input dimensions -#' that are not connected to some feeding emulators. In such a case, set `input_dim` to a vector of indices of -#' the remaining input dimensions that are connected to the feeding emulators. -#' -#' @return A 'python' object to represent a GP node. -#' @references -#' Gu, M. (2019). Jointly robust prior for Gaussian stochastic process in emulation, calibration and variable selection. *Bayesian Analysis*, **14(3)**, 857-885. -#' @details See further examples and tutorials at . -#' @examples -#' \dontrun{ -#' -#' # Check https://mingdeyu.github.io/dgpsi-R/ for examples -#' # on how to customize DGP structures using kernel(). -#' } -#' @md -#' @keywords internal -#' @export -kernel <- function(length, scale = 1., nugget = 1e-6, name = 'sexp', prior_name = 'ga', prior_coef = NULL, bounds = NULL, nugget_est = FALSE, scale_est = FALSE, input_dim = NULL, connect = NULL) { - if ( is.null(pkg.env$dgpsi) ) { - init_py(verb = F) - if (pkg.env$restart) return(invisible(NULL)) - } - - lifecycle::deprecate_warn( - when = "2.5.0", - what = "kernel()", - details = c(i = "The function will be removed in the next release.", - i= "It may not be compatible with other functions in this version.", - i = "Please adjust the other arguments in `dgp()` function to customize DGP specifications." - ) - ) - - if ( name!='sexp' & name!='matern2.5' ) stop("'name' can only be either 'sexp' or 'matern2.5'.", call. = FALSE) - if ( !is.null(prior_name) & prior_name!='ga' & prior_name!='inv_ga' ) stop("The provided 'prior_name' is not supported.", call. = FALSE) - - if(!is.null(input_dim)){ - input_dim <- reticulate::np_array(as.integer(input_dim - 1)) - } - - if(!is.null(connect)){ - connect <- reticulate::np_array(as.integer(connect - 1)) - } - - if(!is.null(bounds)){ - bounds <- reticulate::np_array(bounds) - } - - if(!is.null(prior_coef)){ - prior_coef <- reticulate::np_array(prior_coef) - } - - res <- pkg.env$dgpsi$kernel(reticulate::np_array(length), scale, nugget, name, prior_name, prior_coef, bounds, nugget_est, scale_est, input_dim, connect) - return(res) -} diff --git a/R/lgp.R b/R/lgp.R index e802681..c4f91c2 100644 --- a/R/lgp.R +++ b/R/lgp.R @@ -32,9 +32,9 @@ #' If the same emulator is used multiple times within the linked system, the list must contain distinct copies #' of that emulator, each with a unique ID stored in their `id` slot. Use the [set_id()] function to produce copies with different IDs #' to ensure each instance can be uniquely referenced. -#' @param Bthe number of imputations used for prediction. Increase the value to refine representation of +#' @param B the number of imputations used for prediction. Increase the value to refine representation of #' imputation uncertainty. If the system consists of only GP emulators, `B` is set to `1` automatically. Defaults to `10`. -#' @param activate `r new_badge("new")` a boolean indicating whether the initialized linked emulator should be activated: +#' @param activate `r new_badge("new")` a bool indicating whether the initialized linked emulator should be activated: #' - If `activate = FALSE`, [lgp()] returns an inactive linked emulator, allowing inspection of its structure using [summary()]. #' - If `activate = TRUE`, [lgp()] returns an active linked emulator, ready for prediction and validation using [predict()] and [validate()], respectively. #' @@ -72,7 +72,7 @@ #' * [summary()] to summarize the constructed linked (D)GP emulator. #' * [write()] to save the linked (D)GP emulator to a `.pkl` file. #' -#' @details See further examples and tutorials at . +#' @details See further examples and tutorials at <`r get_docs_url()`>. #' @examples #' \dontrun{ #' diff --git a/R/likelihood.R b/R/likelihood.R deleted file mode 100644 index 7f27f54..0000000 --- a/R/likelihood.R +++ /dev/null @@ -1,150 +0,0 @@ -#' @title Initialize a Poisson likelihood node -#' -#' @description -#' -#' `r lifecycle::badge("deprecated")` -#' -#' This function is deprecated and will be removed in the next release. -#' To incorporate a Poisson likelihood node into a DGP structure, -#' use the `likelihood` argument in the `dgp()` function instead. -#' -#' @param input_dim a vector of length one that contains the indices of one GP node in the feeding -#' layer whose outputs feed into this likelihood node. When set to `NULL`, -#' all outputs from GP nodes in the feeding layer feed into this likelihood node, and in such a case -#' one needs to ensure that only one GP node is specified in the feeding layer. -#' Defaults to `NULL`. -#' -#' @return A 'python' object to represent a Poisson likelihood node. -#' @note The Poisson likelihood node can only be linked to one feeding GP node. -#' @details See further examples and tutorials at . -#' @examples -#' \dontrun{ -#' -#' # Check https://mingdeyu.github.io/dgpsi-R/ for examples -#' # on how to customize DGP structures using Poisson(). -#' } -#' @md -#' @keywords internal -#' @export -Poisson <- function(input_dim = NULL) { - if ( is.null(pkg.env$dgpsi) ) { - init_py(verb = F) - if (pkg.env$restart) return(invisible(NULL)) - } - - lifecycle::deprecate_warn( - when = "2.5.0", - what = "kernel()", - details = c(i = "The function will be removed in the next release.", - i= "It may not be compatible with other functions in this version.", - i = "Please use the `likelihood` argument in `dgp()` function to incorporate a Poisson likelihood node into a DGP structure." - ) - ) - - if(!is.null(input_dim)){ - input_dim <- reticulate::np_array(as.integer(input_dim - 1)) - } - res <- pkg.env$dgpsi$Poisson(input_dim) - return(res) -} - - -#' @title Initialize a heteroskedastic Gaussian likelihood node -#' -#' @description -#' -#' `r lifecycle::badge("deprecated")` -#' -#' This function is deprecated and will be removed in the next release. -#' To incorporate a heteroskedastic Gaussian likelihood node into a DGP structure, -#' use the `likelihood` argument in the `dgp()` function instead. -#' -#' @param input_dim a vector of length two that contains the indices of two GP nodes in the feeding -#' layer whose outputs feed into this likelihood node. When set to `NULL`, -#' all outputs from GP nodes in the feeding layer feed into this likelihood node, and in such a case -#' one needs to ensure that only two GP nodes are specified in the feeding layer. -#' Defaults to `NULL`. -#' -#' @return A 'python' object to represent a heteroskedastic Gaussian likelihood node. -#' @note The heteroskedastic Gaussian likelihood node can only be linked to two feeding GP nodes. -#' @details See further examples and tutorials at . -#' @examples -#' \dontrun{ -#' -#' # Check https://mingdeyu.github.io/dgpsi-R/ for examples -#' # on how to customize DGP structures using Hetero(). -#' } -#' @md -#' @keywords internal -#' @export -Hetero <- function(input_dim = NULL) { - if ( is.null(pkg.env$dgpsi) ) { - init_py(verb = F) - if (pkg.env$restart) return(invisible(NULL)) - } - - lifecycle::deprecate_warn( - when = "2.5.0", - what = "kernel()", - details = c(i = "The function will be removed in the next release.", - i= "It may not be compatible with other functions in this version.", - i = "Please use the `likelihood` argument in `dgp()` function to incorporate a heteroskedastic Gaussian likelihood node into a DGP structure." - ) - ) - - if(!is.null(input_dim)){ - input_dim <- reticulate::np_array(as.integer(input_dim - 1)) - } - res <- pkg.env$dgpsi$Hetero(input_dim) - return(res) -} - -#' @title Initialize a negative Binomial likelihood node -#' -#' @description -#' -#' `r lifecycle::badge("deprecated")` -#' -#' This function is deprecated and will be removed in the next release. -#' To incorporate a negative Binomial likelihood node into a DGP structure, -#' use the `likelihood` argument in the `dgp()` function instead. -#' -#' @param input_dim a vector of length two that contains the indices of two GP nodes in the feeding -#' layer whose outputs feed into this likelihood node. When set to `NULL`, -#' all outputs from GP nodes in the feeding layer feed into this likelihood node, and in such a case -#' one needs to ensure that only two GP nodes are specified in the feeding layer. -#' Defaults to `NULL`. -#' -#' @return A 'python' object to represent a negative Binomial likelihood node. -#' @note The negative Binomial likelihood node can only be linked to two feeding GP nodes. -#' @details See further examples and tutorials at . -#' @examples -#' \dontrun{ -#' -#' # Check https://mingdeyu.github.io/dgpsi-R/ for examples -#' # on how to customize DGP structures using NegBin(). -#' } -#' @md -#' @keywords internal -#' @export -NegBin <- function(input_dim = NULL) { - if ( is.null(pkg.env$dgpsi) ) { - init_py(verb = F) - if (pkg.env$restart) return(invisible(NULL)) - } - - lifecycle::deprecate_warn( - when = "2.5.0", - what = "kernel()", - details = c(i = "The function will be removed in the next release.", - i= "It may not be compatible with other functions in this version.", - i = "Please use the `likelihood` argument in `dgp()` function to incorporate a negative Binomial likelihood node into a DGP structure." - ) - ) - - if(!is.null(input_dim)){ - input_dim <- reticulate::np_array(as.integer(input_dim - 1)) - } - res <- pkg.env$dgpsi$NegBin(input_dim) - return(res) -} diff --git a/R/mice.R b/R/mice.R index 91a0478..45e4f3c 100644 --- a/R/mice.R +++ b/R/mice.R @@ -68,7 +68,7 @@ #' Beck, J., & Guillas, S. (2016). Sequential design with mutual information for computer experiments (MICE): emulation of a tsunami model. #' *SIAM/ASA Journal on Uncertainty Quantification*, **4(1)**, 739-766. #' -#' @details See further examples and tutorials at . +#' @details See further examples and tutorials at <`r get_docs_url()`>. #' @examples #' \dontrun{ #' diff --git a/R/plot.R b/R/plot.R index 2e8b095..ba65f95 100644 --- a/R/plot.R +++ b/R/plot.R @@ -59,9 +59,9 @@ #' it is recommended to first run [validate()] to obtain and store validation results in the emulator object, and then supply the #' object to [plot()]. [plot()] checks the object's `loo` and `oos` slots prior to calling [validate()] and will not perform further calculation if the required information is already stored. #' * [plot()] will only use stored OOS validation if `x_test` and `y_test` are identical to those used by [validate()] to produce the data contained in the object's `oos` slot, otherwise [plot()] will re-evaluate OOS validation before plotting. -#' * The returned `patchwork` object contains the `ggplot2` objects. One can modify the included individual ggplots +#' * The returned [patchwork] object contains the [ggplot2] objects. One can modify the included individual ggplots #' by accessing them with double-bracket indexing. See for further information. -#' @details See further examples and tutorials at . +#' @details See further examples and tutorials at <`r get_docs_url()`>. #' @examples #' \dontrun{ #' diff --git a/R/prediction.R b/R/prediction.R index 6c2f764..0118d0f 100644 --- a/R/prediction.R +++ b/R/prediction.R @@ -121,7 +121,7 @@ #' * `r new_badge("new")` the value of `M`, which represents the size of the conditioning set for the Vecchia approximation, if used, in the emulator prediction. #' * the value of `sample_size` if `method = "sampling"`. #' -#' @details See further examples and tutorials at . +#' @details See further examples and tutorials at <`r get_docs_url()`>. #' @examples #' \dontrun{ #' diff --git a/R/serialization.R b/R/serialization.R index 3c379cc..bd5bf02 100644 --- a/R/serialization.R +++ b/R/serialization.R @@ -8,7 +8,7 @@ #' #' @return A serialized version of `object`. #' -#' @details See further examples and tutorials at . +#' @details See further examples and tutorials at <`r get_docs_url()`>. #' @note Since the constructed emulators are 'python' objects, they cannot be directly exported to other R processes for parallel #' processing in multi-session workers. This function provides a way to convert the emulators into serialized objects, which can be #' restored using [deserialize()] for multi-session processing. @@ -104,7 +104,7 @@ serialize <- function(object, light = TRUE) { #' #' @return The S3 class of a GP emulator, a DGP emulator, a linked (D)GP emulator, or a bundle of (D)GP emulators. #' -#' @details See further examples and tutorials at . +#' @details See further examples and tutorials at <`r get_docs_url()`>. #' @examples #' \dontrun{ #' diff --git a/R/update.R b/R/update.R index 0672b53..d93e645 100644 --- a/R/update.R +++ b/R/update.R @@ -38,7 +38,7 @@ #' - `design` created by [design()] #' #' in `object` will be removed and not contained in the returned object. -#' @details See further examples and tutorials at . +#' @details See further examples and tutorials at <`r get_docs_url()`>. #' @examples #' \dontrun{ #' @@ -145,10 +145,8 @@ update.dgp <- function(object, X, Y, refit = TRUE, reset = FALSE, verb = TRUE, N new_object[['data']][['X']] <- unname(X) new_object[['data']][['Y']] <- unname(Y) new_object[['specs']] <- extract_specs(est_obj, "dgp") - if ("internal_dims" %in% names(object[['specs']])){ - new_object[['specs']][['internal_dims']] <- object[['specs']][['internal_dims']] - new_object[['specs']][['external_dims']] <- object[['specs']][['external_dims']] - } + new_object[['specs']][['internal_dims']] <- object[['specs']][['internal_dims']] + new_object[['specs']][['external_dims']] <- object[['specs']][['external_dims']] new_object[['specs']][['linked_idx']] <- if ( is.null(linked_idx) ) FALSE else linked_idx_py_to_r(linked_idx) new_object[['specs']][['vecchia']] <- object[['specs']][['vecchia']] new_object[['specs']][['M']] <- object[['specs']][['M']] @@ -222,10 +220,8 @@ update.gp <- function(object, X, Y, refit = TRUE, reset = FALSE, verb = TRUE, .. new_object[['data']][['X']] <- unname(X) new_object[['data']][['Y']] <- unname(Y) new_object[['specs']] <- extract_specs(constructor_obj_cp, "gp") - if ("internal_dims" %in% names(object[['specs']])){ - new_object[['specs']][['internal_dims']] <- object[['specs']][['internal_dims']] - new_object[['specs']][['external_dims']] <- object[['specs']][['external_dims']] - } + new_object[['specs']][['internal_dims']] <- object[['specs']][['internal_dims']] + new_object[['specs']][['external_dims']] <- object[['specs']][['external_dims']] new_object[['specs']][['linked_idx']] <- if ( is.null(linked_idx) ) FALSE else linked_idx_py_to_r(linked_idx) new_object[['specs']][['vecchia']] <- object[['specs']][['vecchia']] new_object[['specs']][['M']] <- object[['specs']][['M']] diff --git a/R/utils.R b/R/utils.R index 7cbf9e7..f00713a 100644 --- a/R/utils.R +++ b/R/utils.R @@ -9,21 +9,12 @@ #' please use the updated [lgp()] function, which provides a simpler and more efficient #' approach to building (D)GP emulators. #' -#' @param ... a sequence of lists: -#' 1. For DGP emulations, each list represents a DGP layer and contains GP nodes (produced by [kernel()]), or -#' likelihood nodes (produced by [Poisson()], [Hetero()], or [NegBin()]. -#' 2. For linked (D)GP emulations, each list represents a system layer and contains emulators (produced by [gp()] or +#' @param ... a sequence of lists. Each list represents a system layer and contains emulators (produced by [gp()] or #' [dgp()]) in that layer. #' -#' @return A list defining a DGP structure (for `struc` of [dgp()]) or a linked (D)GP structure -#' (for `struc` for [lgp()]). +#' @return A list defining a linked (D)GP structure to be passed to `struc` of [lgp()]. #' -#' @details See further examples and tutorials at . -#' @examples -#' \dontrun{ -#' -#' # See lgp() for an example. -#' } +#' @details See further examples and tutorials at <`r get_docs_url()`>. #' @md #' @keywords internal #' @export @@ -56,7 +47,7 @@ combine <- function(...) { #' training input data for different emulators. `Y` contains *N* single-column matrices named `emulator1,...,emulatorN` that are #' training output data for different emulators. #' -#' @details See further examples and tutorials at . +#' @details See further examples and tutorials at <`r get_docs_url()`>. #' @examples #' \dontrun{ #' @@ -171,7 +162,7 @@ pack <- function(..., id = NULL) { #' @return A named list that contains individual emulators (named `emulator1,...,emulatorS`) packed in `object`, #' where `S` is the number of emulators in `object`. #' -#' @details See further examples and tutorials at . +#' @details See further examples and tutorials at <`r get_docs_url()`>. #' @examples #' \dontrun{ #' @@ -215,7 +206,7 @@ unpack <- function(object) { #' #' @return No return value. `object` will be saved to a local `.pkl` file specified by `pkl_file`. #' -#' @details See further examples and tutorials at . +#' @details See further examples and tutorials at <`r get_docs_url()`>. #' @note Since emulators built from the package are 'python' objects, [save()] from R will not work as it would for R objects. If `object` #' was processed by [set_vecchia()] to add or remove the Vecchia approximation, `light` should be set to `FALSE` to ensure #' reproducibility after the saved emulator is reloaded by [read()]. @@ -272,7 +263,7 @@ write <- function(object, pkl_file, light = TRUE) { #' #' @return No return value. #' -#' @details See further examples and tutorials at . +#' @details See further examples and tutorials at <`r get_docs_url()`>. #' @examples #' \dontrun{ #' @@ -306,7 +297,7 @@ set_seed <- function(seed) { #' #' @return The updated `object`, with the assigned ID stored in its `id` slot. #' -#' @details See further examples and tutorials at . +#' @details See further examples and tutorials at <`r get_docs_url()`>. #' @examples #' \dontrun{ #' @@ -337,7 +328,7 @@ set_id <- function(object, id) { #' #' @return No return value. #' -#' @details See further examples and tutorials at . +#' @details See further examples and tutorials at <`r get_docs_url()`>. #' @md #' @export set_thread_num <- function(num) { @@ -361,7 +352,7 @@ set_thread_num <- function(num) { #' #' @return the number of threads. #' -#' @details See further examples and tutorials at . +#' @details See further examples and tutorials at <`r get_docs_url()`>. #' @md #' @export get_thread_num <- function() { @@ -381,7 +372,7 @@ get_thread_num <- function() { #' #' @return The S3 class of a GP emulator, a DGP emulator, a linked (D)GP emulator, or a bundle of (D)GP emulators. #' -#' @details See further examples and tutorials at . +#' @details See further examples and tutorials at <`r get_docs_url()`>. #' @examples #' \dontrun{ #' @@ -619,7 +610,7 @@ read <- function(pkl_file) { #' documents and the RStudio Viewer. The summary table can be further customized by [kableExtra] package. #' The resulting [visNetwork] object can be saved as an HTML file using [visNetwork::visSave()]. #' -#' @details See further examples and tutorials at . +#' @details See further examples and tutorials at <`r get_docs_url()`>. #' @examples #' \dontrun{ #' @@ -1461,13 +1452,13 @@ summary.lgp <- function(object, type = "plot", group_size = 1, ...) { #' constructed by [gp()], [dgp()] or [lgp()]. #' #' @param object an instance of the S3 class `gp`, `dgp`, or `lgp`. -#' @param vecchia a boolean or a list of booleans to indicate the addition or removal of the Vecchia approximation: -#' * if `object` is an instance of the `gp` or `dgp` class, `vecchia` is a boolean that indicates +#' @param vecchia a bool or a list of bools to indicate the addition or removal of the Vecchia approximation: +#' * if `object` is an instance of the `gp` or `dgp` class, `vecchia` is a bool that indicates #' either addition (`vecchia = TRUE`) or removal (`vecchia = FALSE`) of the Vecchia approximation from `object`. -#' * if `object` is an instance of the `lgp` class, `x` can be a boolean or a list of booleans: -#' - if `vecchia` is a boolean, it indicates either addition (`vecchia = TRUE`) or removal (`vecchia = FALSE`) of +#' * if `object` is an instance of the `lgp` class, `x` can be a bool or a list of bools: +#' - if `vecchia` is a bool, it indicates either addition (`vecchia = TRUE`) or removal (`vecchia = FALSE`) of #' the Vecchia approximation from all individual (D)GP emulators contained in `object`. -#' - if `vecchia` is a list of booleans, it should have same shape as `struc` that was supplied to [lgp()]. Each boolean +#' - if `vecchia` is a list of bools, it should have same shape as `struc` that was supplied to [lgp()]. Each bool #' in the list indicates if the corresponding (D)GP emulator contained in `object` shall have the Vecchia approximation #' added or removed. #' @param M the size of the conditioning set for the Vecchia approximation in the (D)GP emulator training. Defaults to `25`. @@ -1485,7 +1476,7 @@ summary.lgp <- function(object, type = "plot", group_size = 1, ...) { #' without the need to reconstruct the emulator. If the emulator was built without the Vecchia approximation, the function #' can add it, and if the emulator was built with the Vecchia approximation, the function can remove it. If the current #' state already matches the requested state, the emulator remains unchanged. -#' @details See further examples and tutorials at . +#' @details See further examples and tutorials at <`r get_docs_url()`>. #' @md #' @export set_vecchia <- function(object, vecchia = TRUE, M = 25, ord = NULL) { @@ -1579,7 +1570,7 @@ set_vecchia <- function(object, vecchia = TRUE, M = 25, ord = NULL) { #' even without knowing how different emulators are connected together. When this information is available and #' different emulators are collected, the connection information between emulators can then be assigned to #' individual emulators with this function. -#' @details See further examples and tutorials at . +#' @details See further examples and tutorials at <`r get_docs_url()`>. #' @examples #' \dontrun{ #' @@ -1624,7 +1615,7 @@ set_linked_idx <- function(object, idx) { #' - `loo` and `oos` created by [validate()]; and #' - `results` created by [predict()] #' in `object` will be removed and not contained in the returned object. -#' @details See further examples and tutorials at . +#' @details See further examples and tutorials at <`r get_docs_url()`>. #' @examples #' \dontrun{ #' @@ -1653,10 +1644,8 @@ set_imp <- function(object, B = 5) { new_object[['data']][['X']] <- object$data$X new_object[['data']][['Y']] <- object$data$Y new_object[['specs']] <- extract_specs(est_obj, "dgp") - if ("internal_dims" %in% names(object[['specs']])){ - new_object[['specs']][['internal_dims']] <- object[['specs']][['internal_dims']] - new_object[['specs']][['external_dims']] <- object[['specs']][['external_dims']] - } + new_object[['specs']][['internal_dims']] <- object[['specs']][['internal_dims']] + new_object[['specs']][['external_dims']] <- object[['specs']][['external_dims']] new_object[['specs']][['linked_idx']] <- if ( is.null(linked_idx) ) FALSE else linked_idx_py_to_r(linked_idx) new_object[['specs']][['vecchia']] <- object[['specs']][['vecchia']] new_object[['specs']][['M']] <- object[['specs']][['M']] @@ -1697,7 +1686,7 @@ set_imp <- function(object, B = 5) { #' - `loo` and `oos` created by [validate()]; and #' - `results` created by [predict()] #' in `object` will be removed and not contained in the returned object. -#' @details See further examples and tutorials at . +#' @details See further examples and tutorials at <`r get_docs_url()`>. #' @examples #' \dontrun{ #' @@ -1753,10 +1742,8 @@ window <- function(object, start, end = NULL, thin = 1) { new_object[['data']][['X']] <- object$data$X new_object[['data']][['Y']] <- object$data$Y new_object[['specs']] <- extract_specs(est_obj, "dgp") - if ("internal_dims" %in% names(object[['specs']])){ - new_object[['specs']][['internal_dims']] <- object[['specs']][['internal_dims']] - new_object[['specs']][['external_dims']] <- object[['specs']][['external_dims']] - } + new_object[['specs']][['internal_dims']] <- object[['specs']][['internal_dims']] + new_object[['specs']][['external_dims']] <- object[['specs']][['external_dims']] new_object[['specs']][['linked_idx']] <- if ( is.null(linked_idx) ) FALSE else linked_idx_py_to_r(linked_idx) new_object[['specs']][['vecchia']] <- object[['specs']][['vecchia']] new_object[['specs']][['M']] <- object[['specs']][['M']] @@ -1775,7 +1762,7 @@ window <- function(object, start, end = NULL, thin = 1) { } -#' @title Calculate the negative log-likelihood +#' @title Calculate the predictive negative log-likelihood #' #' @description This function computes the predictive negative log-likelihood from a #' DGP emulator with a likelihood layer. @@ -1789,14 +1776,7 @@ window <- function(object, start, end = NULL, thin = 1) { #' across all testing data points. The second one, named `allNLL`, is a vector that gives the negative predicted #' log-likelihood for each testing data point. #' -#' @details See further examples and tutorials at . -#' @examples -#' \dontrun{ -#' -#' # Check https://mingdeyu.github.io/dgpsi-R/ for examples -#' # on how to compute the negative predicted log-likelihood -#' # using nllik(). -#' } +#' @details See further examples and tutorials at <`r get_docs_url()`>. #' @md #' @export nllik <- function(object, x, y) { @@ -1846,7 +1826,7 @@ nllik <- function(object, x, y) { #' #' @return A `ggplot` object. #' -#' @details See further examples and tutorials at . +#' @details See further examples and tutorials at <`r get_docs_url()`>. #' @examples #' \dontrun{ #' @@ -1907,7 +1887,7 @@ trace_plot <- function(object, layer = NULL, node = 1) { #' @param object an instance of the `dgp` class that is generated by `dgp()`. #' @param control a list that can supply the following two components to control static pruning of the DGP emulator: #' * `min_size`, the minimum number of design points required to trigger pruning. Defaults to 10 times of the input dimensions. -#' * `threshold`, the R^2 value above which a GP node is considered redundant and removable. Defaults to `0.97`. +#' * `threshold`, the \eqn{R^2} value above which a GP node is considered redundant and removable. Defaults to `0.97`. #' @param verb a bool indicating if trace information will be printed during the function execution. Defaults to `TRUE`. #' #' @return An updated `object` that could be an instance of `gp`, `dgp`, or `bundle` (of GP emulators) class. @@ -1923,7 +1903,7 @@ trace_plot <- function(object, layer = NULL, node = 1) { #' #' in `object` will be removed and not contained in the returned object. #' -#' @details See further examples and tutorials at . +#' @details See further examples and tutorials at <`r get_docs_url()`>. #' @examples #' \dontrun{ #' @@ -1993,9 +1973,6 @@ prune <- function(object, control = list(), verb = TRUE) { stop("To prune, 'object' needs to be trained with a dataset comprising a size at least equal to 'min_size' in 'control'. Use design() to enrich the training set.", call. = FALSE) } - if (!"internal_dims" %in% names(object[['specs']])) { - stop("'object' must be an instance of the 'dgp' class generated by dgp() with 'struc = NULL'.", call. = FALSE) - } else { n_layer <- object$constructor_obj$n_layer if (object$constructor_obj$all_layer[[n_layer]][[1]]$type!='gp') { n_layer <- n_layer - 1 @@ -2010,7 +1987,6 @@ prune <- function(object, control = list(), verb = TRUE) { } } } - } is.finish <- FALSE cropping_times <- 0 @@ -2271,3 +2247,16 @@ upcase2 <- function(x) { substr(x, 1, 1) <- toupper(substr(x, 1, 1)) x } + +get_docs_url <- function() { + pkg_version <- as.character(utils::packageVersion("dgpsi")) + + is_dev <- grepl("\\.9000$", pkg_version) + + if (is_dev) { + "https://mingdeyu.github.io/dgpsi-R/dev/" + } else { + "https://mingdeyu.github.io/dgpsi-R/" + } +} + diff --git a/R/validation.R b/R/validation.R index a8cd285..d16bc35 100644 --- a/R/validation.R +++ b/R/validation.R @@ -25,7 +25,7 @@ #' * `r new_badge("new")` If `object` is an instance of the `lgp` class created by [lgp()] with argument `struc` in data frame form, #' `x_test` must be a matrix representing the global input, where each row corresponds to a test data point and each column represents a global input dimension. #' The column indices in `x_test` must align with the indices specified in the `From_Output` column of the `struc` data frame (used in [lgp()]), -#' corresponding to rows where the `From_Emulator` column is `"Global"`. +#' corresponding to rows where the `From_Emulator` column is `"Global"`. #' #' `x_test` must be provided if `object` is an instance of the `lgp`. `x_test` must also be provided if `y_test` is provided. Defaults to `NULL`, in which case LOO validation is performed. #' @param y_test the OOS output data corresponding to `x_test`: @@ -39,7 +39,7 @@ #' in the final layer. #' #' `y_test` must be provided if `object` is an instance of the `lgp`. `y_test` must also be provided if `x_test` is provided. Defaults to `NULL`, in which case LOO validation is performed. -#' @param method `r new_badge("updated")` the prediction approach to use for validation: either the mean-variance approach (`"mean_var"`) or the sampling approach (`"sampling"`). For details see [prediction()]. +#' @param method `r new_badge("updated")` the prediction approach to use for validation: either the mean-variance approach (`"mean_var"`) or the sampling approach (`"sampling"`). For details see [predict()]. #' For DGP emulators with a categorical likelihood (`likelihood = "Categorical"` in [dgp()]), only the sampling approach is supported. #' By default, the method is set to `"sampling"` for DGP emulators with Poisson, Negative Binomial, and Categorical likelihoods and `"mean_var"` otherwise. #' @param sample_size the number of samples to draw for each given imputation if `method = "sampling"`. Defaults to `50`. @@ -81,8 +81,7 @@ #' - a vector called `rmse` that contains the root mean/median squared errors of the DGP emulator across different output #' dimensions. #' - a vector called `nrmse` that contains the (max-min) normalized root mean/median squared errors of the DGP emulator across different output -#' dimensions. The max-min normalization -#' uses the maximum and minimum values of the validation outputs contained in `y_train` (or `y_test`). +#' dimensions. The max-min normalization uses the maximum and minimum values of the validation outputs contained in `y_train` (or `y_test`). #' - `r new_badge("new")` an integer called `M` that contains size of the conditioning set used for the Vecchia approximation, if used, for emulator validation. #' - an integer called `sample_size` that contains the number of samples used for validation if `method = "sampling"`. #' @@ -121,7 +120,7 @@ #' be implemented. LOO validation is only applicable to a GP or DGP emulator (i.e., `object` is an instance of the `gp` or `dgp` #' class). If a linked (D)GP emulator (i.e., `object` is an instance of the `lgp` class) is provided, `x_test` and `y_test` must #' also be provided for OOS validation. -#' @details See further examples and tutorials at . +#' @details See further examples and tutorials at <`r get_docs_url()`>. #' @examples #' \dontrun{ #' @@ -340,7 +339,7 @@ validate.dgp <- function(object, x_test = NULL, y_test = NULL, method = NULL, sa #check core number if( !is.null(cores) ) { cores <- as.integer(cores) - if ( cores < 1 ) stop("cores must be >= 1.", call. = FALSE) + if ( cores < 1 ) stop("'cores' must be >= 1.", call. = FALSE) } M <- as.integer(M) @@ -619,13 +618,13 @@ validate.lgp <- function(object, x_test = NULL, y_test = NULL, method = NULL, sa if ( "metadata" %in% names(object$specs) ){ if ( !("emulator_obj" %in% names(object)) ){ - stop("'object' is not in activation mode for validation. Please set `mode = 'activate'` in `lgp()` to build the emulator.", call. = FALSE) + stop("'object' is not activated for predictions. Please set `activate = TRUE` in `lgp()` to activate the emulator.", call. = FALSE) } } #check core number if( !is.null(cores) ) { cores <- as.integer(cores) - if ( cores < 1 ) stop("cores must be >= 1.", call. = FALSE) + if ( cores < 1 ) stop("'cores' must be >= 1.", call. = FALSE) } M <- as.integer(M) diff --git a/R/vigf.R b/R/vigf.R index ab38503..156edea 100644 --- a/R/vigf.R +++ b/R/vigf.R @@ -12,7 +12,7 @@ #' The list must have a length equal to the number of emulators in `object`, with each element being a matrix representing the candidate set for a corresponding #' emulator in the bundle. Defaults to `NULL`. #' @param n_start an integer that gives the number of initial design points to be used to determine next design point(s). This argument -#' is only used when `x_cand` is `NULL`. Defaults to `20`. +#' is only used when `x_cand` is `NULL`. Defaults to `10`. #' @param batch_size an integer that gives the number of design points to be chosen. #' Defaults to `1`. #' @param M `r new_badge("new")` the size of the conditioning set for the Vecchia approximation in the criterion calculation. This argument is only used if the emulator `object` @@ -67,7 +67,7 @@ #' @references #' Mohammadi, H., & Challenor, P. (2022). Sequential adaptive design for emulating costly computer codes. *arXiv:2206.12113*. #' -#' @details See further examples and tutorials at . +#' @details See further examples and tutorials at <`r get_docs_url()`>. #' @examples #' \dontrun{ #' @@ -116,7 +116,7 @@ vigf <- function(object, ...){ #' @rdname vigf #' @method vigf gp #' @export -vigf.gp <- function(object, x_cand = NULL, n_start = 20, batch_size = 1, M = 50, workers = 1, limits = NULL, int = FALSE, ...) { +vigf.gp <- function(object, x_cand = NULL, n_start = 10, batch_size = 1, M = 50, workers = 1, limits = NULL, int = FALSE, ...) { if ( is.null(pkg.env$dgpsi) ) { init_py(verb = F) if (pkg.env$restart) return(invisible(NULL)) @@ -237,7 +237,7 @@ vigf.gp <- function(object, x_cand = NULL, n_start = 20, batch_size = 1, M = 50, #' @rdname vigf #' @method vigf dgp #' @export -vigf.dgp <- function(object, x_cand = NULL, n_start = 20, batch_size = 1, M = 50, workers = 1, limits = NULL, int = FALSE, aggregate = NULL, ...) { +vigf.dgp <- function(object, x_cand = NULL, n_start = 10, batch_size = 1, M = 50, workers = 1, limits = NULL, int = FALSE, aggregate = NULL, ...) { if ( is.null(pkg.env$dgpsi) ) { init_py(verb = F) if (pkg.env$restart) return(invisible(NULL)) @@ -585,7 +585,7 @@ vigf.dgp <- function(object, x_cand = NULL, n_start = 20, batch_size = 1, M = 50 #' @rdname vigf #' @method vigf bundle #' @export -vigf.bundle <- function(object, x_cand = NULL, n_start = 20, batch_size = 1, M = 50, workers = 1, limits = NULL, int = FALSE, aggregate = NULL, ...) { +vigf.bundle <- function(object, x_cand = NULL, n_start = 10, batch_size = 1, M = 50, workers = 1, limits = NULL, int = FALSE, aggregate = NULL, ...) { if ( is.null(pkg.env$dgpsi) ) { init_py(verb = F) if (pkg.env$restart) return(invisible(NULL)) diff --git a/_pkgdown.yml b/_pkgdown.yml index e14d34b..9f35b2b 100644 --- a/_pkgdown.yml +++ b/_pkgdown.yml @@ -48,18 +48,18 @@ articles: - seq_design - title: Sequential Design II - desc: Sequential design for a bundle of DGP emulators with the stopping rule. + desc: Sequential design for a bundle of DGP emulators with a stopping rule. navbar: ~ contents: - seq_design_2 -- title: Large-scale DGP Emulation +- title: Large-scale Emulation with the Vecchia Approximation desc: Large-scale DGP emulation using a Vecchia implementation under the SI. navbar: ~ contents: - large_scale_emulation -- title: DGP Classification using Stochastic Imputation +- title: DGP Classification using dgpsi desc: DGP classification of the iris data set. navbar: ~ contents: diff --git a/docs/categorical_summary.html b/docs/categorical_summary.html index e646227..9e31543 100644 --- a/docs/categorical_summary.html +++ b/docs/categorical_summary.html @@ -1,8 +1,8 @@ - + - +visNetwork - +
-
+
- - + + diff --git a/inst/WORDLIST b/inst/WORDLIST index a9a274a..ac5f86c 100644 --- a/inst/WORDLIST +++ b/inst/WORDLIST @@ -3,6 +3,7 @@ ASA CMD Challenor DGP +DGPs ESS GPs Gu @@ -38,6 +39,8 @@ lifecycle maximin oos reproducibility +scalable +softmax suboptimal th ’s diff --git a/man/Hetero.Rd b/man/Hetero.Rd deleted file mode 100644 index 2c1efa4..0000000 --- a/man/Hetero.Rd +++ /dev/null @@ -1,39 +0,0 @@ -% Generated by roxygen2: do not edit by hand -% Please edit documentation in R/likelihood.R -\name{Hetero} -\alias{Hetero} -\title{Initialize a heteroskedastic Gaussian likelihood node} -\usage{ -Hetero(input_dim = NULL) -} -\arguments{ -\item{input_dim}{a vector of length two that contains the indices of two GP nodes in the feeding -layer whose outputs feed into this likelihood node. When set to \code{NULL}, -all outputs from GP nodes in the feeding layer feed into this likelihood node, and in such a case -one needs to ensure that only two GP nodes are specified in the feeding layer. -Defaults to \code{NULL}.} -} -\value{ -A 'python' object to represent a heteroskedastic Gaussian likelihood node. -} -\description{ -\ifelse{html}{\href{https://lifecycle.r-lib.org/articles/stages.html#deprecated}{\figure{lifecycle-deprecated.svg}{options: alt='[Deprecated]'}}}{\strong{[Deprecated]}} - -This function is deprecated and will be removed in the next release. -To incorporate a heteroskedastic Gaussian likelihood node into a DGP structure, -use the \code{likelihood} argument in the \code{dgp()} function instead. -} -\details{ -See further examples and tutorials at \url{https://mingdeyu.github.io/dgpsi-R/}. -} -\note{ -The heteroskedastic Gaussian likelihood node can only be linked to two feeding GP nodes. -} -\examples{ -\dontrun{ - -# Check https://mingdeyu.github.io/dgpsi-R/ for examples -# on how to customize DGP structures using Hetero(). -} -} -\keyword{internal} diff --git a/man/NegBin.Rd b/man/NegBin.Rd deleted file mode 100644 index 46bea6e..0000000 --- a/man/NegBin.Rd +++ /dev/null @@ -1,39 +0,0 @@ -% Generated by roxygen2: do not edit by hand -% Please edit documentation in R/likelihood.R -\name{NegBin} -\alias{NegBin} -\title{Initialize a negative Binomial likelihood node} -\usage{ -NegBin(input_dim = NULL) -} -\arguments{ -\item{input_dim}{a vector of length two that contains the indices of two GP nodes in the feeding -layer whose outputs feed into this likelihood node. When set to \code{NULL}, -all outputs from GP nodes in the feeding layer feed into this likelihood node, and in such a case -one needs to ensure that only two GP nodes are specified in the feeding layer. -Defaults to \code{NULL}.} -} -\value{ -A 'python' object to represent a negative Binomial likelihood node. -} -\description{ -\ifelse{html}{\href{https://lifecycle.r-lib.org/articles/stages.html#deprecated}{\figure{lifecycle-deprecated.svg}{options: alt='[Deprecated]'}}}{\strong{[Deprecated]}} - -This function is deprecated and will be removed in the next release. -To incorporate a negative Binomial likelihood node into a DGP structure, -use the \code{likelihood} argument in the \code{dgp()} function instead. -} -\details{ -See further examples and tutorials at \url{https://mingdeyu.github.io/dgpsi-R/}. -} -\note{ -The negative Binomial likelihood node can only be linked to two feeding GP nodes. -} -\examples{ -\dontrun{ - -# Check https://mingdeyu.github.io/dgpsi-R/ for examples -# on how to customize DGP structures using NegBin(). -} -} -\keyword{internal} diff --git a/man/Poisson.Rd b/man/Poisson.Rd deleted file mode 100644 index f9b884b..0000000 --- a/man/Poisson.Rd +++ /dev/null @@ -1,39 +0,0 @@ -% Generated by roxygen2: do not edit by hand -% Please edit documentation in R/likelihood.R -\name{Poisson} -\alias{Poisson} -\title{Initialize a Poisson likelihood node} -\usage{ -Poisson(input_dim = NULL) -} -\arguments{ -\item{input_dim}{a vector of length one that contains the indices of one GP node in the feeding -layer whose outputs feed into this likelihood node. When set to \code{NULL}, -all outputs from GP nodes in the feeding layer feed into this likelihood node, and in such a case -one needs to ensure that only one GP node is specified in the feeding layer. -Defaults to \code{NULL}.} -} -\value{ -A 'python' object to represent a Poisson likelihood node. -} -\description{ -\ifelse{html}{\href{https://lifecycle.r-lib.org/articles/stages.html#deprecated}{\figure{lifecycle-deprecated.svg}{options: alt='[Deprecated]'}}}{\strong{[Deprecated]}} - -This function is deprecated and will be removed in the next release. -To incorporate a Poisson likelihood node into a DGP structure, -use the \code{likelihood} argument in the \code{dgp()} function instead. -} -\details{ -See further examples and tutorials at \url{https://mingdeyu.github.io/dgpsi-R/}. -} -\note{ -The Poisson likelihood node can only be linked to one feeding GP node. -} -\examples{ -\dontrun{ - -# Check https://mingdeyu.github.io/dgpsi-R/ for examples -# on how to customize DGP structures using Poisson(). -} -} -\keyword{internal} diff --git a/man/alm.Rd b/man/alm.Rd index cb8ff2d..20cb135 100644 --- a/man/alm.Rd +++ b/man/alm.Rd @@ -58,10 +58,10 @@ alm(object, ...) \item{...}{any arguments (with names different from those of arguments used in \code{\link[=alm]{alm()}}) that are used by \code{aggregate} can be passed here.} -\item{x_cand}{a matrix (with each row containing a design point and column representing an input dimension) that gives a candidate set -from which the next design point(s) are determined. If \code{object} is an instance of the \code{bundle} class and \code{aggregate} is not supplied, \code{x_cand} could also -be a list with length equal to the number of emulators contained in \code{object}. In this case, each slot in \code{x_cand} should be a candidate set matrix -for each emulator included in the bundle. Defaults to \code{NULL}.} +\item{x_cand}{a matrix (with each row being a design point and column being an input dimension) that gives a candidate set +from which the next design point(s) are determined. If \code{object} is an instance of the \code{bundle} class and \code{aggregate} is not supplied, \code{x_cand} can also be a list. +The list must have a length equal to the number of emulators in \code{object}, with each element being a matrix representing the candidate set for a corresponding +emulator in the bundle. Defaults to \code{NULL}.} \item{n_start}{an integer that gives the number of initial design points to be used to determine next design point(s). This argument is only used when \code{x_cand} is \code{NULL}. Defaults to \code{20}.} @@ -94,32 +94,38 @@ of the matrix is equal to: \item the emulator output dimension if \code{object} is an instance of the \code{dgp} class; or \item the number of emulators contained in \code{object} if \code{object} is an instance of the \code{bundle} class. } -\item the output should be a vector that aggregates scores across outputs or emulators at different design points. +\item the output should be a vector that gives aggregate scores at different design points. } -Set to \code{NULL} to disable the aggregation. Defaults to \code{NULL}.} +Set to \code{NULL} to disable aggregation. Defaults to \code{NULL}.} } \value{ \enumerate{ -\item If \code{x_cand} is not \code{NULL} and: +\item If \code{x_cand} is not \code{NULL}: \itemize{ -\item \code{object} is an instance of the \code{gp} class, a vector is returned with length equal to \code{batch_size}, giving the positions (i.e., row numbers) -of next design points from \code{x_cand}. -\item \code{object} is an instance of the \code{dgp} class, a vector is returned with length equal to \code{batch_size * D}, giving positions (i.e., row numbers) -of next design points from \code{x_cand} to be added to the DGP emulator. \code{D} equals to the number of output dimensions of the DGP -emulator if there is no likelihood layer in the hierarchy. If \code{object} is a DGP emulator with either \code{Hetero} or \code{NegBin} likelihood layer, -\code{D = 2}. If \code{object} is a DGP emulator with a \code{Categorical} likelihood layer, \code{D} equals to one (for binary output) or \code{K} (for multi-class output with \code{K} classes). -\item \code{object} is an instance of the \code{bundle} class, a matrix is returned with row number equal to \code{batch_size} and column number equal to the number of -emulators in the bundle, giving positions (i.e., row numbers) of next design points from \code{x_cand} to be added to individual emulators. -} -\item If \code{x_cand = NULL} and: +\item When \code{object} is an instance of the \code{gp} class, a vector of length \code{batch_size} is returned, containing the positions +(row numbers) of the next design points from \code{x_cand}. +\item When \code{object} is an instance of the \code{dgp} class, a vector of length \code{batch_size * D} is returned, containing the positions +(row numbers) of the next design points from \code{x_cand} to be added to the DGP emulator. \itemize{ -\item \code{object} is an instance of the \code{gp} class, a matrix is returned with row number equal to \code{batch_size}, giving the next design points to be evaluated. -\item \code{object} is an instance of the \code{dgp} class, a matrix is returned with row number equal to \code{batch_size * D} where \code{D} is the number of output dimensions of the DGP -emulator if no likelihood layer is included. If \code{object} is a DGP emulator with either \code{Hetero} or \code{NegBin} likelihood layer, \code{D = 2}. If \code{object} is a DGP emulator -with a \code{Categorical} likelihood layer, \code{D} equals to one (for binary output) or \code{K} (for multi-class output with \code{K} classes). -\item \code{object} is an instance of the \code{bundle} class, a list is returned with the length equal to the number of -emulators in the bundle. Each element in the list is a matrix with row number equal to \code{batch_size}, giving next design points to be added to individual emulators. +\item \code{D} is the number of output dimensions of the DGP emulator if no likelihood layer is included. +\item For a DGP emulator with a \code{Hetero} or \code{NegBin} likelihood layer, \code{D = 2}. +\item For a DGP emulator with a \code{Categorical} likelihood layer, \code{D = 1} for binary output or \code{D = K} for multi-class output with \code{K} classes. +} +\item When \code{object} is an instance of the \code{bundle} class, a matrix is returned with \code{batch_size} rows and a column for each emulator in +the bundle, containing the positions (row numbers) of the next design points from \code{x_cand} for individual emulators. +} +\item If \code{x_cand} is \code{NULL}: +\itemize{ +\item When \code{object} is an instance of the \code{gp} class, a matrix with \code{batch_size} rows is returned, giving the next design points to be evaluated. +\item When \code{object} is an instance of the \code{dgp} class, a matrix with \code{batch_size * D} rows is returned, where: +\itemize{ +\item \code{D} is the number of output dimensions of the DGP emulator if no likelihood layer is included. +\item For a DGP emulator with a \code{Hetero} or \code{NegBin} likelihood layer, \code{D = 2}. +\item For a DGP emulator with a \code{Categorical} likelihood layer, \code{D = 1} for binary output or \code{D = K} for multi-class output with \code{K} classes. +} +\item When \code{object} is an instance of the \code{bundle} class, a list is returned with a length equal to the number of emulators in the bundle. Each +element of the list is a matrix with \code{batch_size} rows, where each row represents a design point to be added to the corresponding emulator. } } } @@ -128,11 +134,12 @@ This function searches from a candidate set to locate the next design point(s) t or a bundle of (D)GP emulators using the Active Learning MacKay (ALM) criterion (see the reference below). } \details{ -See further examples and tutorials at \url{https://mingdeyu.github.io/dgpsi-R/}. +See further examples and tutorials at \url{https://mingdeyu.github.io/dgpsi-R/dev/}. } \note{ -The column order of the first argument of \code{aggregate} must be consistent with the order of emulator output dimensions (if \code{object} is an instance of the -\code{dgp} class), or the order of emulators placed in \code{object} if \code{object} is an instance of the \code{bundle} class. +The first column of the matrix supplied to the first argument of \code{aggregate} must correspond to the first output dimension of the DGP emulator +if \code{object} is an instance of the \code{dgp} class, and so on for subsequent columns and dimensions. If \code{object} is an instance of the \code{bundle} class, +the first column must correspond to the first emulator in the bundle, and so on for subsequent columns and emulators. } \examples{ \dontrun{ diff --git a/man/combine.Rd b/man/combine.Rd index 3fea7a6..02ed8a1 100644 --- a/man/combine.Rd +++ b/man/combine.Rd @@ -7,17 +7,11 @@ combine(...) } \arguments{ -\item{...}{a sequence of lists: -\enumerate{ -\item For DGP emulations, each list represents a DGP layer and contains GP nodes (produced by \code{\link[=kernel]{kernel()}}), or -likelihood nodes (produced by \code{\link[=Poisson]{Poisson()}}, \code{\link[=Hetero]{Hetero()}}, or \code{\link[=NegBin]{NegBin()}}. -\item For linked (D)GP emulations, each list represents a system layer and contains emulators (produced by \code{\link[=gp]{gp()}} or -\code{\link[=dgp]{dgp()}}) in that layer. -}} +\item{...}{a sequence of lists. Each list represents a system layer and contains emulators (produced by \code{\link[=gp]{gp()}} or +\code{\link[=dgp]{dgp()}}) in that layer.} } \value{ -A list defining a DGP structure (for \code{struc} of \code{\link[=dgp]{dgp()}}) or a linked (D)GP structure -(for \code{struc} for \code{\link[=lgp]{lgp()}}). +A list defining a linked (D)GP structure to be passed to \code{struc} of \code{\link[=lgp]{lgp()}}. } \description{ \ifelse{html}{\href{https://lifecycle.r-lib.org/articles/stages.html#deprecated}{\figure{lifecycle-deprecated.svg}{options: alt='[Deprecated]'}}}{\strong{[Deprecated]}} @@ -28,12 +22,6 @@ please use the updated \code{\link[=lgp]{lgp()}} function, which provides a simp approach to building (D)GP emulators. } \details{ -See further examples and tutorials at \url{https://mingdeyu.github.io/dgpsi-R/}. -} -\examples{ -\dontrun{ - -# See lgp() for an example. -} +See further examples and tutorials at \url{https://mingdeyu.github.io/dgpsi-R/dev/}. } \keyword{internal} diff --git a/man/continue.Rd b/man/continue.Rd index 6136bcb..a4602bb 100644 --- a/man/continue.Rd +++ b/man/continue.Rd @@ -2,7 +2,7 @@ % Please edit documentation in R/dgp.R \name{continue} \alias{continue} -\title{Continue the training of a DGP emulator} +\title{Continue training a DGP emulator} \usage{ continue( object, @@ -17,7 +17,7 @@ continue( \arguments{ \item{object}{an instance of the \code{dgp} class.} -\item{N}{additional number of iterations for the DGP emulator training. If set to \code{NULL}, the number of iterations is set to \code{500} if the DGP emulator +\item{N}{additional number of iterations to train the DGP emulator. If set to \code{NULL}, the number of iterations is set to \code{500} if the DGP emulator was constructed without the Vecchia approximation, and is set to \code{200} if Vecchia approximation was used. Defaults to \code{NULL}.} \item{cores}{the number of processes to be used to optimize GP components (in the same layer) at each M-step of the training. If set to \code{NULL}, @@ -25,24 +25,18 @@ the number of processes is set to \verb{(max physical cores available - 1)} if t Otherwise, the number of processes is set to \verb{max physical cores available \%/\% 2}. Only use multiple processes when there is a large number of GP components in different layers and optimization of GP components is computationally expensive. Defaults to \code{1}.} -\item{ess_burn}{number of burnin steps for the ESS-within-Gibbs +\item{ess_burn}{number of burnin steps for ESS-within-Gibbs at each I-step of the training. Defaults to \code{10}.} -\item{verb}{a bool indicating if the progress bar will be printed during the training: -\enumerate{ -\item \code{FALSE}: the training progress bar will not be displayed. -\item \code{TRUE}: the training progress bar will be displayed. -} - -Defaults to \code{TRUE}.} +\item{verb}{a bool indicating if a progress bar will be printed during training. Defaults to \code{TRUE}.} \item{burnin}{the number of training iterations to be discarded for point estimates calculation. Must be smaller than the overall training iterations so-far implemented. If this is not specified, only the last 25\% of iterations are used. This overrides the value of \code{burnin} set in \code{\link[=dgp]{dgp()}}. Defaults to \code{NULL}.} -\item{B}{the number of imputations to produce the predictions. Increase the value to account for -more imputation uncertainties. This overrides the value of \code{B} set in \code{\link[=dgp]{dgp()}} if \code{B} is not +\item{B}{the number of imputations to produce predictions. Increase the value to account for +more imputation uncertainty. This overrides the value of \code{B} set in \code{\link[=dgp]{dgp()}} if \code{B} is not \code{NULL}. Defaults to \code{NULL}.} } \value{ @@ -52,7 +46,7 @@ An updated \code{object}. This function implements additional training iterations for a DGP emulator. } \details{ -See further examples and tutorials at \url{https://mingdeyu.github.io/dgpsi-R/}. +See further examples and tutorials at \url{https://mingdeyu.github.io/dgpsi-R/dev/}. } \note{ \itemize{ diff --git a/man/deserialize.Rd b/man/deserialize.Rd index 62c0cce..4a08332 100644 --- a/man/deserialize.Rd +++ b/man/deserialize.Rd @@ -16,7 +16,7 @@ The S3 class of a GP emulator, a DGP emulator, a linked (D)GP emulator, or a bun This function restores the serialized emulator created by \code{\link[=serialize]{serialize()}}. } \details{ -See further examples and tutorials at \url{https://mingdeyu.github.io/dgpsi-R/}. +See further examples and tutorials at \url{https://mingdeyu.github.io/dgpsi-R/dev/}. } \examples{ \dontrun{ diff --git a/man/design.Rd b/man/design.Rd index 36ac302..e3238de 100644 --- a/man/design.Rd +++ b/man/design.Rd @@ -125,7 +125,7 @@ design( \item the S3 class \code{bundle}. }} -\item{N}{the number of steps for the sequential design.} +\item{N}{the number of iterations for the sequential design.} \item{x_cand}{a matrix (with each row being a design point and column being an input dimension) that gives a candidate set from which the next design points are determined. Defaults to \code{NULL}.} @@ -146,134 +146,148 @@ dimensions, and its first and second columns correspond to the minimum and maxim \code{limits = NULL} if \code{x_cand} is supplied. This argument is only used when \code{x_cand} is not supplied, i.e., \code{x_cand = NULL}. Defaults to \code{NULL}. If you provide a custom \code{method} function with an argument called \code{limits}, the value of \code{limits} will be passed to your function.} -\item{f}{an R function that represents the simulator. \code{f} needs to be specified with the following basic rules: +\item{f}{an R function representing the simulator. \code{f} must adhere to the following rules: \itemize{ -\item the first argument of the function should be a matrix with rows being different design points and columns being input dimensions. -\item the output of the function can either +\item \strong{First argument}: a matrix where rows correspond to different design points, and columns represent input dimensions. +\item \strong{Function output}: \itemize{ -\item a matrix with rows being different outputs (corresponding to the input design points) and columns being output dimensions. If there is -only one output dimension, the matrix still needs to be returned with a single column. -\item a list with the first element being the output matrix described above and, optionally, additional named elements which will update values -of any arguments with the same names passed via \code{...}. The list output can be useful if some additional arguments of \code{f} and \code{aggregate} -need to be updated after each step of the sequential design. +\item a matrix where rows correspond to different outputs (matching the input design points) and columns represent output dimensions. +If there is only one output dimension, the function should return a matrix with a single column. +\item alternatively, a list where: +\itemize{ +\item the first element is the output matrix as described above. +\item additional named elements can optionally update values of arguments with matching names passed via \code{...}. This list output is +useful if additional arguments to \code{f}, \code{method}, or \code{eval} need to be updated after each sequential design iteration. +} } } -See \emph{Note} section below for further information. This argument is used when \code{y_cand = NULL}. Defaults to \code{NULL}.} +See the \emph{Note} section below for additional details. This argument is required and must be supplied when \code{y_cand = NULL}. Defaults to \code{NULL}.} \item{reps}{an integer that gives the number of repetitions of the located design points to be created and used for evaluations of \code{f}. Set the -argument to an integer greater than \code{1} if \code{f} is a stochastic function that can generate different responses given a same input and the +argument to an integer greater than \code{1} only if \code{f} is a stochastic function that can generate different responses given for the same input and the supplied emulator \code{object} can deal with stochastic responses, e.g., a (D)GP emulator with \code{nugget_est = TRUE} or a DGP emulator with a likelihood layer. The argument is only used when \code{f} is supplied. Defaults to \code{1}.} -\item{freq}{a vector of two integers with the first element giving the frequency (in number of steps) to re-fit the -emulator, and the second element giving the frequency to implement the emulator validation (for RMSE). Defaults to \code{c(1, 1)}.} +\item{freq}{a vector of two integers with the first element indicating the number of iterations taken between re-estimating +the emulator hyperparameters, and the second element defining the number of iterations to take between re-calculation of evaluating metrics +on the validation set (see \code{x_test} below) via the \code{eval} function. Defaults to \code{c(1, 1)}.} \item{x_test}{a matrix (with each row being an input testing data point and each column being an input dimension) that gives the testing -input data to evaluate the emulator after each step of the sequential design. Set to \code{NULL} for the LOO-based emulator validation. +input data to evaluate the emulator after each \code{freq[2]} iterations of the sequential design. Set to \code{NULL} for LOO-based emulator validation. Defaults to \code{NULL}. This argument is only used if \code{eval = NULL}.} -\item{y_test}{the testing output data that correspond to \code{x_test} for the emulator validation after each step of the sequential design: +\item{y_test}{the testing output data corresponding to \code{x_test} for emulator validation after each \code{freq[2]} iterations of the sequential design: \itemize{ -\item if \code{object} is an instance of the \code{gp} class, \code{y_test} is a matrix with only one column and each row being an testing output data point. -\item if \code{object} is an instance of the \code{dgp} class, \code{y_test} is a matrix with its rows being testing output data points and columns being +\item if \code{object} is an instance of the \code{gp} class, \code{y_test} is a matrix with only one column and each row contains a testing output data point from the corresponding row of \code{x_test}. +\item if \code{object} is an instance of the \code{dgp} class, \code{y_test} is a matrix with its rows containing testing output data points corresponding to the same rows of \code{x_test} and columns representing the output dimensions. +\item if \code{object} is an instance of the \code{bundle} class, \code{y_test} is a matrix with each row representing the outputs for the corresponding row of \code{x_test} and each column representing the output of the different emulators in the bundle. } -Set to \code{NULL} for the LOO-based emulator validation. Defaults to \code{NULL}. This argument is only used if \code{eval = NULL}.} +Set to \code{NULL} for LOO-based emulator validation. Defaults to \code{NULL}. This argument is only used if \code{eval = NULL}.} + +\item{reset}{A bool or a vector of bools indicating whether to reset the hyperparameters of the emulator(s) to their initial values (as set during initial construction) before re-fitting. +The re-fitting occurs based on the frequency specified by \code{freq[1]}. This option is useful when hyperparameters are suspected to have converged to a local optimum affecting validation performance. +\itemize{ +\item If a single bool is provided, it applies to every iteration of the sequential design. +\item If a vector is provided, its length must equal \code{N} (even if the re-fit frequency specified in \code{freq[1]} is not 1) and it will apply to the corresponding iterations of the sequential design. +} -\item{reset}{a bool or a vector of bools indicating whether to reset hyperparameters of the emulator to their initial values when it was initially -constructed after the input-output update and before the re-fit. If a bool is given, it will be applied to -every step of the sequential design. If a vector is provided, its length should be equal to \code{N} and will be applied to individual -steps of the sequential design. Defaults to \code{FALSE}.} +Defaults to \code{FALSE}.} -\item{target}{a numeric or a vector that gives the target RMSEs at which the sequential design is terminated. Defaults to \code{NULL}, in which -case the sequential design stops after \code{N} steps. See \emph{Note} section below for further information about \code{target}.} +\item{target}{a number or vector specifying the target evaluation metric value(s) at which the sequential design should terminate. +Defaults to \code{NULL}, in which case the sequential design stops after \code{N} steps. See the \emph{Note} section below for further details about \code{target}.} -\item{method}{an R function that give indices of designs points in a candidate set. The function must satisfy the following basic rules: +\item{method}{an R function that determines the next design points to be evaluated by \code{f}. The function must adhere to the following rules: \itemize{ -\item the first argument is an emulator object that can be either an instance of +\item \strong{First argument}: an emulator object, which can be one of the following: \itemize{ -\item the \code{gp} class (produced by \code{\link[=gp]{gp()}}); -\item the \code{dgp} class (produced by \code{\link[=dgp]{dgp()}}); -\item the \code{bundle} class (produced by \code{\link[=pack]{pack()}}). +\item an instance of the \code{gp} class (produced by \code{\link[=gp]{gp()}}); +\item an instance of the \code{dgp} class (produced by \code{\link[=dgp]{dgp()}}); +\item an instance of the \code{bundle} class (produced by \code{\link[=pack]{pack()}}). } -\item if \code{x_cand} is not \code{NULL}, the second argument is a matrix with rows representing a set of different design points. -\item if \code{x_cand} is not \code{NULL}, the output of the function +\item \strong{Second argument} (if \code{x_cand} is not \code{NULL}): a \emph{candidate matrix} representing a set of potential design points from which the \code{method} function selects the next points. +\item \strong{Function output}: +\itemize{ +\item If \code{x_cand} is not \code{NULL}: \itemize{ -\item is a vector that gives the row indices of chosen design points from the matrix supplied to the second argument, if the first argument is an instance of the \code{gp} or \code{dgp} class; -\item is a matrix that row indices of chosen design points from the matrix supplied to the second argument, if the first argument is an instance of the \code{bundle} class. Each column of the matrix gives the indices of the design -points to be added to individual emulators in the bundle. +\item for \code{gp} or \code{dgp} objects, the output must be a vector of row indices corresponding to the selected design points from the \emph{candidate matrix} (the second argument). +\item for \code{bundle} objects, the output must be a matrix containing the row indices of the selected design points from the \emph{candidate matrix}. Each column corresponds to +the indices for an individual emulator in the bundle. } -\item if \code{x_cand} is \code{NULL}, the output of the function +\item If \code{x_cand} is \code{NULL}: \itemize{ -\item is a matrix that gives with each row representing a new design point to be added, if the first argument is an instance of the \code{gp} or \code{dgp} class; -\item is a list with the length equal to the number of emulators in the bundle, if the first argument is an instance of the \code{bundle} class. Each element in the list is a matrix with same number of row. The rows of the matrix -represent next design points to be added to the corresponding emulator. +\item for \code{gp} or \code{dgp} objects, the output must be a matrix where each row represents a new design point to be added. +\item for \code{bundle} objects, the output must be a list with a length equal to the number of emulators in the bundle. Each element in the list is a matrix where rows +represent the new design points for the corresponding emulator. +} } } -See \code{\link[=alm]{alm()}}, \code{\link[=mice]{mice()}}, and \code{\link[=vigf]{vigf()}} for examples on customizing \code{method}. Defaults to \code{\link[=vigf]{vigf()}}.} +See \code{\link[=alm]{alm()}}, \code{\link[=mice]{mice()}}, and \code{\link[=vigf]{vigf()}} for examples of built-in \code{method} functions. Defaults to \code{\link[=vigf]{vigf()}}.} -\item{batch_size}{an integer specifying the number of design points to select in a single iteration. Defaults to \code{1}. This argument is used by -the built-in \code{method} functions \code{\link[=alm]{alm()}}, \code{\link[=mice]{mice()}}, and \code{\link[=vigf]{vigf()}}. If you provide a custom \code{method} function with an argument called \code{batch_size}, the value of \code{batch_size} -will be passed to your function.} +\item{batch_size}{an integer specifying the number of design points to select in a single iteration. Defaults to \code{1}. +This argument is used by the built-in \code{method} functions \code{\link[=alm]{alm()}}, \code{\link[=mice]{mice()}}, and \code{\link[=vigf]{vigf()}}. +If you provide a custom \code{method} function with an argument named \code{batch_size}, the value of \code{batch_size} will be passed to your function.} -\item{eval}{an R function that calculates the customized evaluating metric of the emulator. The function must satisfy the following basic rules: +\item{eval}{an R function that computes a customized metric for evaluating emulator performance. The function must adhere to the following rules: \itemize{ -\item the first argument is an emulator object that can be either an instance of +\item \strong{First argument}: an emulator object, which can be one of the following: \itemize{ -\item the \code{gp} class (produced by \code{\link[=gp]{gp()}}); -\item the \code{dgp} class (produced by \code{\link[=dgp]{dgp()}}); -\item the \code{bundle} class (produced by \code{\link[=pack]{pack()}}). +\item an instance of the \code{gp} class (produced by \code{\link[=gp]{gp()}}); +\item an instance of the \code{dgp} class (produced by \code{\link[=dgp]{dgp()}}); +\item an instance of the \code{bundle} class (produced by \code{\link[=pack]{pack()}}). } -\item the output of the function can be +\item \strong{Function output}: \itemize{ -\item a single metric value, if the first argument is an instance of the \code{gp} class; -\item a single metric value or a vector of metric values with the length equal to the number of output dimensions, if the first argument is an -instance of the \code{dgp} class; -\item a single metric value metric or a vector of metric values with the length equal to the number of emulators in the bundle, if the first -argument is an instance of the \code{bundle} class. +\item for \code{gp} objects, the output must be a single metric value. +\item for \code{dgp} objects, the output can be a single metric value or a vector of metric values with a length equal to the number of output dimensions. +\item for \code{bundle} objects, the output can be a single metric value or a vector of metric values with a length equal to the number of emulators in the bundle. } } -If no customized function is provided, the built-in evaluation metric, RMSE, will be calculated. Defaults to \code{NULL}. See \emph{Note} section below for further information.} +If no custom function is provided, a built-in evaluation metric (RMSE or log-loss, in the case of DGP emulators with categorical likelihoods) will be used. +Defaults to \code{NULL}. See the \emph{Note} section below for additional details.} -\item{verb}{a bool indicating if the trace information will be printed during the sequential design. +\item{verb}{a bool indicating if trace information will be printed during the sequential design. Defaults to \code{TRUE}.} \item{autosave}{a list that contains configuration settings for the automatic saving of the emulator: \itemize{ -\item \code{switch}: a bool indicating whether to enable the automatic saving of the emulator during the sequential design. When set to \code{TRUE}, +\item \code{switch}: a bool indicating whether to enable automatic saving of the emulator during sequential design. When set to \code{TRUE}, the emulator in the final iteration is always saved. Defaults to \code{FALSE}. \item \code{directory}: a string specifying the directory path where the emulators will be stored. Emulators will be stored in a sub-directory of \code{directory} named 'emulator-\code{id}'. Defaults to './check_points'. \item \code{fname}: a string representing the base name for the saved emulator files. Defaults to 'check_point'. -\item \code{save_freq}: an integer indicating the frequency of automatic savings, measured in the number of iterations. Defaults to \code{5}. -\item \code{overwrite}: a bool value controlling the file saving behavior. When set to \code{TRUE}, each new automatic saving overwrites the previous one, -keeping only the latest version. If \code{FALSE}, each automatic saving creates a new file, preserving all previous versions. Defaults to \code{FALSE}. +\item \code{save_freq}: an integer indicating the frequency of automatic saves, measured in the number of iterations. Defaults to \code{5}. +\item \code{overwrite}: a bool value controlling the file saving behavior. When set to \code{TRUE}, each new automatic save overwrites the previous one, +keeping only the latest version. If \code{FALSE}, each automatic save creates a new file, preserving all previous versions. Defaults to \code{FALSE}. }} -\item{new_wave}{a bool indicating if the current execution of \code{\link[=design]{design()}} will create a new wave of sequential designs or add the sequential designs to -the last existing wave. This argument is only used if there are waves existing in the emulator. By creating new waves, one can better visualize the performance -of the sequential designs in different executions of \code{\link[=design]{design()}} in \code{\link[=draw]{draw()}} and can specify a different evaluation frequency in \code{freq}. However, it can be -beneficiary to turn this option off to restrict a large number of waves to be visualized in \code{\link[=draw]{draw()}} that could run out of colors. Defaults to \code{TRUE}.} +\item{new_wave}{a bool indicating whether the current call to \code{\link[=design]{design()}} will create a new wave of sequential designs or add the next sequence of designs to the most recent wave. +This argument is relevant only if waves already exist in the emulator. Creating new waves can improve the visualization of sequential design performance across different calls +to \code{\link[=design]{design()}} via \code{\link[=draw]{draw()}}, and allows for specifying a different evaluation frequency in \code{freq}. However, disabling this option can help limit the number of waves visualized +in \code{\link[=draw]{draw()}} to avoid issues such as running out of distinct colors for large numbers of waves. Defaults to \code{TRUE}.} \item{M_val}{\ifelse{html}{\href{https://lifecycle.r-lib.org/articles/stages.html#new}{\figure{lifecycle-new.svg}{options: alt='[New]'}}}{\strong{[New]}} an integer that gives the size of the conditioning set for the Vecchia approximation in emulator validations. This argument is only used if the emulator \code{object} was constructed under the Vecchia approximation. Defaults to \code{50}.} -\item{cores}{an integer that gives the number of processes to be used for emulator validations. If set to \code{NULL}, the number of processes is set to +\item{cores}{an integer that gives the number of processes to be used for emulator validation. If set to \code{NULL}, the number of processes is set to \verb{max physical cores available \%/\% 2}. Defaults to \code{1}. This argument is only used if \code{eval = NULL}.} \item{...}{Any arguments with names that differ from those used in \code{\link[=design]{design()}} but are required by \code{f}, \code{method}, or \code{eval} can be passed here. \code{\link[=design]{design()}} will forward relevant arguments to \code{f}, \code{method}, and \code{eval} based on the names of the additional arguments provided.} -\item{train_N}{the number of training iterations to be used to re-fit the DGP emulator at each step of the sequential design: +\item{train_N}{the number of training iterations to be used for re-fitting the DGP emulator at each step of the sequential design: +\itemize{ +\item If \code{train_N} is an integer, the DGP emulator will be re-fitted at each step (based on the re-fit frequency specified in \code{freq[1]}) using \code{train_N} iterations. +\item If \code{train_N} is a vector, its length must be \code{N}, even if the re-fit frequency specified in \code{freq[1]} is not 1. +\item If \code{train_N} is \code{NULL}, the DGP emulator will be re-fitted at each step (based on the re-fit frequency specified in \code{freq[1]}) using: \itemize{ -\item If \code{train_N} is an integer, then at each step the DGP emulator will be re-fitted (based on the frequency of re-fit specified in \code{freq}) with \code{train_N} iterations. -\item If \code{train_N} is a vector, then its size must be \code{N} even the re-fit frequency specified in \code{freq} is not one. -\item If \code{train_N} is \code{NULL}, then at each step the DGP emulator will be re-fitted (based on the frequency of re-fit specified in \code{freq}) with \code{100} iterations -if the DGP emulator was constructed without the Vecchia approximation, and with \code{50} iterations if Vecchia approximation was used. +\item \code{100} iterations if the DGP emulator was constructed without the Vecchia approximation, or +\item \code{50} iterations if the Vecchia approximation was used. +} } Defaults to \code{NULL}.} @@ -286,13 +300,13 @@ is computationally expensive. Defaults to \code{1}.} \item{pruning}{a bool indicating if dynamic pruning of DGP structures will be implemented during the sequential design after the total number of design points exceeds \code{min_size} in \code{control}. The argument is only applicable to DGP emulators (i.e., \code{object} is an instance of \code{dgp} class) -produced by \code{dgp()} with \code{struc = NULL}. Defaults to \code{TRUE}.} +produced by \code{dgp()}. Defaults to \code{TRUE}.} \item{control}{a list that can supply any of the following components to control the dynamic pruning of the DGP emulator: \itemize{ -\item \code{min_size}, the minimum number of design points required to trigger the dynamic pruning. Defaults to 10 times of the input dimensions. -\item \code{threshold}, the R2 value above which a GP node is considered redundant. Defaults to \code{0.97}. -\item \code{nexceed}, the minimum number of consecutive iterations that the R2 value of a GP node must exceed \code{threshold} to trigger the removal of that node from +\item \code{min_size}, the minimum number of design points required to trigger dynamic pruning. Defaults to 10 times the number of input dimensions. +\item \code{threshold}, the \eqn{R^2} value above which a GP node is considered redundant. Defaults to \code{0.97}. +\item \code{nexceed}, the minimum number of consecutive iterations that the \eqn{R^2} value of a GP node must exceed \code{threshold} to trigger the removal of that node from the DGP structure. Defaults to \code{3}. } @@ -301,17 +315,19 @@ The argument is only used when \code{pruning = TRUE}.} \value{ An updated \code{object} is returned with a slot called \code{design} that contains: \itemize{ -\item \emph{S} slots, named \verb{wave1, wave2,..., waveS}, that contain information of \emph{S} waves of sequential designs that have been applied to the emulator. +\item \emph{S} slots, named \verb{wave1, wave2,..., waveS}, that contain information of \emph{S} waves of sequential design that have been applied to the emulator. Each slot contains the following elements: \itemize{ -\item \code{N}, an integer that gives the numbers of steps implemented in the corresponding wave; -\item \code{rmse}, a matrix that gives the values of evaluation metrics of emulators constructed during the corresponding wave, if \code{eval = NULL}. Each -row of the matrix represents an iteration. If \code{object} is an instance of \code{gp} class, the matrix has a single columns of RMSEs. If \code{object} is -an instance of \code{dgp} class, the elements in a row give the RMSEs corresponding to different output dimensions. If \code{object} is an instance of -\code{dgp} class with categorical likelihood, the matrix has a single column of log-losses. If \code{object} is an instance of \code{bundle} class, the elements in -a row give either RMSEs or log-losses of emulators contained in the bundle. -\item \code{metric}, a matrix that gives the customized evaluating metric values of emulators constructed during the corresponding wave, -if a customized function is supplied to \code{eval}; +\item \code{N}, an integer that gives the numbers of iterations implemented in the corresponding wave; +\item \code{rmse}, a matrix providing the evaluation metric values for emulators constructed during the corresponding wave, when \code{eval = NULL}. +Each row of the matrix represents an iteration. +\itemize{ +\item for an \code{object} of class \code{gp}, the matrix contains a single column of RMSE values. +\item for an \code{object} of class \code{dgp} without a categorical likelihood, each row contains mean/median squared errors corresponding to different output dimensions. +\item for an \code{object} of class \code{dgp} with a categorical likelihood, the matrix contains a single column of log-loss values. +\item for an \code{object} of class \code{bundle}, each row contains either mean/median squared errors or log-loss values for the emulators in the bundle. +} +\item \code{metric}: a matrix providing the values of custom evaluation metrics, as computed by the user-supplied \code{eval} function, for emulators constructed during the corresponding wave. \item \code{freq}, an integer that gives the frequency that the emulator validations are implemented during the corresponding wave. \item \code{enrichment}, a vector of size \code{N} that gives the number of new design points added after each step of the sequential design (if \code{object} is an instance of the \code{gp} or \code{dgp} class), or a matrix that gives the number of new design points added to emulators in a bundle after each step of @@ -320,11 +336,18 @@ the sequential design (if \code{object} is an instance of the \code{bundle} clas If \code{target} is not \code{NULL}, the following additional elements are also included: \itemize{ -\item \code{target}, the target evaluating metric computed by the \code{eval} or built-in function to stop the sequential design. -\item \code{reached}, a bool (if \code{object} is an instance of the \code{gp} or \code{dgp} class) or a vector of bools (if \code{object} is an instance of the \code{bundle} -class) that indicate if the target RMSEs are reached at the end of the sequential design. +\item \code{target}: the target evaluating metric computed by the \code{eval} or built-in function to stop the sequential design. +\item \code{reached}: indicates whether the \code{target} was reached at the end of the sequential design: +\itemize{ +\item a bool if \code{object} is an instance of the \code{gp} or \code{dgp} class. +\item a vector of bools if \code{object} is an instance of the \code{bundle} class, with its length determined as follows: +\itemize{ +\item equal to the number of emulators in the bundle when \code{eval = NULL}. +\item equal to the length of the output from \code{eval} when a custom \code{eval} function is provided. +} +} } -\item a slot called \code{type} that gives the type of validations: +\item a slot called \code{type} that gives the type of validation: \itemize{ \item either LOO ('loo') or OOS ('oos') if \code{eval = NULL}. See \code{\link[=validate]{validate()}} for more information about LOO and OOS. \item 'customized' if a customized R function is provided to \code{eval}. @@ -338,18 +361,20 @@ avoid re-visiting the same locations in later runs of \code{design()}. See \emph{Note} section below for further information. } \description{ -This function implements the sequential design of a (D)GP emulator or a bundle of (D)GP emulators. +This function implements sequential design and active learning for a (D)GP emulator or +a bundle of (D)GP emulators, supporting an array of popular methods as well as user-specified approaches. +It can also be used as a wrapper for Bayesian optimization methods. } \details{ -See further examples and tutorials at \url{https://mingdeyu.github.io/dgpsi-R/}. +See further examples and tutorials at \url{https://mingdeyu.github.io/dgpsi-R/dev/}. } \note{ \itemize{ -\item The validation of an emulator is forced after the final step of a sequential design even \code{N} is not multiples of the second element in \code{freq}. +\item Validation of an emulator is forced after the final step of a sequential design even if \code{N} is not a multiple of the second element in \code{freq}. \item Any \code{loo} or \code{oos} slot that already exists in \code{object} will be cleaned, and a new slot called \code{loo} or \code{oos} will be created in the returned object depending on whether \code{x_test} and \code{y_test} are provided. The new slot gives the validation information of the emulator constructed in the final step of the sequential design. See \code{\link[=validate]{validate()}} for more information about the slots \code{loo} and \code{oos}. -\item If \code{object} has previously been used by \code{\link[=design]{design()}} for sequential designs, the information of the current wave of the sequential design will replace +\item If \code{object} has previously been used by \code{\link[=design]{design()}} for sequential design, the information of the current wave of the sequential design will replace those of old waves and be contained in the returned object, unless \itemize{ \item the validation type (LOO or OOS depending on whether \code{x_test} and \code{y_test} are supplied or not) of the current wave of the sequential design is the @@ -360,15 +385,15 @@ functions are consistent among different waves. Otherwise, the trace plot of RMS different waves. } -In above two cases, the information of the current wave of the sequential design will be added to the \code{design} slot of the returned object under the name \code{waveS}. +For the above two cases, the information of the current wave of the sequential design will be added to the \code{design} slot of the returned object under the name \code{waveS}. \item If \code{object} is an instance of the \code{gp} class and \code{eval = NULL}, the matrix in the \code{rmse} slot is single-columned. If \code{object} is an instance of the \code{dgp} or \code{bundle} class and \code{eval = NULL}, the matrix in the \code{rmse} slot can have multiple columns that correspond to different output dimensions or different emulators in the bundle. \item If \code{object} is an instance of the \code{gp} class and \code{eval = NULL}, \code{target} needs to be a single value giving the RMSE threshold. If \code{object} is an instance -of the \code{dgp} or \code{bundle} class and \code{eval = NULL}, \code{target} can be a vector of values that gives the RMSE thresholds for different output dimensions or -different emulators. If a single value is provided, it will be used as the RMSE threshold for all output dimensions (if \code{object} is an instance of the \code{dgp}) or all emulators -(if \code{object} is an instance of the \code{bundle}). If a customized function is supplied to \code{eval}, the user needs to ensure that the length of \code{target} is equal -to that of the output from \code{eval} if \code{target} is given as a vector. +of the \code{dgp} or \code{bundle} class and \code{eval = NULL}, \code{target} can be a vector of values that gives the thresholds of evaluating metrics for different output dimensions or +different emulators. If a single value is provided, it will be used as the threshold for all output dimensions (if \code{object} is an instance of the \code{dgp}) or all emulators +(if \code{object} is an instance of the \code{bundle}). If a customized function is supplied to \code{eval} and \code{target} is given as a vector, the user needs to ensure that the length +of \code{target} is equal to that of the output from \code{eval}. \item When defining \code{f}, it is important to ensure that: \itemize{ \item the column order of the first argument of \code{f} is consistent with the training input used for the emulator; @@ -376,8 +401,8 @@ to that of the output from \code{eval} if \code{target} is given as a vector. or the order of emulators placed in \code{object} (if \code{object} is an instance of the \code{bundle} class). } \item The output matrix produced by \code{f} may include \code{NA}s. This is especially beneficial as it allows the sequential design process to continue without interruption, -even if errors or \code{NA} outputs are encountered from \code{f} at certain input locations identified by the sequential designs. Users should ensure to handle any errors -within \code{f} by appropriately returning \code{NA}s. +even if errors or \code{NA} outputs are encountered from \code{f} at certain input locations identified by the sequential design. Users should ensure that any errors +within \code{f} are handled by appropriately returning \code{NA}s. \item When defining \code{eval}, the output metric needs to be positive if \code{\link[=draw]{draw()}} is used with \code{log = T}. And one needs to ensure that a lower metric value indicates a better emulation performance if \code{target} is set. } diff --git a/man/dgp.Rd b/man/dgp.Rd index 79c4f84..c886949 100644 --- a/man/dgp.Rd +++ b/man/dgp.Rd @@ -7,7 +7,6 @@ dgp( X, Y, - struc = NULL, depth = 2, node = ncol(X), name = "sexp", @@ -39,26 +38,16 @@ dgp( ) } \arguments{ -\item{X}{a matrix where each row is an input training data point and each column is an input dimension.} +\item{X}{a matrix where each row is an input training data point and each column represents an input dimension.} -\item{Y}{a matrix containing observed training output data. The matrix has its rows being output data points and columns being -output dimensions. When \code{likelihood} (see below) is not \code{NULL}, \code{Y} must be a matrix with only one column.} - -\item{struc}{\ifelse{html}{\href{https://lifecycle.r-lib.org/articles/stages.html#deprecated}{\figure{lifecycle-deprecated.svg}{options: alt='[Deprecated]'}}}{\strong{[Deprecated]}} a list that specifies a user-defined DGP structure. It should contain \emph{L} (the number of DGP layers) sub-lists, -each of which represents a layer and contains a number of GP nodes (defined by \code{\link[=kernel]{kernel()}}) in the corresponding layer. -The final layer of the DGP structure (i.e., the final sub-list in \code{struc}) can be a likelihood -layer that contains a likelihood function (e.g., \code{\link[=Poisson]{Poisson()}}). When \code{struc = NULL}, -the DGP structure is automatically generated and can be checked by applying \code{\link[=summary]{summary()}} to the output from \code{\link[=dgp]{dgp()}} with \code{training = FALSE}. -If this argument is used (i.e., user provides a customized DGP structure), arguments \code{depth}, \code{node}, \code{name}, \code{lengthscale}, \code{bounds}, \code{prior}, -\code{share}, \code{nugget_est}, \code{nugget}, \code{scale_est}, \code{scale}, \code{connect}, \code{likelihood}, and \code{internal_input_idx} will NOT be used. Defaults to \code{NULL}. - -\strong{The argument will be removed in the next release. To customize DGP specifications, please adjust the other arguments in the \code{\link[=dgp]{dgp()}} function.}} +\item{Y}{a matrix containing observed training output data. The matrix has its rows being output data points and columns representing +output dimensions. When \code{likelihood} (see below) is not \code{NULL}, \code{Y} must be a matrix with a single column.} \item{depth}{number of layers (including the likelihood layer) for a DGP structure. \code{depth} must be at least \code{2}. -Defaults to \code{2}. This argument is only used when \code{struc = NULL}.} +Defaults to \code{2}.} \item{node}{number of GP nodes in each layer (except for the final layer or the layer feeding the likelihood node) of the DGP. Defaults to -\code{ncol(X)}. This argument is only used when \code{struc = NULL}.} +\code{ncol(X)}.} \item{name}{a character or a vector of characters that indicates the kernel functions (either \code{"sexp"} for squared exponential kernel or \code{"matern2.5"} for Matérn-2.5 kernel) used in the DGP emulator: @@ -67,7 +56,7 @@ Defaults to \code{2}. This argument is only used when \code{struc = NULL}.} \item if a vector of characters is supplied, each character of the vector specifies the kernel function that will be applied to all GP nodes in the corresponding layer. } -Defaults to \code{"sexp"}. This argument is only used when \code{struc = NULL}.} +Defaults to \code{"sexp"}.} \item{lengthscale}{initial lengthscales for GP nodes in the DGP emulator. It can be a single numeric value or a vector: \enumerate{ @@ -76,7 +65,7 @@ Defaults to \code{"sexp"}. This argument is only used when \code{struc = NULL}.} The vector should have a length of \code{depth} if \code{likelihood = NULL} or a length of \code{depth - 1} if \code{likelihood} is not \code{NULL}. } -Defaults to a numeric value of \code{1.0}. This argument is only used when \code{struc = NULL}.} +Defaults to a numeric value of \code{1.0}.} \item{bounds}{the lower and upper bounds of lengthscales in GP nodes. It can be a vector or a matrix: \enumerate{ @@ -86,18 +75,18 @@ lengthscales for all GP nodes in the DGP hierarchy. The matrix should have its row number equal to \code{depth} if \code{likelihood = NULL} or to \code{depth - 1} if \code{likelihood} is not \code{NULL}. } -Defaults to \code{NULL} where no bounds are specified for the lengthscales. This argument is only used when \code{struc = NULL}.} +Defaults to \code{NULL} where no bounds are specified for the lengthscales.} -\item{prior}{prior to be used for Maximum a Posterior for lengthscales and nuggets of all GP nodes in the DGP hierarchy: +\item{prior}{prior to be used for MAP estimation of lengthscales and nuggets of all GP nodes in the DGP hierarchy: \itemize{ \item gamma prior (\code{"ga"}), \item inverse gamma prior (\code{"inv_ga"}), or \item jointly robust prior (\code{"ref"}). } -Defaults to \code{"ga"}. This argument is only used when \code{struc = NULL}.} +Defaults to \code{"ga"}.} -\item{share}{a bool indicating if all input dimensions of a GP node share a common lengthscale. Defaults to \code{TRUE}. This argument is only used when \code{struc = NULL}.} +\item{share}{a bool indicating if all input dimensions of a GP node share a common lengthscale. Defaults to \code{TRUE}.} \item{nugget_est}{a bool or a bool vector that indicates if the nuggets of GP nodes (if any) in the final layer are to be estimated. If a single bool is provided, it will be applied to all GP nodes (if any) in the final layer. If a bool vector (which must have a length of \code{ncol(Y)}) is provided, each @@ -107,7 +96,7 @@ bool element in the vector will be applied to the corresponding GP node (if any) \item \code{TRUE}: the nugget of the corresponding GP in the final layer will be estimated with the initial value given by the correspondence in \code{nugget} (see below). } -Defaults to \code{FALSE}. This argument is only used when \code{struc = NULL}.} +Defaults to \code{FALSE}.} \item{nugget}{the initial nugget value(s) of GP nodes (if any) in each layer: \enumerate{ @@ -116,13 +105,13 @@ Defaults to \code{FALSE}. This argument is only used when \code{struc = NULL}.} The vector should have a length of \code{depth} if \code{likelihood = NULL} or a length of \code{depth - 1} if \code{likelihood} is not \code{NULL}. } -Set \code{nugget} to a small value and the bools in \code{nugget_est} to \code{FASLE} for deterministic emulations where the emulator -interpolates the training data points. Set \code{nugget} to a reasonable larger value and the bools in \code{nugget_est} to \code{TRUE} for stochastic emulations where +Set \code{nugget} to a small value and the bools in \code{nugget_est} to \code{FALSE} for deterministic emulation, where the emulator +interpolates the training data points. Set \code{nugget} to a larger value and the bools in \code{nugget_est} to \code{TRUE} for stochastic emulation where the computer model outputs are assumed to follow a homogeneous Gaussian distribution. Defaults to \code{1e-6} if \code{nugget_est = FALSE} and \code{0.01} if \code{nugget_est = TRUE}. If \code{likelihood} is not \code{NULL} and \code{nugget_est = FALSE}, the nuggets of GPs that feed into the likelihood layer default to -\code{1e-4}. This argument is only used when \code{struc = NULL}.} +\code{1e-4}.} -\item{scale_est}{a bool or a bool vector that indicates if variance of GP nodes (if any) in the final layer are to be estimated. If a single bool is +\item{scale_est}{a bool or a bool vector that indicates if the variance of GP nodes (if any) in the final layer are to be estimated. If a single bool is provided, it will be applied to all GP nodes (if any) in the final layer. If a bool vector (which must have a length of \code{ncol(Y)}) is provided, each bool element in the vector will be applied to the corresponding GP node (if any) in the final layer. The value of a bool has following effects: \itemize{ @@ -130,35 +119,35 @@ bool element in the vector will be applied to the corresponding GP node (if any) \item \code{TRUE}: the variance of the corresponding GP in the final layer will be estimated with the initial value given by the correspondence in \code{scale} (see below). } -Defaults to \code{TRUE}. This argument is only used when \code{struc = NULL}.} +Defaults to \code{TRUE}.} \item{scale}{the initial variance value(s) of GP nodes (if any) in the final layer. If it is a single numeric value, it will be applied to all GP nodes (if any) in the final layer. If it is a vector (which must have a length of \code{ncol(Y)}), each numeric in the vector will be applied to the corresponding GP node -(if any) in the final layer. Defaults to \code{1}. This argument is only used when \code{struc = NULL}.} +(if any) in the final layer. Defaults to \code{1}.} \item{connect}{a bool indicating whether to implement global input connection to the DGP structure. Setting it to \code{FALSE} may produce a better emulator in some cases at -the cost of slower training. Defaults to \code{TRUE}. This argument is only used when \code{struc = NULL}.} +the cost of slower training. Defaults to \code{TRUE}.} \item{likelihood}{the likelihood type of a DGP emulator: \enumerate{ \item \code{NULL}: no likelihood layer is included in the emulator. \item \code{"Hetero"}: a heteroskedastic Gaussian likelihood layer is added for stochastic emulation where the computer model outputs are assumed to follow a heteroskedastic Gaussian distribution -(i.e., the computer model outputs have varying noises). -\item \code{"Poisson"}: a Poisson likelihood layer is added for stochastic emulation where the computer model outputs are assumed to a Poisson distribution. -\item \code{"NegBin"}: a negative Binomial likelihood layer is added for stochastic emulation where the computer model outputs are assumed to follow a negative Binomial distribution. -\item \ifelse{html}{\href{https://lifecycle.r-lib.org/articles/stages.html#new}{\figure{lifecycle-new.svg}{options: alt='[New]'}}}{\strong{[New]}} \code{"Categorical"}: a categorical likelihood layer is added for stochastic emulation (i.e., classification), where the computer model outputs are assumed to follow a categorical distribution. +(i.e., the computer model outputs have input-dependent noise). +\item \code{"Poisson"}: a Poisson likelihood layer is added for emulation where the computer model outputs are counts and a Poisson distribution is used to model them. +\item \code{"NegBin"}: a negative Binomial likelihood layer is added for emulation where the computer model outputs are counts and a negative Binomial distribution is used to capture dispersion variability in input space. +\item \ifelse{html}{\href{https://lifecycle.r-lib.org/articles/stages.html#new}{\figure{lifecycle-new.svg}{options: alt='[New]'}}}{\strong{[New]}} \code{"Categorical"}: a categorical likelihood layer is added for emulation (classification), where the computer model output is categorical. } -When \code{likelihood} is not \code{NULL}, the value of \code{nugget_est} is overridden by \code{FALSE}. Defaults to \code{NULL}. This argument is only used when \code{struc = NULL}.} +When \code{likelihood} is not \code{NULL}, the value of \code{nugget_est} is overridden by \code{FALSE}. Defaults to \code{NULL}.} \item{training}{a bool indicating if the initialized DGP emulator will be trained. When set to \code{FALSE}, \code{\link[=dgp]{dgp()}} returns an untrained DGP emulator, to which one can apply \code{\link[=summary]{summary()}} to inspect its specifications -(especially when a customized \code{struc} is provided) or apply \code{\link[=predict]{predict()}} to check its emulation performance before the training. Defaults to \code{TRUE}.} +or apply \code{\link[=predict]{predict()}} to check its emulation performance before training. Defaults to \code{TRUE}.} \item{verb}{a bool indicating if the trace information on DGP emulator construction and training will be printed during the function execution. Defaults to \code{TRUE}.} -\item{check_rep}{a bool indicating whether to check the repetitions in the dataset, i.e., if one input +\item{check_rep}{a bool indicating whether to check for repetitions in the dataset, i.e., if one input position has multiple outputs. Defaults to \code{TRUE}.} \item{vecchia}{\ifelse{html}{\href{https://lifecycle.r-lib.org/articles/stages.html#new}{\figure{lifecycle-new.svg}{options: alt='[New]'}}}{\strong{[New]}} a bool indicating whether to use Vecchia approximation for large-scale DGP emulator construction and prediction. Defaults to \code{FALSE}.} @@ -181,7 +170,7 @@ the number of processes is set to \verb{(max physical cores available - 1)} if \ Only use multiple processes when there is a large number of GP components in different layers and optimization of GP components is computationally expensive. Defaults to \code{1}.} \item{blocked_gibbs}{a bool indicating if the latent variables are imputed layer-wise using ESS-within-Blocked-Gibbs. ESS-within-Blocked-Gibbs would be faster and -more efficient than ESS-within-Gibbs that imputes latent variables node-wise because it reduces the number of components to be sampled during the Gibbs, +more efficient than ESS-within-Gibbs that imputes latent variables node-wise because it reduces the number of components to be sampled during Gibbs steps, especially when there is a large number of GP nodes in layers due to higher input dimensions. Default to \code{TRUE}.} \item{ess_burn}{number of burnin steps for the ESS-within-Gibbs @@ -191,8 +180,7 @@ at each I-step of the training. Defaults to \code{10}. This argument is only use point estimates of model parameters. Must be smaller than the training iterations \code{N}. If this is not specified, only the last 25\% of iterations are used. Defaults to \code{NULL}. This argument is only used when \code{training = TRUE}.} -\item{B}{the number of imputations to produce the later predictions. Increase the value to account for -more imputation uncertainties with slower predictions. Decrease the value for lower imputation uncertainties but faster predictions. +\item{B}{the number of imputations used to produce predictions. Increase the value to refine the representation of imputation uncertainty. Defaults to \code{10}.} \item{internal_input_idx}{\ifelse{html}{\href{https://lifecycle.r-lib.org/articles/stages.html#deprecated}{\figure{lifecycle-deprecated.svg}{options: alt='[Deprecated]'}}}{\strong{[Deprecated]}} The argument will be removed in the next release. To set up connections of emulators for linked emulations, @@ -200,9 +188,9 @@ please use the updated \code{\link[=lgp]{lgp()}} function instead. Column indices of \code{X} that are generated by the linked emulators in the preceding layers. Set \code{internal_input_idx = NULL} if the DGP emulator is in the first layer of a system or all columns in \code{X} are -generated by the linked emulators in the preceding layers. Defaults to \code{NULL}. This argument is only used when \code{struc = NULL}.} +generated by the linked emulators in the preceding layers. Defaults to \code{NULL}.} -\item{linked_idx}{\ifelse{html}{\href{https://lifecycle.r-lib.org/articles/stages.html#deprecated}{\figure{lifecycle-deprecated.svg}{options: alt='[Deprecated]'}}}{\strong{[Deprecated]}} The argument will be removed in the next release. To set up connections of emulators for linked emulations, +\item{linked_idx}{\ifelse{html}{\href{https://lifecycle.r-lib.org/articles/stages.html#deprecated}{\figure{lifecycle-deprecated.svg}{options: alt='[Deprecated]'}}}{\strong{[Deprecated]}} The argument will be removed in the next release. To set up connections of emulators for linked emulation, please use the updated \code{\link[=lgp]{lgp()}} function instead. Either a vector or a list of vectors: @@ -253,14 +241,12 @@ If a sub-list corresponds to a GP node, it contains four elements: as \code{FALSE} if \code{internal_input_idx = NULL}. \strong{The slot will be removed in the next release}. \item \ifelse{html}{\href{https://lifecycle.r-lib.org/articles/stages.html#deprecated}{\figure{lifecycle-deprecated.svg}{options: alt='[Deprecated]'}}}{\strong{[Deprecated]}} \code{linked_idx}: the value passed to argument \code{linked_idx}. It is shown as \code{FALSE} if the argument \code{linked_idx} is \code{NULL}. \strong{The slot will be removed in the next release}. -\item \code{seed}: the random seed generated to produce the imputations. This information is stored for the reproducibility when the DGP emulator (that was saved by \code{\link[=write]{write()}} +\item \code{seed}: the random seed generated to produce imputations. This information is stored for reproducibility when the DGP emulator (that was saved by \code{\link[=write]{write()}} with the light option \code{light = TRUE}) is loaded back to R by \code{\link[=read]{read()}}. \item \code{B}: the number of imputations used to generate the emulator. \item \ifelse{html}{\href{https://lifecycle.r-lib.org/articles/stages.html#new}{\figure{lifecycle-new.svg}{options: alt='[New]'}}}{\strong{[New]}} \code{vecchia}: whether the Vecchia approximation is used for the GP emulator training. -\item \ifelse{html}{\href{https://lifecycle.r-lib.org/articles/stages.html#new}{\figure{lifecycle-new.svg}{options: alt='[New]'}}}{\strong{[New]}} \code{M}: the size of the conditioning set for the Vecchia approximation in the DGP emulator training. +\item \ifelse{html}{\href{https://lifecycle.r-lib.org/articles/stages.html#new}{\figure{lifecycle-new.svg}{options: alt='[New]'}}}{\strong{[New]}} \code{M}: the size of the conditioning set for the Vecchia approximation in the DGP emulator training. \code{M} is generated only when \code{vecchia = TRUE}. } - -\code{internal_dims} and \code{external_dims} are generated only when \code{struc = NULL}. \code{M} is generated only when \code{vecchia = TRUE}. \item \code{constructor_obj}: a 'python' object that stores the information of the constructed DGP emulator. \item \code{container_obj}: a 'python' object that stores the information for the linked emulation. \item \code{emulator_obj}: a 'python' object that stores the information for the predictions from the DGP emulator. @@ -277,7 +263,7 @@ The returned \code{dgp} object can be used by \item \code{\link[=summary]{summary()}} to summarize the trained DGP emulator. \item \code{\link[=write]{write()}} to save the DGP emulator to a \code{.pkl} file. \item \code{\link[=set_imp]{set_imp()}} to change the number of imputations. -\item \code{\link[=design]{design()}} for sequential designs. +\item \code{\link[=design]{design()}} for sequential design. \item \code{\link[=update]{update()}} to update the DGP emulator with new inputs and outputs. \item \code{\link[=alm]{alm()}}, \code{\link[=mice]{mice()}}, and \code{\link[=vigf]{vigf()}} to locate next design points. } @@ -286,7 +272,7 @@ The returned \code{dgp} object can be used by This function builds and trains a DGP emulator. } \details{ -See further examples and tutorials at \url{https://mingdeyu.github.io/dgpsi-R/} and learn how to customize a DGP structure. +See further examples and tutorials at \url{https://mingdeyu.github.io/dgpsi-R/dev/}. } \note{ Any R vector detected in \code{X} and \code{Y} will be treated as a column vector and automatically converted into a single-column diff --git a/man/draw.Rd b/man/draw.Rd index 9ea499e..a01f67e 100644 --- a/man/draw.Rd +++ b/man/draw.Rd @@ -5,7 +5,7 @@ \alias{draw.gp} \alias{draw.dgp} \alias{draw.bundle} -\title{Validation plots of a sequential design} +\title{Validation and diagnostic plots for a sequential design} \usage{ draw(object, ...) @@ -25,28 +25,28 @@ draw(object, ...) \item{...}{N/A.} -\item{type}{either \code{"rmse"}, for the trace plot of RMSEs, or log-losses for DGP emulators with categorical likelihoods, or customized evaluating metrics -of emulators constructed during the sequential designs, or \code{"design"}, for visualizations of input designs created by the sequential design procedure. +\item{type}{specifies the type of plot or visualization to generate: +\itemize{ +\item \code{"rmse"}: generates a trace plot of RMSEs, log-losses for DGP emulators with categorical likelihoods, or custom evaluation metrics specified via the \code{"eval"} argument in the \verb{[design()]} function. +\item \code{"design"}: shows visualizations of input designs created by the sequential design procedure. +} + Defaults to \code{"rmse"}.} -\item{log}{a bool that indicates whether to plot RMSEs, or log-losses (in case of DGP emulators with categorical likelihoods), or customized evaluating -metrics in log-scale if \code{type = "rmse"}. Defaults to \code{FALSE}.} +\item{log}{a bool indicating whether to plot RMSEs, log-losses (for DGP emulators with categorical likelihoods), or custom evaluation metrics on a log scale when \code{type = "rmse"}. +Defaults to \code{FALSE}.} -\item{emulator}{a vector of indices of emulators packed in \code{object} to be drawn, if \code{object} is an instance of the \code{bundle} class. When set to \code{NULL}, all +\item{emulator}{an index or vector of indices of emulators packed in \code{object}. This argument is only used if \code{object} is an instance of the \code{bundle} class. When set to \code{NULL}, all emulators in the bundle are drawn. Defaults to \code{NULL}.} } \value{ A \code{patchwork} object. } \description{ -This function draws validation plots of the sequential design of a (D)GP emulator or a bundle of (D)GP emulators. +This function draws diagnostic and validation plots for a sequential design of a (D)GP emulator or a bundle of (D)GP emulators. } \details{ -See further examples and tutorials at \url{https://mingdeyu.github.io/dgpsi-R/}. -} -\note{ -If a customized evaluating function is provided to \code{\link[=design]{design()}} and the function returns a single evaluating metric value when \code{object} is -an instance of the \code{bundle} class, the value of \code{emulator} has no effects on the plot when \code{type = "rmse"}. +See further examples and tutorials at \url{https://mingdeyu.github.io/dgpsi-R/dev/}. } \examples{ \dontrun{ diff --git a/man/get_thread_num.Rd b/man/get_thread_num.Rd index 6e786fe..b10a81d 100644 --- a/man/get_thread_num.Rd +++ b/man/get_thread_num.Rd @@ -16,5 +16,5 @@ This function gets the number of threads used for parallel computations involved in the package. } \details{ -See further examples and tutorials at \url{https://mingdeyu.github.io/dgpsi-R/}. +See further examples and tutorials at \url{https://mingdeyu.github.io/dgpsi-R/dev/}. } diff --git a/man/gp.Rd b/man/gp.Rd index ce0a891..7ccc037 100644 --- a/man/gp.Rd +++ b/man/gp.Rd @@ -7,7 +7,6 @@ gp( X, Y, - struc = NULL, name = "sexp", lengthscale = rep(0.1, ncol(X)), bounds = NULL, @@ -31,29 +30,23 @@ gp( \item{Y}{a matrix with only one column and each row being an output data point.} -\item{struc}{\ifelse{html}{\href{https://lifecycle.r-lib.org/articles/stages.html#deprecated}{\figure{lifecycle-deprecated.svg}{options: alt='[Deprecated]'}}}{\strong{[Deprecated]}} an object produced by \code{\link[=kernel]{kernel()}} that gives a user-defined GP specifications. When \code{struc = NULL}, -the GP specifications are automatically generated using information provided in \code{name}, \code{lengthscale}, -\code{nugget_est}, \code{nugget}, \code{scale_est}, \code{scale},and \code{internal_input_idx}. Defaults to \code{NULL}. - -\strong{The argument will be removed in the next release. To customize GP specifications, please adjust the other arguments in the \code{\link[=gp]{gp()}} function.}} - \item{name}{kernel function to be used. Either \code{"sexp"} for squared exponential kernel or -\code{"matern2.5"} for Matérn-2.5 kernel. Defaults to \code{"sexp"}. This argument is only used when \code{struc = NULL}.} +\code{"matern2.5"} for Matérn-2.5 kernel. Defaults to \code{"sexp"}.} -\item{lengthscale}{initial values of lengthscales in the kernel function. It can be a single numeric value or a vector: +\item{lengthscale}{initial values of lengthscales in the kernel function. It can be a single numeric value or a vector of length \code{ncol(X)}: \itemize{ \item if it is a single numeric value, it is assumed that kernel functions across input dimensions share the same lengthscale; -\item if it is a vector (which must have a length of \code{ncol(X)}), it is assumed that kernel functions across input dimensions have different lengthscales. +\item if it is a vector, it is assumed that kernel functions across input dimensions have different lengthscales. } -Defaults to a vector of \code{0.1}. This argument is only used when \code{struc = NULL}.} +Defaults to a vector of \code{0.1}.} \item{bounds}{the lower and upper bounds of lengthscales in the kernel function. It is a vector of length two where the first element is the lower bound and the second element is the upper bound. The bounds will be applied to all lengthscales in the kernel function. Defaults -to \code{NULL} where no bounds are specified for the lengthscales. This argument is only used when \code{struc = NULL}.} +to \code{NULL} where no bounds are specified for the lengthscales.} \item{prior}{prior to be used for Maximum a Posterior for lengthscales and nugget of the GP: gamma prior (\code{"ga"}), inverse gamma prior (\code{"inv_ga"}), -or jointly robust prior (\code{"ref"}). Defaults to \code{"ref"}. This argument is only used when \code{struc = NULL}. See the reference below for the jointly +or jointly robust prior (\code{"ref"}). Defaults to \code{"ref"}. See the reference below for the jointly robust prior.} \item{nugget_est}{a bool indicating if the nugget term is to be estimated: @@ -62,13 +55,13 @@ robust prior.} \item \code{TRUE}: the nugget term will be estimated. } -Defaults to \code{FALSE}. This argument is only used when \code{struc = NULL}.} +Defaults to \code{FALSE}.} \item{nugget}{the initial nugget value. If \code{nugget_est = FALSE}, the assigned value is fixed during the training. -Set \code{nugget} to a small value (e.g., \code{1e-8}) and the corresponding bool in \code{nugget_est} to \code{FASLE} for deterministic emulations where the emulator -interpolates the training data points. Set \code{nugget} to a reasonable larger value and the corresponding bool in \code{nugget_est} to \code{TRUE} for stochastic -emulations where the computer model outputs are assumed to follow a homogeneous Gaussian distribution. Defaults to \code{1e-8} if \code{nugget_est = FALSE} and -\code{0.01} if \code{nugget_est = TRUE}. This argument is only used when \code{struc = NULL}.} +Set \code{nugget} to a small value (e.g., \code{1e-8}) and the corresponding bool in \code{nugget_est} to \code{FALSE} for deterministic computer models where the emulator +should interpolate the training data points. Set \code{nugget} to a larger value and the corresponding bool in \code{nugget_est} to \code{TRUE} for stochastic +emulation where the computer model outputs are assumed to follow a homogeneous Gaussian distribution. Defaults to \code{1e-8} if \code{nugget_est = FALSE} and +\code{0.01} if \code{nugget_est = TRUE}.} \item{scale_est}{a bool indicating if the variance is to be estimated: \enumerate{ @@ -76,16 +69,15 @@ emulations where the computer model outputs are assumed to follow a homogeneous \item \code{TRUE}: the variance term will be estimated. } -Defaults to \code{TRUE}. This argument is only used when \code{struc = NULL}.} +Defaults to \code{TRUE}.} \item{scale}{the initial variance value. If \code{scale_est = FALSE}, the assigned value is fixed during the training. -Defaults to \code{1}. This argument is only used when \code{struc = NULL}.} +Defaults to \code{1}.} \item{training}{a bool indicating if the initialized GP emulator will be trained. -When set to \code{FALSE}, \code{\link[=gp]{gp()}} returns an untrained GP emulator, to which one can apply \code{\link[=summary]{summary()}} to inspect its specifications -(especially when a customized \code{struc} is provided) or apply \code{\link[=predict]{predict()}} to check its emulation performance before the training. Defaults to \code{TRUE}.} +When set to \code{FALSE}, \code{\link[=gp]{gp()}} returns an untrained GP emulator, to which one can apply \code{\link[=summary]{summary()}} to inspect its specification or apply \code{\link[=predict]{predict()}} to check its emulation performance before the training. Defaults to \code{TRUE}.} -\item{verb}{a bool indicating if the trace information on GP emulator construction and training will be printed during the function execution. +\item{verb}{a bool indicating if the trace information on GP emulator construction and training will be printed during function execution. Defaults to \code{TRUE}.} \item{vecchia}{\ifelse{html}{\href{https://lifecycle.r-lib.org/articles/stages.html#new}{\figure{lifecycle-new.svg}{options: alt='[New]'}}}{\strong{[New]}} a bool indicating whether to use Vecchia approximation for large-scale GP emulator construction and prediction. Defaults to \code{FALSE}. @@ -103,7 +95,7 @@ If \code{ord = NULL}, the default random ordering is used. Defaults to \code{NUL \item{internal_input_idx}{\ifelse{html}{\href{https://lifecycle.r-lib.org/articles/stages.html#deprecated}{\figure{lifecycle-deprecated.svg}{options: alt='[Deprecated]'}}}{\strong{[Deprecated]}} The column indices of \code{X} that are generated by the linked emulators in the preceding layers. Set \code{internal_input_idx = NULL} if the GP emulator is in the first layer of a system or all columns in \code{X} are -generated by the linked emulators in the preceding layers. Defaults to \code{NULL}. This argument is only used when \code{struc = NULL}. +generated by the linked emulators in the preceding layers. Defaults to \code{NULL}. \strong{The argument will be removed in the next release. To set up connections of emulators for linked emulations, please use the updated \code{\link[=lgp]{lgp()}} function instead.}} @@ -152,8 +144,6 @@ It is shown as \code{FALSE} if \code{internal_input_idx = NULL}. \strong{The slo \item \ifelse{html}{\href{https://lifecycle.r-lib.org/articles/stages.html#new}{\figure{lifecycle-new.svg}{options: alt='[New]'}}}{\strong{[New]}} \code{vecchia}: whether the Vecchia approximation is used for the GP emulator training. \item \ifelse{html}{\href{https://lifecycle.r-lib.org/articles/stages.html#new}{\figure{lifecycle-new.svg}{options: alt='[New]'}}}{\strong{[New]}} \code{M}: the size of the conditioning set for the Vecchia approximation in the GP emulator training. } - -\code{internal_dims} and \code{external_dims} are generated only when \code{struc = NULL}. \item \code{constructor_obj}: a 'python' object that stores the information of the constructed GP emulator. \item \code{container_obj}: a 'python' object that stores the information for the linked emulation. \item \code{emulator_obj}: a 'python' object that stores the information for the predictions from the GP emulator. @@ -176,7 +166,7 @@ The returned \code{gp} object can be used by This function builds and trains a GP emulator. } \details{ -See further examples and tutorials at \url{https://mingdeyu.github.io/dgpsi-R/}. +See further examples and tutorials at \url{https://mingdeyu.github.io/dgpsi-R/dev/}. } \note{ Any R vector detected in \code{X} and \code{Y} will be treated as a column vector and automatically converted into a single-column diff --git a/man/init_py.Rd b/man/init_py.Rd index 6289af3..2366313 100644 --- a/man/init_py.Rd +++ b/man/init_py.Rd @@ -31,7 +31,7 @@ of 'dgpsi'. Defaults to \code{FALSE}.} in \code{dgpsi_ver} if it has already been installed. This argument is useful when the 'python' environment is corrupted and one wants to completely uninstall and reinstall it. Defaults to \code{FALSE}.} -\item{verb}{a bool indicating if the trace information will be printed during the function execution. +\item{verb}{a bool indicating if trace information will be printed during function execution. Defaults to \code{TRUE}.} } \value{ @@ -41,7 +41,7 @@ No return value, called to install required 'python' environment. This function initializes the 'python' environment for the package. } \details{ -See further examples and tutorials at \url{https://mingdeyu.github.io/dgpsi-R/}. +See further examples and tutorials at \url{https://mingdeyu.github.io/dgpsi-R/dev/}. } \examples{ \dontrun{ diff --git a/man/kernel.Rd b/man/kernel.Rd deleted file mode 100644 index d3fe9dc..0000000 --- a/man/kernel.Rd +++ /dev/null @@ -1,107 +0,0 @@ -% Generated by roxygen2: do not edit by hand -% Please edit documentation in R/kernel.R -\name{kernel} -\alias{kernel} -\title{Initialize a Gaussian process node} -\usage{ -kernel( - length, - scale = 1, - nugget = 1e-06, - name = "sexp", - prior_name = "ga", - prior_coef = NULL, - bounds = NULL, - nugget_est = FALSE, - scale_est = FALSE, - input_dim = NULL, - connect = NULL -) -} -\arguments{ -\item{length}{a vector of lengthscales. The length of the vector equals to: -\enumerate{ -\item either one if the lengthscales in the kernel function are assumed same across input dimensions; or -\item the total number of input dimensions, which is the sum of the number of feeding GP nodes -in the last layer (defined by the argument \code{input_dim}) and the number of connected global -input dimensions (defined by the argument \code{connect}), if the lengthscales in the kernel function -are assumed different across input dimensions. -}} - -\item{scale}{the variance of a GP node. Defaults to \code{1}.} - -\item{nugget}{the nugget term of a GP node. Defaults to \code{1e-6}.} - -\item{name}{kernel function to be used. Either \code{"sexp"} for squared exponential kernel or -\code{"matern2.5"} for Matérn-2.5 kernel. Defaults to \code{"sexp"}.} - -\item{prior_name}{prior options for the lengthscales and nugget term: gamma prior (\code{"ga"}), inverse gamma prior (\code{"inv_ga"}), -or jointly robust prior (\code{"ref"}) for the lengthscales and nugget term. Set \code{NULL} to disable the prior. Defaults to \code{"ga"}.} - -\item{prior_coef}{a vector that contains the coefficients for different priors: -\itemize{ -\item for the gamma prior, it is a vector of two values specifying the shape and rate parameters of the gamma distribution. Set to \code{NULL} for the -default value \code{c(1.6,0.3)}. -\item for the inverse gamma prior, it is a vector of two values specifying the shape and scale parameters of the inverse gamma distribution. Set -to \code{NULL} for the default value \code{c(1.6,0.3)}. -\item for the jointly robust prior, it is a vector of a single value specifying the \code{a} parameter in the prior. Set to \code{NULL} for the -default value \code{c(0.2)}. See the reference below for the jointly robust prior. -} - -Defaults to \code{NULL}.} - -\item{bounds}{a vector of length two that gives the lower bound (the first element of the vector) and the upper bound (the second element of the -vector) of all lengthscales of the GP node. Defaults to \code{NULL} where no bounds are specified for the lengthscales.} - -\item{nugget_est}{set to \code{TRUE} to estimate the nugget term or to \code{FALSE} to fix the nugget term as specified -by the argument \code{nugget}. If set to \code{TRUE}, the value set to the argument \code{nugget} is used as the initial -value. Defaults to \code{FALSE}.} - -\item{scale_est}{set to \code{TRUE} to estimate the variance (i.e., scale) or to \code{FALSE} to fix the variance (i.e., scale) as specified -by the argument \code{scale}. Defaults to \code{FALSE}.} - -\item{input_dim}{a vector that contains either -\enumerate{ -\item the indices of GP nodes in the feeding layer whose outputs feed into this GP node; or -\item the indices of global input dimensions that are linked to the outputs of some feeding emulators, -if this GP node is in the first layer of a GP or DGP, which will be used for the linked emulation. -} - -When set to \code{NULL}, -\enumerate{ -\item all outputs from the GP nodes in the feeding layer feed into this GP node; or -\item all global input dimensions feed into this GP node. -} - -Defaults to \code{NULL}.} - -\item{connect}{a vector that contains the indices of dimensions in the global -input connecting to this GP node as additional input dimensions. When set to \code{NULL}, no global input -connection is implemented. Defaults to \code{NULL}. When this GP node is in the first layer of a GP or DGP emulator, -which will consequently be used for linked emulation, \code{connect} gives the indices of global input dimensions -that are not connected to some feeding emulators. In such a case, set \code{input_dim} to a vector of indices of -the remaining input dimensions that are connected to the feeding emulators.} -} -\value{ -A 'python' object to represent a GP node. -} -\description{ -\ifelse{html}{\href{https://lifecycle.r-lib.org/articles/stages.html#deprecated}{\figure{lifecycle-deprecated.svg}{options: alt='[Deprecated]'}}}{\strong{[Deprecated]}} - -This function is deprecated and will be removed in the next release. To customize -DGP specifications, adjust the other arguments in the \code{dgp()} function instead. -} -\details{ -See further examples and tutorials at \url{https://mingdeyu.github.io/dgpsi-R/}. -} -\examples{ -\dontrun{ - -# Check https://mingdeyu.github.io/dgpsi-R/ for examples -# on how to customize DGP structures using kernel(). -} -} -\references{ -Gu, M. (2019). Jointly robust prior for Gaussian stochastic process in emulation, calibration and variable selection. \emph{Bayesian Analysis}, \strong{14(3)}, 857-885. -} -\keyword{internal} diff --git a/man/lgp.Rd b/man/lgp.Rd index 7b1eb37..fc4d2e4 100644 --- a/man/lgp.Rd +++ b/man/lgp.Rd @@ -16,14 +16,16 @@ in the same order of the specified computer model system's hierarchy. \strong{Th \item \ifelse{html}{\href{https://lifecycle.r-lib.org/articles/stages.html#new}{\figure{lifecycle-new.svg}{options: alt='[New]'}}}{\strong{[New]}} a data frame that defines the connection structure between emulators in the linked system, with the following columns: \itemize{ \item \code{From_Emulator}: the ID of the emulator providing the output. This ID must match the \code{id} slot -in the corresponding emulator object (produced by \code{\link[=gp]{gp()}} or \code{\link[=dgp]{dgp()}}) within \code{emulators} (the next argument following \code{struc}). The \code{id} slot +in the corresponding emulator object (produced by \code{\link[=gp]{gp()}} or \code{\link[=dgp]{dgp()}}) within \code{emulators} argument of \code{\link[=lgp]{lgp()}}, or it should +be special value \code{"Global"}, indicating the global inputs to the model chain or network. The \code{id} slot is either automatically generated by \code{\link[=gp]{gp()}} or \code{\link[=dgp]{dgp()}}, or can be manually specified via the \code{id} argument in these functions or set with the \code{\link[=set_id]{set_id()}} function. \item \code{To_Emulator}: the ID of the emulator receiving the input, also matching the \code{id} slot in the -corresponding emulator object. The \code{id} slot is generated or set as described above for \code{From_Emulator}. -\item \code{From_Output}: a single integer specifying the output dimension from the \code{From_Emulator} that is being connected to the -input dimension of the \code{To_Emulator}. -\item \code{To_Input}: a single integer specifying the input dimension of the \code{To_Emulator} that is receiving the output dimension +corresponding emulator object. +\item \code{From_Output}: a single integer specifying the output dimension of the \code{From_Emulator} that is being connected to the +input dimension of the \code{To_Emulator} specified by \code{To_Input}. If \code{From_Emulator} is \code{"Global"}, then \code{From_Output} +indicates the dimension of the global input passed to the \code{To_Emulator}. +\item \code{To_Input}: a single integer specifying the input dimension of the \code{To_Emulator} that is receiving the \code{From_Output} dimension from the \code{From_Emulator}. } @@ -31,10 +33,7 @@ Each row represents a single one-to-one connection between a specified output di and a corresponding input dimension of \code{To_Emulator}. If multiple connections are required between two emulators, each connection should be specified in a separate row. -Additionally, the special value \code{"Global"} in \code{From_Emulator} can be used to represent global input data, linking a -specified dimension of the global input directly to an input dimension of an emulator. - -\strong{Note:} When using this data frame option, \code{emulators} argument must be provided. +\strong{Note:} When using the data frame option for \code{struc}, the \code{emulators} argument must be provided. }} \item{emulators}{\ifelse{html}{\href{https://lifecycle.r-lib.org/articles/stages.html#new}{\figure{lifecycle-new.svg}{options: alt='[New]'}}}{\strong{[New]}} a list of emulator objects, each containing an \code{id} slot that uniquely identifies it within the @@ -44,19 +43,22 @@ If the same emulator is used multiple times within the linked system, the list m of that emulator, each with a unique ID stored in their \code{id} slot. Use the \code{\link[=set_id]{set_id()}} function to produce copies with different IDs to ensure each instance can be uniquely referenced.} -\item{B}{the number of imputations to produce the predictions. Increase the value to account for more -imputation uncertainties. Decrease the value for lower imputation uncertainties but faster predictions. -If the system consists only GP emulators, \code{B} is set to \code{1} automatically. Defaults to \code{10}.} +\item{B}{the number of imputations used for prediction. Increase the value to refine representation of +imputation uncertainty. If the system consists of only GP emulators, \code{B} is set to \code{1} automatically. Defaults to \code{10}.} -\item{activate}{\ifelse{html}{\href{https://lifecycle.r-lib.org/articles/stages.html#new}{\figure{lifecycle-new.svg}{options: alt='[New]'}}}{\strong{[New]}} a bool indicating if the initialized linked emulator will be activated for prediction, which can be used with \code{\link[=predict]{predict()}} or \code{\link[=validate]{validate()}}. -When set to \code{FALSE}, \code{\link[=lgp]{lgp()}} returns an inactive linked emulator, to which one can apply \code{\link[=summary]{summary()}} to inspect its structure. Defaults to \code{TRUE}. This argument is only -applicable when \code{struc} is specified as a data frame.} +\item{activate}{\ifelse{html}{\href{https://lifecycle.r-lib.org/articles/stages.html#new}{\figure{lifecycle-new.svg}{options: alt='[New]'}}}{\strong{[New]}} a bool indicating whether the initialized linked emulator should be activated: +\itemize{ +\item If \code{activate = FALSE}, \code{\link[=lgp]{lgp()}} returns an inactive linked emulator, allowing inspection of its structure using \code{\link[=summary]{summary()}}. +\item If \code{activate = TRUE}, \code{\link[=lgp]{lgp()}} returns an active linked emulator, ready for prediction and validation using \code{\link[=predict]{predict()}} and \code{\link[=validate]{validate()}}, respectively. +} + +Defaults to \code{TRUE}. This argument is only applicable when \code{struc} is specified as a data frame.} -\item{verb}{\ifelse{html}{\href{https://lifecycle.r-lib.org/articles/stages.html#new}{\figure{lifecycle-new.svg}{options: alt='[New]'}}}{\strong{[New]}} a bool indicating if the trace information on linked (D)GP emulator construction will be printed during the function call. +\item{verb}{\ifelse{html}{\href{https://lifecycle.r-lib.org/articles/stages.html#new}{\figure{lifecycle-new.svg}{options: alt='[New]'}}}{\strong{[New]}} a bool indicating if the trace information on linked (D)GP emulator construction should be printed during the function call. Defaults to \code{TRUE}. This argument is only applicable when \code{struc} is specified as a data frame.} \item{id}{an ID to be assigned to the linked (D)GP emulator. If an ID is not provided (i.e., \code{id = NULL}), a UUID -(Universally Unique Identifier) will be automatically generated and assigned to the emulator. Default to \code{NULL}.} +(Universally Unique Identifier) will be automatically generated and assigned to the emulator. Defaults to \code{NULL}.} } \value{ An S3 class named \code{lgp} that contains three slots: @@ -66,7 +68,7 @@ An S3 class named \code{lgp} that contains three slots: \item \code{emulator_obj}, a 'python' object that stores the information for predictions from the linked emulator. \item \code{specs}: a list that contains \enumerate{ -\item \code{seed}: the random seed generated to produce the imputations. This information is stored for the reproducibility +\item \code{seed}: the random seed generated to produce the imputations. This information is stored for reproducibility when the linked (D)GP emulator (that was saved by \code{\link[=write]{write()}} with the light option \code{light = TRUE}) is loaded back to R by \code{\link[=read]{read()}}. \item \code{B}: the number of imputations used to generate the linked (D)GP emulator. @@ -91,17 +93,17 @@ indicates a position higher up in that layer. The returned \code{lgp} object can be used by \itemize{ \item \code{\link[=predict]{predict()}} for linked (D)GP predictions. -\item \code{\link[=validate]{validate()}} for the OOS validation. -\item \code{\link[=plot]{plot()}} for the validation plots. +\item \code{\link[=validate]{validate()}} for OOS validation. +\item \code{\link[=plot]{plot()}} for validation plots. \item \code{\link[=summary]{summary()}} to summarize the constructed linked (D)GP emulator. \item \code{\link[=write]{write()}} to save the linked (D)GP emulator to a \code{.pkl} file. } } \description{ -This function constructs a linked (D)GP emulator. +This function constructs a linked (D)GP emulator for a model chain or network. } \details{ -See further examples and tutorials at \url{https://mingdeyu.github.io/dgpsi-R/}. +See further examples and tutorials at \url{https://mingdeyu.github.io/dgpsi-R/dev/}. } \examples{ \dontrun{ diff --git a/man/mice.Rd b/man/mice.Rd index 9a0eb35..a60669e 100644 --- a/man/mice.Rd +++ b/man/mice.Rd @@ -61,13 +61,13 @@ mice(object, ...) \item{...}{any arguments (with names different from those of arguments used in \code{\link[=mice]{mice()}}) that are used by \code{aggregate} can be passed here.} -\item{x_cand}{a matrix (with each row containing a design point and column representing an input dimension) that gives a candidate set -from which the next design point(s) are determined. If \code{object} is an instance of the \code{bundle} class and \code{aggregate} is not supplied, \code{x_cand} could also -be a list with length equal to the number of emulators contained in \code{object}. In this case, each slot in \code{x_cand} should be a candidate set matrix -for each emulator included in the bundle. Defaults to \code{NULL}.} +\item{x_cand}{a matrix (with each row being a design point and column being an input dimension) that gives a candidate set +from which the next design point(s) are determined. If \code{object} is an instance of the \code{bundle} class and \code{aggregate} is not supplied, \code{x_cand} can also be a list. +The list must have a length equal to the number of emulators in \code{object}, with each element being a matrix representing the candidate set for a corresponding +emulator in the bundle. Defaults to \code{NULL}.} -\item{n_cand}{an integer that gives the size of the candidate set to be generated from which the next design point is determined. This argument -is only used when \code{x_cand} is \code{NULL}. Defaults to \code{200}.} +\item{n_cand}{an integer specifying the size of the candidate set to be generated for selecting the next design point(s). +This argument is used only when \code{x_cand} is \code{NULL}. Defaults to \code{200}.} \item{batch_size}{an integer that gives the number of design points to be chosen. Defaults to \code{1}.} @@ -99,32 +99,38 @@ of the matrix equals to: \item the emulator output dimension if \code{object} is an instance of the \code{dgp} class; or \item the number of emulators contained in \code{object} if \code{object} is an instance of the \code{bundle} class. } -\item the output should be a vector that gives aggregations of scores at different design points. +\item the output should be a vector that gives aggregate scores at different design points. } -Set to \code{NULL} to disable the aggregation. Defaults to \code{NULL}.} +Set to \code{NULL} to disable aggregation. Defaults to \code{NULL}.} } \value{ \enumerate{ -\item If \code{x_cand} is not \code{NULL} and: +\item If \code{x_cand} is not \code{NULL}: \itemize{ -\item \code{object} is an instance of the \code{gp} class, a vector is returned with length equal to \code{batch_size}, giving the positions (i.e., row numbers) -of next design points from \code{x_cand}. -\item \code{object} is an instance of the \code{dgp} class, a vector is returned with length equal to \code{batch_size * D}, giving positions (i.e., row numbers) -of next design points from \code{x_cand} to be added to the DGP emulator. \code{D} equals to the number of output dimensions of the DGP -emulator if there is no likelihood layer in the hierarchy. If \code{object} is a DGP emulator with either \code{Hetero} or \code{NegBin} likelihood layer, -\code{D = 2}. If \code{object} is a DGP emulator with a \code{Categorical} likelihood layer, \code{D} equals to one (for binary output) or \code{K} (for multi-class output with \code{K} classes). -\item \code{object} is an instance of the \code{bundle} class, a matrix is returned with row number equal to \code{batch_size} and column number equal to the number of -emulators in the bundle, giving positions (i.e., row numbers) of next design points from \code{x_cand} to be added to individual emulators. -} -\item If \code{x_cand = NULL} and: +\item When \code{object} is an instance of the \code{gp} class, a vector of length \code{batch_size} is returned, containing the positions +(row numbers) of the next design points from \code{x_cand}. +\item When \code{object} is an instance of the \code{dgp} class, a vector of length \code{batch_size * D} is returned, containing the positions +(row numbers) of the next design points from \code{x_cand} to be added to the DGP emulator. \itemize{ -\item \code{object} is an instance of the \code{gp} class, a matrix is returned with row number equal to \code{batch_size}, giving the next design points to be evaluated. -\item \code{object} is an instance of the \code{dgp} class, a matrix is returned with row number equal to \code{batch_size * D} where \code{D} is the number of output dimensions of the DGP -emulator if no likelihood layer is included. If \code{object} is a DGP emulator with either \code{Hetero} or \code{NegBin} likelihood layer, \code{D = 2}. If \code{object} is a DGP emulator -with a \code{Categorical} likelihood layer, \code{D} equals to one (for binary output) or \code{K} (for multi-class output with \code{K} classes). -\item \code{object} is an instance of the \code{bundle} class, a list is returned with the length equal to the number of -emulators in the bundle. Each element in the list is a matrix with row number equal to \code{batch_size}, giving next design points to be added to individual emulators. +\item \code{D} is the number of output dimensions of the DGP emulator if no likelihood layer is included. +\item For a DGP emulator with a \code{Hetero} or \code{NegBin} likelihood layer, \code{D = 2}. +\item For a DGP emulator with a \code{Categorical} likelihood layer, \code{D = 1} for binary output or \code{D = K} for multi-class output with \code{K} classes. +} +\item When \code{object} is an instance of the \code{bundle} class, a matrix is returned with \code{batch_size} rows and a column for each emulator in +the bundle, containing the positions (row numbers) of the next design points from \code{x_cand} for individual emulators. +} +\item If \code{x_cand} is \code{NULL}: +\itemize{ +\item When \code{object} is an instance of the \code{gp} class, a matrix with \code{batch_size} rows is returned, giving the next design points to be evaluated. +\item When \code{object} is an instance of the \code{dgp} class, a matrix with \code{batch_size * D} rows is returned, where: +\itemize{ +\item \code{D} is the number of output dimensions of the DGP emulator if no likelihood layer is included. +\item For a DGP emulator with a \code{Hetero} or \code{NegBin} likelihood layer, \code{D = 2}. +\item For a DGP emulator with a \code{Categorical} likelihood layer, \code{D = 1} for binary output or \code{D = K} for multi-class output with \code{K} classes. +} +\item When \code{object} is an instance of the \code{bundle} class, a list is returned with a length equal to the number of emulators in the bundle. Each +element of the list is a matrix with \code{batch_size} rows, where each row represents a design point to be added to the corresponding emulator. } } } @@ -133,11 +139,12 @@ This function searches from a candidate set to locate the next design point(s) t or a bundle of (D)GP emulators using the Mutual Information for Computer Experiments (MICE), see the reference below. } \details{ -See further examples and tutorials at \url{https://mingdeyu.github.io/dgpsi-R/}. +See further examples and tutorials at \url{https://mingdeyu.github.io/dgpsi-R/dev/}. } \note{ -The column order of the first argument of \code{aggregate} must be consistent with the order of emulator output dimensions (if \code{object} is an instance of the -\code{dgp} class), or the order of emulators placed in \code{object} if \code{object} is an instance of the \code{bundle} class. +The first column of the matrix supplied to the first argument of \code{aggregate} must correspond to the first output dimension of the DGP emulator +if \code{object} is an instance of the \code{dgp} class, and so on for subsequent columns and dimensions. If \code{object} is an instance of the \code{bundle} class, +the first column must correspond to the first emulator in the bundle, and so on for subsequent columns and emulators. } \examples{ \dontrun{ diff --git a/man/nllik.Rd b/man/nllik.Rd index 162c9d5..ea450aa 100644 --- a/man/nllik.Rd +++ b/man/nllik.Rd @@ -2,7 +2,7 @@ % Please edit documentation in R/utils.R \name{nllik} \alias{nllik} -\title{Calculate negative predicted log-likelihood} +\title{Calculate the predictive negative log-likelihood} \usage{ nllik(object, x, y) } @@ -20,17 +20,9 @@ across all testing data points. The second one, named \code{allNLL}, is a vector log-likelihood for each testing data point. } \description{ -This function computes the negative predicted log-likelihood from a +This function computes the predictive negative log-likelihood from a DGP emulator with a likelihood layer. } \details{ -See further examples and tutorials at \url{https://mingdeyu.github.io/dgpsi-R/}. -} -\examples{ -\dontrun{ - -# Check https://mingdeyu.github.io/dgpsi-R/ for examples -# on how to compute the negative predicted log-likelihood -# using nllik(). -} +See further examples and tutorials at \url{https://mingdeyu.github.io/dgpsi-R/dev/}. } diff --git a/man/pack.Rd b/man/pack.Rd index f24f253..928fa09 100644 --- a/man/pack.Rd +++ b/man/pack.Rd @@ -28,7 +28,7 @@ This function packs GP emulators and DGP emulators into a \code{bundle} class fo sequential designs if each emulator emulates one output dimension of the underlying simulator. } \details{ -See further examples and tutorials at \url{https://mingdeyu.github.io/dgpsi-R/}. +See further examples and tutorials at \url{https://mingdeyu.github.io/dgpsi-R/dev/}. } \examples{ \dontrun{ diff --git a/man/plot.Rd b/man/plot.Rd index 4d5fba7..8c67eca 100644 --- a/man/plot.Rd +++ b/man/plot.Rd @@ -74,11 +74,11 @@ \item{y_test}{same as that of \code{\link[=validate]{validate()}}.} -\item{dim}{if \code{dim = NULL}, the index of an emulator's input will be shown on the x-axis in validation plots. Otherwise, \code{dim} indicates +\item{dim}{if \code{dim = NULL}, the index of an emulator's input within the design will be shown on the x-axis in validation plots. Otherwise, \code{dim} indicates which dimension of an emulator's input will be shown on the x-axis in validation plots: \itemize{ \item If \code{x} is an instance of the \code{gp} of \code{dgp} class, \code{dim} is an integer. -\item \ifelse{html}{\href{https://lifecycle.r-lib.org/articles/stages.html#deprecated}{\figure{lifecycle-deprecated.svg}{options: alt='[Deprecated]'}}}{\strong{[Deprecated]}} If \code{x} is an instance of the \code{lgp} class created by \code{\link[=lgp]{lgp()}} without specifying argument \code{struc} in data frame form, \code{dim} can be +\item \ifelse{html}{\href{https://lifecycle.r-lib.org/articles/stages.html#deprecated}{\figure{lifecycle-deprecated.svg}{options: alt='[Deprecated]'}}}{\strong{[Deprecated]}} If \code{x} is an instance of the \code{lgp} class created by \code{\link[=lgp]{lgp()}} without specifying the \code{struc} argument in data frame form, \code{dim} can be: \enumerate{ \item an integer referring to the dimension of the global input to emulators in the first layer of a linked emulator system; or \item a vector of three integers referring to the dimension (specified by the third integer) of the global input to an emulator @@ -97,7 +97,7 @@ This argument is only used when \code{style = 1}. Defaults to \code{NULL}.} \item{sample_size}{same as that of \code{\link[=validate]{validate()}}.} -\item{style}{either \code{1} or \code{2}, indicating two different types of validation plots.} +\item{style}{either \code{1} or \code{2}, indicating two different plotting styles for validation.} \item{min_max}{a bool indicating if min-max normalization will be used to scale the testing output, RMSE, predictive mean and std from the emulator. Defaults to \code{TRUE}. This argument is not applicable to DGP emulators with categorical likelihoods.} @@ -123,7 +123,7 @@ Defaults to \code{'turbo'} (or \code{'H'}).} individual points when the input of the emulator is one-dimensional and \code{style = 1}. This argument is not applicable to DGP emulators with categorical likelihoods. Defaults to \code{'points'}} -\item{verb}{a bool indicating if the trace information on plotting will be printed during the function execution. +\item{verb}{a bool indicating if trace information on plotting will be printed during execution. Defaults to \code{TRUE}.} \item{M}{\ifelse{html}{\href{https://lifecycle.r-lib.org/articles/stages.html#new}{\figure{lifecycle-new.svg}{options: alt='[New]'}}}{\strong{[New]}} same as that of \code{\link[=validate]{validate()}}.} @@ -141,20 +141,17 @@ A \code{patchwork} object. This function draws validation plots of a GP, DGP, or linked (D)GP emulator. } \details{ -See further examples and tutorials at \url{https://mingdeyu.github.io/dgpsi-R/}. +See further examples and tutorials at \url{https://mingdeyu.github.io/dgpsi-R/dev/}. } \note{ \itemize{ \item \code{\link[=plot]{plot()}} calls \code{\link[=validate]{validate()}} internally to obtain validation results for plotting. However, \code{\link[=plot]{plot()}} will not export the emulator object with validation results. Instead, it only returns the plotting object. For small-scale validations (i.e., small -training or testing data points), direct execution of \code{\link[=plot]{plot()}} is fine. However, for moderate- to large-scale validations, +training or testing data points), direct execution of \code{\link[=plot]{plot()}} works well. However, for moderate- to large-scale validation, it is recommended to first run \code{\link[=validate]{validate()}} to obtain and store validation results in the emulator object, and then supply the -object to \code{\link[=plot]{plot()}}. This is because if an emulator object has the validation results stored, each time when \code{\link[=plot]{plot()}} -is invoked, unnecessary evaluations of repetitive LOO or OOS validation will not be implemented. -\item \code{\link[=plot]{plot()}} uses information provided in \code{x_test} and \code{y_test} to produce the OOS validation plots. Therefore, if validation results -are already stored in \code{x}, unless \code{x_test} and \code{y_test} are identical to those used by \code{\link[=validate]{validate()}}, \code{\link[=plot]{plot()}} will re-evaluate OOS -validations before plotting. -\item The returned \code{patchwork} object contains the \code{ggplot2} objects. One can modify the included individual ggplots +object to \code{\link[=plot]{plot()}}. \code{\link[=plot]{plot()}} checks the object's \code{loo} and \code{oos} slots prior to calling \code{\link[=validate]{validate()}} and will not perform further calculation if the required information is already stored. +\item \code{\link[=plot]{plot()}} will only use stored OOS validation if \code{x_test} and \code{y_test} are identical to those used by \code{\link[=validate]{validate()}} to produce the data contained in the object's \code{oos} slot, otherwise \code{\link[=plot]{plot()}} will re-evaluate OOS validation before plotting. +\item The returned \link{patchwork} object contains the \link{ggplot2} objects. One can modify the included individual ggplots by accessing them with double-bracket indexing. See \url{https://patchwork.data-imaginist.com/} for further information. } } diff --git a/man/predict.Rd b/man/predict.Rd index 36ced11..debcc12 100644 --- a/man/predict.Rd +++ b/man/predict.Rd @@ -5,7 +5,7 @@ \alias{predict.dgp} \alias{predict.lgp} \alias{predict.gp} -\title{Predictions from GP, DGP, or linked (D)GP emulators} +\title{Prediction from GP, DGP, or linked (D)GP emulators} \usage{ \method{predict}{dgp}( object, @@ -51,9 +51,7 @@ \item if \code{object} is an instance of the \code{gp} or \code{dgp} class, \code{x} is a matrix where each row is an input testing data point and each column is an input dimension. \item \ifelse{html}{\href{https://lifecycle.r-lib.org/articles/stages.html#deprecated}{\figure{lifecycle-deprecated.svg}{options: alt='[Deprecated]'}}}{\strong{[Deprecated]}} if \code{object} is an instance of the \code{lgp} class created by \code{\link[=lgp]{lgp()}} without specifying argument \code{struc} in data frame form, \code{x} can be either a matrix or a list: \itemize{ -\item if \code{x} is a matrix, it is the global testing input data that feed into the emulators in the first layer of a system. -The rows of \code{x} represent different input data points and the columns represent input dimensions across all emulators in -the first layer of the system. In this case, it is assumed that the only global input to the system is the input to the +\item if \code{x} is a matrix, its rows are treated as instances of the \code{Global} inputs. In this case, it is assumed that the only global input to the system is the input to the emulators in the first layer and there is no global input to emulators in other layers. \item if \code{x} is a list, it should have \emph{L} (the number of layers in an emulator system) elements. The first element is a matrix that represents the global testing input data that feed into the emulators in the first layer of the system. The @@ -72,20 +70,23 @@ corresponding to rows where the \code{From_Emulator} column is \code{"Global"}. }} \item{method}{\ifelse{html}{\href{https://lifecycle.r-lib.org/articles/stages.html#updated}{\figure{lifecycle-updated.svg}{options: alt='[Updated]'}}}{\strong{[Updated]}} the prediction approach to use: either the mean-variance approach (\code{"mean_var"}) or the sampling approach (\code{"sampling"}). -For DGP emulators with a categorical likelihood (\code{likelihood = "Categorical"} in \code{\link[=dgp]{dgp()}}), the argument is only used when \code{full_layer = TRUE}. -By default, the method is set to \code{"sampling"} for DGP emulators with Poisson, Negative Binomial, and Categorical likelihoods and \code{"mean_var"} otherwise.} +The mean-variance approach returns the means and variances of the predictive distributions, while the sampling approach generates samples from predictive distributions +using the derived means and variances. For DGP emulators with a categorical likelihood (\code{likelihood = "Categorical"} in \code{\link[=dgp]{dgp()}}), \code{method} is only applicable +when \code{full_layer = TRUE}. In this case, the sampling approach generates samples from the GP nodes in all hidden layers using the derived means and variances, +and subsequently propagates these samples through the categorical likelihood. By default, the method is set to \code{"sampling"} for DGP emulators with Poisson, Negative Binomial, and +Categorical likelihoods, and to \code{"mean_var"} otherwise.} \item{mode}{\ifelse{html}{\href{https://lifecycle.r-lib.org/articles/stages.html#new}{\figure{lifecycle-new.svg}{options: alt='[New]'}}}{\strong{[New]}} whether to predict the classes (\code{"label"}) or probabilities (\code{"proba"}) of different classes when \code{object} is a DGP emulator with a categorical likelihood. Defaults to \code{"label"}.} -\item{full_layer}{a bool indicating whether to output the predictions of all layers. Defaults to \code{FALSE}. Only used when \code{object} is a DGP and linked (D)GP emulator.} +\item{full_layer}{a bool indicating whether to output the predictions of all layers. Defaults to \code{FALSE}. Only used when \code{object} is a DGP or a linked (D)GP emulator.} \item{sample_size}{the number of samples to draw for each given imputation if \code{method = "sampling"}. Defaults to \code{50}.} \item{M}{\ifelse{html}{\href{https://lifecycle.r-lib.org/articles/stages.html#new}{\figure{lifecycle-new.svg}{options: alt='[New]'}}}{\strong{[New]}} the size of the conditioning set for the Vecchia approximation in the emulator prediction. Defaults to \code{50}. This argument is only used if the emulator \code{object} was constructed under the Vecchia approximation.} -\item{cores}{the number of processes to be used for predictions. If set to \code{NULL}, the number of processes is set to \verb{max physical cores available \%/\% 2}. Defaults to \code{1}.} +\item{cores}{the number of processes to be used for prediction. If set to \code{NULL}, the number of processes is set to \verb{max physical cores available \%/\% 2}. Defaults to \code{1}.} \item{chunks}{the number of chunks that the testing input matrix \code{x} will be divided into for multi-cores to work on. Only used when \code{cores} is not \code{1}. If not specified (i.e., \code{chunks = NULL}), the number of chunks is set to the value of \code{cores}. @@ -124,7 +125,7 @@ of size: \code{B * sample_size}, where \code{B} is the number of imputations spe \item \ifelse{html}{\href{https://lifecycle.r-lib.org/articles/stages.html#new}{\figure{lifecycle-new.svg}{options: alt='[New]'}}}{\strong{[New]}} If \code{object} is an instance of the \code{dgp} class with a categorical likelihood: \enumerate{ \item if \code{full_layer = FALSE} and \code{mode = "label"}: an updated \code{object} is returned with an additional slot called \code{results} that contains one matrix named \code{label}. -The matrix has its rows corresponding to testing positions and columns corresponding to label samples of size: \code{B * sample_size}, where \code{B} is the number +The matrix has rows corresponding to testing positions and columns corresponding to sample labels of size: \code{B * sample_size}, where \code{B} is the number of imputations specified in \code{\link[=dgp]{dgp()}}. \item if \code{full_layer = FALSE} and \code{mode = "proba"}, an updated \code{object} is returned with an additional slot called \code{results}. This slot contains \emph{D} matrices (where \emph{D} is the number of classes in the training output), where each matrix gives probability samples for the corresponding class with its rows corresponding to testing @@ -159,23 +160,23 @@ is \code{B * sample_size}. \enumerate{ \item if \code{method = "mean_var"} and \code{full_layer = FALSE}: an updated \code{object} is returned with an additional slot called \code{results} that contains two sub-lists named \code{mean} for the predictive means and \code{var} for the predictive variances respectively. Each sub-list -contains \emph{K} number (same number of emulators in the final layer of the system) of matrices named by the \code{ID}s of the corresponding emulators in the final layer. -Each matrix has its rows corresponding to global testing positions and columns corresponding to output dimensions of the associated emulator +contains \emph{K} (same number of emulators in the final layer of the system) matrices named using the \code{ID}s of the corresponding emulators in the final layer. +Each matrix has rows corresponding to global testing positions and columns corresponding to output dimensions of the associated emulator in the final layer. \item if \code{method = "mean_var"} and \code{full_layer = TRUE}: an updated \code{object} is returned with an additional slot called \code{results} that contains two sub-lists named \code{mean} for the predictive means and \code{var} for the predictive variances respectively. Each sub-list contains \emph{L} (i.e., the number of layers in the emulated system) components named \verb{layer1, layer2,..., layerL}. Each component represents a layer -and contains \emph{K} number (same number of emulators in the corresponding layer of the system) of matrices named by the \code{ID}s of the corresponding emulators in that layer. +and contains \emph{K} (same number of emulators in the corresponding layer of the system) matrices named using the \code{ID}s of the corresponding emulators in that layer. Each matrix has its rows corresponding to global testing positions and columns corresponding to output dimensions of the associated GP/DGP emulator in the corresponding layer. \item if \code{method = "sampling"} and \code{full_layer = FALSE}: an updated \code{object} is returned with an additional slot called \code{results} that contains -\emph{K} number (same number of emulators in the final layer of the system) of sub-lists named by the \code{ID}s of the corresponding emulators in the final layer. Each +\emph{K} (same number of emulators in the final layer of the system) sub-lists named using the \code{ID}s of the corresponding emulators in the final layer. Each sub-list contains \emph{D} matrices, named \verb{output1, output2,..., outputD}, that correspond to the output -dimensions of the GP/DGP emulator. Each matrix has its rows corresponding to testing positions and columns corresponding to samples +dimensions of the GP/DGP emulator. Each matrix has rows corresponding to testing positions and columns corresponding to samples of size: \code{B * sample_size}, where \code{B} is the number of imputations specified in \code{\link[=lgp]{lgp()}}. \item if \code{method = "sampling"} and \code{full_layer = TRUE}: an updated \code{object} is returned with an additional slot called \code{results} that contains \emph{L} (i.e., the number of layers of the emulated system) sub-lists named \verb{layer1, layer2,..., layerL}. Each sub-list represents a layer -and contains \emph{K} number (same number of emulators in the corresponding layer of the system) of components named by the \code{ID}s of the corresponding emulators in that layer. +and contains \emph{K} (same number of emulators in the corresponding layer of the system) components named using the \code{ID}s of the corresponding emulators in that layer. Each component contains \emph{D} matrices, named \verb{output1, output2,..., outputD}, that correspond to the output dimensions of the GP/DGP emulator. Each matrix has its rows corresponding to testing positions and columns corresponding to samples of size: \code{B * sample_size}, where \code{B} is the number of imputations specified in \code{\link[=lgp]{lgp()}}. @@ -192,11 +193,11 @@ The \code{results} slot will also include: } } \description{ -This function implements single-core or multi-core predictions (with or without multi-threading) +This function implements single-core or multi-core prediction (with or without multi-threading) from GP, DGP, or linked (D)GP emulators. } \details{ -See further examples and tutorials at \url{https://mingdeyu.github.io/dgpsi-R/}. +See further examples and tutorials at \url{https://mingdeyu.github.io/dgpsi-R/dev/}. } \examples{ \dontrun{ diff --git a/man/prune.Rd b/man/prune.Rd index e7343fa..f9bfd98 100644 --- a/man/prune.Rd +++ b/man/prune.Rd @@ -7,31 +7,31 @@ prune(object, control = list(), verb = TRUE) } \arguments{ -\item{object}{an instance of the \code{dgp} class that is generated by \code{dgp()} with \code{struc = NULL}.} +\item{object}{an instance of the \code{dgp} class that is generated by \code{dgp()}.} -\item{control}{a list that can supply the following two components to control the static pruning of the DGP emulator: +\item{control}{a list that can supply the following two components to control static pruning of the DGP emulator: \itemize{ -\item \code{min_size}, the minimum number of design points required to trigger the pruning. Defaults to 10 times of the input dimensions. -\item \code{threshold}, the R2 value above which a GP node is considered redundant and removable. Defaults to \code{0.97}. +\item \code{min_size}, the minimum number of design points required to trigger pruning. Defaults to 10 times of the input dimensions. +\item \code{threshold}, the \eqn{R^2} value above which a GP node is considered redundant and removable. Defaults to \code{0.97}. }} -\item{verb}{a bool indicating if the trace information will be printed during the function execution. Defaults to \code{TRUE}.} +\item{verb}{a bool indicating if trace information will be printed during the function execution. Defaults to \code{TRUE}.} } \value{ An updated \code{object} that could be an instance of \code{gp}, \code{dgp}, or \code{bundle} (of GP emulators) class. } \description{ -This function implements the static pruning of a DGP emulator. +This function implements static pruning for a DGP emulator. } \details{ -See further examples and tutorials at \url{https://mingdeyu.github.io/dgpsi-R/}. +See further examples and tutorials at \url{https://mingdeyu.github.io/dgpsi-R/dev/}. } \note{ \itemize{ \item The function requires a DGP emulator that has been trained with a dataset comprising a minimum size equal to \code{min_size} in \code{control}. -If the training dataset size is smaller than this, it is suggested to enrich the design of the DGP emulator and prune its -structure dynamically using the \code{design()} function. Depending on the design of the DGP emulator, the static pruning may not be accurate. -It is thus suggested to implement dynamic pruning as a part of the sequential design via \code{design()}. +If the training dataset size is smaller than this, it is recommended that the design of the DGP emulator is enriched and its +structure pruned dynamically using the \code{design()} function. Depending on the design of the DGP emulator, static pruning may not be accurate. +It is thus recommended that dynamic pruning is implemented as a part of a sequential design via \code{design()}. \item The following slots: \itemize{ \item \code{loo} and \code{oos} created by \code{\link[=validate]{validate()}}; and diff --git a/man/read.Rd b/man/read.Rd index 103dd48..d7678a6 100644 --- a/man/read.Rd +++ b/man/read.Rd @@ -16,7 +16,7 @@ The S3 class of a GP emulator, a DGP emulator, a linked (D)GP emulator, or a bun This function loads the \code{.pkl} file that stores the emulator. } \details{ -See further examples and tutorials at \url{https://mingdeyu.github.io/dgpsi-R/}. +See further examples and tutorials at \url{https://mingdeyu.github.io/dgpsi-R/dev/}. } \examples{ \dontrun{ diff --git a/man/serialize.Rd b/man/serialize.Rd index c81ce9a..b27b995 100644 --- a/man/serialize.Rd +++ b/man/serialize.Rd @@ -19,7 +19,7 @@ A serialized version of \code{object}. This function serialize the constructed emulator. } \details{ -See further examples and tutorials at \url{https://mingdeyu.github.io/dgpsi-R/}. +See further examples and tutorials at \url{https://mingdeyu.github.io/dgpsi-R/dev/}. } \note{ Since the constructed emulators are 'python' objects, they cannot be directly exported to other R processes for parallel diff --git a/man/set_id.Rd b/man/set_id.Rd index 5d270d1..0c4a0f6 100644 --- a/man/set_id.Rd +++ b/man/set_id.Rd @@ -22,7 +22,7 @@ The updated \code{object}, with the assigned ID stored in its \code{id} slot. This function assigns a unique identifier to an emulator. } \details{ -See further examples and tutorials at \url{https://mingdeyu.github.io/dgpsi-R/}. +See further examples and tutorials at \url{https://mingdeyu.github.io/dgpsi-R/dev/}. } \examples{ \dontrun{ diff --git a/man/set_imp.Rd b/man/set_imp.Rd index 0c20128..555aca2 100644 --- a/man/set_imp.Rd +++ b/man/set_imp.Rd @@ -9,18 +9,16 @@ set_imp(object, B = 5) \arguments{ \item{object}{an instance of the S3 class \code{dgp}.} -\item{B}{the number of imputations to produce predictions from \code{object}. Increase the value to account for -more imputation uncertainties with slower predictions. Decrease the value for lower imputation uncertainties -but faster predictions. Defaults to \code{5}.} +\item{B}{the number of imputations to produce predictions from \code{object}. Increase the value to improve imputation uncertainty quantification. Decrease the value to improve speed of prediction. Defaults to \code{5}.} } \value{ An updated \code{object} with the information of \code{B} incorporated. } \description{ -This function resets the number of imputations for predictions from a DGP emulator. +This function resets the number of imputations for prediction from a DGP emulator. } \details{ -See further examples and tutorials at \url{https://mingdeyu.github.io/dgpsi-R/}. +See further examples and tutorials at \url{https://mingdeyu.github.io/dgpsi-R/dev/}. } \note{ \itemize{ diff --git a/man/set_linked_idx.Rd b/man/set_linked_idx.Rd index acb5461..996657f 100644 --- a/man/set_linked_idx.Rd +++ b/man/set_linked_idx.Rd @@ -22,7 +22,7 @@ This function is deprecated and will be removed in the next release. The updated for (D)GP emulators. } \details{ -See further examples and tutorials at \url{https://mingdeyu.github.io/dgpsi-R/}. +See further examples and tutorials at \url{https://mingdeyu.github.io/dgpsi-R/dev/}. } \note{ This function is useful when different models are emulated by different teams. Each team can create their (D)GP emulator diff --git a/man/set_seed.Rd b/man/set_seed.Rd index 2c0330d..05d92b3 100644 --- a/man/set_seed.Rd +++ b/man/set_seed.Rd @@ -17,7 +17,7 @@ This function initializes a random number generator that sets the random seed in to ensure reproducible results from the package. } \details{ -See further examples and tutorials at \url{https://mingdeyu.github.io/dgpsi-R/}. +See further examples and tutorials at \url{https://mingdeyu.github.io/dgpsi-R/dev/}. } \examples{ \dontrun{ diff --git a/man/set_thread_num.Rd b/man/set_thread_num.Rd index 005cd5a..526a55c 100644 --- a/man/set_thread_num.Rd +++ b/man/set_thread_num.Rd @@ -20,5 +20,5 @@ This function sets the number of threads for parallel computations involved in the package. } \details{ -See further examples and tutorials at \url{https://mingdeyu.github.io/dgpsi-R/}. +See further examples and tutorials at \url{https://mingdeyu.github.io/dgpsi-R/dev/}. } diff --git a/man/set_vecchia.Rd b/man/set_vecchia.Rd index 6e519a6..8e26f78 100644 --- a/man/set_vecchia.Rd +++ b/man/set_vecchia.Rd @@ -9,15 +9,15 @@ set_vecchia(object, vecchia = TRUE, M = 25, ord = NULL) \arguments{ \item{object}{an instance of the S3 class \code{gp}, \code{dgp}, or \code{lgp}.} -\item{vecchia}{a boolean or a list of booleans to indicate the addition or removal of the Vecchia approximation: +\item{vecchia}{a bool or a list of bools to indicate the addition or removal of the Vecchia approximation: \itemize{ -\item if \code{object} is an instance of the \code{gp} or \code{dgp} class, \code{vecchia} is a boolean that indicates +\item if \code{object} is an instance of the \code{gp} or \code{dgp} class, \code{vecchia} is a bool that indicates either addition (\code{vecchia = TRUE}) or removal (\code{vecchia = FALSE}) of the Vecchia approximation from \code{object}. -\item if \code{object} is an instance of the \code{lgp} class, \code{x} can be a boolean or a list of booleans: +\item if \code{object} is an instance of the \code{lgp} class, \code{x} can be a bool or a list of bools: \itemize{ -\item if \code{vecchia} is a boolean, it indicates either addition (\code{vecchia = TRUE}) or removal (\code{vecchia = FALSE}) of +\item if \code{vecchia} is a bool, it indicates either addition (\code{vecchia = TRUE}) or removal (\code{vecchia = FALSE}) of the Vecchia approximation from all individual (D)GP emulators contained in \code{object}. -\item if \code{vecchia} is a list of booleans, it should have same shape as \code{struc} that was supplied to \code{\link[=lgp]{lgp()}}. Each boolean +\item if \code{vecchia} is a list of bools, it should have same shape as \code{struc} that was supplied to \code{\link[=lgp]{lgp()}}. Each bool in the list indicates if the corresponding (D)GP emulator contained in \code{object} shall have the Vecchia approximation added or removed. } @@ -46,7 +46,7 @@ This function adds or removes the Vecchia approximation from a GP, DGP or linked constructed by \code{\link[=gp]{gp()}}, \code{\link[=dgp]{dgp()}} or \code{\link[=lgp]{lgp()}}. } \details{ -See further examples and tutorials at \url{https://mingdeyu.github.io/dgpsi-R/}. +See further examples and tutorials at \url{https://mingdeyu.github.io/dgpsi-R/dev/}. } \note{ This function is useful for quickly switching between Vecchia and non-Vecchia approximations for an existing emulator diff --git a/man/summary.Rd b/man/summary.Rd index b112e3c..daa365e 100644 --- a/man/summary.Rd +++ b/man/summary.Rd @@ -46,7 +46,7 @@ This function provides a summary of key information for a GP, DGP, or linked (D) by generating either a table or an interactive plot of the emulator’s structure. } \details{ -See further examples and tutorials at \url{https://mingdeyu.github.io/dgpsi-R/}. +See further examples and tutorials at \url{https://mingdeyu.github.io/dgpsi-R/dev/}. } \examples{ \dontrun{ diff --git a/man/trace_plot.Rd b/man/trace_plot.Rd index f7bd678..d3b6f0b 100644 --- a/man/trace_plot.Rd +++ b/man/trace_plot.Rd @@ -2,7 +2,7 @@ % Please edit documentation in R/utils.R \name{trace_plot} \alias{trace_plot} -\title{Plot of DGP model parameter traces} +\title{Trace plot for DGP hyperparameters} \usage{ trace_plot(object, layer = NULL, node = 1) } @@ -18,11 +18,11 @@ corresponding layer.} A \code{ggplot} object. } \description{ -This function plots the traces of model parameters of a chosen GP node +This function draws trace plots for the hyperparameters of a chosen GP node in a DGP emulator. } \details{ -See further examples and tutorials at \url{https://mingdeyu.github.io/dgpsi-R/}. +See further examples and tutorials at \url{https://mingdeyu.github.io/dgpsi-R/dev/}. } \examples{ \dontrun{ diff --git a/man/unpack.Rd b/man/unpack.Rd index 678f1e8..400a058 100644 --- a/man/unpack.Rd +++ b/man/unpack.Rd @@ -14,11 +14,11 @@ A named list that contains individual emulators (named \verb{emulator1,...,emula where \code{S} is the number of emulators in \code{object}. } \description{ -This function unpacks a bundle of (D)GP emulators safely so any further manipulations of unpacked individual emulators -will not impact the ones in the bundle. +This function unpacks a bundle of (D)GP emulators safely so that any further manipulations of unpacked individual emulators +will not impact those in the bundle. } \details{ -See further examples and tutorials at \url{https://mingdeyu.github.io/dgpsi-R/}. +See further examples and tutorials at \url{https://mingdeyu.github.io/dgpsi-R/dev/}. } \examples{ \dontrun{ diff --git a/man/update.Rd b/man/update.Rd index c9908be..38b4451 100644 --- a/man/update.Rd +++ b/man/update.Rd @@ -31,7 +31,7 @@ update(object, X, Y, refit, reset, verb, ...) \item the S3 class \code{dgp}. }} -\item{X}{the new input data which is a matrix where each row is an input training data point and each column is an input dimension.} +\item{X}{the new input data which is a matrix where each row is an input training data point and each column represents an input dimension.} \item{Y}{the new output data: \itemize{ @@ -42,10 +42,10 @@ output dimensions. When \code{likelihood} (see below) is not \code{NULL}, \code{ \item{refit}{a bool indicating whether to re-fit the emulator \code{object} after the training input and output are updated. Defaults to \code{TRUE}.} -\item{reset}{a bool indicating whether to reset hyperparameters of the emulator \code{object} to their initial values when the emulator was -constructed, after the training input and output are updated. Defaults to \code{FALSE}.} +\item{reset}{a bool indicating whether to reset hyperparameters of the emulator \code{object} to the initial values first obtained when the emulator was +constructed. Use if it is suspected that a local mode for the hyperparameters has been reached through successive updates. Defaults to \code{FALSE}.} -\item{verb}{a bool indicating if the trace information will be printed during the function execution. +\item{verb}{a bool indicating if trace information will be printed during the function execution. Defaults to \code{TRUE}.} \item{...}{N/A.} @@ -59,7 +59,7 @@ at each M-step during the re-fitting. If set to \code{NULL}, the number of proce and \verb{max physical cores available \%/\% 2} if \code{vecchia = TRUE}. Only use multiple processes when there is a large number of GP components in different layers and optimization of GP components is computationally expensive. Defaults to \code{1}.} -\item{ess_burn}{number of burnin steps for the ESS-within-Gibbs at each I-step in training the emulator \code{object} if it is an +\item{ess_burn}{number of burnin steps for the ESS-within-Gibbs sampler at each I-step of the training of the emulator \code{object} if it is an instance of the \code{dgp} class. Defaults to \code{10}.} \item{B}{the number of imputations for predictions from the updated emulator \code{object} if it is an instance of the \code{dgp} class. @@ -73,7 +73,7 @@ An updated \code{object}. This function updates the training input and output of a GP or DGP emulator with an option to refit the emulator. } \details{ -See further examples and tutorials at \url{https://mingdeyu.github.io/dgpsi-R/}. +See further examples and tutorials at \url{https://mingdeyu.github.io/dgpsi-R/dev/}. } \note{ \itemize{ diff --git a/man/validate.Rd b/man/validate.Rd index a712b77..4d08e13 100644 --- a/man/validate.Rd +++ b/man/validate.Rd @@ -67,9 +67,9 @@ validate( \item the S3 class \code{lgp}. }} -\item{x_test}{the OOS testing input data: +\item{x_test}{OOS testing input data: \itemize{ -\item if \code{object} is an instance of the \code{gp} or \code{dgp} class, \code{x_test} is a matrix where each row is an input testing data point and each column is an input dimension. +\item if \code{object} is an instance of the \code{gp} or \code{dgp} class, \code{x_test} is a matrix where each row is a new input location to be used for validating the emulator and each column is an input dimension. \item \ifelse{html}{\href{https://lifecycle.r-lib.org/articles/stages.html#deprecated}{\figure{lifecycle-deprecated.svg}{options: alt='[Deprecated]'}}}{\strong{[Deprecated]}} if \code{object} is an instance of the \code{lgp} class, \code{x_test} can be a matrix or a list: \itemize{ \item if \code{x_test} is a matrix, it is the global testing input data that feed into the emulators in the first layer of a system. @@ -92,42 +92,41 @@ The column indices in \code{x_test} must align with the indices specified in the corresponding to rows where the \code{From_Emulator} column is \code{"Global"}. } -\code{x_test} must be provided for the validation if \code{object} is an instance of the \code{lgp}. Defaults to \code{NULL}.} +\code{x_test} must be provided if \code{object} is an instance of the \code{lgp}. \code{x_test} must also be provided if \code{y_test} is provided. Defaults to \code{NULL}, in which case LOO validation is performed.} -\item{y_test}{the OOS testing output data that correspond to \code{x_test}: +\item{y_test}{the OOS output data corresponding to \code{x_test}: \itemize{ -\item if \code{object} is an instance of the \code{gp} class, \code{y_test} is a matrix with only one column and each row being an testing output data point. -\item if \code{object} is an instance of the \code{dgp} class, \code{y_test} is a matrix with its rows being testing output data points and columns being -output dimensions. +\item if \code{object} is an instance of the \code{gp} class, \code{y_test} is a matrix with only one column where each row represents the output corresponding to the matching row of \code{x_test}. +\item if \code{object} is an instance of the \code{dgp} class, \code{y_test} is a matrix where each row represents the output corresponding to the matching row of \code{x_test} and with columns representing output dimensions. \item if \code{object} is an instance of the \code{lgp} class, \code{y_test} can be a single matrix or a list of matrices: \itemize{ -\item if \code{y_test} is a single matrix, then there is only one emulator in the final layer of the linked emulator system and \code{y_test} +\item if \code{y_test} is a single matrix, then there should be only one emulator in the final layer of the linked emulator system and \code{y_test} represents the emulator's output with rows being testing positions and columns being output dimensions. -\item if \code{y_test} is a list, then \code{y_test} should have \emph{M} number (the same number of emulators in the final layer of the system) of matrices. +\item if \code{y_test} is a list, then \code{y_test} should have \emph{L} matrices, where \emph{L} is the number of emulators in the final layer of the system. Each matrix has its rows corresponding to testing positions and columns corresponding to output dimensions of the associated emulator in the final layer. } } -\code{y_test} must be provided for the validation if \code{object} is an instance of the \code{lgp}. Defaults to \code{NULL}.} +\code{y_test} must be provided if \code{object} is an instance of the \code{lgp}. \code{y_test} must also be provided if \code{x_test} is provided. Defaults to \code{NULL}, in which case LOO validation is performed.} -\item{method}{\ifelse{html}{\href{https://lifecycle.r-lib.org/articles/stages.html#updated}{\figure{lifecycle-updated.svg}{options: alt='[Updated]'}}}{\strong{[Updated]}} the prediction approach to use in validations: either the mean-variance approach (\code{"mean_var"}) or the sampling approach (\code{"sampling"}). +\item{method}{\ifelse{html}{\href{https://lifecycle.r-lib.org/articles/stages.html#updated}{\figure{lifecycle-updated.svg}{options: alt='[Updated]'}}}{\strong{[Updated]}} the prediction approach to use for validation: either the mean-variance approach (\code{"mean_var"}) or the sampling approach (\code{"sampling"}). For details see \code{\link[=predict]{predict()}}. For DGP emulators with a categorical likelihood (\code{likelihood = "Categorical"} in \code{\link[=dgp]{dgp()}}), only the sampling approach is supported. By default, the method is set to \code{"sampling"} for DGP emulators with Poisson, Negative Binomial, and Categorical likelihoods and \code{"mean_var"} otherwise.} \item{sample_size}{the number of samples to draw for each given imputation if \code{method = "sampling"}. Defaults to \code{50}.} -\item{verb}{a bool indicating if the trace information on validations will be printed during the function execution. +\item{verb}{a bool indicating if trace information for validation should be printed during function execution. Defaults to \code{TRUE}.} -\item{M}{\ifelse{html}{\href{https://lifecycle.r-lib.org/articles/stages.html#new}{\figure{lifecycle-new.svg}{options: alt='[New]'}}}{\strong{[New]}} the size of the conditioning set for the Vecchia approximation in the emulator validation. This argument is only used if the emulator \code{object} +\item{M}{\ifelse{html}{\href{https://lifecycle.r-lib.org/articles/stages.html#new}{\figure{lifecycle-new.svg}{options: alt='[New]'}}}{\strong{[New]}} the size of the conditioning set for the Vecchia approximation in emulator validation. This argument is only used if the emulator \code{object} was constructed under the Vecchia approximation. Defaults to \code{50}.} -\item{force}{a bool indicating whether to force the LOO or OOS re-evaluation when \code{loo} or \code{oos} slot already exists in \code{object}. When \code{force = FALSE}, -\code{\link[=validate]{validate()}} will try to determine automatically if the LOO or OOS re-evaluation is needed. Set \code{force} to \code{TRUE} when LOO or OOS re-evaluation +\item{force}{a bool indicating whether to force LOO or OOS re-evaluation when the \code{loo} or \code{oos} slot already exists in \code{object}. When \code{force = FALSE}, +\code{\link[=validate]{validate()}} will only re-evaluate the emulators if the \code{x_test} and \code{y_test} are not identical to the values in the \code{oos} slot. If the existing \code{loo} or \code{oos} validation used a different \code{M} in a Vecchia approximation or a different \code{method} to the one prescribed in this call, the emulator will be re-evaluated. Set \code{force} to \code{TRUE} when LOO or OOS re-evaluation is required. Defaults to \code{FALSE}.} -\item{cores}{the number of processes to be used for validations. If set to \code{NULL}, the number of processes is set to \verb{max physical cores available \%/\% 2}. +\item{cores}{the number of processes to be used for validation. If set to \code{NULL}, the number of processes is set to \verb{max physical cores available \%/\% 2}. Defaults to \code{1}.} \item{...}{N/A.} @@ -144,10 +143,10 @@ GP emulator at validation positions. GP emulator at validation positions. If \code{method = "mean_var"}, the upper and lower bounds of a credible interval are two standard deviations above and below the predictive mean. If \code{method = "sampling"}, the upper and lower bounds of a credible interval are 2.5th and 97.5th percentiles. \item a numeric value called \code{rmse} that contains the root mean/median squared error of the GP emulator. -\item a numeric value called \code{nrmse} that contains the (min-max) normalized root mean/median squared error of the GP emulator. The min-max normalization -is based on the maximum and minimum values of the validation outputs contained in \code{y_train} (or \code{y_test}). -\item \ifelse{html}{\href{https://lifecycle.r-lib.org/articles/stages.html#new}{\figure{lifecycle-new.svg}{options: alt='[New]'}}}{\strong{[New]}} an integer called \code{M} that contains size of the conditioning set used for the Vecchia approximation, if used, in the emulator validation. -\item an integer called \code{sample_size} that contains the number of samples used for the validation if \code{method = "sampling"}. +\item a numeric value called \code{nrmse} that contains the (max-min) normalized root mean/median squared error of the GP emulator. The max-min normalization +uses the maximum and minimum values of the validation outputs contained in \code{y_train} (or \code{y_test}). +\item \ifelse{html}{\href{https://lifecycle.r-lib.org/articles/stages.html#new}{\figure{lifecycle-new.svg}{options: alt='[New]'}}}{\strong{[New]}} an integer called \code{M} that contains the size of the conditioning set used for the Vecchia approximation, if used, for emulator validation. +\item an integer called \code{sample_size} that contains the number of samples used for validation if \code{method = "sampling"}. } The rows of matrices (\code{mean}, \code{median}, \code{std}, \code{lower}, and \code{upper}) correspond to the validation positions. @@ -162,10 +161,10 @@ DGP emulator at validation positions. If \code{method = "mean_var"}, the upper a and below the predictive mean. If \code{method = "sampling"}, the upper and lower bounds of a credible interval are 2.5th and 97.5th percentiles. \item a vector called \code{rmse} that contains the root mean/median squared errors of the DGP emulator across different output dimensions. -\item a vector called \code{nrmse} that contains the (min-max) normalized root mean/median squared errors of the DGP emulator across different output -dimensions. The min-max normalization is based on the maximum and minimum values of the validation outputs contained in \code{y_train} (or \code{y_test}). -\item \ifelse{html}{\href{https://lifecycle.r-lib.org/articles/stages.html#new}{\figure{lifecycle-new.svg}{options: alt='[New]'}}}{\strong{[New]}} an integer called \code{M} that contains size of the conditioning set used for the Vecchia approximation, if used, in the emulator validation. -\item an integer called \code{sample_size} that contains the number of samples used for the validation if \code{method = "sampling"}. +\item a vector called \code{nrmse} that contains the (max-min) normalized root mean/median squared errors of the DGP emulator across different output +dimensions. The max-min normalization uses the maximum and minimum values of the validation outputs contained in \code{y_train} (or \code{y_test}). +\item \ifelse{html}{\href{https://lifecycle.r-lib.org/articles/stages.html#new}{\figure{lifecycle-new.svg}{options: alt='[New]'}}}{\strong{[New]}} an integer called \code{M} that contains size of the conditioning set used for the Vecchia approximation, if used, for emulator validation. +\item an integer called \code{sample_size} that contains the number of samples used for validation if \code{method = "sampling"}. } The rows and columns of matrices (\code{mean}, \code{median}, \code{std}, \code{lower}, and \code{upper}) correspond to the validation positions and DGP emulator output @@ -181,8 +180,8 @@ is a matrix that has its rows corresponding to validation positions and columns \item a scalar called \code{log_loss} that represents the average log loss of the predicted labels in the DGP emulator across all validation positions. Log loss measures the accuracy of probabilistic predictions, with lower values indicating better classification performance. \code{log_loss} ranges from \code{0} to positive infinity, where a value closer to \code{0} suggests more confident and accurate predictions. -\item an integer called \code{M} that contains size of the conditioning set used for the Vecchia approximation, if used, in the emulator validation. -\item an integer called \code{sample_size} that contains the number of samples used for the validation. +\item an integer called \code{M} that contains size of the conditioning set used for the Vecchia approximation, if used, in emulator validation. +\item an integer called \code{sample_size} that contains the number of samples used for validation. } \item If \code{object} is an instance of the \code{lgp} class, an updated \code{object} is returned with an additional slot called \code{oos} (for OOS validation) that contains: \itemize{ @@ -193,10 +192,10 @@ the linked (D)GP emulator at validation positions. the linked (D)GP emulator at validation positions. If \code{method = "mean_var"}, the upper and lower bounds of a credible interval are two standard deviations above and below the predictive mean. If \code{method = "sampling"}, the upper and lower bounds of a credible interval are 2.5th and 97.5th percentiles. \item a list called \code{rmse} that contains the root mean/median squared errors of the linked (D)GP emulator. -\item a list called \code{nrmse} that contains the (min-max) normalized root mean/median squared errors of the linked (D)GP emulator. The min-max normalization -is based on the maximum and minimum values of the validation outputs contained in \code{y_test}. -\item \ifelse{html}{\href{https://lifecycle.r-lib.org/articles/stages.html#new}{\figure{lifecycle-new.svg}{options: alt='[New]'}}}{\strong{[New]}} an integer called \code{M} that contains size of the conditioning set used for the Vecchia approximation, if used, in the emulator validation. -\item an integer called \code{sample_size} that contains the number of samples used for the validation if \code{method = "sampling"}. +\item a list called \code{nrmse} that contains the (max-min) normalized root mean/median squared errors of the linked (D)GP emulator. The max-min normalization +uses the maximum and minimum values of the validation outputs contained in \code{y_test}. +\item \ifelse{html}{\href{https://lifecycle.r-lib.org/articles/stages.html#new}{\figure{lifecycle-new.svg}{options: alt='[New]'}}}{\strong{[New]}} an integer called \code{M} that contains size of the conditioning set used for the Vecchia approximation, if used, in emulator validation. +\item an integer called \code{sample_size} that contains the number of samples used for validation if \code{method = "sampling"}. } Each element in \code{mean}, \code{median}, \code{std}, \code{lower}, \code{upper}, \code{rmse}, and \code{nrmse} corresponds to a (D)GP emulator in the final layer of the linked (D)GP @@ -204,16 +203,15 @@ emulator. } } \description{ -This function validate a constructed GP, DGP, or linked (D)GP emulator via the Leave-One-Out (LOO) -cross validation or Out-Of-Sample (OOS) validation. +This function calculates Leave-One-Out (LOO) cross validation or Out-Of-Sample (OOS) validation statistics for a constructed GP, DGP, or linked (D)GP emulator. } \details{ -See further examples and tutorials at \url{https://mingdeyu.github.io/dgpsi-R/}. +See further examples and tutorials at \url{https://mingdeyu.github.io/dgpsi-R/dev/}. } \note{ \itemize{ -\item When both \code{x_test} and \code{y_test} are \code{NULL}, the LOO cross validation will be implemented. Otherwise, OOS validation will -be implemented. The LOO validation is only applicable to a GP or DGP emulator (i.e., \code{object} is an instance of the \code{gp} or \code{dgp} +\item When both \code{x_test} and \code{y_test} are \code{NULL}, LOO cross validation will be implemented. Otherwise, OOS validation will +be implemented. LOO validation is only applicable to a GP or DGP emulator (i.e., \code{object} is an instance of the \code{gp} or \code{dgp} class). If a linked (D)GP emulator (i.e., \code{object} is an instance of the \code{lgp} class) is provided, \code{x_test} and \code{y_test} must also be provided for OOS validation. } diff --git a/man/vigf.Rd b/man/vigf.Rd index 591759e..991274f 100644 --- a/man/vigf.Rd +++ b/man/vigf.Rd @@ -12,7 +12,7 @@ vigf(object, ...) \method{vigf}{gp}( object, x_cand = NULL, - n_start = 20, + n_start = 10, batch_size = 1, M = 50, workers = 1, @@ -24,7 +24,7 @@ vigf(object, ...) \method{vigf}{dgp}( object, x_cand = NULL, - n_start = 20, + n_start = 10, batch_size = 1, M = 50, workers = 1, @@ -37,7 +37,7 @@ vigf(object, ...) \method{vigf}{bundle}( object, x_cand = NULL, - n_start = 20, + n_start = 10, batch_size = 1, M = 50, workers = 1, @@ -58,13 +58,13 @@ vigf(object, ...) \item{...}{any arguments (with names different from those of arguments used in \code{\link[=vigf]{vigf()}}) that are used by \code{aggregate} can be passed here.} -\item{x_cand}{a matrix (with each row containing a design point and column representing an input dimension) that gives a candidate set -from which the next design point(s) are determined. If \code{object} is an instance of the \code{bundle} class and \code{aggregate} is not supplied, \code{x_cand} could also -be a list with length equal to the number of emulators contained in \code{object}. In this case, each slot in \code{x_cand} should be a candidate set matrix -for each emulator included in the bundle. Defaults to \code{NULL}.} +\item{x_cand}{a matrix (with each row being a design point and column being an input dimension) that gives a candidate set +from which the next design point(s) are determined. If \code{object} is an instance of the \code{bundle} class and \code{aggregate} is not supplied, \code{x_cand} can also be a list. +The list must have a length equal to the number of emulators in \code{object}, with each element being a matrix representing the candidate set for a corresponding +emulator in the bundle. Defaults to \code{NULL}.} \item{n_start}{an integer that gives the number of initial design points to be used to determine next design point(s). This argument -is only used when \code{x_cand} is \code{NULL}. Defaults to \code{20}.} +is only used when \code{x_cand} is \code{NULL}. Defaults to \code{10}.} \item{batch_size}{an integer that gives the number of design points to be chosen. Defaults to \code{1}.} @@ -95,32 +95,38 @@ of the matrix equals to: \item the emulator output dimension if \code{object} is an instance of the \code{dgp} class; or \item the number of emulators contained in \code{object} if \code{object} is an instance of the \code{bundle} class. } -\item the output should be a vector that gives aggregations of scores at different design points. +\item the output should be a vector that gives aggregate scores at different design points. } -Set to \code{NULL} to disable the aggregation. Defaults to \code{NULL}.} +Set to \code{NULL} to disable aggregation. Defaults to \code{NULL}.} } \value{ \enumerate{ -\item If \code{x_cand} is not \code{NULL} and: +\item If \code{x_cand} is not \code{NULL}: \itemize{ -\item \code{object} is an instance of the \code{gp} class, a vector is returned with length equal to \code{batch_size}, giving the positions (i.e., row numbers) -of next design points from \code{x_cand}. -\item \code{object} is an instance of the \code{dgp} class, a vector is returned with length equal to \code{batch_size * D}, giving positions (i.e., row numbers) -of next design points from \code{x_cand} to be added to the DGP emulator. \code{D} equals to the number of output dimensions of the DGP -emulator if there is no likelihood layer in the hierarchy. If \code{object} is a DGP emulator with either \code{Hetero} or \code{NegBin} likelihood layer, -\code{D = 2}. If \code{object} is a DGP emulator with a \code{Categorical} likelihood layer, \code{D} equals to one (for binary output) or \code{K} (for multi-class output with \code{K} classes). -\item \code{object} is an instance of the \code{bundle} class, a matrix is returned with row number equal to \code{batch_size} and column number equal to the number of -emulators in the bundle, giving positions (i.e., row numbers) of next design points from \code{x_cand} to be added to individual emulators. -} -\item If \code{x_cand = NULL} and: +\item When \code{object} is an instance of the \code{gp} class, a vector of length \code{batch_size} is returned, containing the positions +(row numbers) of the next design points from \code{x_cand}. +\item When \code{object} is an instance of the \code{dgp} class, a vector of length \code{batch_size * D} is returned, containing the positions +(row numbers) of the next design points from \code{x_cand} to be added to the DGP emulator. \itemize{ -\item \code{object} is an instance of the \code{gp} class, a matrix is returned with row number equal to \code{batch_size}, giving the next design points to be evaluated. -\item \code{object} is an instance of the \code{dgp} class, a matrix is returned with row number equal to \code{batch_size * D} where \code{D} is the number of output dimensions of the DGP -emulator if no likelihood layer is included. If \code{object} is a DGP emulator with either \code{Hetero} or \code{NegBin} likelihood layer, \code{D = 2}. If \code{object} is a DGP emulator -with a \code{Categorical} likelihood layer, \code{D} equals to one (for binary output) or \code{K} (for multi-class output with \code{K} classes). -\item \code{object} is an instance of the \code{bundle} class, a list is returned with the length equal to the number of -emulators in the bundle. Each element in the list is a matrix with row number equal to \code{batch_size}, giving next design points to be added to individual emulators. +\item \code{D} is the number of output dimensions of the DGP emulator if no likelihood layer is included. +\item For a DGP emulator with a \code{Hetero} or \code{NegBin} likelihood layer, \code{D = 2}. +\item For a DGP emulator with a \code{Categorical} likelihood layer, \code{D = 1} for binary output or \code{D = K} for multi-class output with \code{K} classes. +} +\item When \code{object} is an instance of the \code{bundle} class, a matrix is returned with \code{batch_size} rows and a column for each emulator in +the bundle, containing the positions (row numbers) of the next design points from \code{x_cand} for individual emulators. +} +\item If \code{x_cand} is \code{NULL}: +\itemize{ +\item When \code{object} is an instance of the \code{gp} class, a matrix with \code{batch_size} rows is returned, giving the next design points to be evaluated. +\item When \code{object} is an instance of the \code{dgp} class, a matrix with \code{batch_size * D} rows is returned, where: +\itemize{ +\item \code{D} is the number of output dimensions of the DGP emulator if no likelihood layer is included. +\item For a DGP emulator with a \code{Hetero} or \code{NegBin} likelihood layer, \code{D = 2}. +\item For a DGP emulator with a \code{Categorical} likelihood layer, \code{D = 1} for binary output or \code{D = K} for multi-class output with \code{K} classes. +} +\item When \code{object} is an instance of the \code{bundle} class, a list is returned with a length equal to the number of emulators in the bundle. Each +element of the list is a matrix with \code{batch_size} rows, where each row represents a design point to be added to the corresponding emulator. } } } @@ -129,11 +135,12 @@ This function searches from a candidate set to locate the next design point(s) t or a bundle of (D)GP emulators using the Variance of Improvement for Global Fit (VIGF). For VIGF on GP emulators, see the reference below. } \details{ -See further examples and tutorials at \url{https://mingdeyu.github.io/dgpsi-R/}. +See further examples and tutorials at \url{https://mingdeyu.github.io/dgpsi-R/dev/}. } \note{ -The column order of the first argument of \code{aggregate} must be consistent with the order of emulator output dimensions (if \code{object} is an instance of the -\code{dgp} class), or the order of emulators placed in \code{object} if \code{object} is an instance of the \code{bundle} class. +The first column of the matrix supplied to the first argument of \code{aggregate} must correspond to the first output dimension of the DGP emulator +if \code{object} is an instance of the \code{dgp} class, and so on for subsequent columns and dimensions. If \code{object} is an instance of the \code{bundle} class, +the first column must correspond to the first emulator in the bundle, and so on for subsequent columns and emulators. } \examples{ \dontrun{ diff --git a/man/window.Rd b/man/window.Rd index 71f5942..ac189a0 100644 --- a/man/window.Rd +++ b/man/window.Rd @@ -2,36 +2,36 @@ % Please edit documentation in R/utils.R \name{window} \alias{window} -\title{Trim the sequences of model parameters of a DGP emulator} +\title{Trim the sequence of hyperparameter estimates within a DGP emulator} \usage{ window(object, start, end = NULL, thin = 1) } \arguments{ \item{object}{an instance of the S3 class \code{dgp}.} -\item{start}{the first iteration before which all iterations are trimmed from the sequences.} +\item{start}{the first iteration before which all iterations are trimmed from the sequence.} -\item{end}{the last iteration after which all iterations are trimmed from the sequences. +\item{end}{the last iteration after which all iterations are trimmed from the sequence. Set to \code{NULL} to keep all iterations after (including) \code{start}. Defaults to \code{NULL}.} -\item{thin}{the interval between the \code{start} and \code{end} iterations to thin out the sequences. +\item{thin}{the interval between the \code{start} and \code{end} iterations to thin out the sequence. Defaults to 1.} } \value{ -An updated \code{object} with trimmed sequences of model parameters. +An updated \code{object} with a trimmed sequence of hyperparameters. } \description{ -This function trim the sequences of model parameters of a DGP emulator -that are generated during the training. +This function trims the sequence of hyperparameter estimates within a DGP emulator +generated during training. } \details{ -See further examples and tutorials at \url{https://mingdeyu.github.io/dgpsi-R/}. +See further examples and tutorials at \url{https://mingdeyu.github.io/dgpsi-R/dev/}. } \note{ \itemize{ \item This function is useful when a DGP emulator has been trained and one wants to trim -the sequences of model parameters and use the trimmed sequences to generate the point estimates -of DGP model parameters for predictions. +the sequence of hyperparameters estimated and to use the trimmed sequence to generate point estimates +of the DGP model parameters for prediction. \item The following slots: \itemize{ \item \code{loo} and \code{oos} created by \code{\link[=validate]{validate()}}; and diff --git a/man/write.Rd b/man/write.Rd index 8309892..016c974 100644 --- a/man/write.Rd +++ b/man/write.Rd @@ -12,23 +12,22 @@ write(object, pkl_file, light = TRUE) \item{pkl_file}{the path to and the name of the \code{.pkl} file to which the emulator \code{object} is saved.} -\item{light}{a bool indicating if a light version of the constructed emulator (that requires a small storage) will be saved. -Defaults to \code{TRUE}.} +\item{light}{a bool indicating if a light version of the constructed emulator +(that requires less disk space to store) will be saved. Defaults to \code{TRUE}.} } \value{ -No return value. \code{object} will be save to a local \code{.pkl} file specified by \code{pkl_file}. +No return value. \code{object} will be saved to a local \code{.pkl} file specified by \code{pkl_file}. } \description{ This function saves the constructed emulator to a \code{.pkl} file. } \details{ -See further examples and tutorials at \url{https://mingdeyu.github.io/dgpsi-R/}. +See further examples and tutorials at \url{https://mingdeyu.github.io/dgpsi-R/dev/}. } \note{ -Since the constructed emulators are 'python' objects, \code{\link[=save]{save()}} from R will not work as it is only for R objects. If \code{object} -was processed by \code{\link[=set_vecchia]{set_vecchia()}} to add or remove the Vecchia approximation, \code{light} needs to be set to \code{FALSE} to ensure -reproducibility after the saved emulator is loaded by \code{\link[=read]{read()}}, since when \code{light = TRUE}, the imputations generated during -emulator loading will be different. +Since emulators built from the package are 'python' objects, \code{\link[=save]{save()}} from R will not work as it would for R objects. If \code{object} +was processed by \code{\link[=set_vecchia]{set_vecchia()}} to add or remove the Vecchia approximation, \code{light} should be set to \code{FALSE} to ensure +reproducibility after the saved emulator is reloaded by \code{\link[=read]{read()}}. } \examples{ \dontrun{ diff --git a/vignettes/classification.Rmd b/vignettes/classification.Rmd index 62a260c..847ad00 100644 --- a/vignettes/classification.Rmd +++ b/vignettes/classification.Rmd @@ -6,7 +6,7 @@ bibliography: references.bib description: > DGP classification of the iris data set. vignette: > - %\VignetteIndexEntry{DGP Classification using Stochastic Imputation} + %\VignetteIndexEntry{DGP Classification using dgpsi} %\VignetteEngine{knitr::rmarkdown} %\VignetteEncoding{UTF-8} --- @@ -35,7 +35,7 @@ We now load the iris data set, data(iris) ``` -and rescale its four input variables to $[0,1]$. +and re-scale its four input variables to $[0,1]$. ```{r} iris <- iris %>% @@ -79,13 +79,15 @@ m_dgp <- dgp(X_train, Y_train, depth = 3, name = c('matern2.5', 'sexp'), likelih ## Imputing ... done ``` -Visualising the DGP object helps to clarify the layered structure for non-Gaussian (in this case categorical) likelihoods. +Visualizing the DGP object helps to clarify the layered structure for non-Gaussian (in this case categorical) likelihoods. + ```{r} summary(m_dgp) ``` -![](https://raw.githubusercontent.com/mingdeyu/dgpsi-R/master/vignettes/images/categorical_summary.png){width=100%} -After the global inputs, the 3-layered DGP is comprised of 2 hidden layers containing GPs, and a "likelihood layer" that transforms each of the preceding GP nodes to one of the parameters required by the likelihood function. In this example, we have 3 possible categories and we use a softmax link function, so there are 3 parameters to set and the final layer of GPs has 3 nodes, one for each of them. + + +After the global inputs, the 3-layered DGP is comprised of 2 hidden layers containing GPs, and a "likelihood layer" that transforms each of the preceding GP nodes to one of the parameters required by the likelihood function. In this example, we have 3 possible categories and we use a softmax link function, so there are 3 parameters to set and the second layer has 3 GP nodes, one for each of them. ## Validation diff --git a/vignettes/dgpsi.Rmd b/vignettes/dgpsi.Rmd index f78f3df..f55b6b5 100644 --- a/vignettes/dgpsi.Rmd +++ b/vignettes/dgpsi.Rmd @@ -14,9 +14,23 @@ knitr::opts_chunk$set( echo = TRUE, eval = FALSE ) + +get_article_url <- function(article) { + pkg_version <- as.character(utils::packageVersion("dgpsi")) + + is_dev <- grepl("\\.9000$", pkg_version) + + base_url <- if (is_dev) { + "https://mingdeyu.github.io/dgpsi-R/dev" + } else { + "https://mingdeyu.github.io/dgpsi-R" + } + + paste0(base_url, article) +} ``` -`dgpsi` provides a flexible toolbox for Gaussian process (GP), deep Gaussian process (DGP) and linked (D)GP emulation. In this guide, we show how to use the package to emulate a step function with a three-layered DGP structure. There are other examples showing the functionality of the package in [`Articles`](https://mingdeyu.github.io/dgpsi-R/dev/articles/index.html) on the package website, including DGP customization, scalable DGPs, DGPs for classification and other non-Gaussian problems and sequential design/reinforcement learning for DGPs. A comprehensive reference of available functions is documented in [`Reference`](https://mingdeyu.github.io/dgpsi-R/dev/reference/index.html) section of the package website. +The `dgpsi` package offers a flexible toolbox for Gaussian process (GP), deep Gaussian process (DGP), and linked (D)GP emulation. In this guide, we show how to use the package to emulate a step function using a three-layered DGP structure. Additional examples showcasing the package's functionality are available in the [Articles](`r get_article_url("/articles/index.html")`) section of the package website. Topics include [linked DGPs](`r get_article_url("/articles/linked_DGP.html")`), [scalable DGPs](`r get_article_url("/articles/large_scale_emulation.html")`), [DGPs for classification](`r get_article_url("/articles/classification.html")`), [non-Gaussian problems](`r get_article_url("/articles/motorcycle.html")`), and [sequential design and active learning for DGPs](`r get_article_url("/articles/seq_design.html")`). A detailed reference for all available functions is provided in the [Reference](`r get_article_url("/reference/index.html")`) section of the package website. ## Load the package @@ -114,7 +128,8 @@ plot(m,oos_x,oos_y) ``` ![](https://raw.githubusercontent.com/mingdeyu/dgpsi-R/master/vignettes/images/step_fct_oos.png){width=100%} -Note that the `style` argument to the ploting function can be used to draw different types of plot (see the documentation). + +Note that the `style` argument to the `plot()` function can be used to draw different types of plot (see `?plot`). ## Prediction diff --git a/vignettes/images/categorical_summary.png b/vignettes/images/categorical_summary.png deleted file mode 100644 index 581c2443099aed0c1b946d825b8e939459deba97..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 125876 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�rfmn2dg;(=|Iuuh6=SnA+k5c44x=UF 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 diff --git a/vignettes/images/motorcycle_data.png b/vignettes/images/motorcycle_data.png index 5b65ef01c358919dfc69717fa140f71facc1ff34..770c3a5e4c2090f04b312f417b16771cad3d0a2e 100644 GIT binary patch literal 30281 zcmdSAcT`i)6E{qeCISKi(rxr63Pk$XMwQ;A1rY%SAyO0RNK>jvlP)5?gd#PeB@_h# zK{_Oa-bv^+@LolK&tLC(-+!NT?$O-K?(FRB?969pXWr>*tJ0n4I8Q=CLZ`0wK%az! z0!BhYZcR-Nd~uk#{u21_oc&#`yCfv#F|^0l6u>*Fo4)EjlF}ZoB@z;{PTfa_4_8)J z*4Ebc_xHEAw+{{uHa0ehMB?e`DbRRlXJ>PBQ%g(h=;-M1@NjQ$k3b--udg2;AMft& zE-fuBFE5jllHR&?tG2dwc6Qd>+#C!BkB^Ucb#=|m%;@RqWn^T$fB*jE^%t&N(RdT3~Gz5UCVFXd(BlarHdY;5G@Ak+!zBWMpIu z3kxt9YLh9=3Y;0`Y+}sKZ z3S3=X!@|N!OG`sTL!nS86B82$2L}%i4;G8<``PF0?3|jK>gDCt+S=;l!mrlzJ*QBiN+ywTRyHZn4L`}S>eaFMc_latfb)QpITK%>z=fByXR>C@-WpCu$Da&vP91qG9m zlElQsva_@E^77Qw)I>!^BO@c9KYtz<7bhSfaOcjQva&KMDJf1)&bxQ-K7Rc8)vH(X z^78lY-77CI4+;vBmX?0-;6Z$RytTEpj*gCti;JJ1UuI?|9*^JJ+FD&*y&^RaB_VO+ zR)28U5H_}o*|WJcIM%$OcU8W2(c6WY`bOY;Z91APw)<2|4b=UJZDBRGFEnb5=kAiS z6ogZcT%>)14sY1=!k-ef4}YYMzD!L{#}Jj2-y-Da04eL(^`>oceSdiI+}#llrm%o3 z)MPN4H&+6Zu28=r0l&FIjpL&}d;RnM&+Gr&_qW!tA}UVl>FGjwQHOz7W-2Z&J(}NL zGC2g81oUflZX8V|yotJFk~UlRwrIXAxUk-$M{|ik%+|1N4jEr~M>H$dLVO{|aL}6F z$c-YCi9jatfAP~!jm+@t-l_&2I5;+%BEDgdmX?Zp*0n1G*kFOcGfa)mcqie?KfZtpt&$gxa4qncE*7g2Fh+&m;k-$9h%BdHtaG*m_4L#p!Id(2zpoaT zvizn6OlmD~uUgZ0kK01Fs;>!PiV@o8Enouh7E7Q%ov>s=WWY(0%`4AfbYrmLkgq$L z&u1vGgl2j3tI*9(?Y$x66CxQPmhXh{1`aHP)5_Y?APLes5CqK{PcNj#6}no+LPZH= z@SrJ{qYWjVv7x07TI5vV-tC&Br2bQrYE%$!e|<7Aj!tqqo;7r$ z{}g^}bS;_+XmAsGXhuhVAA>A4M(a69lfbzNyDkV`A%8;sc>0Au4CY{j`SW^de2-F= zpE(!Ck;26YCssijRh_)Mw`H2fl1~TQza^_U(ZG%Nf|88Ni*yORz zFqSDju|4&bA z8Zu(8)#eznl%Bbruot6r-8qpuhwyeyse_4tJ2uY}r% z^%y?Y-aP+ze32%L^r{YK4rI{R`=K?hNnUAEeKyyTQJ}mtiK~zxh0?VJOU}_W<#^Ka zU`Y?_-w!7UFz0cJ=*sxuZf{W;UTzu3k1lmaTRF+z;>tW52SO5CUVovBpDrjA`mRxK zRJGIRKX|+%%qeh(Kz~QKx+XZG?rdh-q0qM}UEV>#poSn_YTq&NPIjd++T5|;0RoMx zAR3VWk?xLs`}4YE#XB(j2!m6fQr{7*87wZ(ao2d*rpfh;&`DcCt{E@03MBu6Ty=xu=Tk$FGKg#7FY+ zg}e)8`S{vMiynD3@gq+ool8YgeeY&(=RBJvtVczxGnVr6 z>IY>gdu4v z?2E%So-!-hGt#HmHZ;W^=NY^SGZ8YZJW293a0`bgn=gvL?iFI`)P6@0m!twO>0vy# z&URAzdH8_lFN$ja+)L+?%P_|`UT7_lkj`8+D-L7NgnTz9iS|Z+`eXXZ;7zfWX3{^0 z_U}p7nugxCDjgvNXSC@!G2-ZUI}P)-69+7-2GLWx^k>R~e{KX;Eq-17>>5&EKdEAQ z(ZeoL;d;C~?9PaW>{CT7t9O@pIqgEo!!y>gB%jyV*0d*#?DrnQJL}#&67ufk#rVq~ zz+SiA&U!oI+micIiu_@XP7i`%^-x|wNul%1QKVeHixz2xX`$ghO8fC2SDDU+Z~Er1 zHMjm9m$Q8C6BO)Mke5{|CpWK2R>+#w(M_|O<&JM!v=GDYdo1StR<-S&kS|h z%yW1Yl$D(IXm)h@;*%{FedKOS;O}`k{*RaY5p(s0v)sspl7dbA`piRGpQJIWzkJ@W z#c>yBzFmMwXr35=8+~?s>1EZ<$i-6QEv)Cio6sdi3_nUgx%AhlQF3yggUuMccBUR~WHgtP2UXDmCbiGyjr( z4$GKc)mU=V?0GmfzL#}j&}3xh>7R*U7XwTjKCvTqUn2W%RXu>&o24cGjJfB>{YP3L z4P3$p<@{!+oQ_wqUunE3n#$#h_{osaGmTQAMe092a^w5TjhJ1kNR9ke!d3(8%y-%{d0!}?A)1b$|>Ljd77p=lf$YbWr!mRSln6|$Z6x3h};e*#Tmhj z{OQj0vE${;ObN9LTd4Y>3YK1MHMC}<`a=&FMHSVVLWfd;%?-RPYNyj3ZzB&DI-%)5 z&y*K*IMtvTu!n3Qc#7)ceK^nLK7dAO1ndQr5K6~OG2ZvjCMOsMGU58KZ`2s(xU%b4 z`rLU=Zztp1_`!1Dz{|fakkc%kMjVm))fchPtoPEt>=(#uo;K}-o;d()e$bxv-9|A_ z)Hry=cdu2hP&K6F?}E``n=XjUIt4?M%8rKopY!-7ke$uXmf+lv9+n!{hSAzuZ2*uK z02`3_77?wXyEXb1%vf@zDXq&S|Jqh7=DC#Gfy}3TTLqAtDu3AuGU3QC4LK?6i)3R( zr7m+~70&+fJjf))RMM-Y+S-zbb}AjuiOv11%vA6j4UgqD8P}_lkUt`==SaeX4*4zh zu%&->mI{80xviKKTa;x=11TCbvsGrA5PJ)pjebKH6_|+5ca1q$x%>nz%WKU?j9PSO z-R9c~CS6h84uaB`a85LTc&0`2s~)a1d6|eA|KSaclUDw46jhfIXMEgb zwK(A<{tx`-Oqu4Vzij*me9gEp%Y~{sKjQx(t4&AjZCh?`CZ09ne_iM#9rwzKG+O8V z+3`lQxF|zd+={{BBJhir+X*e&9YBi|a(uUR_{kp|T2GK-44+a0cz2v9Ij@MUsTO#%7Y!pW&&c>DT#c-FjyYFiUw0|apn?JW zLR#~4W5kuGQXFpy^waqln>8=8w*SY7jpAZKX}~y@!A#Hzo@WEl!6poVKQPubLfuJ! zA~Y%eJj}V4O*TIVbkp?d!nm)`nYgC`!%mk)79!s0d{=_i)wOq5eQc^r{K(fl9-Hbo zVetoziOiTbAbz?1bsxi>FkJu#|8p&3QL0tzN)!KVc}djvO&H0E3}8PsUGlUAj zz+URM9}Ev}BAuG_8)6fFYYFfOpb+=cn(UogQS!n%0L?R4EysxMx`u4H#)|E$hxSvS z`T0OX#-%B`Dy#b=IA0(Zv#D^#U{4UVfEq6!dmf*SGEY7`_^c?v#;G6M&Z!6^C(q+; z$;Xk*R>@ofvz~z#Oq$n;Ivu@ zw2>OGb2gBlN+&sut-BQDr6iKv>$2qym21eThcJONmJiuV2GAr*DG)KF{(U+l&`@Za z-^dtDfSMrwXQH?r5hmIy-_I(hwD4``U*YM*kKA4-)3LH1GG`5^Xxso03X2V zE@jAxYDiu6zYgOB`7Hes@!;)@so8Ay7(g6pc-a!#t;TBSH1_7>RA87-dB$D!Ceglr z4Mo0$Y6pXb8kA)O$2r7Qnp2$r>dAyMn#{s!HGHhelACD#-rp0@j_bVG)gd`0CQ4wi z%?5MuQBC%34jGv_y0?V+>P+w|5sywK6}HNr zRs%Zv5_U7S!TnRQ4lee;lVJW~G0T!COVj|K9|;B-?YH=}y27;RNU>iKhLGHb5N|Bf z%xz*!J)yZs>BoI@cFT(l`eH5~!F9~ z9iXjX)Fja%D9O$GWWc(D6Hm?cD%RRY&86u4w-jVg?8Igfgnyjgv zLiL=ffk?_4!Pyu(s%Y*Ll_=1RQ2sncyt^BcwiH`rqRoJpx|$bMuO-Tw2>a#$3sI(| zAjPb5U3rFV%^a+kk>*+d9g1lnEDJ+xM7`D-r)aldJU}B)WFF-!rA&7rEa`X-vtnog6EOvjw2?(t~+|fsA>+urxnff~W*S=7a!UgK=ftVdt zGXV5*tGj955oFlnQgSRmm)1U@b)4#E+`Dt*y;cU>@Lrw`+LihIEkNy6E+H9~bq@9t z9OFy1+;u!ZvfMtP&cp`<3eib7Pg;zU010s=X%O*J%b@2=_j|`d&+$ zb+~uirpk8Ofe5&fY!0kAO4drM@k#i4-EI9(1V25!{oFdDNrM@T&hM@=yC;lp9`n=V zYOSz%>{AB~GUU^uieu=N)Js&4x>k-KJ7vCvF#(IMB7uCmW$z*ak?%I}Pz*#BB^!M% zE5cBz(?Wa_3H(VR+*rDM+FBlLwhL*!iF@h&p3)Se!&CH+CT;ZFza<;KAe1b!`L=cU%VV zH~s~hBHm5=Dg%@Q@3~`VU}D#4z#C~v4DrbRnwPAp=~nx-x5ZG1I@NE)TUsGCnJ0>+ z+Fxa_GGbXJj+T*QP6>YRqK(la6Z3~+pR~NNKjEjPRx30OBdmZkP?1Jj+QQkuLhMxj z^&1#BI>dpYcEFwlQO1f+0=Yrue(<&Y$l&(n|29g+^JY+!H3KAv+sWjR8n=4Od8+E} z(E33MuVXW(xJGq8LbVXEQPtjdC+bT$I1@ zxXZJYGX0e5fzh7iM6`&H_o9lbqk!1Xp3SMbcl8gNV+`O-09AMj?T6nF1(_lv zvD{!-4)=1wRi!GTU8Z$x+9i*eiWVqGvGlb3j_s4^Q6Y9Cfup?t6rbF|DeJyl?&;ue zKftJDt&^tdO1y;vzMoT%aDERqbZ+8UsCitk+Oy2@B0&Q}G{(Mu66AOJ-f^?nnta2} zADzJ$y6$;VCJZa`I9QyQ^mRO7S(9!Z2WMUP$0c!+A+5T=c09D#ksk)0yX#eIU}cEDhpi2Kmdi}bW+Ob)wv^%3 zN8-ZX8M^kR!z`0yud){%YF?|->fg!;yyn#ZEa%Abp7qg{Qzj>#?WoP+r>IJab3+NX z500`r9k}_MI4xSBfUv*40eLs6e3J{@J7&W9>H?dzf$Do#nxl|+D`bbnh^^2!v5M%G z>DFDD7Zc<0i$C{q+=o4y9u>Y2_ZvP<0_c3tUnM{4D3Ow6fO}x^NWxrcoFPLBDV~EZ zjCj94&Rnf%aqp7rJfwn*y!kE;7%DV1Txx?cs1uXbEV9;*kiUb$2F-$y*X10UF=s(C zM=In8saGpU#5p46HUo_~YtF&S!@MM>eGD4p{>`6S5OlMrB|wE`M8Gk&EiP6)clwYRy*t-kDE* z`gZ4POb9jP4%!M<(?9U1?^F;p{Lbs<{KYVnw8`D;Me%14Ww1kIV+>M!9p|JV{5Ih@ zq{h*on2J3E6u@Ydl~KyPo-l)43!`U0<19eI0=AZL#~P$om~|o*x&BNOsK(_x3}+uTkCMz*_H& z`6fYE;nAd*w48UW*Rt3!Vhe3lxfVaRXNc+ykVyhc-pWKJtHaI_m!ROQsbTm`jQz#E zG5o3}Y;L$-^;QEq)yJ;O#LDTlux#XlZl+EO5VG)H8GhFzS7k$jrLY}@_g3}Y+a5wy zFgIA5cc4-mKi_}x0pGN^kcg-jJ>p@Tr}|>?qqzt!n7FXVEA5D5S>MIjFd{V~SBLHN z#cp46*wHtw?*0%pm2RcxR@yc|W4Ld5$8OXhqEO)K{PMJd*M6xU&yRz~Hm z!5LF^6GkSQN*~uh8OV=KMZvRWv)GI;HD#Dw9GLyFiz+Jd;hS9P5LQnQLV9p(655+e zbA@ndpcEvp9kl#~AMVaKn2|YtUy88~3Us>RX5}cCV$YCKL3+1zvMZB$@ znAd32gNQo`Bl*OBZ2B?Bj?!@iwyOvE5jeK)ol`1$bQ|-rnDRt~?Y`~RoY1*n@H+Ar z>tD}dC9fe#kHzV^z&a;W!zSz947P>kta!&QjFKifBtl(PoMA}3T=~LIP)0xZ;7+q6 zGcwzAxg%6Y)Ymrq#88=QK=S!9)cD2iDNG}4x_RaHv=^G%e~Pm#`BO#!0I);{{@Gv`sI2G(4ifkMUL9J$`z$ zbX!C-300>QEnAh%g{7EYIMsL2)EN^dZlwpwo=YzL&a7iB2YovIe318a)DPut{LL>6 zZj^D+*pvzhHs>M(qnTi*jJ^FUi7ly?`NCnN!Xxn#%gjB6`)#$K3StqP4l$U#-kE#! zcv83`!4L9^OiDzK)bnjGl^*KQsoOG^xh~;Y3Q@Qu9zVm2Ob@xiyIHQ{b^1vn8GV$nm-YY0JQ4>sC7`uxGe#2p>sAd|}YFTU>u`DN=WzQhlzgcluOalQ=Wrhw1GY~Y2BDDj8qg6}4 zvSzL;yVv<+UeDkm*t!>}6Z~ZQR7rb+KsKg}hDIV2sf7C$Gd{PbOrIQgMe3apVHdd& zG_<)~Z)3NvSZ>f$KT@%OE3YLqg?o0`@9FDZe8T+s?9_knj2&ex_5qgSB%-(@;T5vylB!$;lMHd=$A8{n3rqP% zgd8U{Wp|+!XWdlu+$pfr`}*{PW_vw5*}hY%@Rg)plhN1(HysMcnX&MuVC^0bV?V2F zjEwHZm~wnFyI$n|B{4W{f)_4N%XEzW}#iP>FQ2Yq==0m+aZ4%myx8?^^p(ZFDz zOeI^E&$k+Yf8jrU_ri&V+qed7jNi0MMPkuMW6a^|oN>60XpWu?XToX?JU@1g-=}ml zyPXcIY+R9-7tT31fbp+~Q-D=lL=>|RD29|jY0m{V%YzjZu{8XX7`i40r)=g-jU@Cm&qA$FIsfGh;M>ZLqc(K zBWdI4<vZyL8^2EJYIh@CnH3_B1yWG$l^t+BAKe3(qpL`3- zD(Y)RFF7X-4HADcw2nBHv9!gHufH-jbiu5bMNV6=<{0+1yO+5UV9~0mBs%Pche!v>9vAOSg#rou04>*(&bWrK(VGFY=^WJ5^dL3%EUc{9!zFMWd zjBU}k9rs3VCUgwvm+Q$$^ltQ?oF;BEl<8*d6wY6I?w{`H9aciB!9r5d3 z`WlDCS*Y^h!K(+&LKK7o_K8c5mkldGOAzxKVc)5*!$$%_yZ&aD?y|)iB zx3?agKOCQDL(YU`&R5g3Yaa+dSraaC{#m!_F|HxT|B)K5U^L$Myg~rC8&4IUxG1L3 z5Rgl$DlHxSL7zm6&aI7kb_KV4_}NorZqSzjCeOGMGWD~#Axk~$=a2SiF8pNOBLOLC zK_hTQ?uE(Qh1XU~w5#jvK8=VKKXd$^06z@9F_*ejdffltj!unDd%BTQ$un|~@YG^Q zuQeM01yMjgykd{PdF>l!SL>%olmrb#dA~GdZY0vjC;_!$Z0CH)hPSHUr4OhvdxP9E ze7v&Z=`Hl%s)KPwxk>`OzPl{UhI+#$v)VuL)Of3(?vdP@FHu>8vdxZ0!s2Eq$k#6D zU4~#FbmZ#>CcuQvd24-3LYz1KYrS<_C4@60EFI7AtA)L<^z(h)@B(w^b)q>mh8$;P zXDZ9N&Ms(18Hzd4klAsW>qe`GZoLk<6yn`sX?*xmT2blS%3?Gnz7seK_O&*q9BoHJyF2SsUgW5fTrT?+XXt+O{n54OkvQK2y@voy4@(3`* zo`8D30SP}u$-<3ppi_6>9+qT~f_KXMEDFRP-B!+gz06$Tud2#*ot7W*5>GTwS|)*6 z!aGG!%3XxF0%T80`#A=%ROD>&7g)E`D*wZF!pCyGnjVYS>ncqX^&hkR`bx)opZWS_ zEN^iU#pMlxMn;&hbMa2~7e(c|Y4CaygGS$Z{A0Y;FsXI`G*w~BpZ+7(7Z=xdn~2;D zI#K%dgm^K6KjGxZ?pSc@%`*3Qcm4EI*e)WOg&TI#W<74UfBM|zi>5~%hX33+Y=J~v zW5b%&*YsbdfelLfsBh5RCdx+epEeX6?tEx(u#%UxO}s6V3*8%YDMielgB87ujftXG zMwZsxuIqnseCBypEsU zOD5QTJq3@7zE4Za!CDHOC(8wPEh4N-Co()RC!-!9>Fh_C$;Un|<-{9ELO9wKO$(RO zP~@DwHz%-1y+aag?_2G(4(nbV4mliNjZh&Xw9|$#c-bA-E1SkjS8ZyJ9HPacmsj`3l>bPmY569<)O^U5CVV*Iqn3y3gC7u$`g8 zSMwo(U64}2W2b$I+|uEQ6d%#(YGw}K-H>h?0+-3yqahHV*Td}mfl?L{p!R z`5l4Zrx>hYAdo1a1B;<-%7hT>^#oW~p!ZrrKjE}49j2$<)cbSPh@ywJxz^p=D^qE~ z+t>J+GjNIx8v8SEOA2sh;|@2JW`}*$0fzhNAv2S_#1}_BkZ7I^YNQIGbkH&(L#>~c zV?(B<%)fjR?qyitNJ5hY>=DMIpv&q&gqRaJ`}mc7W;l)8Xcj?<%snp!Sz)iQ{k(wM zzx73?v)YetX7l(3rZ_+b4g8TZDlG%J_u}*>cuD277y~eX5iDdS9le&C{K0c*l=nWT zcbx?-9u5wD`{g*R9-BTLX>;kN>9^N~Ru`HwZUJ{6z`;6T&wFmR$qWK6s*Yge5=lA4 zdE!{663i^cQ_p#;sT2FFZP6mRH4G)XBR_Kev{9S>QJu@WTyAPw1vuI)`(8ob@u$wR zBbR{`i^)iQBXaZGf*awL5)=>EZyPr+)-%ef+=6oI3;DAIcIs5vf1 zv^!r=G@ZDetuur@yqEvVolzq_$J?N^ebvc-Kylx+!X{de+Tiq&#c6X~RWH_lcUHNa z3cpivU|AXcTqmvCqm#3blLS74>yD#UF;?hYzv^$u3yZ>42`UtYL_c*y3Uxe7YA#at zO)T)PU)|`J8=BF=d0a+9zile*%s5skT!1+R?{SwK{K+>^o+#wUJ7MPc2K>}p(Y`}4mKhNrio=bXa~%ZkHZc#Rv}i4)O;w8+JqzX%>2l_#`e*$nJB%($B$H-iSg9VcVZX zt-i=7rvvF^i%nO5{Q?3ObYm=bO+N{**94ogKg0Pb>^qEP^6H!jUbl`Kpm|o=5l=5- zxpHQnHwfo!!5i`(rMd|a#?IsAh?id3-vD9{zCY6RZb@`Oh=w|Te1~S&wr*^MIC-KG z_Ak`Ks(A$tGQKFWs+O{7#c#ET=6NeA=R)-ih?*DJtJ%OW-tN-6N&>krCcFhKGn@=Y z7xd)$56w2+mL6_|^u7#*>Ob7+MO8P8v^S*`wD}z}5XLS*kajAE!GA`!6dfFR=3unD zeF3tyvs3uei_aYA1jp{xkv2PCoatPcv-Gv%8vMQ*x<_l7h53C|;`C@R(bph9(}g=>pyNN+My6e^5ma8-sp78!NNK>pU-6up{|kvR4_L(vSZrC zk>72iCyuj*@-n4|M8m?W|vbYnI(n-o(9#eEIvH!&YPfXgmN z18=RRH5r2+wWaR}cKgsA;9hz~(ev%XV&vrzkW%(nRP%{;T~Am|TUd@Fm9tc24J$Z^ z%u}KO+ye%W+;u)A^pBFgWA}(RHG>YVr3#u-xT&FN_0b4fE`CqVAwJq|4D1bT;I z=kU#5x3z6jq$dhE&Zttg@gpsb))G3#DeD-=aoysETDKa8^kH=8C5}tXZ?vTnU(~5| zCez?4e4S0->4$&ZxC>mm3cN)6-e~FSmR4;}-A#GL(H*4@Gbnw|Z%L;QM&O)s>IBRx zixLQ4!P+*Pv{^5E4Pl@zm4_L@)6X|AZQ)qLqPPI1p_8IF)^C{9bSk3( z_v$)TBZ`AfRhG-wyjJ_Q?yo7*-D@QcOJ!QnU zRb)(k*tV=SqgaC@=YGf@olDX@ zLv|S#7Gff;uk53qSVRU-Cp5OQK=h7<47mw;Ha>m_VmqinPt;M4(m1m*O2p~sda;|$ z0&ooxotKXU7dp3g*fCGBI95nY`(F&1BUC3^=_(^t6Zc5qQH0zQChcrLNovRp+0@P1 zeV3_%`b#e{Kb2sdZ^v$!(!lddbDy}ue^%QGBW>F5Z($ z#ELx?O4<+$7*>JNc}cHE+=bEQW~45=@nH;OxSfKafgjhnM5Yp4B}`VAf@Uv*07@H2 zA@}tr(nl(_Jo2PEpc){c3M&#(suH+$$K}ef2ucxKzF|Cu&$5#`Y_wMzAy@ zYzl0(vgp`R%wf%j>}q?tVtO9#%3S1rX}#yRP?mG&#QHPNZPn@Cem2+AMDQnwU$2>e>Z-0!HmtQ>a0M@{mW2hJNv2ur4dmf>2i8Li z>jr9kYW1K)em3H|Seq15qg7yS131rK?BsLSE?>VgN(YIe>SCvDJf`%Yrzx+ z2E(R0oRv)S`B3sdWnc!4zv3MTtqRDj+)F`mmf8wOOEFEt8(P>X39D=#IFX=Hz!FCx z#d)<&5c$F0>Y*c=*UzGBR-4VNLvc4D0Z~+bq4OyLrujw%6maF_Mwj~(^!oNyD5jzt`5h9ro7p{wlxezcckja+?b=6 zbB%eEw@z|&LMPtI9{nBE*o#wIJ{w~zK|{S%SivBW0f=+yT}L3`X%Y@D zVAuENpRU19YcPeqb5CEuE7LRig#u))edCI z{?G8S3m=CO{s}r%@F(T6)U(+YrH_ah8`7U+~{eRISzo+nI?yRY(&HZ zaZx{?2cOG#0!l|<=TI=mhYa&zii*xrW|MMa~fY5%1}ZNa8CPx~ZzN*bcV z-6h$z?;PIkkm+EQ|Ige^3WDT{7bkDK{#t%`I^RVDC4qMnlq@A-Yq8TsSZ$hwI&;Gd z{QXmw`Tjc0W`-5p)Kf6`ja-XME#t=fI1m}+YqR{l#7W^pXsKwguz1?_uDstm>s{1j z&K7s!P<_b;`~{tQ4cxa^{LH1CV`O=MF$`Mx@U|EU0P`Be?yj3`!*4O7YCrp*njcCK z#wg*=)2%wcD~$D5Aa8YA=tw1_W3UTjt)|| zP@gHif>NYAaI2iVX1MJ${Jk)PHocQ=a&fP?vF{v&ZNpL^HU@Ew+5#O7DEu;EGrnZoDepApYp^o~W3%=r~laJ~kx;h5wvTm(51 za8i7|a$SDHUg>mKWI+PLeC}%7gsOqP;Hjk{1?+x|=H1$(MuTWQ0_Ho#eA+XL5>_eXCuhJJ+FB`@r&KjbNk15&*2xv$En-Jz!~}MCNWI`;l8w;HMTGr_mmW?BwdBC&ou2Mh3ro$ zBAyv|oK6u(*1)=lO~i?Hm1a)YuOmG9h!6~yTjae0ZO@oPMN2_(ii1J|m?}XGvrNA8 zOZCgg0F#u{@Iy;w=M*4G%@cN-cUP!KNMz{)%#hB!{L*EL3y`tHOpQWPjFr10 zv~EAc^p{x9^-pbM=TgS^t$0OF;=X#VJP@+OC44#3SoF2M|KVLyk{w#UXpgf^`hhqD zwOr2QAZUuH|LiFR-mc~-W0R@@v;GW6r|6E6wqkerIUW#RJm;I{5lI#T+REPC>u)fM zMJGoc&c)ZHMP8gzEHw3P%|&!*6&+UyFXN0tW#%V`B}aeQ`Tm;nt@k0=-h=48|2-G! zc=`l&KeYVMH6HzwCpF`W^uS_IFgrL@+{$Uq0-N*f%C20dpvH4~oaPg!2lc2(v0bDh zY`%mP9y>Hb-z`as4Mwc5^R$2CWBa*@FyxAmPf*TZ@U)LV!TWQ>KNx&+y~n7j5Pfak z4zW9XkUfo5RJ3?~ZSP&Ufcxc!m3$k+ZVyKi&6t6n*xgs*eu4HBFe_@Q>vJj_CG_&K zg_A(pqO*~MO>%7=Lly66c1w<7w>6b|@>_w$_~R9AnbYtI_svj>tqh?E4V-V^nzO;l zr>t?sg5s9XcIpFA#+KITnH-RADY0hXg(xqPxN9i zZfg76;IMn=?8kj__~Y|MAGDB5p2H&kuQJCKDPdaSU(~zs#8;n|WfoeYCaaEHI43I_ z?&52^Vm(7m32!VgOgl}##3VzR(HmFeSCJ7m(+tQG@<0%JZN11(H}{oB!-ss`l z>DTW_m;3466vC{Q1$}YHo|ofm!dX5x;Z0~B|F)I^tQt^v#tRxQj+$)aBz}+ea$94W zDtW}3xRmeQ-+1u>gRpbysE^y4)5ZnM=5FcAunQufVf`-NNEgHc3B1Z$m!aGy7`4JU z+3Dg^@PfrjWFd%Mhzu!%9@ja3%ti_yCGaCKEYJsu2#jpAqtoRdjWVEnQ(8cKy6c&6 z9dQSu8S%d$9B|L=J>?|mS3Djt{1TR6jp{83V-O&PSM`B+%|QIqDIB@9kQ_vkD$VT=|cCc(EBILrWp6iC~S4sLb&F39^1bQP4ht%+_rSBH0=cQ% zBe}{Y_{hhw;pM#8+NXCdt#MVHU~AMO%iWwy-UQZ!XURTm_ZX2Y2|WrFLJ2*`TOY=W z)_RiP4m$&;`f5nwgMF~5QtJBbXuT&@9Jz~~Ry~#XWN}sO;O`~G$CHc9h8mJo_=pN0 zJ)v@Q1g!bHR_9#>^Cdn!%(kNHDqVkWmB|Tr&w%n!$9T#pc9NH+g`hE3;fN3e{Lfk_ zXi0M?Z_L{4l~5ZOQhIL5(bASs@7xndE6mHQ>|?zoigpfCp#f5Y?eOqBMao*PLz3q& zf@2D!jZnXa1gVe!EUwZw`X!&v{!F8s5+ZH8tZzbrEJfJ9)|uNIX5w`)Ze8y*7RObI z-#YbMo#XGYpMb}Mw8qTjjLgkpj_Lpx3KJ(H#$N?I7xzln!Ey@Cjw-VtJ?WIS z5?yf)T$PzDj*beMl?Mzg{HsI(9tzdI!mLjM=Zh^a>D!U|ot&w{j&vc;u{*$4zERYW zLLN_Pb^Y={X#6gX!7je3d2SZ)nuXAKrHjgj~0uu~^ z$^TJ&hZTmVg=F3Q>dEkjEE}@)^VMzB^`1?th-GJ!6KD`E41FHYQ@*VB8)D<4ZowR% z+u19b(gFSOe2iFMAUyIrh*@uu3Qvqt^W|@Sfe8T3)>;Mck^bo*2eaI%^gcPczqRW& zSvXCGeT7D-2k-sKY>85Wb*Fy23^-KdYe-)pr1kq5?ySAioJ#jMJKVV4umR!mrvL>2 zO!m8*OwF8Nn48sLOX{Bla-e!bcT|%E0-H*>C0*4!XZXLw;pph)df(AK#LhqA7olRP7>kCCtdWE76PWtV^L9f8?3N=?Zv1!16ad(M3<2P*ALYF=$ z6P&%iz&Q39cB4qJgj^}d`wO3Sp1wj*{bm(3jgvO)p+)+h2ttxR68H(Bw{se~JC(z` z-u)3v1A+d?2y<_e2ZpZMb6VD!E>{A+C!oAFON6>gGoW>LlcwCiGbFzjjd^Ehl0a(j znW!He{mw$h6NWMoxrao4R4ZD!R@&{ncTQ-QH#@F}0J`wt`bOM7DKL@CSdR(?T{`>&(;h0YK=YAK%qAXx zVvj_R>mS#{$$^%+`|6@Vfq`@=v|Lo6V2Yc+OEGYml;D?pLRPcB#Dd)mh8z`2;pkMq zY+qCgX9LzJYKr@6S8vf&y1{u#LMR)St!ffSvx01qzjpW33F2&(*jyA1*v@MrjDHxY zJ=weO4&aB5^A@CTL013=>j3ZG}(3 z`m?F98aScIqZR}ckm(a2X=|4XG+|!*n%OE61u)UjBCmW`9EQ}OLDo1M`qe}O1?y<@ zVVqJ_%{AErt-&s0JUwzMT&Y8vjxNVQ28b7OJap)jon9C9FUw!|obw0Wd^SQ#&`xS& zmuN@~`C($YrPSBa1B}7x7*kjZ?W#8b6qn;6UH8SUxWV6t#@x4xabRx;&$OC*i|Sn( z5?;#BFGCzNnu}<48j>`X-tlmDI`;qW(=oq^dV^QKZ>koCDr#LiI$3cFDP=$EkwD1Y z#Lg=Onta*QKWY+Z@Vfdi0Z4&`C!yYtD*B&hy*{dg7-e0ozn#KS&Dnc@nPEKSia+J26Fhg%qt`co2le6ZBeY1Z^np%J5+w1k z2-}*?0~o@Op*1HUS5z+x!xr;wN5C)*K?A>gGZE_f0G0Y{;8QqIfCVW=t@K41jbG^k zkpgGs1R1OKC+F}JYQZ4ANjt^fmCxB6JjdG_m_+$E2tmN|Mp47!5;jGaJ8W!a*nTXi$>3SokB(j3?K?(rG2TLZz7&G5aagjwGu&&5(_4KT%-s9hZB^%-to}}!aCwX)*Ux` zfZ!$6_`O74U1gpdUBCg@2A8n8{Y1>8UviTT%O$}~SkBh`mYxVG5O)QJAJQ98mS>tuzmD?8J}G}jyvIgXdiXo7lpP2`>>M!&t$ow=*b9Eo&rS*6 z%C1iQEED~kg`-c@aJ{gK%B)^Ppu7ucJY@AbZIU}W-Rfk(7OMCEH1{R`P<`S5S}ZlF z2qBa#$yP}dLM8haVzP};WUnkU_R3QB?AcP;vJSE~gX|$hmMk+2*_Rp1*q7hEW_-Ti z-|sK@yUV9sM@p#nzc=0S2BzlwX{Vljr=UJOa-@nwjzuMfUo7S_oDH;HVYv2`AI@#xa*1qxYq0@s;+bMi`A@ZLbFJ=7Mj??JFicl>K0Zhike z3CTr=;+qiYZ%rk*c9hb+g6>@t{hHs*DXH>~coR4W46{HA`7hcd)nh|UkQrrDH$GKc zSG>Q~ICTuvarDwQxPD*k2(->i3e1u38I?nsTfxW{#j^wR7eIP9%jA}Pb2tu< z2dWvN*GHeyoE&wf$LQ|aT|p3R&-;S~$&pk*U$;2noh!yk-lUnSeze106*f!07v3fO z%5_9~r{VXphaUe;s;m0?emA0=N3~{07D>USH78bh3-pcW$X{H_hvY z#n4ZH>6%0bvj6Sq5D;(lfC5Y?6WBLx{oH`nRg!j`uW24D;h`(z&xi}iSe1kitR??5 zl5@DQraz_~OP0Oml6p_qIzulb6#!3;@`$Or?Jx1{xN_~)O50ReNp7-M5#K=(9m7eu zv-PKn-N_4wpb)+F$#+Ua;G?nSTP6sUPb@Yr{ZZpYiMD3;P2ENt02M;y;zUIBitfw7 zECX48=9WG7%Z`wnXOT|Mk9r~?&PO|u&ag$D-sT+rzG;}0X=Cu&Ty*kUc4K97yl(QJ z>$;<^CThJY2wweDdmGn}DISMPijYpChC7>czBTHL*i3*$%ruD{Z)|NJ)0}Ls^ZY4; z>G#T$RyE1E2s%X4v>^TXFs0xBxg+|K!EpWCVgq_}lXF)mCim{!;0Y7qLb_ilxx^ zLP=bi0$87LmzXndHOe4?N!azS5Vqd_doQ>!An(30UbAm+<{Y400oS4NtC`zTz}acv z{Sl9T>*bhM=@ZKymp;n???ipac7~`SqkZ5HP-&e^U<$0RO0hp+|?O1Vy?~>&u%aYvH zQUQG@q8r;wt+JWX0UD>&!5kqeuwDx&=U!ZpSIcUUK8Z08C%Jz+yxz15ygq$Ma##;^ikHF9UjnRaUDTZZ5A32(&T{h8;w zncRA|3TqY8{9VN+RX@-QUbG8eAUL*F0)ZV^oL8e&6YY?Usg7Cz9cXI_C`LH1lOM+4 zy1PE|N{{1OT{qAsNu)X;ql+3<-5-bnEEALpX)JrAVguuzA1o|g&aZ&tN0|}bxVqCfLMt~uE4v@ZXua-#TtVnl@q;StGxqIZo47p|UYA#GuxkQJ zj|9PeZv1n>(FC@v@)`l08Xv();W$(-(cw0Z(IDtf^%P&chn<^3{PeP)DYj;k_- zi*O-RjuIX%sbl53M`NvSUP~_i$;?meV;(V92K+o<6tX;`LxmQ|k4%#JtNyeIC~Ii- zYE;3=i-_x4ox)g@hxwZWPxGloU(VeK-JG>K1)NsHZA$jkca0JmaW|&wg*8nq_z3vv zSFrD&eJx?2cV08G~^TpmA#uKl^2PkN{IOd?V zq`JmJ?cX4DsV2e!mLNs0w#`Pp_<9OU3(x}QVY;2NCs1@0$GYtiBkNuGVk06FCDo5x z?v@Z6!;@UreIEm-?WkJ+`4GE!{TovBK!6UqpiM$}kbb?KFySV}+~KKWUbFlM!Bri_ zu%#V?3(e@0&{s5oT6YFIIR9-uoVb*?k0(L?#~c+hW4MiFWCr3O91}A10Ch1MOCNU>T2jj1M0bwR1L1U7!jp}HD3r_8O`9tdE{bjw zlUi?Kd2Pa}!Awa0&gP7MVfpImOCVuTFVvM(Wxd_&3`ZH{F|C>+8EG0^cb4fAnHrT(&usP7QV2M<_A{? z_=!p!nAT*w6)ge4&f|AY9?yHftrupEma-}ZHS`%;6w{K!@~i#?;w1d^IlG1D$Y_sg z2}eM{As8!Kq7jQJ%Jdq?iMTO)WQN0cFB#+EY`_Hvw_YVbuZl=tT1RZKpn4>=hw6s9 zUV>HxxYiyd0k^8Yz376>K=l0`_)RG)Fwj`OIYIn%RdA9Mp4}T1Y$3lsbO?&Tel6FJ z4FRc>eO8ep--_+8LO$5y^qapd2KY6AImT>ZK&bQ zb>9X<&_LGOakxw@x!OSTqKEs7_44$>EHe5FX9{u8{-!DdN8b zkR13(@G3k+Ox2yTmbxhEJ4(WATdJDkW8F+X1AZ@{Qxeat+()iU^GV8&%91SI`}|Pk z-<4=Es=SzSUK-q!_V?&!kR}HX(~Q_>Z)n%WgiU|M0`1^0hQJ5u{aaaj^%~zMy~#z- zlKhK(_2^n5;Fj_Xu@%WJdG;jn_)tdoiBKt$4~2#&u=LWo%J)xVRJUfZ6XGS19X%cB zvWoyXq@yV3QS3@_CY@8bCDRHu;pk`AE&oZdy>uWCG=*6xr1j)Pa;Mt^qv}!D5U%SFXMi+t&xKQDq6jLMhxW%Oo0R!{ zNsC&hCS>tqa&iZ=0@%QsV$j%WNX4({=9pA=0T(KL8(K!>$+QPBM@F%xGs*0Rb-8Hr zU|vISAg3TDVmZhcF-R#Ba=``wWmGG?`#IXRFz11mCArg4NgkXY^A&dayL#lZQq(3< z4Z-@=Jms_d!h0$wN-^mu0}GJJr2o-Awd~y1+oPCchuu6uW|)hrH~XAV%=hGf5!Qi? z761Z1AOk@#YWQZUY|c(hznT}GIv<@&L0dSA5+Zs;uq2Mjm;Rz)Zm=PR!$>Tym->I* zq@ZfR?MAuKW0A*F<;pJz?Fa?r4F8(k4H=MyrYA{J@H32#IHBa##hE-;7dd8#R|5K_ z3*>heC9E{}$N(00)EFm&UxOE>s+gCEiFp((kWHek^gLn!+R3iw%3wvkC@`(M# zy#=9dn$j7Tn@Hs~uHyVZwEBAFJ%0*vL}{6*s{@%@7N#`o0l>(&c1pXCKl5{ z{3F-+-S5Eu|FDzBsMcK_lHWC{>ir$;I&A0g7OF#H8^<4s;{tMeaL)pvl^w@^a55rC zSVl#ODC_!$KeMr7;l=DY)VpUtra%?4OvT&pZj=b z!uatejBF!T{y-1;C`S!dJ;4YAaTaPPWv<8DyBuN9AH@(%IRU`0#XSHt2Y3z-ZgR7{ z@)gvJsOD?4qeet|04{6w$D4KAarU(UY8SA3JS?ln`$6-=gHf40+vSeNN2)VTHC0>W zC&p@6)>02(ERFG~B0*bXb%7gZ zw&rg{tb6yq2ae>@_q3G{^o9P}nseJfk;;4K(h-c#S;?_nnzA}~Q7=FH4p@I`yQyEq zdn()myh9g?&+){~n9M+9AS|zcKJNE|nw|pDZl53~=`{kA6w0vO6Z`(KYI~hIUs~nl zbnp4K%HFSwh5j*<>Qfmm==$rrfG@1o!iSW>nR0x?)B%Y!+l~d)oI$CuAN}2y25NgF zEz%|rs<%bM^3lU5nk*bl_2$L_yo{cpka3+dsyF;|18XGe45%AFb$~ zyi@5aQO1UNwY_Q$IYmY)Ljf+yR_T2AQf1Iuda zF+Z`x;StBckGbPWz22%~ZhB`m4L1;XfdS(K;sIQZhOgZy!9$>0e!v#k}MCKVoLaTST9a zgHH-sjb38K*{Ahkl|2JxL}f9iE<$b}DDWxS#L3{rKG!=&(nxFm>F8myYURu(s`1bf z3tYG{7SyQ}w2*fJh>XWZqEoe=5lB-U%YnxL)dhAZ`@x+nw=M{CVWJh06ucDxNTAL; zH#Oyb3?nXp7vn^xi;@T?D1hVlp4)w0X(aj`ag7W>6!r+2k-m7P^JXvu!zHHOf!51< z{5`eXA4eBqWy0hE*;(v3&93Qo$a&~QyxgwqE5>}&s!^kz$<(OKp%>vaDTfy*62qV6 zzg-6kbpaaTR07L$a&4QYQ^nxBxt57*0UOP<@psoPj}hj4mmLOl%{q!`;5L38SbZ=^ z2U>Yfc)Yoq= z6+I>|vd_1TGUS3@AMlB*-+rYs`{+fs)|hVUhbXd`InCD&Y4J&#nb-zY^qiwe3ByU; zHy{1uo<=4)JO`WuY_q5dXYclK(*)2^Ruzl#b?$8Y^err>5+o`M%` zZQM$W^_+`WJMg#wnqL5l>*l_A_B@{`)pTLQ%uIq2L11K@end6MjW2F%*IAM9*B;q< zaDfcUl@Nf>a%Qjos~UG8rDnlITon|1}>;+~f$rrD-uMe??TC7?T> zCdE-^X8$9pWGDD#WKt<{eAxpM?*ZK=6 znJ1ZHUiSl=?SO9jk^j*n91m|ek>v`4VXZ@VCrWuy+?ak&jKqDU%wbOfL`P=60P?sy#3W&w707BGOp1_A ztZ+}g%qj9XJ@D;21@vf0d>suT{5fKrvU;a*+8$rk(!}Z5Fx@A^&}NKe=Qhj;=_%m< zG`)bzY3G7ItNUEt;RZ&QcoUbs8#H46#Z>4-tM{(Xfb04k{zEi?uL7mP=QG&@C^)FG z!mnoa01DsaOLujffW6GVIkyZxIhaFpF*A=BX?M%fTuSA|#bkejjI&cEp`gikNvdbc z!Jm}l9}PQ$blNvKMHt-=WWZeoRUMGo-`#UME;I1;*t;T``re+?izB2PlD~WIZ~}=% z08-c)T-G7`-9u)*BYr&LV1|`Tcrg#ep-XQcQu3^|M)jDcx~cy6ghXcw3&KLHPw--7 z75;V^mD?)#jZq#0V~f7;Ho-VkOAy=@Y|o@Qv|u-*j5&X7E6{Dbo0jKGQ68KdWU9o5 zx!A+QlkHSd@gIJizWvSTutl~yM-PZ`?%~?!JiAnE{6IVg>&0j91e^yQ2wBcp9vy-7 zU@c0(5ygJ^+n1D<`hfL!Lum4*5`xJ=-tk`!i@Z3`uQQCxI_x`mjb^0RMWqm z>ri;~Z$InF#rLz;5;7|bOQDCeVp(!m0)i1fP{eGxV{%Oh39S=+7ma7PnqxPS!c%#93b4CliJ32WvN09t~JA z#R;hO)h5YK{L>DAut}1Ah_D;T3|~On1Ike0?I8soJU-7bsF-^X9RC&fxN{`r*;#We+Hwoko&+($wI07Z&(auu1O=j&~3!nC|>EU@78o?!m-ZvFNf zI)W})QK%yfn@?3%Q9yZ{BWwKVd5QpWXsD?{yxC~xQ=`X)>J7&8;FN$8f zis`?PY)+y@-B3o)c!CLyAU&Zk@l|{k+YXo@q8f?mVN$idf%O3xFOb_L)$R2lXO z0*MT6h8o9Xb8dcn`atHqn@&|&4IdA2Z4hO&HF3oJaQG&~#a?)RCQWH`f%e0P4jQpu zKV;@gtRi^mDauUb8pPmlW@{=%0vRtS_E<+vDL$?)$a zFWrBf0tgle9P7hMPvTU{Ip8)`j5t+1cq#!dv<6YF#jlr6i|4Vv+LZ~p{)!=f4az=0 z5CWgMtIxF(FCnU~nqe|%HtX^1Bk?>~BLjFf#9Cqg-3LaOvmP7jW{q zDA1GU0sRpwFv(wi$voFFjEB&m1H{bA-t~I7@I&<$0NgLi}3h5(M?f=&`%!(`mTZi*#|}zu)sS0>$C?m100&uxG6C+Z$>8IJjO>L)BARwql5WKAM0WvP%`b z62~#9wyUOOunEZ@IgrY>(L<1TP9LPFjV*Tm`t+Hy?6)34ei@6^Uwn#xs|(>`?vZrG zb2%ioY!};H4=|x+D0uHi8+eCd!y!rY)WZA1*gHYk#s&I-LBaTQ1eX%G?7C&htUC1| z?Bl^Y&f(j!V{XtZp1;Qyqbm6SzH{!aX{6u=7kHV`f8$3W- z+?u(DOe9nPcAfkhT+>?@btKcO`gym?*_zM3%bscZgl=)t(;4NRva5s0YpK+C&#~xU zU76dXV91+C7`=IAH&&wV#VfLu+tzD3ZC_ zosd7c8Xi?4`S(F0hokGG2K^V0?jeA5#IbMd!Te2D0DP9RNu9Hu*;0#jL)g?ib#Y(^ai`}h*_<;i2e-G)LSc#37J$ny9 zgQ3x6_#Rmw5vi;8@j^|)203Az)ZN+ggt?N?p>y; zMjF3FzrpEL4!e?08aU@0?02?m=Xap))1hu^G zU!*P1J!vUaHGkk&P7VqFRh+v2AEpx>TFwGFadI|XE|qi)RISNt5<%n*OewNVA$ z`xPGtx2|0MTHtQCu2U1Gr(?G~Y|#uxi#ffCA79v|34;0MLUL*8PufTQ<}gc!go@Xg zkZ_jx7t>2BeywXsn<_8#Tl_6$UB%Org+8Na{1c7c$`7^=A)_frFk1ewp!x9qCnl}= z_N21$!5MtjWrjJaY<&1xGf%C7uIIYiX+f`Z7>(g>14)H>2Uc9opnn`FY*Hm|Fl zd_^?mXz8=rojZsl0)$9ZVH)C)gIvoHzhNvRE4*_U5LP8x1rzs98!2sFpHZghau}Dz z1bnmd_x0IDOqU%Xg4NRo-LOH$A=OcA%+=qK7{q$9$fvw2Tzrub0D7fO(z|pnP z9jR;S3+x&W*LV($A{$b_s|)q!$zJn1FXr2Sy|}uvAe95lDm%j_&mL$Vz+C9_*-W|Y z^ELPz&@Bq2`)^b1tu$addr&MYWj^9P{xm0v-|JD7NXEC(SlzW)&B<|Y&X@O=*hoa5 z!)^6Fde8NY+>u`RwZ70$cu%G0@S!p5YcgCoPG~u_hS2Z8t0ZJyca94_RG|2lFOj+5 zGvl;hdd-UpKB2@Af{1Hd8QZy8JjQ(zxYQU&j>tjpH_5*@msc1MjsMuF!?yhZzdfGc zcT{vs@EYzKh0Z_*A2vPl{Vns*RH8KH^a)4j2X!yZOucuIvH+}p=}jXHYT?6>rQCr} z0>tz=999*&l*k_SQB=lK>;saO=;6h40~RUGbL8duVP`JFiZ}hw{3->~5eyEk@70fN zcvJEufcDf5QxsxzwC3meILVB00l=k~a$FlBs(^+hTK~luKsK>}`h2 zN;?3HD{tBCIC+2hOnp+b<%is&wte<3 zz<2Hbyaam#nFA1JCdyJBNFn8abxJ7cV5@uJRULTBN0dy$Zpqp4=+w~AwnQ*z)6mw! zp7UF-RMg4*c~poZYzPYqqn$*0H9XGaEiW|6OKX zqy{^f|JU@<0PS6KwqmsDr_9=W&%BE&eyg=9MCxBSS@KRq`^}?^U5#(P^uGI4cCq`) zpnu=VE`vWeIf5iV=g&ZfV7+YKD$!AUr(_Y6xP*Zei7DI|m*dOMsg*aC>mL>B2ZS93qk!{_sM$Z8P|%)<>9O2D)Ywy zydqszLXU#(C$v=GCs!YXBG#%!@!HWK2tF};J-xy9`gK~c9coh`;isWBXZD?Oi-a>0 zwZiu4E{#LPm_6E>zg4FDn|BmK?}9yxdSq39pCA@<{UME;LE?=f(Cc1BR!>egG-?(1 z+&09Z(1R+}iQG(SNalyS-^aW)`k`j>Zacb9jLGeVJszj-rIvN=Z|>{t|AW*pcAOo+ zvA(2bXFv9$C|X2P+*WuAqhkFwH|(LxIOaoR(x)h07ANc{7sh`PgPkhYmjB3;*e&`w z;#Xf?2n!D$o~R6{x<>!H;;-s8yS*Ly$jXA7QQD67AwcVNpfw>?agFBf$ms+&sb?vv z`u2)bt6YJviTxL_Vt&q!u63N!4OLKOSZTR%UTM(!^PU$pVl1v zMbePb4|NmA9J-;=Ms>`)kdC}}WGZeA;_zk5Wfjx%TJg24(T5rVhpD*EWkLfIP7k5!U-F5~XU#$+O4vEsV!T2J&E$n96{BcVIZAzRqq z&&T$Lj`?Bru*l-S64#Fd%+Q##NfQa1&6%2{B5n2(m6il@(r+{l2^8lcyZNunSp1fj z&utL(7)3sJ@{Rx5h97Hd9Oq_dKME}1SkJKY{eMyXQ0uF~P#yjZAzZm)weIaMr_VUf zYasP4SiLv7cGb1_VE3x(G}cl~r591nF`^+qf1U=XpEcRe+bnMU(%BdjbVW#WsTwsR zC-U)pa>=vbSHb3EEZEg-pQw_lQ`#Y+tl?|Z=w12w7jl;rE{M75CMPPlPTl&e;zk~@ z47$Ri@Od{2xnCC3EZ7aq^{nR@$2{SkH$@X;P1{Oqp=7qPtu`C!*hPs#%NvuvMs=Sh z+>Xp|jP_JyRH8SUvW~r_IC9fydGWZQ9l5+qWFG6K z1zWjvIg_j%a8(@}@l$c)5-w6{svuW)NzN%|Z_mocQ~Jt8T2l*auS}z3xX$?XZ5r|y zKig&3W=}98>31+*&!GooF}T3}>E_^N!T(z9?#k8gddWdA`!SH)&cihgJl>zMJ_ z)7{jwLCvuzfGhaLuFta-_s{Lp07wd5EZ>y@I zZ7#4%tyA|)T&DpzPO&$yaf!g%3=WqsHYNwjx!RmBw~Wx8>q;%-Wbm1GhB|Pdu0Kmo zb=6RO%f2Z;uMl1KWhgT~js;#Zj8J+~^NpQF;X0@R4LMudY7B{A=E9zwb-I=gJZ%xS zZ@*UaD|@|(fXm_Or|w^5ln<~zccZ=YcHo!#&>d8(^tGx6$9;on?)hZzmxEhX9>lEt z4y%XsE$0B9d}70w`jl5ZRvS?qsWB!R5CdqWy*Rw;1U6QPNTn6S8Hc%aZ&QT=-{HRI^>)r}9WCO*yR zu4P}A{`Cy4ih-~EW#3OA74irb`1Jyu zimCxZMfHx2ifZZT!B_Ay_?3M3*CU96?0=e_+kJ_W$|q<~i{BBwm3?Jk);%QFNbMHz z7~rI-3&$y@W;vww~hlFu&P-gr13J$gXHfVP;05?@aM|jo$UBGGtMy{|2Xb} zU4|l0oh=aQW|k8<0G5aRvs{9p`?0#lP;q#6UX5URQ2=g~?)^z&* z1}VgM5yuc9%;0g4coYGHWA=4t?XvFqWb`Qb)4gN6z`n#7-;gBCM#zdT>)U*F`UueA z5^h(&0evT19t&?W2JiY*HdfWUuR;y1afQcNudiDaCor|#%eW9VS<{_QL`w+wU)6Wu zx(MR}#0nhm1Is0ky)_1jras&^yt+sK z&$K6CCzE3i971AarnfZw!AFV1JBK#L1KbxrrmDUHekfoP<*HW@++5`Ozxn8Z&4BCw svDyFPy8o9c0UiaJ@_*lbc}YIBg3zAd25A9a?@FbrsCB>K-s3m_2VL26aR2}S literal 23904 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 X4vw$=i`!WfR0h+~Q7^swDC|D~$*xKh diff --git a/vignettes/images/seq2_design.png b/vignettes/images/seq2_design.png index 195e8b07c307fbee1888d01a96bb6936f674d47b..214f645fdb744000eaad7338a9a70bfd7e797596 100644 GIT binary patch literal 27306 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 YJ`#SAZWD<6z=5Z#sHspP_d59h02YAz?EnA( literal 28928 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 A00000 diff --git a/vignettes/images/seq2_rmse.png b/vignettes/images/seq2_rmse.png index 17d7813bfe3d0d9b66ece4a521820661bfec62dc..db32f7659278d371e43e7a9fe7a77d20914ad5ec 100644 GIT binary patch literal 42378 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 literal 42434 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

hTsT}A;o0Z1I%rkrY~-y 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 literal 37623 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 Te*6xteRt8^+N|32>Tmx6Fgb4m diff --git a/vignettes/images/seq_rmse.png b/vignettes/images/seq_rmse.png index f567c24a76de9716330176ecd322558a08f47fcb..8085020b6d51f7fa6626cd191977ec88fce0991a 100644 GIT binary patch literal 31608 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

1*P)ofRuIYDzyd`x_TDo1$22U!eE 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 literal 31720 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 diff --git a/vignettes/large_scale_emulation.Rmd b/vignettes/large_scale_emulation.Rmd index 1079c6d..ad13f8a 100644 --- a/vignettes/large_scale_emulation.Rmd +++ b/vignettes/large_scale_emulation.Rmd @@ -1,6 +1,6 @@ --- title: > - Large-scale Emulation with the Vecchia approximation + Large-scale Emulation with the Vecchia Approximation output: rmarkdown::html_vignette bibliography: references.bib description: > @@ -101,13 +101,7 @@ plot(m, oos_x, oos_y) ![](https://raw.githubusercontent.com/mingdeyu/dgpsi-R/master/vignettes/images/vecchia_oos.png){width=100%} -Note that `gp` can also be used in Vecchia mode with - -```{r} -m1 <- gp(X, Y, vecchia = TRUE) -``` - -For this problem, we found that the Vecchia GP had half the NRMSE of the DGP but a few more points outside of the confidence intervals. +Note that `gp()` can also operate in Vecchia mode. For this problem, using `m_gp <- gp(X, Y, vecchia = TRUE)`, we found that the GP emulator `m_gp` achieved half the NRMSE of the DGP emulator `m`, but it had a few more points outside the credible intervals. ### Performance tip diff --git a/vignettes/linked_DGP.Rmd b/vignettes/linked_DGP.Rmd index 84817e4..fe38d1b 100644 --- a/vignettes/linked_DGP.Rmd +++ b/vignettes/linked_DGP.Rmd @@ -200,7 +200,6 @@ m_link <- lgp(struc, emulators, activate = FALSE) ``` Processing emulators ... done Linking and synchronizing emulators ... done -Validating the linked emulator ... done ``` and visually check the relationships between emulators by applying `summary()` to `m_link`: diff --git a/vignettes/motorcycle.Rmd b/vignettes/motorcycle.Rmd index 8cefcf1..8d9dbd6 100644 --- a/vignettes/motorcycle.Rmd +++ b/vignettes/motorcycle.Rmd @@ -26,6 +26,7 @@ We start by loading packages: ```{r} library(dgpsi) library(MASS) +library(ggplot2) library(patchwork) ``` @@ -46,7 +47,11 @@ Y <- scale(Y, center = TRUE, scale = TRUE) and plot them: ```{r} -plot(X, Y, pch = 16, cex = 1, xlab = 'Time', ylab = 'Acceleration', cex.axis = 1.3, cex.lab = 1.3) +ggplot(data = data.frame(X = X, Y = Y), aes(x = X, y = Y)) + + geom_point(shape = 16, size = 3) + + labs(x = "Time", y = "Acceleration") + + theme(axis.title = element_text(size = 13), + axis.text = element_text(size = 13)) ``` ![](https://raw.githubusercontent.com/mingdeyu/dgpsi-R/master/vignettes/images/motorcycle_data.png){width=100%} @@ -135,7 +140,7 @@ m_gp <- validate(m_gp, test_x, test_y) ## Saving results to the slot 'oos' in the gp object ... done ``` -Note that using `validate()` before plotting can save subsequent computations compared to simply invoking `plot()`, as `validate()` stores validation results in the emulator objects and plot will use these if it can to avoid calculating them on the fly. Finally, we plot the OOS validation for the GP emulator: +Note that using `validate()` before plotting can save subsequent computations compared to simply invoking `plot()`, as `validate()` stores validation results in the emulator objects and `plot()` will use these, if it can, to avoid calculating them on the fly. Finally, we plot the OOS validation for the GP emulator: ```{r} plot(m_gp, test_x, test_y) diff --git a/vignettes/seq_design.Rmd b/vignettes/seq_design.Rmd index 3cdacd6..eca4a65 100644 --- a/vignettes/seq_design.Rmd +++ b/vignettes/seq_design.Rmd @@ -15,6 +15,20 @@ knitr::opts_chunk$set( echo = TRUE, eval = FALSE ) + +get_article_url <- function(article) { + pkg_version <- as.character(utils::packageVersion("dgpsi")) + + is_dev <- grepl("\\.9000$", pkg_version) + + base_url <- if (is_dev) { + "https://mingdeyu.github.io/dgpsi-R/dev" + } else { + "https://mingdeyu.github.io/dgpsi-R" + } + + paste0(base_url, article) +} ``` This vignette shows how to use `dgpsi` to sequentially enrich a design for adaptive improvement and pruning of an emulator. We choose a DGP for this example, but the methods work equally well on all types of emulator. @@ -51,7 +65,7 @@ ggplot(dat, aes(x1, x2, fill = f)) + geom_tile() + ![](https://raw.githubusercontent.com/mingdeyu/dgpsi-R/master/vignettes/images/seq_fct.png){width=100%} -We can see from the figure above that the synthetic simulator exhibits more fluctuations on the bottom left of its input space whil,e in the top-right part, the simulator shows little variation. +We can see from the figure above that the synthetic simulator exhibits more fluctuations on the bottom left of its input space while in the top-right part, the simulator shows little variation. We now specify a seed with `set_seed()` for reproducibility @@ -89,7 +103,7 @@ m <- dgp(X, Y) ## Imputing ... done ``` -We then specify the boundaries of the input parameter space for `f` so that the sequential design can restrict it's search for new points. +We then specify the boundaries of the input parameter space for `f` so that the sequential design can restrict its search for new points. ```{r} lim_1 <- c(0, 1) @@ -111,30 +125,30 @@ m <- design(m, N = 25, limits = lim, f = f, x_test = validate_x, y_test = valida ## * RMSE: 0.527337 ## Iteration 1: ## - Locating ... done -## * Next design point: 0.868213 0.037359 +## * Next design point: 0.930278 0.033542 ## - Updating and re-fitting ... done ## - Validating ... done -## * RMSE: 0.541914 +## * RMSE: 0.532428 ## ## ... ## ## Iteration 18: ## - Locating ... done -## * Next design point: 0.341178 0.003477 +## * Next design point: 0.706449 0.048681 ## - Updating and re-fitting ... done ## - Pruning 1 node(s) in layer 1 ... done ## - Re-fitting ... done ## - Validating ... done -## * RMSE: 0.107640 +## * RMSE: 0.139819 ## ## ... ## ## Iteration 25: ## - Locating ... done -## * Next design point: 0.168364 0.984091 +## * Next design point: 0.000010 0.483511 ## - Updating and re-fitting ... done ## - Validating ... done -## * RMSE: 0.032189 +## * RMSE: 0.071370 ``` After the first wave we see that 1 GP node is removed from the first layer by automatic pruning of the DGP which leaves only one node in both the first and second layer of the DGP hierarchy respectively. This helps accelerate the inference of the DGP emulator in subsequent waves of the sequential design while maintaining accuracy. We now start the second wave of the sequential design: @@ -145,22 +159,22 @@ m <- design(m, N = 10, limits = lim, f = f, x_test = validate_x, y_test = valida ``` ``` ## Initializing ... done -## * RMSE: 0.032189 +## * RMSE: 0.071370 ## Iteration 1: ## - Locating ... done -## * Next design point: 0.215369 0.384567 +## * Next design point: 0.461239 0.415336 ## - Updating and re-fitting ... done ## - Validating ... done -## * RMSE: 0.017259 +## * RMSE: 0.056827 ## ## ... ## ## Iteration 10: ## - Locating ... done -## * Next design point: 0.198905 0.873454 +## * Next design point: 0.177935 0.459387 ## - Updating and re-fitting ... done ## - Validating ... done -## * RMSE: 0.008300 +## * RMSE: 0.011508 ``` Finally, we resume the second wave with 10 additional iterations: @@ -172,22 +186,22 @@ m <- design(m, N = 10, limits = lim, f = f, x_test = validate_x, y_test = valida ``` ## Iteration 11: ## - Locating ... done -## * Next design point: 0.977752 0.011568 +## * Next design point: 0.029874 0.763962 ## - Updating and re-fitting ... done ## - Validating ... done -## * RMSE: 0.007264 +## * RMSE: 0.014444 ## ## ... ## ## Iteration 20: ## - Locating ... done -## * Next design point: 0.258375 0.028753 +## * Next design point: 0.829788 0.452129 ## - Updating and re-fitting ... done ## - Validating ... done -## * RMSE: 0.003784 +## * RMSE: 0.004783 ``` -Resuming rather than adding an additional wave can be a useful feature, particularly for plotting using `draw`. After the sequential design is done, we can inspect the enriched design by applying `draw()` to `m`: +Resuming rather than adding an additional wave can be a useful feature, particularly for plotting using `draw()`. After the sequential design is done, we can inspect the enriched design by applying `draw()` to `m`: ```{r} draw(m, 'design') @@ -277,7 +291,7 @@ It can be seen from the plot above that with static space-filling designs, the q ### See also -See [`Sequential Design II`](https://mingdeyu.github.io/dgpsi-R/dev/articles/seq_design_2.html) for the sequential design of a bundle of DGP emulators with automatic terminations. +See [Sequential Design II](`r get_article_url("/articles/seq_design_2.html")`) for the sequential design of a bundle of DGP emulators with automatic terminations. ### References diff --git a/vignettes/seq_design_2.Rmd b/vignettes/seq_design_2.Rmd index df26bf9..c7c2217 100644 --- a/vignettes/seq_design_2.Rmd +++ b/vignettes/seq_design_2.Rmd @@ -14,6 +14,20 @@ knitr::opts_chunk$set( echo = TRUE, eval = FALSE ) + +get_article_url <- function(article) { + pkg_version <- as.character(utils::packageVersion("dgpsi")) + + is_dev <- grepl("\\.9000$", pkg_version) + + base_url <- if (is_dev) { + "https://mingdeyu.github.io/dgpsi-R/dev" + } else { + "https://mingdeyu.github.io/dgpsi-R" + } + + paste0(base_url, article) +} ``` This vignette shows how to use the package to sequentially refine a bundle of DGP emulators, each of which emulates an output of a simulator. @@ -40,7 +54,7 @@ f <- function(x) { } ``` -Note that the function is defined in such a way that both its input, `x`, and output are matrices. The following figure shows the true functional forms of the three outputs of the simulator over `[0, 1]`: +Note that the function is defined in such a way that both its input, `x`, and output are matrices. The following figure shows the true functional forms of the three outputs of the simulator over $[0, 1]$: ```{r} dense_x <- seq(0, 1, length = 200) @@ -59,7 +73,7 @@ wrap_plots(list(p1, p2, p3)) + plot_annotation(title = 'Synthetic Simulator') We now specify a seed with `set_seed()` from the package for reproducibility ```{r} -set_seed(99) +set_seed(9999) ``` and generate an initial design with 5 design points using a maximin Latin hypercube sampler: @@ -147,38 +161,32 @@ m <- design(m, N = 10, limits = lim, f = f, x_test = validate_x, y_test = valida ``` ## Initializing ... done -## * RMSE: 0.340553 0.158352 0.019125 +## * RMSE: 0.383722, RMSE: 0.154689, RMSE: 0.008984 ## Iteration 1: ## - Locating ... done -## * Next design point (Emulator1): 0.467905 -## * Next design point (Emulator2): 0.003782 -## * Next design point (Emulator3): 0.997096 -## - Updating and re-fitting ... done -## - Validating ... done -## * RMSE: 0.309701 0.158634 0.006056 -## Iteration 2: -## - Locating ... done -## * Next design point (Emulator1): 0.997773 -## * Next design point (Emulator2): 0.997773 +## * Next design point (Emulator1): 0.207895 +## * Next design point (Emulator2): 0.235873 ## * Next design point (Emulator3): None (target reached) ## - Updating and re-fitting ... done ## - Validating ... done -## * RMSE: 0.291350 0.159032 0.006056 +## * RMSE: 0.337517, RMSE: 0.155087, RMSE: 0.008984 ## ## ... ## ## Iteration 10: ## - Locating ... done -## * Next design point (Emulator1): 0.198829 -## * Next design point (Emulator2): 0.311879 +## * Next design point (Emulator1): 0.430889 +## * Next design point (Emulator2): 0.479682 ## * Next design point (Emulator3): None (target reached) ## - Updating and re-fitting ... done ## - Validating ... done -## * RMSE: 0.190767 0.014075 0.006056 -## Targets are not reached for all emulators at the end of the sequential design. +## * RMSE: 0.120320, RMSE: 0.062365, RMSE: 0.008984 +## Targets not reached for all emulators at the end of the sequential design. ``` -It can be seen that at the second step, the DGP emulator for the third output has already reached the target, so for the rest of the steps no further refinements (i.e., additions of design points to the third DGP emulator) are performed. At the end of the first wave, the DGP emulators for both the first and second outputs have not reached the target yet. At this point, we can proceed to a second wave by repeating the command above, but we show below an alternative way, in which we define an aggregation function that aggregates criterion scores across the three outputs such that the same design points are added to the three emulators at each step (instead of different design points for each emulator). We define the aggregation function `g` that aggregate scores by calculating their weighted average: +It can be seen that at the first step, the DGP emulator for the third output has already reached the target, so no further refinements (i.e., additions of design points to the third DGP emulator) are performed for the remaining steps. By the end of the first wave, the DGP emulators for the first and second outputs have not yet reached the target. At this point, we can proceed to a second wave by repeating the command above. However, we demonstrate an alternative approach below, where we define an aggregation function (applicable to all built-in `method` functions of `design()`). This function aggregates criterion scores across the three outputs, ensuring that the same design points are added to all three emulators at each step, instead of selecting different design points for each emulator. Using the aggregation approach can be advantageous if the different outputs exhibit similar behavior with respect to the input, as it reduces number of simulations required at each iteration. However, if the outputs behave differently, it may be more effective to add distinct design points to each emulator to achieve lower errors more quickly. + +We define the aggregation function `g` to compute a weighted average of the scores: ```{r} g <- function(x, weight){ @@ -189,10 +197,10 @@ g <- function(x, weight){ } ``` -Since the third emulator has already reached the target, we assign zero weights to it and weights of 0.8 and 0.2 to the first and second emulators respectively: +Since the third emulator has already reached the target, we assign zero weights to it and weights of 0.6 and 0.4 to the first and second emulators respectively: ```{r} -weight <- c(0.8, 0.2, 0) +weight <- c(0.6, 0.4, 0) ``` We now pass both the aggregate function, `g()`, and its `weight` argument to `design()` for a second wave of the sequential design with a further 15 steps: @@ -203,38 +211,41 @@ m <- design(m, N = 15, limits = lim, f = f, x_test = validate_x, y_test = valida ``` ``` ## Initializing ... done -## * RMSE: 0.190767 0.014075 0.006056 +## * RMSE: 0.120320, RMSE: 0.062365, RMSE: 0.008984 ## Iteration 1: ## - Locating ... done -## * Next design point (Emulator1): 0.263892 -## * Next design point (Emulator2): 0.263892 +## * Next design point (Emulator1): 0.062821 +## * Next design point (Emulator2): 0.062821 ## * Next design point (Emulator3): None (target reached) ## - Updating and re-fitting ... done ## - Validating ... done -## * RMSE: 0.176961 0.009467 0.006056 -## Iteration 2: +## * RMSE: 0.151946, RMSE: 0.061865, RMSE: 0.008984 +## +## ... +## +## Iteration 6: ## - Locating ... done -## * Next design point (Emulator1): 0.030840 +## * Next design point (Emulator1): 0.233155 ## * Next design point (Emulator2): None (target reached) ## * Next design point (Emulator3): None (target reached) ## - Updating and re-fitting ... done ## - Validating ... done -## * RMSE: 0.203489 0.009467 0.006056 +## * RMSE: 0.014147, RMSE: 0.004410, RMSE: 0.008984 ## ## ... ## -## Iteration 10: +## Iteration 8: ## - Locating ... done -## * Next design point (Emulator1): 0.788265 +## * Next design point (Emulator1): 0.009688 ## * Next design point (Emulator2): None (target reached) ## * Next design point (Emulator3): None (target reached) ## - Updating and re-fitting ... done ## - Validating ... done -## * RMSE: 0.009116 0.009467 0.006056 -## Target reached! The sequential design stops at step 10. +## * RMSE: 0.005913, RMSE: 0.004410, RMSE: 0.008984 +Target reached! Sequential design stopped at step 8. ``` -The first and the second emulators reached the target after iteration 9 and 1 of the second wave, respectively. The sequential design points of the three emulators can be plotted with `draw()`: +The first and the second emulators reached the target after iteration 8 and 5 of the second wave, respectively. The sequential design points of the three emulators can be plotted with `draw()`: ```{r} draw(m, 'design') @@ -242,7 +253,7 @@ draw(m, 'design') ![](https://raw.githubusercontent.com/mingdeyu/dgpsi-R/master/vignettes/images/seq2_design.png){width=100%} -The figure above shows that for the first emulator most of the design points are added below 0.5 whilst for the second emulator most of the design points concentrate around 0.5. For the third emulator, the resulting design is space-filling. It can be seen that these design point distributions are consistent with the functional complexities of the three outputs. +The figure above shows that, for the first emulator, most of the design points are added below 0.5, while for the second emulator, the design points are concentrated around 0.5. For the third emulator, the resulting design is space-filling. These design point distributions align with the functional complexities of the three outputs. However, in the second wave, which uses the aggregation function, additional points are added below 0.5 for the second emulator due to the higher weight assigned to the first emulator. These points may not be necessary for the second output, as its functional behavior does not require further refinement in that region. This observation aligns with the earlier argument that using the aggregation function to add the same design points to outputs with differing behaviors may not always be effective. ## Comparison to DGP emulators with space-filling designs @@ -313,8 +324,8 @@ p ![](https://raw.githubusercontent.com/mingdeyu/dgpsi-R/master/vignettes/images/seq2_rmse.png){width=100%} -It can be seen from the plot above that sequential design is more efficient than batch space filling design, achieving similar RMSE with far fewer design points. +It can be seen from the plot above that sequential design is more efficient than batch space-filling design, achieving similar RMSE with fat fewer design points, particularly for the first emulator in the bundle. ### See also -See [`Sequential Design I`](https://mingdeyu.github.io/dgpsi-R/dev/articles/seq_design.html) for the sequential design and automatic structure simplification of a DGP emulator on a 2D simulator. +See [Sequential Design I](`r get_article_url("/articles/seq_design.html")`) for the sequential design and automatic structure simplification of a DGP emulator on a 2D simulator.

$G>e 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 diff --git a/vignettes/images/seq_comparison.png b/vignettes/images/seq_comparison.png index 965ac0c95725ec141e58b67647ec1b81c386cdc8..fb0aa32d716da377d7550802c22af0c269ed9dd9 100644 GIT binary patch literal 37223 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 b_y_YZ2v@HF?6@&kV7{U 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 Q_XOT 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