Type: | Package |
Title: | Gaussian Process Fitting |
Version: | 0.2.15 |
Maintainer: | Collin Erickson <collinberickson@gmail.com> |
Description: | Fits a Gaussian process model to data. Gaussian processes are commonly used in computer experiments to fit an interpolating model. The model is stored as an 'R6' object and can be easily updated with new data. There are options to run in parallel, and 'Rcpp' has been used to speed up calculations. For more info about Gaussian process software, see Erickson et al. (2018) <doi:10.1016/j.ejor.2017.10.002>. |
License: | GPL-3 |
LinkingTo: | Rcpp, RcppArmadillo |
Imports: | ggplot2, Rcpp, R6, lbfgs |
RoxygenNote: | 7.3.2 |
Depends: | mixopt (> 0.1.0), numDeriv, rmarkdown, tidyr |
Suggests: | ContourFunctions, dplyr, ggrepel, gridExtra, knitr, lhs, MASS, microbenchmark, rlang, splitfngr, testthat |
VignetteBuilder: | knitr |
URL: | https://github.com/CollinErickson/GauPro |
BugReports: | https://github.com/CollinErickson/GauPro/issues |
Encoding: | UTF-8 |
NeedsCompilation: | yes |
Packaged: | 2025-04-08 02:00:26 UTC; colli |
Author: | Collin Erickson [aut, cre] |
Repository: | CRAN |
Date/Publication: | 2025-04-08 10:30:06 UTC |
Kernel product
Description
Kernel product
Usage
## S3 method for class 'GauPro_kernel'
k1 * k2
Arguments
k1 |
First kernel |
k2 |
Second kernel |
Value
Kernel which is product of two kernels
Examples
k1 <- Exponential$new(beta=1)
k2 <- Matern32$new(beta=0)
k <- k1 * k2
k$k(matrix(c(2,1), ncol=1))
Kernel sum
Description
Kernel sum
Usage
## S3 method for class 'GauPro_kernel'
k1 + k2
Arguments
k1 |
First kernel |
k2 |
Second kernel |
Value
Kernel which is sum of two kernels
Examples
k1 <- Exponential$new(beta=1)
k2 <- Matern32$new(beta=0)
k <- k1 + k2
k$k(matrix(c(2,1), ncol=1))
Cubic Kernel R6 class
Description
Cubic Kernel R6 class
Cubic Kernel R6 class
Usage
k_Cubic(
beta,
s2 = 1,
D,
beta_lower = -8,
beta_upper = 6,
beta_est = TRUE,
s2_lower = 1e-08,
s2_upper = 1e+08,
s2_est = TRUE,
useC = TRUE,
isotropic = FALSE
)
Arguments
beta |
Initial beta value |
s2 |
Initial variance |
D |
Number of input dimensions of data |
beta_lower |
Lower bound for beta |
beta_upper |
Upper bound for beta |
beta_est |
Should beta be estimated? |
s2_lower |
Lower bound for s2 |
s2_upper |
Upper bound for s2 |
s2_est |
Should s2 be estimated? |
useC |
Should C code used? Much faster. |
isotropic |
If isotropic then a single beta/theta is used for all dimensions. If not (anisotropic) then a separate beta/beta is used for each dimension. |
Format
R6Class
object.
Value
Object of R6Class
with methods for fitting GP model.
Super classes
GauPro::GauPro_kernel
-> GauPro::GauPro_kernel_beta
-> GauPro_kernel_Cubic
Methods
Public methods
Inherited methods
GauPro::GauPro_kernel$plot()
GauPro::GauPro_kernel_beta$C_dC_dparams()
GauPro::GauPro_kernel_beta$initialize()
GauPro::GauPro_kernel_beta$param_optim_lower()
GauPro::GauPro_kernel_beta$param_optim_start()
GauPro::GauPro_kernel_beta$param_optim_start0()
GauPro::GauPro_kernel_beta$param_optim_upper()
GauPro::GauPro_kernel_beta$s2_from_params()
GauPro::GauPro_kernel_beta$set_params_from_optim()
Method k()
Calculate covariance between two points
Usage
Cubic$k(x, y = NULL, beta = self$beta, s2 = self$s2, params = NULL)
Arguments
x
vector.
y
vector, optional. If excluded, find correlation of x with itself.
beta
Correlation parameters.
s2
Variance parameter.
params
parameters to use instead of beta and s2.
Method kone()
Find covariance of two points
Usage
Cubic$kone(x, y, beta, theta, s2)
Arguments
x
vector
y
vector
beta
correlation parameters on log scale
theta
correlation parameters on regular scale
s2
Variance parameter
Method dC_dparams()
Derivative of covariance with respect to parameters
Usage
Cubic$dC_dparams(params = NULL, X, C_nonug, C, nug)
Arguments
params
Kernel parameters
X
matrix of points in rows
C_nonug
Covariance without nugget added to diagonal
C
Covariance with nugget
nug
Value of nugget
Method dC_dx()
Derivative of covariance with respect to X
Usage
Cubic$dC_dx(XX, X, theta, beta = self$beta, s2 = self$s2)
Arguments
XX
matrix of points
X
matrix of points to take derivative with respect to
theta
Correlation parameters
beta
log of theta
s2
Variance parameter
Method print()
Print this object
Usage
Cubic$print()
Method clone()
The objects of this class are cloneable with this method.
Usage
Cubic$clone(deep = FALSE)
Arguments
deep
Whether to make a deep clone.
Examples
k1 <- Cubic$new(beta=runif(6)-.5)
plot(k1)
n <- 12
x <- matrix(seq(0,1,length.out = n), ncol=1)
y <- sin(2*pi*x) + rnorm(n,0,1e-1)
gp <- GauPro_kernel_model$new(X=x, Z=y, kernel=Cubic$new(1),
parallel=FALSE, restarts=0)
gp$predict(.454)
Exponential Kernel R6 class
Description
Exponential Kernel R6 class
Exponential Kernel R6 class
Usage
k_Exponential(
beta,
s2 = 1,
D,
beta_lower = -8,
beta_upper = 6,
beta_est = TRUE,
s2_lower = 1e-08,
s2_upper = 1e+08,
s2_est = TRUE,
useC = TRUE,
isotropic = FALSE
)
Arguments
beta |
Initial beta value |
s2 |
Initial variance |
D |
Number of input dimensions of data |
beta_lower |
Lower bound for beta |
beta_upper |
Upper bound for beta |
beta_est |
Should beta be estimated? |
s2_lower |
Lower bound for s2 |
s2_upper |
Upper bound for s2 |
s2_est |
Should s2 be estimated? |
useC |
Should C code used? Much faster. |
isotropic |
If isotropic then a single beta/theta is used for all dimensions. If not (anisotropic) then a separate beta/beta is used for each dimension. |
Format
R6Class
object.
Value
Object of R6Class
with methods for fitting GP model.
Super classes
GauPro::GauPro_kernel
-> GauPro::GauPro_kernel_beta
-> GauPro_kernel_Exponential
Methods
Public methods
Inherited methods
GauPro::GauPro_kernel$plot()
GauPro::GauPro_kernel_beta$C_dC_dparams()
GauPro::GauPro_kernel_beta$initialize()
GauPro::GauPro_kernel_beta$param_optim_lower()
GauPro::GauPro_kernel_beta$param_optim_start()
GauPro::GauPro_kernel_beta$param_optim_start0()
GauPro::GauPro_kernel_beta$param_optim_upper()
GauPro::GauPro_kernel_beta$s2_from_params()
GauPro::GauPro_kernel_beta$set_params_from_optim()
Method k()
Calculate covariance between two points
Usage
Exponential$k(x, y = NULL, beta = self$beta, s2 = self$s2, params = NULL)
Arguments
x
vector.
y
vector, optional. If excluded, find correlation of x with itself.
beta
Correlation parameters.
s2
Variance parameter.
params
parameters to use instead of beta and s2.
Method kone()
Find covariance of two points
Usage
Exponential$kone(x, y, beta, theta, s2)
Arguments
x
vector
y
vector
beta
correlation parameters on log scale
theta
correlation parameters on regular scale
s2
Variance parameter
Method dC_dparams()
Derivative of covariance with respect to parameters
Usage
Exponential$dC_dparams(params = NULL, X, C_nonug, C, nug)
Arguments
params
Kernel parameters
X
matrix of points in rows
C_nonug
Covariance without nugget added to diagonal
C
Covariance with nugget
nug
Value of nugget
Method dC_dx()
Derivative of covariance with respect to X
Usage
Exponential$dC_dx(XX, X, theta, beta = self$beta, s2 = self$s2)
Arguments
XX
matrix of points
X
matrix of points to take derivative with respect to
theta
Correlation parameters
beta
log of theta
s2
Variance parameter
Method print()
Print this object
Usage
Exponential$print()
Method clone()
The objects of this class are cloneable with this method.
Usage
Exponential$clone(deep = FALSE)
Arguments
deep
Whether to make a deep clone.
Examples
k1 <- Exponential$new(beta=0)
Factor Kernel R6 class
Description
Initialize kernel object
Usage
k_FactorKernel(
s2 = 1,
D,
nlevels,
xindex,
p_lower = 0,
p_upper = 0.9,
p_est = TRUE,
s2_lower = 1e-08,
s2_upper = 1e+08,
s2_est = TRUE,
p,
useC = TRUE,
offdiagequal = 1 - 1e-06
)
Arguments
s2 |
Initial variance |
D |
Number of input dimensions of data |
nlevels |
Number of levels for the factor |
xindex |
Index of the factor (which column of X) |
p_lower |
Lower bound for p |
p_upper |
Upper bound for p |
p_est |
Should p be estimated? |
s2_lower |
Lower bound for s2 |
s2_upper |
Upper bound for s2 |
s2_est |
Should s2 be estimated? |
p |
Vector of correlations |
useC |
Should C code used? Not implemented for FactorKernel yet. |
offdiagequal |
What should offdiagonal values be set to when the indices are the same? Use to avoid decomposition errors, similar to adding a nugget. |
Format
R6Class
object.
Details
For a factor that has been converted to its indices. Each factor will need a separate kernel.
Value
Object of R6Class
with methods for fitting GP model.
Super class
GauPro::GauPro_kernel
-> GauPro_kernel_FactorKernel
Public fields
p
Parameter for correlation
p_est
Should p be estimated?
p_lower
Lower bound of p
p_upper
Upper bound of p
p_length
length of p
s2
variance
s2_est
Is s2 estimated?
logs2
Log of s2
logs2_lower
Lower bound of logs2
logs2_upper
Upper bound of logs2
xindex
Index of the factor (which column of X)
nlevels
Number of levels for the factor
offdiagequal
What should offdiagonal values be set to when the indices are the same? Use to avoid decomposition errors, similar to adding a nugget.
Methods
Public methods
Inherited methods
Method new()
Initialize kernel object
Usage
FactorKernel$new( s2 = 1, D, nlevels, xindex, p_lower = 0, p_upper = 0.9, p_est = TRUE, s2_lower = 1e-08, s2_upper = 1e+08, s2_est = TRUE, p, useC = TRUE, offdiagequal = 1 - 1e-06 )
Arguments
s2
Initial variance
D
Number of input dimensions of data
nlevels
Number of levels for the factor
xindex
Index of the factor (which column of X)
p_lower
Lower bound for p
p_upper
Upper bound for p
p_est
Should p be estimated?
s2_lower
Lower bound for s2
s2_upper
Upper bound for s2
s2_est
Should s2 be estimated?
p
Vector of correlations
useC
Should C code used? Not implemented for FactorKernel yet.
offdiagequal
What should offdiagonal values be set to when the indices are the same? Use to avoid decomposition errors, similar to adding a nugget.
Method k()
Calculate covariance between two points
Usage
FactorKernel$k(x, y = NULL, p = self$p, s2 = self$s2, params = NULL)
Arguments
x
vector.
y
vector, optional. If excluded, find correlation of x with itself.
p
Correlation parameters.
s2
Variance parameter.
params
parameters to use instead of beta and s2.
Method kone()
Find covariance of two points
Usage
FactorKernel$kone(x, y, p, s2, isdiag = TRUE, offdiagequal = self$offdiagequal)
Arguments
x
vector
y
vector
p
correlation parameters on regular scale
s2
Variance parameter
isdiag
Is this on the diagonal of the covariance?
offdiagequal
What should offdiagonal values be set to when the indices are the same? Use to avoid decomposition errors, similar to adding a nugget.
Method dC_dparams()
Derivative of covariance with respect to parameters
Usage
FactorKernel$dC_dparams(params = NULL, X, C_nonug, C, nug)
Arguments
params
Kernel parameters
X
matrix of points in rows
C_nonug
Covariance without nugget added to diagonal
C
Covariance with nugget
nug
Value of nugget
Method C_dC_dparams()
Calculate covariance matrix and its derivative with respect to parameters
Usage
FactorKernel$C_dC_dparams(params = NULL, X, nug)
Arguments
params
Kernel parameters
X
matrix of points in rows
nug
Value of nugget
Method dC_dx()
Derivative of covariance with respect to X
Usage
FactorKernel$dC_dx(XX, X, ...)
Arguments
XX
matrix of points
X
matrix of points to take derivative with respect to
...
Additional args, not used
Method param_optim_start()
Starting point for parameters for optimization
Usage
FactorKernel$param_optim_start( jitter = F, y, p_est = self$p_est, s2_est = self$s2_est )
Arguments
jitter
Should there be a jitter?
y
Output
p_est
Is p being estimated?
s2_est
Is s2 being estimated?
Method param_optim_start0()
Starting point for parameters for optimization
Usage
FactorKernel$param_optim_start0( jitter = F, y, p_est = self$p_est, s2_est = self$s2_est )
Arguments
jitter
Should there be a jitter?
y
Output
p_est
Is p being estimated?
s2_est
Is s2 being estimated?
Method param_optim_lower()
Lower bounds of parameters for optimization
Usage
FactorKernel$param_optim_lower(p_est = self$p_est, s2_est = self$s2_est)
Arguments
p_est
Is p being estimated?
s2_est
Is s2 being estimated?
Method param_optim_upper()
Upper bounds of parameters for optimization
Usage
FactorKernel$param_optim_upper(p_est = self$p_est, s2_est = self$s2_est)
Arguments
p_est
Is p being estimated?
s2_est
Is s2 being estimated?
Method set_params_from_optim()
Set parameters from optimization output
Usage
FactorKernel$set_params_from_optim( optim_out, p_est = self$p_est, s2_est = self$s2_est )
Arguments
optim_out
Output from optimization
p_est
Is p being estimated?
s2_est
Is s2 being estimated?
Method s2_from_params()
Get s2 from params vector
Usage
FactorKernel$s2_from_params(params, s2_est = self$s2_est)
Arguments
params
parameter vector
s2_est
Is s2 being estimated?
Method print()
Print this object
Usage
FactorKernel$print()
Method clone()
The objects of this class are cloneable with this method.
Usage
FactorKernel$clone(deep = FALSE)
Arguments
deep
Whether to make a deep clone.
Examples
kk <- FactorKernel$new(D=1, nlevels=5, xindex=1)
kk$p <- (1:10)/100
kmat <- outer(1:5, 1:5, Vectorize(kk$k))
kmat
kk$plot()
# 2D, Gaussian on 1D, index on 2nd dim
if (requireNamespace("dplyr", quietly=TRUE)) {
library(dplyr)
n <- 20
X <- cbind(matrix(runif(n,2,6), ncol=1),
matrix(sample(1:2, size=n, replace=TRUE), ncol=1))
X <- rbind(X, c(3.3,3))
n <- nrow(X)
Z <- X[,1] - (X[,2]-1.8)^2 + rnorm(n,0,.1)
tibble(X=X, Z) %>% arrange(X,Z)
k2a <- IgnoreIndsKernel$new(k=Gaussian$new(D=1), ignoreinds = 2)
k2b <- FactorKernel$new(D=2, nlevels=3, xind=2)
k2 <- k2a * k2b
k2b$p_upper <- .65*k2b$p_upper
gp <- GauPro_kernel_model$new(X=X, Z=Z, kernel = k2, verbose = 5,
nug.min=1e-2, restarts=0)
gp$kernel$k1$kernel$beta
gp$kernel$k2$p
gp$kernel$k(x = gp$X)
tibble(X=X, Z=Z, pred=gp$predict(X)) %>% arrange(X, Z)
tibble(X=X[,2], Z) %>% group_by(X) %>% summarize(n=n(), mean(Z))
curve(gp$pred(cbind(matrix(x,ncol=1),1)),2,6, ylim=c(min(Z), max(Z)))
points(X[X[,2]==1,1], Z[X[,2]==1])
curve(gp$pred(cbind(matrix(x,ncol=1),2)), add=TRUE, col=2)
points(X[X[,2]==2,1], Z[X[,2]==2], col=2)
curve(gp$pred(cbind(matrix(x,ncol=1),3)), add=TRUE, col=3)
points(X[X[,2]==3,1], Z[X[,2]==3], col=3)
legend(legend=1:3, fill=1:3, x="topleft")
# See which points affect (5.5, 3 themost)
data.frame(X, cov=gp$kernel$k(X, c(5.5,3))) %>% arrange(-cov)
plot(k2b)
}
GauPro_selector
Description
GauPro_selector
Usage
GauPro(..., type = "Gauss")
Arguments
... |
Pass on |
type |
Type of Gaussian process, or the kind of correlation function. |
Value
A GauPro object
Examples
n <- 12
x <- matrix(seq(0,1,length.out = n), ncol=1)
#y <- sin(2*pi*x) + rnorm(n,0,1e-1)
y <- (2*x) %%1
gp <- GauPro(X=x, Z=y, parallel=FALSE)
Corr Gauss GP using inherited optim
Description
Corr Gauss GP using inherited optim
Corr Gauss GP using inherited optim
Format
R6Class
object.
Value
Object of R6Class
with methods for fitting GP model.
Super class
GauPro::GauPro
-> GauPro_Gauss
Public fields
corr
Name of correlation
theta
Correlation parameters
theta_length
Length of theta
theta_map
Map for theta
theta_short
Short vector for theta
separable
Are the dimensions separable?
Methods
Public methods
Inherited methods
GauPro::GauPro$cool1Dplot()
GauPro::GauPro$deviance_searchnug()
GauPro::GauPro$fit()
GauPro::GauPro$grad_norm()
GauPro::GauPro$initialize_GauPr()
GauPro::GauPro$loglikelihood()
GauPro::GauPro$nugget_update()
GauPro::GauPro$optim()
GauPro::GauPro$optimRestart()
GauPro::GauPro$plot()
GauPro::GauPro$plot1D()
GauPro::GauPro$plot2D()
GauPro::GauPro$pred()
GauPro::GauPro$pred_LOO()
GauPro::GauPro$pred_mean()
GauPro::GauPro$pred_meanC()
GauPro::GauPro$pred_one_matrix()
GauPro::GauPro$pred_var()
GauPro::GauPro$predict()
GauPro::GauPro$sample()
GauPro::GauPro$update()
GauPro::GauPro$update_K_and_estimates()
GauPro::GauPro$update_corrparams()
GauPro::GauPro$update_data()
GauPro::GauPro$update_nugget()
Method new()
Create GauPro object
Usage
GauPro_Gauss$new( X, Z, verbose = 0, separable = T, useC = F, useGrad = T, parallel = FALSE, nug = 1e-06, nug.min = 1e-08, nug.est = T, param.est = T, theta = NULL, theta_short = NULL, theta_map = NULL, ... )
Arguments
X
Matrix whose rows are the input points
Z
Output points corresponding to X
verbose
Amount of stuff to print. 0 is little, 2 is a lot.
separable
Are dimensions separable?
useC
Should C code be used when possible? Should be faster.
useGrad
Should the gradient be used?
parallel
Should code be run in parallel? Make optimization faster but uses more computer resources.
nug
Value for the nugget. The starting value if estimating it.
nug.min
Minimum allowable value for the nugget.
nug.est
Should the nugget be estimated?
param.est
Should the kernel parameters be estimated?
theta
Correlation parameters
theta_short
Correlation parameters, not recommended
theta_map
Correlation parameters, not recommended
...
Not used
Method corr_func()
Correlation function
Usage
GauPro_Gauss$corr_func(x, x2 = NULL, theta = self$theta)
Arguments
x
First point
x2
Second point
theta
Correlation parameter
Method deviance_theta()
Calculate deviance
Usage
GauPro_Gauss$deviance_theta(theta)
Arguments
theta
Correlation parameter
Method deviance_theta_log()
Calculate deviance
Usage
GauPro_Gauss$deviance_theta_log(beta)
Arguments
beta
Correlation parameter on log scale
Method deviance()
Calculate deviance
Usage
GauPro_Gauss$deviance(theta = self$theta, nug = self$nug)
Arguments
theta
Correlation parameter
nug
Nugget
Method deviance_grad()
Calculate deviance gradient
Usage
GauPro_Gauss$deviance_grad( theta = NULL, nug = self$nug, joint = NULL, overwhat = if (self$nug.est) "joint" else "theta" )
Arguments
theta
Correlation parameter
nug
Nugget
joint
Calculate over theta and nug at same time?
overwhat
Calculate over theta and nug at same time?
Method deviance_fngr()
Calculate deviance and gradient at same time
Usage
GauPro_Gauss$deviance_fngr( theta = NULL, nug = NULL, overwhat = if (self$nug.est) "joint" else "theta" )
Arguments
theta
Correlation parameter
nug
Nugget
overwhat
Calculate over theta and nug at same time?
joint
Calculate over theta and nug at same time?
Method deviance_log()
Calculate deviance gradient
Usage
GauPro_Gauss$deviance_log(beta = NULL, nug = self$nug, joint = NULL)
Arguments
beta
Correlation parameter on log scale
nug
Nugget
joint
Calculate over theta and nug at same time?
Method deviance_log2()
Calculate deviance on log scale
Usage
GauPro_Gauss$deviance_log2(beta = NULL, lognug = NULL, joint = NULL)
Arguments
beta
Correlation parameter on log scale
lognug
Log of nugget
joint
Calculate over theta and nug at same time?
Method deviance_log_grad()
Calculate deviance gradient on log scale
Usage
GauPro_Gauss$deviance_log_grad( beta = NULL, nug = self$nug, joint = NULL, overwhat = if (self$nug.est) "joint" else "theta" )
Arguments
beta
Correlation parameter
nug
Nugget
joint
Calculate over theta and nug at same time?
overwhat
Calculate over theta and nug at same time?
Method deviance_log2_grad()
Calculate deviance gradient on log scale
Usage
GauPro_Gauss$deviance_log2_grad( beta = NULL, lognug = NULL, joint = NULL, overwhat = if (self$nug.est) "joint" else "theta" )
Arguments
beta
Correlation parameter
lognug
Log of nugget
joint
Calculate over theta and nug at same time?
overwhat
Calculate over theta and nug at same time?
Method deviance_log2_fngr()
Calculate deviance and gradient on log scale
Usage
GauPro_Gauss$deviance_log2_fngr( beta = NULL, lognug = NULL, joint = NULL, overwhat = if (self$nug.est) "joint" else "theta" )
Arguments
beta
Correlation parameter
lognug
Log of nugget
joint
Calculate over theta and nug at same time?
overwhat
Calculate over theta and nug at same time?
Method get_optim_functions()
Get optimization functions
Usage
GauPro_Gauss$get_optim_functions(param_update, nug.update)
Arguments
param_update
Should the parameters be updated?
nug.update
Should the nugget be updated?
Method param_optim_lower()
Lower bound of params
Usage
GauPro_Gauss$param_optim_lower()
Method param_optim_upper()
Upper bound of params
Usage
GauPro_Gauss$param_optim_upper()
Method param_optim_start()
Start value of params for optim
Usage
GauPro_Gauss$param_optim_start()
Method param_optim_start0()
Start value of params for optim
Usage
GauPro_Gauss$param_optim_start0()
Method param_optim_jitter()
Jitter value of params for optim
Usage
GauPro_Gauss$param_optim_jitter(param_value)
Arguments
param_value
param value to add jitter to
Method update_params()
Update value of params after optim
Usage
GauPro_Gauss$update_params(restarts, param_update, nug.update)
Arguments
restarts
Number of restarts
param_update
Are the params being updated?
nug.update
Is the nugget being updated?
Method grad()
Calculate the gradient
Usage
GauPro_Gauss$grad(XX)
Arguments
XX
Points to calculate grad at
Method grad_dist()
Calculate the gradient distribution
Usage
GauPro_Gauss$grad_dist(XX)
Arguments
XX
Points to calculate grad at
Method hessian()
Calculate the hessian
Usage
GauPro_Gauss$hessian(XX, useC = self$useC)
Arguments
XX
Points to calculate grad at
useC
Should C code be used to speed up?
Method print()
Print this object
Usage
GauPro_Gauss$print()
Method clone()
The objects of this class are cloneable with this method.
Usage
GauPro_Gauss$clone(deep = FALSE)
Arguments
deep
Whether to make a deep clone.
Examples
n <- 12
x <- matrix(seq(0,1,length.out = n), ncol=1)
y <- sin(2*pi*x) + rnorm(n,0,1e-1)
gp <- GauPro_Gauss$new(X=x, Z=y, parallel=FALSE)
Corr Gauss GP using inherited optim
Description
Corr Gauss GP using inherited optim
Corr Gauss GP using inherited optim
Format
R6Class
object.
Value
Object of R6Class
with methods for fitting GP model.
Super classes
GauPro::GauPro
-> GauPro::GauPro_Gauss
-> GauPro_Gauss_LOO
Public fields
use_LOO
Should the leave-one-out correction be used?
tmod
Second GP model fit to the t-values of leave-one-out predictions
Methods
Public methods
Inherited methods
GauPro::GauPro$cool1Dplot()
GauPro::GauPro$deviance_searchnug()
GauPro::GauPro$fit()
GauPro::GauPro$grad_norm()
GauPro::GauPro$initialize_GauPr()
GauPro::GauPro$loglikelihood()
GauPro::GauPro$nugget_update()
GauPro::GauPro$optim()
GauPro::GauPro$optimRestart()
GauPro::GauPro$plot()
GauPro::GauPro$plot1D()
GauPro::GauPro$plot2D()
GauPro::GauPro$pred()
GauPro::GauPro$pred_LOO()
GauPro::GauPro$pred_mean()
GauPro::GauPro$pred_meanC()
GauPro::GauPro$pred_var()
GauPro::GauPro$predict()
GauPro::GauPro$sample()
GauPro::GauPro$update_K_and_estimates()
GauPro::GauPro$update_corrparams()
GauPro::GauPro$update_data()
GauPro::GauPro$update_nugget()
GauPro::GauPro_Gauss$corr_func()
GauPro::GauPro_Gauss$deviance()
GauPro::GauPro_Gauss$deviance_fngr()
GauPro::GauPro_Gauss$deviance_grad()
GauPro::GauPro_Gauss$deviance_log()
GauPro::GauPro_Gauss$deviance_log2()
GauPro::GauPro_Gauss$deviance_log2_fngr()
GauPro::GauPro_Gauss$deviance_log2_grad()
GauPro::GauPro_Gauss$deviance_log_grad()
GauPro::GauPro_Gauss$deviance_theta()
GauPro::GauPro_Gauss$deviance_theta_log()
GauPro::GauPro_Gauss$get_optim_functions()
GauPro::GauPro_Gauss$grad()
GauPro::GauPro_Gauss$grad_dist()
GauPro::GauPro_Gauss$hessian()
GauPro::GauPro_Gauss$initialize()
GauPro::GauPro_Gauss$param_optim_jitter()
GauPro::GauPro_Gauss$param_optim_lower()
GauPro::GauPro_Gauss$param_optim_start()
GauPro::GauPro_Gauss$param_optim_start0()
GauPro::GauPro_Gauss$param_optim_upper()
GauPro::GauPro_Gauss$update_params()
Method update()
Update the model, can be data and parameters
Usage
GauPro_Gauss_LOO$update( Xnew = NULL, Znew = NULL, Xall = NULL, Zall = NULL, restarts = 5, param_update = self$param.est, nug.update = self$nug.est, no_update = FALSE )
Arguments
Xnew
New X matrix
Znew
New Z values
Xall
Matrix with all X values
Zall
All Z values
restarts
Number of optimization restarts
param_update
Should the parameters be updated?
nug.update
Should the nugget be updated?
no_update
Should none of the parameters/nugget be updated?
Method pred_one_matrix()
Predict mean and se for given matrix
Usage
GauPro_Gauss_LOO$pred_one_matrix(XX, se.fit = F, covmat = F)
Arguments
XX
Points to predict at
se.fit
Should the se be returned?
covmat
Should the covariance matrix be returned?
Method print()
Print this object
Usage
GauPro_Gauss_LOO$print()
Method clone()
The objects of this class are cloneable with this method.
Usage
GauPro_Gauss_LOO$clone(deep = FALSE)
Arguments
deep
Whether to make a deep clone.
Examples
n <- 12
x <- matrix(seq(0,1,length.out = n), ncol=1)
y <- sin(2*pi*x) + rnorm(n,0,1e-1)
gp <- GauPro_Gauss_LOO$new(X=x, Z=y, parallel=FALSE)
Class providing object with methods for fitting a GP model
Description
Class providing object with methods for fitting a GP model
Class providing object with methods for fitting a GP model
Format
R6Class
object.
Value
Object of R6Class
with methods for fitting GP model.
Methods
new(X, Z, corr="Gauss", verbose=0, separable=T, useC=F,useGrad=T, parallel=T, nug.est=T, ...)
This method is used to create object of this class with
X
andZ
as the data.update(Xnew=NULL, Znew=NULL, Xall=NULL, Zall=NULL, restarts = 5, param_update = T, nug.update = self$nug.est)
This method updates the model, adding new data if given, then running optimization again.
Public fields
X
Design matrix
Z
Responses
N
Number of data points
D
Dimension of data
nug.min
Minimum value of nugget
nug
Value of the nugget, is estimated unless told otherwise
verbose
0 means nothing printed, 1 prints some, 2 prints most.
useGrad
Should grad be used?
useC
Should C code be used?
parallel
Should the code be run in parallel?
parallel_cores
How many cores are there? It will self detect, do not set yourself.
nug.est
Should the nugget be estimated?
param.est
Should the parameters be estimated?
mu_hat
Mean estimate
s2_hat
Variance estimate
K
Covariance matrix
Kchol
Cholesky factorization of K
Kinv
Inverse of K
Methods
Public methods
Method corr_func()
Correlation function
Usage
GauPro_base$corr_func(...)
Arguments
...
Does nothing
Method new()
Create GauPro object
Usage
GauPro_base$new( X, Z, verbose = 0, useC = F, useGrad = T, parallel = FALSE, nug = 1e-06, nug.min = 1e-08, nug.est = T, param.est = TRUE, ... )
Arguments
X
Matrix whose rows are the input points
Z
Output points corresponding to X
verbose
Amount of stuff to print. 0 is little, 2 is a lot.
useC
Should C code be used when possible? Should be faster.
useGrad
Should the gradient be used?
parallel
Should code be run in parallel? Make optimization faster but uses more computer resources.
nug
Value for the nugget. The starting value if estimating it.
nug.min
Minimum allowable value for the nugget.
nug.est
Should the nugget be estimated?
param.est
Should the kernel parameters be estimated?
...
Not used
Method initialize_GauPr()
Not used
Usage
GauPro_base$initialize_GauPr()
Method fit()
Fit the model, never use this function
Usage
GauPro_base$fit(X, Z)
Arguments
X
Not used
Z
Not used
Method update_K_and_estimates()
Update Covariance matrix and estimated parameters
Usage
GauPro_base$update_K_and_estimates()
Method predict()
Predict mean and se for given matrix
Usage
GauPro_base$predict(XX, se.fit = F, covmat = F, split_speed = T)
Arguments
XX
Points to predict at
se.fit
Should the se be returned?
covmat
Should the covariance matrix be returned?
split_speed
Should the predictions be split up for speed
Method pred()
Predict mean and se for given matrix
Usage
GauPro_base$pred(XX, se.fit = F, covmat = F, split_speed = T)
Arguments
XX
Points to predict at
se.fit
Should the se be returned?
covmat
Should the covariance matrix be returned?
split_speed
Should the predictions be split up for speed
Method pred_one_matrix()
Predict mean and se for given matrix
Usage
GauPro_base$pred_one_matrix(XX, se.fit = F, covmat = F)
Arguments
XX
Points to predict at
se.fit
Should the se be returned?
covmat
Should the covariance matrix be returned?
Method pred_mean()
Predict mean
Usage
GauPro_base$pred_mean(XX, kx.xx)
Arguments
XX
Points to predict at
kx.xx
Covariance matrix between X and XX
Method pred_meanC()
Predict mean using C code
Usage
GauPro_base$pred_meanC(XX, kx.xx)
Arguments
XX
Points to predict at
kx.xx
Covariance matrix between X and XX
Method pred_var()
Predict variance
Usage
GauPro_base$pred_var(XX, kxx, kx.xx, covmat = F)
Arguments
XX
Points to predict at
kxx
Covariance matrix of XX with itself
kx.xx
Covariance matrix between X and XX
covmat
Not used
Method pred_LOO()
Predict at X using leave-one-out. Can use for diagnostics.
Usage
GauPro_base$pred_LOO(se.fit = FALSE)
Arguments
se.fit
Should the standard error and t values be returned?
Method plot()
Plot the object
Usage
GauPro_base$plot(...)
Arguments
...
Parameters passed to cool1Dplot(), plot2D(), or plotmarginal()
Method cool1Dplot()
Make cool 1D plot
Usage
GauPro_base$cool1Dplot( n2 = 20, nn = 201, col2 = "gray", xlab = "x", ylab = "y", xmin = NULL, xmax = NULL, ymin = NULL, ymax = NULL )
Arguments
n2
Number of things to plot
nn
Number of things to plot
col2
color
xlab
x label
ylab
y label
xmin
xmin
xmax
xmax
ymin
ymin
ymax
ymax
Method plot1D()
Make 1D plot
Usage
GauPro_base$plot1D( n2 = 20, nn = 201, col2 = 2, xlab = "x", ylab = "y", xmin = NULL, xmax = NULL, ymin = NULL, ymax = NULL )
Arguments
n2
Number of things to plot
nn
Number of things to plot
col2
Color of the prediction interval
xlab
x label
ylab
y label
xmin
xmin
xmax
xmax
ymin
ymin
ymax
ymax
Method plot2D()
Make 2D plot
Usage
GauPro_base$plot2D()
Method loglikelihood()
Calculate the log likelihood, don't use this
Usage
GauPro_base$loglikelihood(mu = self$mu_hat, s2 = self$s2_hat)
Arguments
mu
Mean vector
s2
s2 param
Method optim()
Optimize parameters
Usage
GauPro_base$optim( restarts = 5, param_update = T, nug.update = self$nug.est, parallel = self$parallel, parallel_cores = self$parallel_cores )
Arguments
restarts
Number of restarts to do
param_update
Should parameters be updated?
nug.update
Should nugget be updated?
parallel
Should restarts be done in parallel?
parallel_cores
If running parallel, how many cores should be used?
Method optimRestart()
Run a single optimization restart.
Usage
GauPro_base$optimRestart( start.par, start.par0, param_update, nug.update, optim.func, optim.grad, optim.fngr, lower, upper, jit = T )
Arguments
start.par
Starting parameters
start.par0
Starting parameters
param_update
Should parameters be updated?
nug.update
Should nugget be updated?
optim.func
Function to optimize.
optim.grad
Gradient of function to optimize.
optim.fngr
Function that returns the function value and its gradient.
lower
Lower bounds for optimization
upper
Upper bounds for optimization
jit
Is jitter being used?
Method update()
Update the model, can be data and parameters
Usage
GauPro_base$update( Xnew = NULL, Znew = NULL, Xall = NULL, Zall = NULL, restarts = 5, param_update = self$param.est, nug.update = self$nug.est, no_update = FALSE )
Arguments
Xnew
New X matrix
Znew
New Z values
Xall
Matrix with all X values
Zall
All Z values
restarts
Number of optimization restarts
param_update
Should the parameters be updated?
nug.update
Should the nugget be updated?
no_update
Should none of the parameters/nugget be updated?
Method update_data()
Update the data
Usage
GauPro_base$update_data(Xnew = NULL, Znew = NULL, Xall = NULL, Zall = NULL)
Arguments
Xnew
New X matrix
Znew
New Z values
Xall
Matrix with all X values
Zall
All Z values
Method update_corrparams()
Update the correlation parameters
Usage
GauPro_base$update_corrparams(...)
Arguments
...
Args passed to update
Method update_nugget()
Update the nugget
Usage
GauPro_base$update_nugget(...)
Arguments
...
Args passed to update
Method deviance_searchnug()
Optimize deviance for nugget
Usage
GauPro_base$deviance_searchnug()
Method nugget_update()
Update the nugget
Usage
GauPro_base$nugget_update()
Method grad_norm()
Calculate the norm of the gradient at XX
Usage
GauPro_base$grad_norm(XX)
Arguments
XX
Points to calculate at
Method sample()
Sample at XX
Usage
GauPro_base$sample(XX, n = 1)
Arguments
XX
Input points to sample at
n
Number of samples
Method print()
Print object
Usage
GauPro_base$print()
Method clone()
The objects of this class are cloneable with this method.
Usage
GauPro_base$clone(deep = FALSE)
Arguments
deep
Whether to make a deep clone.
Examples
#n <- 12
#x <- matrix(seq(0,1,length.out = n), ncol=1)
#y <- sin(2*pi*x) + rnorm(n,0,1e-1)
#gp <- GauPro(X=x, Z=y, parallel=FALSE)
Kernel R6 class
Description
Kernel R6 class
Kernel R6 class
Format
R6Class
object.
Value
Object of R6Class
with methods for fitting GP model.
Public fields
D
Number of input dimensions of data
useC
Should C code be used when possible? Can be much faster.
Methods
Public methods
Method plot()
Plot kernel decay.
Usage
GauPro_kernel$plot(X = NULL)
Arguments
X
Matrix of points the kernel is used with. Some will be used to demonstrate how the covariance changes.
Method print()
Print this object
Usage
GauPro_kernel$print()
Method clone()
The objects of this class are cloneable with this method.
Usage
GauPro_kernel$clone(deep = FALSE)
Arguments
deep
Whether to make a deep clone.
Examples
#k <- GauPro_kernel$new()
Beta Kernel R6 class
Description
Beta Kernel R6 class
Beta Kernel R6 class
Format
R6Class
object.
Details
This is the base structure for a kernel that uses beta = log10(theta) for the lengthscale parameter. It standardizes the params because they all use the same underlying structure. Kernels that inherit this only need to implement kone and dC_dparams.
Value
Object of R6Class
with methods for fitting GP model.
Super class
GauPro::GauPro_kernel
-> GauPro_kernel_beta
Public fields
beta
Parameter for correlation. Log of theta.
beta_est
Should beta be estimated?
beta_lower
Lower bound of beta
beta_upper
Upper bound of beta
beta_length
length of beta
s2
variance
logs2
Log of s2
logs2_lower
Lower bound of logs2
logs2_upper
Upper bound of logs2
s2_est
Should s2 be estimated?
useC
Should C code used? Much faster.
isotropic
If isotropic then a single beta/theta is used for all dimensions. If not (anisotropic) then a separate beta/beta is used for each dimension.
Methods
Public methods
Inherited methods
Method new()
Initialize kernel object
Usage
GauPro_kernel_beta$new( beta, s2 = 1, D, beta_lower = -8, beta_upper = 6, beta_est = TRUE, s2_lower = 1e-08, s2_upper = 1e+08, s2_est = TRUE, useC = TRUE, isotropic = FALSE )
Arguments
beta
Initial beta value
s2
Initial variance
D
Number of input dimensions of data
beta_lower
Lower bound for beta
beta_upper
Upper bound for beta
beta_est
Should beta be estimated?
s2_lower
Lower bound for s2
s2_upper
Upper bound for s2
s2_est
Should s2 be estimated?
useC
Should C code used? Much faster.
isotropic
If isotropic then a single beta/theta is used for all dimensions. If not (anisotropic) then a separate beta/beta is used for each dimension.
Method k()
Calculate covariance between two points
Usage
GauPro_kernel_beta$k( x, y = NULL, beta = self$beta, s2 = self$s2, params = NULL )
Arguments
x
vector.
y
vector, optional. If excluded, find correlation of x with itself.
beta
Correlation parameters. Log of theta.
s2
Variance parameter.
params
parameters to use instead of beta and s2.
Method kone()
Calculate covariance between two points
Usage
GauPro_kernel_beta$kone(x, y, beta, theta, s2)
Arguments
x
vector.
y
vector.
beta
Correlation parameters. Log of theta.
theta
Correlation parameters.
s2
Variance parameter.
Method param_optim_start()
Starting point for parameters for optimization
Usage
GauPro_kernel_beta$param_optim_start( jitter = F, y, beta_est = self$beta_est, s2_est = self$s2_est )
Arguments
jitter
Should there be a jitter?
y
Output
beta_est
Is beta being estimated?
s2_est
Is s2 being estimated?
Method param_optim_start0()
Starting point for parameters for optimization
Usage
GauPro_kernel_beta$param_optim_start0( jitter = F, y, beta_est = self$beta_est, s2_est = self$s2_est )
Arguments
jitter
Should there be a jitter?
y
Output
beta_est
Is beta being estimated?
s2_est
Is s2 being estimated?
Method param_optim_lower()
Upper bounds of parameters for optimization
Usage
GauPro_kernel_beta$param_optim_lower( beta_est = self$beta_est, s2_est = self$s2_est )
Arguments
beta_est
Is beta being estimated?
s2_est
Is s2 being estimated?
p_est
Is p being estimated?
Method param_optim_upper()
Upper bounds of parameters for optimization
Usage
GauPro_kernel_beta$param_optim_upper( beta_est = self$beta_est, s2_est = self$s2_est )
Arguments
beta_est
Is beta being estimated?
s2_est
Is s2 being estimated?
p_est
Is p being estimated?
Method set_params_from_optim()
Set parameters from optimization output
Usage
GauPro_kernel_beta$set_params_from_optim( optim_out, beta_est = self$beta_est, s2_est = self$s2_est )
Arguments
optim_out
Output from optimization
beta_est
Is beta being estimated?
s2_est
Is s2 being estimated?
Method C_dC_dparams()
Calculate covariance matrix and its derivative with respect to parameters
Usage
GauPro_kernel_beta$C_dC_dparams(params = NULL, X, nug)
Arguments
params
Kernel parameters
X
matrix of points in rows
nug
Value of nugget
Method s2_from_params()
Get s2 from params vector
Usage
GauPro_kernel_beta$s2_from_params(params, s2_est = self$s2_est)
Arguments
params
parameter vector
s2_est
Is s2 being estimated?
Method clone()
The objects of this class are cloneable with this method.
Usage
GauPro_kernel_beta$clone(deep = FALSE)
Arguments
deep
Whether to make a deep clone.
Examples
#k1 <- Matern52$new(beta=0)
Gaussian process model with kernel
Description
Class providing object with methods for fitting a GP model. Allows for different kernel and trend functions to be used. The object is an R6 object with many methods that can be called.
'gpkm()' is equivalent to 'GauPro_kernel_model$new()', but is easier to type and gives parameter autocomplete suggestions.
Format
R6Class
object.
Value
Object of R6Class
with methods for fitting GP model.
Methods
new(X, Z, corr="Gauss", verbose=0, separable=T, useC=F, useGrad=T, parallel=T, nug.est=T, ...)
-
This method is used to create object of this class with
X
andZ
as the data. update(Xnew=NULL, Znew=NULL, Xall=NULL, Zall=NULL, restarts = 0, param_update = T, nug.update = self$nug.est)
This method updates the model, adding new data if given, then running optimization again.
Public fields
X
Design matrix
Z
Responses
N
Number of data points
D
Dimension of data
nug.min
Minimum value of nugget
nug.max
Maximum value of the nugget.
nug.est
Should the nugget be estimated?
nug
Value of the nugget, is estimated unless told otherwise
param.est
Should the kernel parameters be estimated?
verbose
0 means nothing printed, 1 prints some, 2 prints most.
useGrad
Should grad be used?
useC
Should C code be used?
parallel
Should the code be run in parallel?
parallel_cores
How many cores are there? By default it detects.
kernel
The kernel to determine the correlations.
trend
The trend.
mu_hatX
Predicted trend value for each point in X.
s2_hat
Variance parameter estimate
K
Covariance matrix
Kchol
Cholesky factorization of K
Kinv
Inverse of K
Kinv_Z_minus_mu_hatX
K inverse times Z minus the predicted trend at X.
restarts
Number of optimization restarts to do when updating.
normalize
Should the inputs be normalized?
normalize_mean
If using normalize, the mean of each column.
normalize_sd
If using normalize, the standard deviation of each column.
optimizer
What algorithm should be used to optimize the parameters.
track_optim
Should it track the parameters evaluated while optimizing?
track_optim_inputs
If track_optim is TRUE, this will keep a list of parameters evaluated. View them with plot_track_optim.
track_optim_dev
If track_optim is TRUE, this will keep a vector of the deviance values calculated while optimizing parameters. View them with plot_track_optim.
formula
Formula
convert_formula_data
List for storing data to convert data using the formula
Methods
Public methods
Method new()
Create kernel_model object
Usage
GauPro_kernel_model$new( X, Z, kernel, trend, verbose = 0, useC = TRUE, useGrad = TRUE, parallel = FALSE, parallel_cores = "detect", nug = 1e-06, nug.min = 1e-08, nug.max = 100, nug.est = TRUE, param.est = TRUE, restarts = 0, normalize = FALSE, optimizer = "L-BFGS-B", track_optim = FALSE, formula, data, ... )
Arguments
X
Matrix whose rows are the input points
Z
Output points corresponding to X
kernel
The kernel to use. E.g., Gaussian$new().
trend
Trend to use. E.g., trend_constant$new().
verbose
Amount of stuff to print. 0 is little, 2 is a lot.
useC
Should C code be used when possible? Should be faster.
useGrad
Should the gradient be used?
parallel
Should code be run in parallel? Make optimization faster but uses more computer resources.
parallel_cores
When using parallel, how many cores should be used?
nug
Value for the nugget. The starting value if estimating it.
nug.min
Minimum allowable value for the nugget.
nug.max
Maximum allowable value for the nugget.
nug.est
Should the nugget be estimated?
param.est
Should the kernel parameters be estimated?
restarts
How many optimization restarts should be used when estimating parameters?
normalize
Should the data be normalized?
optimizer
What algorithm should be used to optimize the parameters.
track_optim
Should it track the parameters evaluated while optimizing?
formula
Formula for the data if giving in a data frame.
data
Data frame of data. Use in conjunction with formula.
...
Not used
Method fit()
Fit model
Usage
GauPro_kernel_model$fit(X, Z)
Arguments
X
Inputs
Z
Outputs
Method update_K_and_estimates()
Update covariance matrix and estimates
Usage
GauPro_kernel_model$update_K_and_estimates()
Method predict()
Predict for a matrix of points
Usage
GauPro_kernel_model$predict( XX, se.fit = F, covmat = F, split_speed = F, mean_dist = FALSE, return_df = TRUE )
Arguments
XX
points to predict at
se.fit
Should standard error be returned?
covmat
Should covariance matrix be returned?
split_speed
Should the matrix be split for faster predictions?
mean_dist
Should the error be for the distribution of the mean?
return_df
When returning se.fit, should it be returned in a data frame? Otherwise it will be a list, which is faster.
Method pred()
Predict for a matrix of points
Usage
GauPro_kernel_model$pred( XX, se.fit = F, covmat = F, split_speed = F, mean_dist = FALSE, return_df = TRUE )
Arguments
XX
points to predict at
se.fit
Should standard error be returned?
covmat
Should covariance matrix be returned?
split_speed
Should the matrix be split for faster predictions?
mean_dist
Should the error be for the distribution of the mean?
return_df
When returning se.fit, should it be returned in a data frame? Otherwise it will be a list, which is faster.
Method pred_one_matrix()
Predict for a matrix of points
Usage
GauPro_kernel_model$pred_one_matrix( XX, se.fit = F, covmat = F, return_df = FALSE, mean_dist = FALSE )
Arguments
XX
points to predict at
se.fit
Should standard error be returned?
covmat
Should covariance matrix be returned?
return_df
When returning se.fit, should it be returned in a data frame? Otherwise it will be a list, which is faster.
mean_dist
Should the error be for the distribution of the mean?
Method pred_mean()
Predict mean
Usage
GauPro_kernel_model$pred_mean(XX, kx.xx)
Arguments
XX
points to predict at
kx.xx
Covariance of X with XX
Method pred_meanC()
Predict mean using C
Usage
GauPro_kernel_model$pred_meanC(XX, kx.xx)
Arguments
XX
points to predict at
kx.xx
Covariance of X with XX
Method pred_var()
Predict variance
Usage
GauPro_kernel_model$pred_var(XX, kxx, kx.xx, covmat = F)
Arguments
XX
points to predict at
kxx
Covariance of XX with itself
kx.xx
Covariance of X with XX
covmat
Should the covariance matrix be returned?
Method pred_LOO()
leave one out predictions
Usage
GauPro_kernel_model$pred_LOO(se.fit = FALSE)
Arguments
se.fit
Should standard errors be included?
Method pred_var_after_adding_points()
Predict variance after adding points
Usage
GauPro_kernel_model$pred_var_after_adding_points(add_points, pred_points)
Arguments
add_points
Points to add
pred_points
Points to predict at
Method pred_var_after_adding_points_sep()
Predict variance reductions after adding each point separately
Usage
GauPro_kernel_model$pred_var_after_adding_points_sep(add_points, pred_points)
Arguments
add_points
Points to add
pred_points
Points to predict at
Method pred_var_reduction()
Predict variance reduction for a single point
Usage
GauPro_kernel_model$pred_var_reduction(add_point, pred_points)
Arguments
add_point
Point to add
pred_points
Points to predict at
Method pred_var_reductions()
Predict variance reductions
Usage
GauPro_kernel_model$pred_var_reductions(add_points, pred_points)
Arguments
add_points
Points to add
pred_points
Points to predict at
Method plot()
Plot the object
Usage
GauPro_kernel_model$plot(...)
Arguments
...
Parameters passed to cool1Dplot(), plot2D(), or plotmarginal()
Method cool1Dplot()
Make cool 1D plot
Usage
GauPro_kernel_model$cool1Dplot( n2 = 20, nn = 201, col2 = "green", xlab = "x", ylab = "y", xmin = NULL, xmax = NULL, ymin = NULL, ymax = NULL, gg = TRUE )
Arguments
n2
Number of things to plot
nn
Number of things to plot
col2
color
xlab
x label
ylab
y label
xmin
xmin
xmax
xmax
ymin
ymin
ymax
ymax
gg
Should ggplot2 be used to make plot?
Method plot1D()
Make 1D plot
Usage
GauPro_kernel_model$plot1D( n2 = 20, nn = 201, col2 = 2, col3 = 3, xlab = "x", ylab = "y", xmin = NULL, xmax = NULL, ymin = NULL, ymax = NULL, gg = TRUE )
Arguments
n2
Number of things to plot
nn
Number of things to plot
col2
Color of the prediction interval
col3
Color of the interval for the mean
xlab
x label
ylab
y label
xmin
xmin
xmax
xmax
ymin
ymin
ymax
ymax
gg
Should ggplot2 be used to make plot?
Method plot2D()
Make 2D plot
Usage
GauPro_kernel_model$plot2D(se = FALSE, mean = TRUE, horizontal = TRUE, n = 50)
Arguments
se
Should the standard error of prediction be plotted?
mean
Should the mean be plotted?
horizontal
If plotting mean and se, should they be next to each other?
n
Number of points along each dimension
Method plotmarginal()
Plot marginal. For each input, hold all others at a constant value and adjust it along it's range to see how the prediction changes.
Usage
GauPro_kernel_model$plotmarginal(npt = 5, ncol = NULL)
Arguments
npt
Number of lines to make. Each line represents changing a single variable while holding the others at the same values.
ncol
Number of columnsfor the plot
Method plotmarginalrandom()
Plot marginal prediction for random sample of inputs
Usage
GauPro_kernel_model$plotmarginalrandom(npt = 100, ncol = NULL)
Arguments
npt
Number of random points to evaluate
ncol
Number of columns in the plot
Method plotkernel()
Plot the kernel
Usage
GauPro_kernel_model$plotkernel(X = self$X)
Arguments
X
X matrix for kernel plot
Method plotLOO()
Plot leave one out predictions for design points
Usage
GauPro_kernel_model$plotLOO()
Method plot_track_optim()
If track_optim, this will plot the parameters in the order they were evaluated.
Usage
GauPro_kernel_model$plot_track_optim(minindex = NULL)
Arguments
minindex
Minimum index to plot.
Method loglikelihood()
Calculate loglikelihood of parameters
Usage
GauPro_kernel_model$loglikelihood(mu = self$mu_hatX, s2 = self$s2_hat)
Arguments
mu
Mean parameters
s2
Variance parameter
Method AIC()
AIC (Akaike information criterion)
Usage
GauPro_kernel_model$AIC()
Method get_optim_functions()
Get optimization functions
Usage
GauPro_kernel_model$get_optim_functions(param_update, nug.update)
Arguments
param_update
Should parameters be updated?
nug.update
Should nugget be updated?
Method param_optim_lower()
Lower bounds of parameters for optimization
Usage
GauPro_kernel_model$param_optim_lower(nug.update)
Arguments
nug.update
Is the nugget being updated?
Method param_optim_upper()
Upper bounds of parameters for optimization
Usage
GauPro_kernel_model$param_optim_upper(nug.update)
Arguments
nug.update
Is the nugget being updated?
Method param_optim_start()
Starting point for parameters for optimization
Usage
GauPro_kernel_model$param_optim_start(nug.update, jitter)
Arguments
nug.update
Is nugget being updated?
jitter
Should there be a jitter?
Method param_optim_start0()
Starting point for parameters for optimization
Usage
GauPro_kernel_model$param_optim_start0(nug.update, jitter)
Arguments
nug.update
Is nugget being updated?
jitter
Should there be a jitter?
Method param_optim_start_mat()
Get matrix for starting points of optimization
Usage
GauPro_kernel_model$param_optim_start_mat(restarts, nug.update, l)
Arguments
restarts
Number of restarts to use
nug.update
Is nugget being updated?
l
Not used
Method optim()
Optimize parameters
Usage
GauPro_kernel_model$optim( restarts = self$restarts, n0 = 5 * self$D, param_update = T, nug.update = self$nug.est, parallel = self$parallel, parallel_cores = self$parallel_cores )
Arguments
restarts
Number of restarts to do
n0
This many starting parameters are chosen and evaluated. The best ones are used as the starting points for optimization.
param_update
Should parameters be updated?
nug.update
Should nugget be updated?
parallel
Should restarts be done in parallel?
parallel_cores
If running parallel, how many cores should be used?
Method optimRestart()
Run a single optimization restart.
Usage
GauPro_kernel_model$optimRestart( start.par, start.par0, param_update, nug.update, optim.func, optim.grad, optim.fngr, lower, upper, jit = T, start.par.i )
Arguments
start.par
Starting parameters
start.par0
Starting parameters
param_update
Should parameters be updated?
nug.update
Should nugget be updated?
optim.func
Function to optimize.
optim.grad
Gradient of function to optimize.
optim.fngr
Function that returns the function value and its gradient.
lower
Lower bounds for optimization
upper
Upper bounds for optimization
jit
Is jitter being used?
start.par.i
Starting parameters for this restart
Method update()
Update the model. Should only give in (Xnew and Znew) or (Xall and Zall).
Usage
GauPro_kernel_model$update( Xnew = NULL, Znew = NULL, Xall = NULL, Zall = NULL, restarts = self$restarts, param_update = self$param.est, nug.update = self$nug.est, no_update = FALSE )
Arguments
Xnew
New X values to add.
Znew
New Z values to add.
Xall
All X values to be used. Will replace existing X.
Zall
All Z values to be used. Will replace existing Z.
restarts
Number of optimization restarts.
param_update
Are the parameters being updated?
nug.update
Is the nugget being updated?
no_update
Are no parameters being updated?
Method update_fast()
Fast update when adding new data.
Usage
GauPro_kernel_model$update_fast(Xnew = NULL, Znew = NULL)
Arguments
Xnew
New X values to add.
Znew
New Z values to add.
Method update_params()
Update the parameters.
Usage
GauPro_kernel_model$update_params(..., nug.update)
Arguments
...
Passed to optim.
nug.update
Is the nugget being updated?
Method update_data()
Update the data. Should only give in (Xnew and Znew) or (Xall and Zall).
Usage
GauPro_kernel_model$update_data( Xnew = NULL, Znew = NULL, Xall = NULL, Zall = NULL )
Arguments
Xnew
New X values to add.
Znew
New Z values to add.
Xall
All X values to be used. Will replace existing X.
Zall
All Z values to be used. Will replace existing Z.
Method update_corrparams()
Update correlation parameters. Not the nugget.
Usage
GauPro_kernel_model$update_corrparams(...)
Arguments
...
Passed to self$update()
Method update_nugget()
Update nugget Not the correlation parameters.
Usage
GauPro_kernel_model$update_nugget(...)
Arguments
...
Passed to self$update()
Method deviance()
Calculate the deviance.
Usage
GauPro_kernel_model$deviance( params = NULL, nug = self$nug, nuglog, trend_params = NULL )
Arguments
params
Kernel parameters
nug
Nugget
nuglog
Log of nugget. Only give in nug or nuglog.
trend_params
Parameters for the trend.
Method deviance_grad()
Calculate the gradient of the deviance.
Usage
GauPro_kernel_model$deviance_grad( params = NULL, kernel_update = TRUE, X = self$X, nug = self$nug, nug.update, nuglog, trend_params = NULL, trend_update = TRUE )
Arguments
params
Kernel parameters
kernel_update
Is the kernel being updated? If yes, it's part of the gradient.
X
Input matrix
nug
Nugget
nug.update
Is the nugget being updated? If yes, it's part of the gradient.
nuglog
Log of the nugget.
trend_params
Trend parameters
trend_update
Is the trend being updated? If yes, it's part of the gradient.
Method deviance_fngr()
Calculate the deviance along with its gradient.
Usage
GauPro_kernel_model$deviance_fngr( params = NULL, kernel_update = TRUE, X = self$X, nug = self$nug, nug.update, nuglog, trend_params = NULL, trend_update = TRUE )
Arguments
params
Kernel parameters
kernel_update
Is the kernel being updated? If yes, it's part of the gradient.
X
Input matrix
nug
Nugget
nug.update
Is the nugget being updated? If yes, it's part of the gradient.
nuglog
Log of the nugget.
trend_params
Trend parameters
trend_update
Is the trend being updated? If yes, it's part of the gradient.
Method grad()
Calculate gradient
Usage
GauPro_kernel_model$grad(XX, X = self$X, Z = self$Z)
Arguments
XX
points to calculate at
X
X points
Z
output points
Method grad_norm()
Calculate norm of gradient
Usage
GauPro_kernel_model$grad_norm(XX)
Arguments
XX
points to calculate at
Method grad_dist()
Calculate distribution of gradient
Usage
GauPro_kernel_model$grad_dist(XX)
Arguments
XX
points to calculate at
Method grad_sample()
Sample gradient at points
Usage
GauPro_kernel_model$grad_sample(XX, n)
Arguments
XX
points to calculate at
n
Number of samples
Method grad_norm2_mean()
Calculate mean of gradient norm squared
Usage
GauPro_kernel_model$grad_norm2_mean(XX)
Arguments
XX
points to calculate at
Method grad_norm2_dist()
Calculate distribution of gradient norm squared
Usage
GauPro_kernel_model$grad_norm2_dist(XX)
Arguments
XX
points to calculate at
Method grad_norm2_sample()
Get samples of squared norm of gradient
Usage
GauPro_kernel_model$grad_norm2_sample(XX, n)
Arguments
XX
points to sample at
n
Number of samples
Method hessian()
Calculate Hessian
Usage
GauPro_kernel_model$hessian(XX, as_array = FALSE)
Arguments
XX
Points to calculate Hessian at
as_array
Should result be an array?
Method gradpredvar()
Calculate gradient of the predictive variance
Usage
GauPro_kernel_model$gradpredvar(XX)
Arguments
XX
points to calculate at
Method sample()
Sample at rows of XX
Usage
GauPro_kernel_model$sample(XX, n = 1)
Arguments
XX
Input matrix
n
Number of samples
Method optimize_fn()
Optimize any function of the GP prediction over the valid input space. If there are inputs that should only be optimized over a discrete set of values, specify 'mopar' for all parameters. Factor inputs will be handled automatically.
Usage
GauPro_kernel_model$optimize_fn( fn = NULL, lower = apply(self$X, 2, min), upper = apply(self$X, 2, max), n0 = 100, minimize = FALSE, fn_args = NULL, gr = NULL, fngr = NULL, mopar = NULL, groupeval = FALSE )
Arguments
fn
Function to optimize
lower
Lower bounds to search within
upper
Upper bounds to search within
n0
Number of points to evaluate in initial stage
minimize
Are you trying to minimize the output?
fn_args
Arguments to pass to the function fn.
gr
Gradient of function to optimize.
fngr
Function that returns list with names elements "fn" for the function value and "gr" for the gradient. Useful when it is slow to evaluate and fn/gr would duplicate calculations if done separately.
mopar
List of parameters using mixopt
groupeval
Can a matrix of points be evaluated? Otherwise just a single point at a time.
Method EI()
Calculate expected improvement
Usage
GauPro_kernel_model$EI(x, minimize = FALSE, eps = 0, return_grad = FALSE, ...)
Arguments
x
Vector to calculate EI of, or matrix for whose rows it should be calculated
minimize
Are you trying to minimize the output?
eps
Exploration parameter
return_grad
Should the gradient be returned?
...
Additional args
Method maxEI()
Find the point that maximizes the expected improvement. If there are inputs that should only be optimized over a discrete set of values, specify 'mopar' for all parameters.
Usage
GauPro_kernel_model$maxEI( lower = apply(self$X, 2, min), upper = apply(self$X, 2, max), n0 = 100, minimize = FALSE, eps = 0, dontconvertback = FALSE, EItype = "corrected", mopar = NULL, usegrad = FALSE )
Arguments
lower
Lower bounds to search within
upper
Upper bounds to search within
n0
Number of points to evaluate in initial stage
minimize
Are you trying to minimize the output?
eps
Exploration parameter
dontconvertback
If data was given in with a formula, should it converted back to the original scale?
EItype
Type of EI to calculate. One of "EI", "Augmented", or "Corrected"
mopar
List of parameters using mixopt
usegrad
Should the gradient be used when optimizing? Can make it faster.
Method maxqEI()
Find the multiple points that maximize the expected improvement. Currently only implements the constant liar method.
Usage
GauPro_kernel_model$maxqEI( npoints, method = "pred", lower = apply(self$X, 2, min), upper = apply(self$X, 2, max), n0 = 100, minimize = FALSE, eps = 0, EItype = "corrected", dontconvertback = FALSE, mopar = NULL )
Arguments
npoints
Number of points to add
method
Method to use for setting the output value for the points chosen as a placeholder. Can be one of: "CL" for constant liar, which uses the best value seen yet; or "pred", which uses the predicted value, also called the Believer method in literature.
lower
Lower bounds to search within
upper
Upper bounds to search within
n0
Number of points to evaluate in initial stage
minimize
Are you trying to minimize the output?
eps
Exploration parameter
EItype
Type of EI to calculate. One of "EI", "Augmented", or "Corrected"
dontconvertback
If data was given in with a formula, should it converted back to the original scale?
mopar
List of parameters using mixopt
Method KG()
Calculate Knowledge Gradient
Usage
GauPro_kernel_model$KG(x, minimize = FALSE, eps = 0, current_extreme = NULL)
Arguments
x
Point to calculate at
minimize
Is the objective to minimize?
eps
Exploration parameter
current_extreme
Used for recursive solving
Method AugmentedEI()
Calculated Augmented EI
Usage
GauPro_kernel_model$AugmentedEI( x, minimize = FALSE, eps = 0, return_grad = F, ... )
Arguments
x
Vector to calculate EI of, or matrix for whose rows it should be calculated
minimize
Are you trying to minimize the output?
eps
Exploration parameter
return_grad
Should the gradient be returned?
...
Additional args
f
The reference max, user shouldn't change this.
Method CorrectedEI()
Calculated Augmented EI
Usage
GauPro_kernel_model$CorrectedEI( x, minimize = FALSE, eps = 0, return_grad = F, ... )
Arguments
x
Vector to calculate EI of, or matrix for whose rows it should be calculated
minimize
Are you trying to minimize the output?
eps
Exploration parameter
return_grad
Should the gradient be returned?
...
Additional args
Method importance()
Feature importance
Usage
GauPro_kernel_model$importance(plot = TRUE, print_bars = TRUE)
Arguments
plot
Should the plot be made?
print_bars
Should the importances be printed as bars?
Method print()
Print this object
Usage
GauPro_kernel_model$print()
Method summary()
Summary
Usage
GauPro_kernel_model$summary(...)
Arguments
...
Additional arguments
Method clone()
The objects of this class are cloneable with this method.
Usage
GauPro_kernel_model$clone(deep = FALSE)
Arguments
deep
Whether to make a deep clone.
References
https://scikit-learn.org/stable/modules/permutation_importance.html#id2
Examples
n <- 12
x <- matrix(seq(0,1,length.out = n), ncol=1)
y <- sin(2*pi*x) + rnorm(n,0,1e-1)
gp <- GauPro_kernel_model$new(X=x, Z=y, kernel="gauss")
gp$predict(.454)
gp$plot1D()
gp$cool1Dplot()
n <- 200
d <- 7
x <- matrix(runif(n*d), ncol=d)
f <- function(x) {x[1]*x[2] + cos(x[3]) + x[4]^2}
y <- apply(x, 1, f)
gp <- GauPro_kernel_model$new(X=x, Z=y, kernel=Gaussian)
Corr Gauss GP using inherited optim
Description
Corr Gauss GP using inherited optim
Corr Gauss GP using inherited optim
Format
R6Class
object.
Value
Object of R6Class
with methods for fitting GP model.
Super class
GauPro::GauPro
-> GauPro_kernel_model_LOO
Public fields
tmod
A second GP model for the t-values of leave-one-out predictions
use_LOO
Should the leave-one-out error corrections be used?
Methods
Public methods
Inherited methods
GauPro::GauPro$AIC()
GauPro::GauPro$AugmentedEI()
GauPro::GauPro$CorrectedEI()
GauPro::GauPro$EI()
GauPro::GauPro$KG()
GauPro::GauPro$cool1Dplot()
GauPro::GauPro$deviance()
GauPro::GauPro$deviance_fngr()
GauPro::GauPro$deviance_grad()
GauPro::GauPro$fit()
GauPro::GauPro$get_optim_functions()
GauPro::GauPro$grad()
GauPro::GauPro$grad_dist()
GauPro::GauPro$grad_norm()
GauPro::GauPro$grad_norm2_dist()
GauPro::GauPro$grad_norm2_mean()
GauPro::GauPro$grad_norm2_sample()
GauPro::GauPro$grad_sample()
GauPro::GauPro$gradpredvar()
GauPro::GauPro$hessian()
GauPro::GauPro$importance()
GauPro::GauPro$loglikelihood()
GauPro::GauPro$maxEI()
GauPro::GauPro$maxqEI()
GauPro::GauPro$optim()
GauPro::GauPro$optimRestart()
GauPro::GauPro$optimize_fn()
GauPro::GauPro$param_optim_lower()
GauPro::GauPro$param_optim_start()
GauPro::GauPro$param_optim_start0()
GauPro::GauPro$param_optim_start_mat()
GauPro::GauPro$param_optim_upper()
GauPro::GauPro$plot()
GauPro::GauPro$plot1D()
GauPro::GauPro$plot2D()
GauPro::GauPro$plotLOO()
GauPro::GauPro$plot_track_optim()
GauPro::GauPro$plotkernel()
GauPro::GauPro$plotmarginal()
GauPro::GauPro$plotmarginalrandom()
GauPro::GauPro$pred()
GauPro::GauPro$pred_LOO()
GauPro::GauPro$pred_mean()
GauPro::GauPro$pred_meanC()
GauPro::GauPro$pred_var()
GauPro::GauPro$pred_var_after_adding_points()
GauPro::GauPro$pred_var_after_adding_points_sep()
GauPro::GauPro$pred_var_reduction()
GauPro::GauPro$pred_var_reductions()
GauPro::GauPro$predict()
GauPro::GauPro$print()
GauPro::GauPro$sample()
GauPro::GauPro$summary()
GauPro::GauPro$update_K_and_estimates()
GauPro::GauPro$update_corrparams()
GauPro::GauPro$update_data()
GauPro::GauPro$update_fast()
GauPro::GauPro$update_nugget()
GauPro::GauPro$update_params()
Method new()
Create a kernel model that uses a leave-one-out GP model to fix the standard error predictions.
Usage
GauPro_kernel_model_LOO$new(..., LOO_kernel, LOO_options = list())
Arguments
...
Passed to super$initialize.
LOO_kernel
The kernel that should be used for the leave-one-out model. Shouldn't be too smooth.
LOO_options
Options passed to the leave-one-out model.
Method update()
Update the model. Should only give in (Xnew and Znew) or (Xall and Zall).
Usage
GauPro_kernel_model_LOO$update( Xnew = NULL, Znew = NULL, Xall = NULL, Zall = NULL, restarts = 5, param_update = self$param.est, nug.update = self$nug.est, no_update = FALSE )
Arguments
Xnew
New X values to add.
Znew
New Z values to add.
Xall
All X values to be used. Will replace existing X.
Zall
All Z values to be used. Will replace existing Z.
restarts
Number of optimization restarts.
param_update
Are the parameters being updated?
nug.update
Is the nugget being updated?
no_update
Are no parameters being updated?
Method pred_one_matrix()
Predict for a matrix of points
Usage
GauPro_kernel_model_LOO$pred_one_matrix( XX, se.fit = F, covmat = F, return_df = FALSE, mean_dist = FALSE )
Arguments
XX
points to predict at
se.fit
Should standard error be returned?
covmat
Should covariance matrix be returned?
return_df
When returning se.fit, should it be returned in a data frame?
mean_dist
Should mean distribution be returned?
Method clone()
The objects of this class are cloneable with this method.
Usage
GauPro_kernel_model_LOO$clone(deep = FALSE)
Arguments
deep
Whether to make a deep clone.
Examples
n <- 12
x <- matrix(seq(0,1,length.out = n), ncol=1)
y <- sin(2*pi*x) + rnorm(n,0,1e-1)
gp <- GauPro_kernel_model_LOO$new(X=x, Z=y, kernel=Gaussian)
y <- x^2 * sin(2*pi*x) + rnorm(n,0,1e-3)
gp <- GauPro_kernel_model_LOO$new(X=x, Z=y, kernel=Matern52)
y <- exp(-1.4*x)*cos(7*pi*x/2)
gp <- GauPro_kernel_model_LOO$new(X=x, Z=y, kernel=Matern52)
Trend R6 class
Description
Trend R6 class
Trend R6 class
Format
R6Class
object.
Value
Object of R6Class
with methods for fitting GP model.
Public fields
D
Number of input dimensions of data
Methods
Public methods
Method clone()
The objects of this class are cloneable with this method.
Usage
GauPro_trend$clone(deep = FALSE)
Arguments
deep
Whether to make a deep clone.
Examples
#k <- GauPro_trend$new()
Gaussian Kernel R6 class
Description
Gaussian Kernel R6 class
Gaussian Kernel R6 class
Usage
k_Gaussian(
beta,
s2 = 1,
D,
beta_lower = -8,
beta_upper = 6,
beta_est = TRUE,
s2_lower = 1e-08,
s2_upper = 1e+08,
s2_est = TRUE,
useC = TRUE,
isotropic = FALSE
)
Arguments
beta |
Initial beta value |
s2 |
Initial variance |
D |
Number of input dimensions of data |
beta_lower |
Lower bound for beta |
beta_upper |
Upper bound for beta |
beta_est |
Should beta be estimated? |
s2_lower |
Lower bound for s2 |
s2_upper |
Upper bound for s2 |
s2_est |
Should s2 be estimated? |
useC |
Should C code used? Much faster. |
isotropic |
If isotropic then a single beta/theta is used for all dimensions. If not (anisotropic) then a separate beta/beta is used for each dimension. |
Format
R6Class
object.
Value
Object of R6Class
with methods for fitting GP model.
Super classes
GauPro::GauPro_kernel
-> GauPro::GauPro_kernel_beta
-> GauPro_kernel_Gaussian
Methods
Public methods
Inherited methods
GauPro::GauPro_kernel$plot()
GauPro::GauPro_kernel_beta$initialize()
GauPro::GauPro_kernel_beta$param_optim_lower()
GauPro::GauPro_kernel_beta$param_optim_start()
GauPro::GauPro_kernel_beta$param_optim_start0()
GauPro::GauPro_kernel_beta$param_optim_upper()
GauPro::GauPro_kernel_beta$s2_from_params()
GauPro::GauPro_kernel_beta$set_params_from_optim()
Method k()
Calculate covariance between two points
Usage
Gaussian$k(x, y = NULL, beta = self$beta, s2 = self$s2, params = NULL)
Arguments
x
vector.
y
vector, optional. If excluded, find correlation of x with itself.
beta
Correlation parameters.
s2
Variance parameter.
params
parameters to use instead of beta and s2.
Method kone()
Find covariance of two points
Usage
Gaussian$kone(x, y, beta, theta, s2)
Arguments
x
vector
y
vector
beta
correlation parameters on log scale
theta
correlation parameters on regular scale
s2
Variance parameter
Method dC_dparams()
Derivative of covariance with respect to parameters
Usage
Gaussian$dC_dparams(params = NULL, X, C_nonug, C, nug)
Arguments
params
Kernel parameters
X
matrix of points in rows
C_nonug
Covariance without nugget added to diagonal
C
Covariance with nugget
nug
Value of nugget
Method C_dC_dparams()
Calculate covariance matrix and its derivative with respect to parameters
Usage
Gaussian$C_dC_dparams(params = NULL, X, nug)
Arguments
params
Kernel parameters
X
matrix of points in rows
nug
Value of nugget
Method dC_dx()
Derivative of covariance with respect to X
Usage
Gaussian$dC_dx(XX, X, theta, beta = self$beta, s2 = self$s2)
Arguments
XX
matrix of points
X
matrix of points to take derivative with respect to
theta
Correlation parameters
beta
log of theta
s2
Variance parameter
Method d2C_dx2()
Second derivative of covariance with respect to X
Usage
Gaussian$d2C_dx2(XX, X, theta, beta = self$beta, s2 = self$s2)
Arguments
XX
matrix of points
X
matrix of points to take derivative with respect to
theta
Correlation parameters
beta
log of theta
s2
Variance parameter
Method d2C_dudv()
Second derivative of covariance with respect to X and XX each once.
Usage
Gaussian$d2C_dudv(XX, X, theta, beta = self$beta, s2 = self$s2)
Arguments
XX
matrix of points
X
matrix of points to take derivative with respect to
theta
Correlation parameters
beta
log of theta
s2
Variance parameter
Method d2C_dudv_ueqvrows()
Second derivative of covariance with respect to X and XX when they equal the same value
Usage
Gaussian$d2C_dudv_ueqvrows(XX, theta, beta = self$beta, s2 = self$s2)
Arguments
XX
matrix of points
theta
Correlation parameters
beta
log of theta
s2
Variance parameter
Method print()
Print this object
Usage
Gaussian$print()
Method clone()
The objects of this class are cloneable with this method.
Usage
Gaussian$clone(deep = FALSE)
Arguments
deep
Whether to make a deep clone.
Examples
k1 <- Gaussian$new(beta=0)
plot(k1)
k1 <- Gaussian$new(beta=c(0,-1, 1))
plot(k1)
n <- 12
x <- matrix(seq(0,1,length.out = n), ncol=1)
y <- sin(2*pi*x) + rnorm(n,0,1e-1)
gp <- GauPro_kernel_model$new(X=x, Z=y, kernel=Gaussian$new(1),
parallel=FALSE)
gp$predict(.454)
gp$plot1D()
gp$cool1Dplot()
Calculate the Gaussian deviance in C
Description
Calculate the Gaussian deviance in C
Usage
Gaussian_devianceC(theta, nug, X, Z)
Arguments
theta |
Theta vector |
nug |
Nugget |
X |
Matrix X |
Z |
Matrix Z |
Value
Correlation matrix
Examples
Gaussian_devianceC(c(1,1), 1e-8, matrix(c(1,0,0,1),2,2), matrix(c(1,0),2,1))
Calculate Hessian for a GP with Gaussian correlation
Description
Calculate Hessian for a GP with Gaussian correlation
Usage
Gaussian_hessianC(XX, X, Z, Kinv, mu_hat, theta)
Arguments
XX |
The vector at which to calculate the Hessian |
X |
The input points |
Z |
The output values |
Kinv |
The inverse of the correlation matrix |
mu_hat |
Estimate of mu |
theta |
Theta parameters for the correlation |
Value
Matrix, the Hessian at XX
Examples
set.seed(0)
n <- 40
x <- matrix(runif(n*2), ncol=2)
f1 <- function(a) {sin(2*pi*a[1]) + sin(6*pi*a[2])}
y <- apply(x,1,f1) + rnorm(n,0,.01)
gp <- GauPro(x,y, verbose=2, parallel=FALSE);gp$theta
gp$hessian(c(.2,.75), useC=TRUE) # Should be -38.3, -5.96, -5.96, -389.4 as 2x2 matrix
Gaussian hessian in C
Description
Gaussian hessian in C
Usage
Gaussian_hessianCC(XX, X, Z, Kinv, mu_hat, theta)
Arguments
XX |
point to find Hessian at |
X |
matrix of data points |
Z |
matrix of output |
Kinv |
inverse of correlation matrix |
mu_hat |
mean estimate |
theta |
correlation parameters |
Value
Hessian matrix
Calculate Hessian for a GP with Gaussian correlation
Description
Calculate Hessian for a GP with Gaussian correlation
Usage
Gaussian_hessianR(XX, X, Z, Kinv, mu_hat, theta)
Arguments
XX |
The vector at which to calculate the Hessian |
X |
The input points |
Z |
The output values |
Kinv |
The inverse of the correlation matrix |
mu_hat |
Estimate of mu |
theta |
Theta parameters for the correlation |
Value
Matrix, the Hessian at XX
Examples
set.seed(0)
n <- 40
x <- matrix(runif(n*2), ncol=2)
f1 <- function(a) {sin(2*pi*a[1]) + sin(6*pi*a[2])}
y <- apply(x,1,f1) + rnorm(n,0,.01)
gp <- GauPro(x,y, verbose=2, parallel=FALSE);gp$theta
gp$hessian(c(.2,.75), useC=FALSE) # Should be -38.3, -5.96, -5.96, -389.4 as 2x2 matrix
Gower factor Kernel R6 class
Description
Gower factor Kernel R6 class
Gower factor Kernel R6 class
Usage
k_GowerFactorKernel(
s2 = 1,
D,
nlevels,
xindex,
p_lower = 0,
p_upper = 0.9,
p_est = TRUE,
s2_lower = 1e-08,
s2_upper = 1e+08,
s2_est = TRUE,
p,
useC = TRUE,
offdiagequal = 1 - 1e-06
)
Arguments
s2 |
Initial variance |
D |
Number of input dimensions of data |
nlevels |
Number of levels for the factor |
xindex |
Index of the factor (which column of X) |
p_lower |
Lower bound for p |
p_upper |
Upper bound for p |
p_est |
Should p be estimated? |
s2_lower |
Lower bound for s2 |
s2_upper |
Upper bound for s2 |
s2_est |
Should s2 be estimated? |
p |
Vector of correlations |
useC |
Should C code used? Not implemented for FactorKernel yet. |
offdiagequal |
What should offdiagonal values be set to when the indices are the same? Use to avoid decomposition errors, similar to adding a nugget. |
Format
R6Class
object.
Details
For a factor that has been converted to its indices. Each factor will need a separate kernel.
Value
Object of R6Class
with methods for fitting GP model.
Super class
GauPro::GauPro_kernel
-> GauPro_kernel_GowerFactorKernel
Public fields
p
Parameter for correlation
p_est
Should p be estimated?
p_lower
Lower bound of p
p_upper
Upper bound of p
s2
variance
s2_est
Is s2 estimated?
logs2
Log of s2
logs2_lower
Lower bound of logs2
logs2_upper
Upper bound of logs2
xindex
Index of the factor (which column of X)
nlevels
Number of levels for the factor
offdiagequal
What should offdiagonal values be set to when the indices are the same? Use to avoid decomposition errors, similar to adding a nugget.
Methods
Public methods
Inherited methods
Method new()
Initialize kernel object
Usage
GowerFactorKernel$new( s2 = 1, D, nlevels, xindex, p_lower = 0, p_upper = 0.9, p_est = TRUE, s2_lower = 1e-08, s2_upper = 1e+08, s2_est = TRUE, p, useC = TRUE, offdiagequal = 1 - 1e-06 )
Arguments
s2
Initial variance
D
Number of input dimensions of data
nlevels
Number of levels for the factor
xindex
Index of the factor (which column of X)
p_lower
Lower bound for p
p_upper
Upper bound for p
p_est
Should p be estimated?
s2_lower
Lower bound for s2
s2_upper
Upper bound for s2
s2_est
Should s2 be estimated?
p
Vector of correlations
useC
Should C code used? Not implemented for FactorKernel yet.
offdiagequal
What should offdiagonal values be set to when the indices are the same? Use to avoid decomposition errors, similar to adding a nugget.
Method k()
Calculate covariance between two points
Usage
GowerFactorKernel$k(x, y = NULL, p = self$p, s2 = self$s2, params = NULL)
Arguments
x
vector.
y
vector, optional. If excluded, find correlation of x with itself.
p
Correlation parameters.
s2
Variance parameter.
params
parameters to use instead of beta and s2.
Method kone()
Find covariance of two points
Usage
GowerFactorKernel$kone( x, y, p, s2, isdiag = TRUE, offdiagequal = self$offdiagequal )
Arguments
x
vector
y
vector
p
correlation parameters on regular scale
s2
Variance parameter
isdiag
Is this on the diagonal of the covariance?
offdiagequal
What should offdiagonal values be set to when the indices are the same? Use to avoid decomposition errors, similar to adding a nugget.
Method dC_dparams()
Derivative of covariance with respect to parameters
Usage
GowerFactorKernel$dC_dparams(params = NULL, X, C_nonug, C, nug)
Arguments
params
Kernel parameters
X
matrix of points in rows
C_nonug
Covariance without nugget added to diagonal
C
Covariance with nugget
nug
Value of nugget
Method C_dC_dparams()
Calculate covariance matrix and its derivative with respect to parameters
Usage
GowerFactorKernel$C_dC_dparams(params = NULL, X, nug)
Arguments
params
Kernel parameters
X
matrix of points in rows
nug
Value of nugget
Method dC_dx()
Derivative of covariance with respect to X
Usage
GowerFactorKernel$dC_dx(XX, X, ...)
Arguments
XX
matrix of points
X
matrix of points to take derivative with respect to
...
Additional args, not used
Method param_optim_start()
Starting point for parameters for optimization
Usage
GowerFactorKernel$param_optim_start( jitter = F, y, p_est = self$p_est, s2_est = self$s2_est )
Arguments
jitter
Should there be a jitter?
y
Output
p_est
Is p being estimated?
s2_est
Is s2 being estimated?
alpha_est
Is alpha being estimated?
Method param_optim_start0()
Starting point for parameters for optimization
Usage
GowerFactorKernel$param_optim_start0( jitter = F, y, p_est = self$p_est, s2_est = self$s2_est )
Arguments
jitter
Should there be a jitter?
y
Output
p_est
Is p being estimated?
s2_est
Is s2 being estimated?
alpha_est
Is alpha being estimated?
Method param_optim_lower()
Lower bounds of parameters for optimization
Usage
GowerFactorKernel$param_optim_lower(p_est = self$p_est, s2_est = self$s2_est)
Arguments
p_est
Is p being estimated?
s2_est
Is s2 being estimated?
alpha_est
Is alpha being estimated?
Method param_optim_upper()
Upper bounds of parameters for optimization
Usage
GowerFactorKernel$param_optim_upper(p_est = self$p_est, s2_est = self$s2_est)
Arguments
p_est
Is p being estimated?
s2_est
Is s2 being estimated?
alpha_est
Is alpha being estimated?
Method set_params_from_optim()
Set parameters from optimization output
Usage
GowerFactorKernel$set_params_from_optim( optim_out, p_est = self$p_est, s2_est = self$s2_est )
Arguments
optim_out
Output from optimization
p_est
Is p being estimated?
s2_est
Is s2 being estimated?
alpha_est
Is alpha being estimated?
Method s2_from_params()
Get s2 from params vector
Usage
GowerFactorKernel$s2_from_params(params, s2_est = self$s2_est)
Arguments
params
parameter vector
s2_est
Is s2 being estimated?
Method print()
Print this object
Usage
GowerFactorKernel$print()
Method clone()
The objects of this class are cloneable with this method.
Usage
GowerFactorKernel$clone(deep = FALSE)
Arguments
deep
Whether to make a deep clone.
Examples
kk <- GowerFactorKernel$new(D=1, nlevels=5, xindex=1, p=.2)
kmat <- outer(1:5, 1:5, Vectorize(kk$k))
kmat
kk$plot()
# 2D, Gaussian on 1D, index on 2nd dim
if (requireNamespace("dplyr", quietly=TRUE)) {
library(dplyr)
n <- 20
X <- cbind(matrix(runif(n,2,6), ncol=1),
matrix(sample(1:2, size=n, replace=TRUE), ncol=1))
X <- rbind(X, c(3.3,3))
n <- nrow(X)
Z <- X[,1] - (X[,2]-1.8)^2 + rnorm(n,0,.1)
tibble(X=X, Z) %>% arrange(X,Z)
k2a <- IgnoreIndsKernel$new(k=Gaussian$new(D=1), ignoreinds = 2)
k2b <- GowerFactorKernel$new(D=2, nlevels=3, xind=2)
k2 <- k2a * k2b
k2b$p_upper <- .65*k2b$p_upper
gp <- GauPro_kernel_model$new(X=X, Z=Z, kernel = k2, verbose = 5,
nug.min=1e-2, restarts=0)
gp$kernel$k1$kernel$beta
gp$kernel$k2$p
gp$kernel$k(x = gp$X)
tibble(X=X, Z=Z, pred=gp$predict(X)) %>% arrange(X, Z)
tibble(X=X[,2], Z) %>% group_by(X) %>% summarize(n=n(), mean(Z))
curve(gp$pred(cbind(matrix(x,ncol=1),1)),2,6, ylim=c(min(Z), max(Z)))
points(X[X[,2]==1,1], Z[X[,2]==1])
curve(gp$pred(cbind(matrix(x,ncol=1),2)), add=TRUE, col=2)
points(X[X[,2]==2,1], Z[X[,2]==2], col=2)
curve(gp$pred(cbind(matrix(x,ncol=1),3)), add=TRUE, col=3)
points(X[X[,2]==3,1], Z[X[,2]==3], col=3)
legend(legend=1:3, fill=1:3, x="topleft")
# See which points affect (5.5, 3 themost)
data.frame(X, cov=gp$kernel$k(X, c(5.5,3))) %>% arrange(-cov)
plot(k2b)
}
Kernel R6 class
Description
Kernel R6 class
Kernel R6 class
Usage
k_IgnoreIndsKernel(k, ignoreinds, useC = TRUE)
Arguments
k |
Kernel to use on the non-ignored indices |
ignoreinds |
Indices of columns of X to ignore. |
useC |
Should C code used? Not implemented for IgnoreInds. |
Format
R6Class
object.
Value
Object of R6Class
with methods for fitting GP model.
Super class
GauPro::GauPro_kernel
-> GauPro_kernel_IgnoreInds
Public fields
D
Number of input dimensions of data
kernel
Kernel to use on indices that aren't ignored
ignoreinds
Indices to ignore. For a matrix X, these are the columns to ignore. For example, when those dimensions will be given a different kernel, such as for factors.
Active bindings
s2_est
Is s2 being estimated?
s2
Value of s2 (variance)
Methods
Public methods
Inherited methods
Method new()
Initialize kernel object
Usage
IgnoreIndsKernel$new(k, ignoreinds, useC = TRUE)
Arguments
k
Kernel to use on the non-ignored indices
ignoreinds
Indices of columns of X to ignore.
useC
Should C code used? Not implemented for IgnoreInds.
Method k()
Calculate covariance between two points
Usage
IgnoreIndsKernel$k(x, y = NULL, ...)
Arguments
x
vector.
y
vector, optional. If excluded, find correlation of x with itself.
...
Passed to kernel
Method kone()
Find covariance of two points
Usage
IgnoreIndsKernel$kone(x, y, ...)
Arguments
x
vector
y
vector
...
Passed to kernel
Method dC_dparams()
Derivative of covariance with respect to parameters
Usage
IgnoreIndsKernel$dC_dparams(params = NULL, X, ...)
Arguments
params
Kernel parameters
X
matrix of points in rows
...
Passed to kernel
Method C_dC_dparams()
Calculate covariance matrix and its derivative with respect to parameters
Usage
IgnoreIndsKernel$C_dC_dparams(params = NULL, X, nug)
Arguments
params
Kernel parameters
X
matrix of points in rows
nug
Value of nugget
Method dC_dx()
Derivative of covariance with respect to X
Usage
IgnoreIndsKernel$dC_dx(XX, X, ...)
Arguments
XX
matrix of points
X
matrix of points to take derivative with respect to
...
Additional arguments passed on to the kernel
Method param_optim_start()
Starting point for parameters for optimization
Usage
IgnoreIndsKernel$param_optim_start(...)
Arguments
...
Passed to kernel
Method param_optim_start0()
Starting point for parameters for optimization
Usage
IgnoreIndsKernel$param_optim_start0(...)
Arguments
...
Passed to kernel
Method param_optim_lower()
Lower bounds of parameters for optimization
Usage
IgnoreIndsKernel$param_optim_lower(...)
Arguments
...
Passed to kernel
Method param_optim_upper()
Upper bounds of parameters for optimization
Usage
IgnoreIndsKernel$param_optim_upper(...)
Arguments
...
Passed to kernel
Method set_params_from_optim()
Set parameters from optimization output
Usage
IgnoreIndsKernel$set_params_from_optim(...)
Arguments
...
Passed to kernel
Method s2_from_params()
Get s2 from params vector
Usage
IgnoreIndsKernel$s2_from_params(...)
Arguments
...
Passed to kernel
Method print()
Print this object
Usage
IgnoreIndsKernel$print()
Method clone()
The objects of this class are cloneable with this method.
Usage
IgnoreIndsKernel$clone(deep = FALSE)
Arguments
deep
Whether to make a deep clone.
Examples
kg <- Gaussian$new(D=3)
kig <- GauPro::IgnoreIndsKernel$new(k = Gaussian$new(D=3), ignoreinds = 2)
Xtmp <- as.matrix(expand.grid(1:2, 1:2, 1:2))
cbind(Xtmp, kig$k(Xtmp))
cbind(Xtmp, kg$k(Xtmp))
Latent Factor Kernel R6 class
Description
Latent Factor Kernel R6 class
Latent Factor Kernel R6 class
Usage
k_LatentFactorKernel(
s2 = 1,
D,
nlevels,
xindex,
latentdim,
p_lower = 0,
p_upper = 1,
p_est = TRUE,
s2_lower = 1e-08,
s2_upper = 1e+08,
s2_est = TRUE,
useC = TRUE,
offdiagequal = 1 - 1e-06
)
Arguments
s2 |
Initial variance |
D |
Number of input dimensions of data |
nlevels |
Number of levels for the factor |
xindex |
Index of X to use the kernel on |
latentdim |
Dimension of embedding space |
p_lower |
Lower bound for p |
p_upper |
Upper bound for p |
p_est |
Should p be estimated? |
s2_lower |
Lower bound for s2 |
s2_upper |
Upper bound for s2 |
s2_est |
Should s2 be estimated? |
useC |
Should C code used? Much faster. |
offdiagequal |
What should offdiagonal values be set to when the indices are the same? Use to avoid decomposition errors, similar to adding a nugget. |
Format
R6Class
object.
Details
Used for factor variables, a single dimension. Each level of the factor gets mapped into a latent space, then the distances in that space determine their correlations.
Value
Object of R6Class
with methods for fitting GP model.
Super class
GauPro::GauPro_kernel
-> GauPro_kernel_LatentFactorKernel
Public fields
p
Parameter for correlation
p_est
Should p be estimated?
p_lower
Lower bound of p
p_upper
Upper bound of p
p_length
length of p
s2
variance
s2_est
Is s2 estimated?
logs2
Log of s2
logs2_lower
Lower bound of logs2
logs2_upper
Upper bound of logs2
xindex
Index of the factor (which column of X)
nlevels
Number of levels for the factor
latentdim
Dimension of embedding space
pf_to_p_log
Logical vector used to convert pf to p
p_to_pf_inds
Vector of indexes used to convert p to pf
offdiagequal
What should offdiagonal values be set to when the indices are the same? Use to avoid decomposition errors, similar to adding a nugget.
Methods
Public methods
Inherited methods
Method new()
Initialize kernel object
Usage
LatentFactorKernel$new( s2 = 1, D, nlevels, xindex, latentdim, p_lower = 0, p_upper = 1, p_est = TRUE, s2_lower = 1e-08, s2_upper = 1e+08, s2_est = TRUE, useC = TRUE, offdiagequal = 1 - 1e-06 )
Arguments
s2
Initial variance
D
Number of input dimensions of data
nlevels
Number of levels for the factor
xindex
Index of X to use the kernel on
latentdim
Dimension of embedding space
p_lower
Lower bound for p
p_upper
Upper bound for p
p_est
Should p be estimated?
s2_lower
Lower bound for s2
s2_upper
Upper bound for s2
s2_est
Should s2 be estimated?
useC
Should C code used? Much faster.
offdiagequal
What should offdiagonal values be set to when the indices are the same? Use to avoid decomposition errors, similar to adding a nugget.
Method k()
Calculate covariance between two points
Usage
LatentFactorKernel$k(x, y = NULL, p = self$p, s2 = self$s2, params = NULL)
Arguments
x
vector.
y
vector, optional. If excluded, find correlation of x with itself.
p
Correlation parameters.
s2
Variance parameter.
params
parameters to use instead of beta and s2.
Method kone()
Find covariance of two points
Usage
LatentFactorKernel$kone( x, y, pf, s2, isdiag = TRUE, offdiagequal = self$offdiagequal )
Arguments
x
vector
y
vector
pf
correlation parameters on regular scale, includes zeroes for first level.
s2
Variance parameter
isdiag
Is this on the diagonal of the covariance?
offdiagequal
What should offdiagonal values be set to when the indices are the same? Use to avoid decomposition errors, similar to adding a nugget.
Method dC_dparams()
Derivative of covariance with respect to parameters
Usage
LatentFactorKernel$dC_dparams(params = NULL, X, C_nonug, C, nug)
Arguments
params
Kernel parameters
X
matrix of points in rows
C_nonug
Covariance without nugget added to diagonal
C
Covariance with nugget
nug
Value of nugget
Method C_dC_dparams()
Calculate covariance matrix and its derivative with respect to parameters
Usage
LatentFactorKernel$C_dC_dparams(params = NULL, X, nug)
Arguments
params
Kernel parameters
X
matrix of points in rows
nug
Value of nugget
Method dC_dx()
Derivative of covariance with respect to X
Usage
LatentFactorKernel$dC_dx(XX, X, ...)
Arguments
XX
matrix of points
X
matrix of points to take derivative with respect to
...
Additional args, not used
Method param_optim_start()
Starting point for parameters for optimization
Usage
LatentFactorKernel$param_optim_start( jitter = F, y, p_est = self$p_est, s2_est = self$s2_est )
Arguments
jitter
Should there be a jitter?
y
Output
p_est
Is p being estimated?
s2_est
Is s2 being estimated?
Method param_optim_start0()
Starting point for parameters for optimization
Usage
LatentFactorKernel$param_optim_start0( jitter = F, y, p_est = self$p_est, s2_est = self$s2_est )
Arguments
jitter
Should there be a jitter?
y
Output
p_est
Is p being estimated?
s2_est
Is s2 being estimated?
Method param_optim_lower()
Lower bounds of parameters for optimization
Usage
LatentFactorKernel$param_optim_lower(p_est = self$p_est, s2_est = self$s2_est)
Arguments
p_est
Is p being estimated?
s2_est
Is s2 being estimated?
Method param_optim_upper()
Upper bounds of parameters for optimization
Usage
LatentFactorKernel$param_optim_upper(p_est = self$p_est, s2_est = self$s2_est)
Arguments
p_est
Is p being estimated?
s2_est
Is s2 being estimated?
Method set_params_from_optim()
Set parameters from optimization output
Usage
LatentFactorKernel$set_params_from_optim( optim_out, p_est = self$p_est, s2_est = self$s2_est )
Arguments
optim_out
Output from optimization
p_est
Is p being estimated?
s2_est
Is s2 being estimated?
Method p_to_pf()
Convert p (short parameter vector) to pf (long parameter vector with zeros).
Usage
LatentFactorKernel$p_to_pf(p)
Arguments
p
Parameter vector
Method s2_from_params()
Get s2 from params vector
Usage
LatentFactorKernel$s2_from_params(params, s2_est = self$s2_est)
Arguments
params
parameter vector
s2_est
Is s2 being estimated?
Method plotLatent()
Plot the points in the latent space
Usage
LatentFactorKernel$plotLatent()
Method print()
Print this object
Usage
LatentFactorKernel$print()
Method clone()
The objects of this class are cloneable with this method.
Usage
LatentFactorKernel$clone(deep = FALSE)
Arguments
deep
Whether to make a deep clone.
References
https://stackoverflow.com/questions/27086195/linear-index-upper-triangular-matrix
Examples
# Create a new kernel for a single factor with 5 levels,
# mapped into two latent dimensions.
kk <- LatentFactorKernel$new(D=1, nlevels=5, xindex=1, latentdim=2)
# Random initial parameter values
kk$p
# Plots to understand
kk$plotLatent()
kk$plot()
# 5 levels, 1/4 are similar and 2/3/5 are similar
n <- 30
x <- matrix(sample(1:5, n, TRUE))
y <- c(ifelse(x == 1 | x == 4, 4, -3) + rnorm(n,0,.1))
plot(c(x), y)
m5 <- GauPro_kernel_model$new(
X=x, Z=y,
kernel=LatentFactorKernel$new(D=1, nlevels = 5, xindex = 1, latentdim = 2))
m5$kernel$p
# We should see 1/4 and 2/3/4 in separate clusters
m5$kernel$plotLatent()
if (requireNamespace("dplyr", quietly=TRUE)) {
library(dplyr)
n <- 20
X <- cbind(matrix(runif(n,2,6), ncol=1),
matrix(sample(1:2, size=n, replace=TRUE), ncol=1))
X <- rbind(X, c(3.3,3), c(3.7,3))
n <- nrow(X)
Z <- X[,1] - (4-X[,2])^2 + rnorm(n,0,.1)
plot(X[,1], Z, col=X[,2])
tibble(X=X, Z) %>% arrange(X,Z)
k2a <- IgnoreIndsKernel$new(k=Gaussian$new(D=1), ignoreinds = 2)
k2b <- LatentFactorKernel$new(D=2, nlevels=3, xind=2, latentdim=2)
k2 <- k2a * k2b
k2b$p_upper <- .65*k2b$p_upper
gp <- GauPro_kernel_model$new(X=X, Z=Z, kernel = k2, verbose = 5,
nug.min=1e-2, restarts=1)
gp$kernel$k1$kernel$beta
gp$kernel$k2$p
gp$kernel$k(x = gp$X)
tibble(X=X, Z=Z, pred=gp$predict(X)) %>% arrange(X, Z)
tibble(X=X[,2], Z) %>% group_by(X) %>% summarize(n=n(), mean(Z))
curve(gp$pred(cbind(matrix(x,ncol=1),1)),2,6, ylim=c(min(Z), max(Z)))
points(X[X[,2]==1,1], Z[X[,2]==1])
curve(gp$pred(cbind(matrix(x,ncol=1),2)), add=TRUE, col=2)
points(X[X[,2]==2,1], Z[X[,2]==2], col=2)
curve(gp$pred(cbind(matrix(x,ncol=1),3)), add=TRUE, col=3)
points(X[X[,2]==3,1], Z[X[,2]==3], col=3)
legend(legend=1:3, fill=1:3, x="topleft")
# See which points affect (5.5, 3 themost)
data.frame(X, cov=gp$kernel$k(X, c(5.5,3))) %>% arrange(-cov)
plot(k2b)
}
Matern 3/2 Kernel R6 class
Description
Matern 3/2 Kernel R6 class
Matern 3/2 Kernel R6 class
Usage
k_Matern32(
beta,
s2 = 1,
D,
beta_lower = -8,
beta_upper = 6,
beta_est = TRUE,
s2_lower = 1e-08,
s2_upper = 1e+08,
s2_est = TRUE,
useC = TRUE,
isotropic = FALSE
)
Arguments
beta |
Initial beta value |
s2 |
Initial variance |
D |
Number of input dimensions of data |
beta_lower |
Lower bound for beta |
beta_upper |
Upper bound for beta |
beta_est |
Should beta be estimated? |
s2_lower |
Lower bound for s2 |
s2_upper |
Upper bound for s2 |
s2_est |
Should s2 be estimated? |
useC |
Should C code used? Much faster. |
isotropic |
If isotropic then a single beta/theta is used for all dimensions. If not (anisotropic) then a separate beta/beta is used for each dimension. |
Format
R6Class
object.
Value
Object of R6Class
with methods for fitting GP model.
Super classes
GauPro::GauPro_kernel
-> GauPro::GauPro_kernel_beta
-> GauPro_kernel_Matern32
Public fields
sqrt3
Saved value of square root of 3
Methods
Public methods
Inherited methods
GauPro::GauPro_kernel$plot()
GauPro::GauPro_kernel_beta$C_dC_dparams()
GauPro::GauPro_kernel_beta$initialize()
GauPro::GauPro_kernel_beta$param_optim_lower()
GauPro::GauPro_kernel_beta$param_optim_start()
GauPro::GauPro_kernel_beta$param_optim_start0()
GauPro::GauPro_kernel_beta$param_optim_upper()
GauPro::GauPro_kernel_beta$s2_from_params()
GauPro::GauPro_kernel_beta$set_params_from_optim()
Method k()
Calculate covariance between two points
Usage
Matern32$k(x, y = NULL, beta = self$beta, s2 = self$s2, params = NULL)
Arguments
x
vector.
y
vector, optional. If excluded, find correlation of x with itself.
beta
Correlation parameters.
s2
Variance parameter.
params
parameters to use instead of beta and s2.
Method kone()
Find covariance of two points
Usage
Matern32$kone(x, y, beta, theta, s2)
Arguments
x
vector
y
vector
beta
correlation parameters on log scale
theta
correlation parameters on regular scale
s2
Variance parameter
Method dC_dparams()
Derivative of covariance with respect to parameters
Usage
Matern32$dC_dparams(params = NULL, X, C_nonug, C, nug)
Arguments
params
Kernel parameters
X
matrix of points in rows
C_nonug
Covariance without nugget added to diagonal
C
Covariance with nugget
nug
Value of nugget
Method dC_dx()
Derivative of covariance with respect to X
Usage
Matern32$dC_dx(XX, X, theta, beta = self$beta, s2 = self$s2)
Arguments
XX
matrix of points
X
matrix of points to take derivative with respect to
theta
Correlation parameters
beta
log of theta
s2
Variance parameter
Method print()
Print this object
Usage
Matern32$print()
Method clone()
The objects of this class are cloneable with this method.
Usage
Matern32$clone(deep = FALSE)
Arguments
deep
Whether to make a deep clone.
Examples
k1 <- Matern32$new(beta=0)
plot(k1)
n <- 12
x <- matrix(seq(0,1,length.out = n), ncol=1)
y <- sin(2*pi*x) + rnorm(n,0,1e-1)
gp <- GauPro_kernel_model$new(X=x, Z=y, kernel=Matern32$new(1),
parallel=FALSE)
gp$predict(.454)
gp$plot1D()
gp$cool1Dplot()
Matern 5/2 Kernel R6 class
Description
Matern 5/2 Kernel R6 class
Matern 5/2 Kernel R6 class
Usage
k_Matern52(
beta,
s2 = 1,
D,
beta_lower = -8,
beta_upper = 6,
beta_est = TRUE,
s2_lower = 1e-08,
s2_upper = 1e+08,
s2_est = TRUE,
useC = TRUE,
isotropic = FALSE
)
Arguments
beta |
Initial beta value |
s2 |
Initial variance |
D |
Number of input dimensions of data |
beta_lower |
Lower bound for beta |
beta_upper |
Upper bound for beta |
beta_est |
Should beta be estimated? |
s2_lower |
Lower bound for s2 |
s2_upper |
Upper bound for s2 |
s2_est |
Should s2 be estimated? |
useC |
Should C code used? Much faster. |
isotropic |
If isotropic then a single beta/theta is used for all dimensions. If not (anisotropic) then a separate beta/beta is used for each dimension. |
Format
R6Class
object.
Details
k(x, y) = s2 * (1 + t1 + t1^2 / 3) * exp(-t1)
where
t1 = sqrt(5) * sqrt(sum(theta * (x-y)^2))
Value
Object of R6Class
with methods for fitting GP model.
Super classes
GauPro::GauPro_kernel
-> GauPro::GauPro_kernel_beta
-> GauPro_kernel_Matern52
Public fields
sqrt5
Saved value of square root of 5
Methods
Public methods
Inherited methods
GauPro::GauPro_kernel$plot()
GauPro::GauPro_kernel_beta$C_dC_dparams()
GauPro::GauPro_kernel_beta$initialize()
GauPro::GauPro_kernel_beta$param_optim_lower()
GauPro::GauPro_kernel_beta$param_optim_start()
GauPro::GauPro_kernel_beta$param_optim_start0()
GauPro::GauPro_kernel_beta$param_optim_upper()
GauPro::GauPro_kernel_beta$s2_from_params()
GauPro::GauPro_kernel_beta$set_params_from_optim()
Method k()
Calculate covariance between two points
Usage
Matern52$k(x, y = NULL, beta = self$beta, s2 = self$s2, params = NULL)
Arguments
x
vector.
y
vector, optional. If excluded, find correlation of x with itself.
beta
Correlation parameters.
s2
Variance parameter.
params
parameters to use instead of beta and s2.
Method kone()
Find covariance of two points
Usage
Matern52$kone(x, y, beta, theta, s2)
Arguments
x
vector
y
vector
beta
correlation parameters on log scale
theta
correlation parameters on regular scale
s2
Variance parameter
Method dC_dparams()
Derivative of covariance with respect to parameters
Usage
Matern52$dC_dparams(params = NULL, X, C_nonug, C, nug)
Arguments
params
Kernel parameters
X
matrix of points in rows
C_nonug
Covariance without nugget added to diagonal
C
Covariance with nugget
nug
Value of nugget
Method dC_dx()
Derivative of covariance with respect to X
Usage
Matern52$dC_dx(XX, X, theta, beta = self$beta, s2 = self$s2)
Arguments
XX
matrix of points
X
matrix of points to take derivative with respect to
theta
Correlation parameters
beta
log of theta
s2
Variance parameter
Method print()
Print this object
Usage
Matern52$print()
Method clone()
The objects of this class are cloneable with this method.
Usage
Matern52$clone(deep = FALSE)
Arguments
deep
Whether to make a deep clone.
Examples
k1 <- Matern52$new(beta=0)
plot(k1)
n <- 12
x <- matrix(seq(0,1,length.out = n), ncol=1)
y <- sin(2*pi*x) + rnorm(n,0,1e-1)
gp <- GauPro_kernel_model$new(X=x, Z=y, kernel=Matern52$new(1),
parallel=FALSE)
gp$predict(.454)
gp$plot1D()
gp$cool1Dplot()
Ordered Factor Kernel R6 class
Description
Ordered Factor Kernel R6 class
Ordered Factor Kernel R6 class
Usage
k_OrderedFactorKernel(
s2 = 1,
D,
nlevels,
xindex,
p_lower = 1e-08,
p_upper = 5,
p_est = TRUE,
s2_lower = 1e-08,
s2_upper = 1e+08,
s2_est = TRUE,
useC = TRUE,
offdiagequal = 1 - 1e-06
)
Arguments
s2 |
Initial variance |
D |
Number of input dimensions of data |
nlevels |
Number of levels for the factor |
xindex |
Index of the factor (which column of X) |
p_lower |
Lower bound for p |
p_upper |
Upper bound for p |
p_est |
Should p be estimated? |
s2_lower |
Lower bound for s2 |
s2_upper |
Upper bound for s2 |
s2_est |
Should s2 be estimated? |
useC |
Should C code used? Not implemented for FactorKernel yet. |
offdiagequal |
What should offdiagonal values be set to when the indices are the same? Use to avoid decomposition errors, similar to adding a nugget. |
Format
R6Class
object.
Details
Use for factor inputs that are considered to have an ordering
Value
Object of R6Class
with methods for fitting GP model.
Super class
GauPro::GauPro_kernel
-> GauPro_kernel_OrderedFactorKernel
Public fields
p
Parameter for correlation
p_est
Should p be estimated?
p_lower
Lower bound of p
p_upper
Upper bound of p
p_length
length of p
s2
variance
s2_est
Is s2 estimated?
logs2
Log of s2
logs2_lower
Lower bound of logs2
logs2_upper
Upper bound of logs2
xindex
Index of the factor (which column of X)
nlevels
Number of levels for the factor
offdiagequal
What should offdiagonal values be set to when the indices are the same? Use to avoid decomposition errors, similar to adding a nugget.
Methods
Public methods
Inherited methods
Method new()
Initialize kernel object
Usage
OrderedFactorKernel$new( s2 = 1, D = NULL, nlevels, xindex, p_lower = 1e-08, p_upper = 5, p_est = TRUE, s2_lower = 1e-08, s2_upper = 1e+08, s2_est = TRUE, useC = TRUE, offdiagequal = 1 - 1e-06 )
Arguments
s2
Initial variance
D
Number of input dimensions of data
nlevels
Number of levels for the factor
xindex
Index of X to use the kernel on
p_lower
Lower bound for p
p_upper
Upper bound for p
p_est
Should p be estimated?
s2_lower
Lower bound for s2
s2_upper
Upper bound for s2
s2_est
Should s2 be estimated?
useC
Should C code used? Much faster.
offdiagequal
What should offdiagonal values be set to when the indices are the same? Use to avoid decomposition errors, similar to adding a nugget.
p
Vector of distances in latent space
Method k()
Calculate covariance between two points
Usage
OrderedFactorKernel$k(x, y = NULL, p = self$p, s2 = self$s2, params = NULL)
Arguments
x
vector.
y
vector, optional. If excluded, find correlation of x with itself.
p
Correlation parameters.
s2
Variance parameter.
params
parameters to use instead of beta and s2.
Method kone()
Find covariance of two points
Usage
OrderedFactorKernel$kone( x, y, p, s2, isdiag = TRUE, offdiagequal = self$offdiagequal )
Arguments
x
vector
y
vector
p
correlation parameters on regular scale
s2
Variance parameter
isdiag
Is this on the diagonal of the covariance?
offdiagequal
What should offdiagonal values be set to when the indices are the same? Use to avoid decomposition errors, similar to adding a nugget.
Method dC_dparams()
Derivative of covariance with respect to parameters
Usage
OrderedFactorKernel$dC_dparams(params = NULL, X, C_nonug, C, nug)
Arguments
params
Kernel parameters
X
matrix of points in rows
C_nonug
Covariance without nugget added to diagonal
C
Covariance with nugget
nug
Value of nugget
Method C_dC_dparams()
Calculate covariance matrix and its derivative with respect to parameters
Usage
OrderedFactorKernel$C_dC_dparams(params = NULL, X, nug)
Arguments
params
Kernel parameters
X
matrix of points in rows
nug
Value of nugget
Method dC_dx()
Derivative of covariance with respect to X
Usage
OrderedFactorKernel$dC_dx(XX, X, ...)
Arguments
XX
matrix of points
X
matrix of points to take derivative with respect to
...
Additional args, not used
Method param_optim_start()
Starting point for parameters for optimization
Usage
OrderedFactorKernel$param_optim_start( jitter = F, y, p_est = self$p_est, s2_est = self$s2_est )
Arguments
jitter
Should there be a jitter?
y
Output
p_est
Is p being estimated?
s2_est
Is s2 being estimated?
Method param_optim_start0()
Starting point for parameters for optimization
Usage
OrderedFactorKernel$param_optim_start0( jitter = F, y, p_est = self$p_est, s2_est = self$s2_est )
Arguments
jitter
Should there be a jitter?
y
Output
p_est
Is p being estimated?
s2_est
Is s2 being estimated?
Method param_optim_lower()
Lower bounds of parameters for optimization
Usage
OrderedFactorKernel$param_optim_lower(p_est = self$p_est, s2_est = self$s2_est)
Arguments
p_est
Is p being estimated?
s2_est
Is s2 being estimated?
Method param_optim_upper()
Upper bounds of parameters for optimization
Usage
OrderedFactorKernel$param_optim_upper(p_est = self$p_est, s2_est = self$s2_est)
Arguments
p_est
Is p being estimated?
s2_est
Is s2 being estimated?
Method set_params_from_optim()
Set parameters from optimization output
Usage
OrderedFactorKernel$set_params_from_optim( optim_out, p_est = self$p_est, s2_est = self$s2_est )
Arguments
optim_out
Output from optimization
p_est
Is p being estimated?
s2_est
Is s2 being estimated?
Method s2_from_params()
Get s2 from params vector
Usage
OrderedFactorKernel$s2_from_params(params, s2_est = self$s2_est)
Arguments
params
parameter vector
s2_est
Is s2 being estimated?
Method plotLatent()
Plot the points in the latent space
Usage
OrderedFactorKernel$plotLatent()
Method print()
Print this object
Usage
OrderedFactorKernel$print()
Method clone()
The objects of this class are cloneable with this method.
Usage
OrderedFactorKernel$clone(deep = FALSE)
Arguments
deep
Whether to make a deep clone.
References
https://stackoverflow.com/questions/27086195/linear-index-upper-triangular-matrix
Examples
kk <- OrderedFactorKernel$new(D=1, nlevels=5, xindex=1)
kk$p <- (1:10)/100
kmat <- outer(1:5, 1:5, Vectorize(kk$k))
kmat
if (requireNamespace("dplyr", quietly=TRUE)) {
library(dplyr)
n <- 20
X <- cbind(matrix(runif(n,2,6), ncol=1),
matrix(sample(1:2, size=n, replace=TRUE), ncol=1))
X <- rbind(X, c(3.3,3), c(3.7,3))
n <- nrow(X)
Z <- X[,1] - (4-X[,2])^2 + rnorm(n,0,.1)
plot(X[,1], Z, col=X[,2])
tibble(X=X, Z) %>% arrange(X,Z)
k2a <- IgnoreIndsKernel$new(k=Gaussian$new(D=1), ignoreinds = 2)
k2b <- OrderedFactorKernel$new(D=2, nlevels=3, xind=2)
k2 <- k2a * k2b
k2b$p_upper <- .65*k2b$p_upper
gp <- GauPro_kernel_model$new(X=X, Z=Z, kernel = k2, verbose = 5,
nug.min=1e-2, restarts=0)
gp$kernel$k1$kernel$beta
gp$kernel$k2$p
gp$kernel$k(x = gp$X)
tibble(X=X, Z=Z, pred=gp$predict(X)) %>% arrange(X, Z)
tibble(X=X[,2], Z) %>% group_by(X) %>% summarize(n=n(), mean(Z))
curve(gp$pred(cbind(matrix(x,ncol=1),1)),2,6, ylim=c(min(Z), max(Z)))
points(X[X[,2]==1,1], Z[X[,2]==1])
curve(gp$pred(cbind(matrix(x,ncol=1),2)), add=TRUE, col=2)
points(X[X[,2]==2,1], Z[X[,2]==2], col=2)
curve(gp$pred(cbind(matrix(x,ncol=1),3)), add=TRUE, col=3)
points(X[X[,2]==3,1], Z[X[,2]==3], col=3)
legend(legend=1:3, fill=1:3, x="topleft")
# See which points affect (5.5, 3 themost)
data.frame(X, cov=gp$kernel$k(X, c(5.5,3))) %>% arrange(-cov)
plot(k2b)
}
Periodic Kernel R6 class
Description
Periodic Kernel R6 class
Periodic Kernel R6 class
Usage
k_Periodic(
p,
alpha = 1,
s2 = 1,
D,
p_lower = 0,
p_upper = 100,
p_est = TRUE,
alpha_lower = 0,
alpha_upper = 100,
alpha_est = TRUE,
s2_lower = 1e-08,
s2_upper = 1e+08,
s2_est = TRUE,
useC = TRUE
)
Arguments
p |
Periodic parameter |
alpha |
Periodic parameter |
s2 |
Initial variance |
D |
Number of input dimensions of data |
p_lower |
Lower bound for p |
p_upper |
Upper bound for p |
p_est |
Should p be estimated? |
alpha_lower |
Lower bound for alpha |
alpha_upper |
Upper bound for alpha |
alpha_est |
Should alpha be estimated? |
s2_lower |
Lower bound for s2 |
s2_upper |
Upper bound for s2 |
s2_est |
Should s2 be estimated? |
useC |
Should C code used? Much faster if implemented. |
Format
R6Class
object.
Details
p is the period for each dimension, a is a single number for scaling
k(x, y) = s2 * exp(-sum(alpha*sin(p * (x-y))^2))
k(x, y) = \sigma^2 * \exp(-\sum(\alpha_i*sin(p * (x_i-y_i))^2))
Value
Object of R6Class
with methods for fitting GP model.
Super class
GauPro::GauPro_kernel
-> GauPro_kernel_Periodic
Public fields
p
Parameter for correlation
p_est
Should p be estimated?
logp
Log of p
logp_lower
Lower bound of logp
logp_upper
Upper bound of logp
p_length
length of p
alpha
Parameter for correlation
alpha_est
Should alpha be estimated?
logalpha
Log of alpha
logalpha_lower
Lower bound of logalpha
logalpha_upper
Upper bound of logalpha
s2
variance
s2_est
Is s2 estimated?
logs2
Log of s2
logs2_lower
Lower bound of logs2
logs2_upper
Upper bound of logs2
Methods
Public methods
Inherited methods
Method new()
Initialize kernel object
Usage
Periodic$new( p, alpha = 1, s2 = 1, D, p_lower = 0, p_upper = 100, p_est = TRUE, alpha_lower = 0, alpha_upper = 100, alpha_est = TRUE, s2_lower = 1e-08, s2_upper = 1e+08, s2_est = TRUE, useC = TRUE )
Arguments
p
Periodic parameter
alpha
Periodic parameter
s2
Initial variance
D
Number of input dimensions of data
p_lower
Lower bound for p
p_upper
Upper bound for p
p_est
Should p be estimated?
alpha_lower
Lower bound for alpha
alpha_upper
Upper bound for alpha
alpha_est
Should alpha be estimated?
s2_lower
Lower bound for s2
s2_upper
Upper bound for s2
s2_est
Should s2 be estimated?
useC
Should C code used? Much faster if implemented.
Method k()
Calculate covariance between two points
Usage
Periodic$k( x, y = NULL, logp = self$logp, logalpha = self$logalpha, s2 = self$s2, params = NULL )
Arguments
x
vector.
y
vector, optional. If excluded, find correlation of x with itself.
logp
Correlation parameters.
logalpha
Correlation parameters.
s2
Variance parameter.
params
parameters to use instead of beta and s2.
Method kone()
Find covariance of two points
Usage
Periodic$kone(x, y, logp, p, alpha, s2)
Arguments
x
vector
y
vector
logp
correlation parameters on log scale
p
correlation parameters on regular scale
alpha
correlation parameter
s2
Variance parameter
Method dC_dparams()
Derivative of covariance with respect to parameters
Usage
Periodic$dC_dparams(params = NULL, X, C_nonug, C, nug)
Arguments
params
Kernel parameters
X
matrix of points in rows
C_nonug
Covariance without nugget added to diagonal
C
Covariance with nugget
nug
Value of nugget
Method C_dC_dparams()
Calculate covariance matrix and its derivative with respect to parameters
Usage
Periodic$C_dC_dparams(params = NULL, X, nug)
Arguments
params
Kernel parameters
X
matrix of points in rows
nug
Value of nugget
Method dC_dx()
Derivative of covariance with respect to X
Usage
Periodic$dC_dx(XX, X, logp = self$logp, logalpha = self$logalpha, s2 = self$s2)
Arguments
XX
matrix of points
X
matrix of points to take derivative with respect to
logp
log of p
logalpha
log of alpha
s2
Variance parameter
Method param_optim_start()
Starting point for parameters for optimization
Usage
Periodic$param_optim_start( jitter = F, y, p_est = self$p_est, alpha_est = self$alpha_est, s2_est = self$s2_est )
Arguments
jitter
Should there be a jitter?
y
Output
p_est
Is p being estimated?
alpha_est
Is alpha being estimated?
s2_est
Is s2 being estimated?
Method param_optim_start0()
Starting point for parameters for optimization
Usage
Periodic$param_optim_start0( jitter = F, y, p_est = self$p_est, alpha_est = self$alpha_est, s2_est = self$s2_est )
Arguments
jitter
Should there be a jitter?
y
Output
p_est
Is p being estimated?
alpha_est
Is alpha being estimated?
s2_est
Is s2 being estimated?
Method param_optim_lower()
Lower bounds of parameters for optimization
Usage
Periodic$param_optim_lower( p_est = self$p_est, alpha_est = self$alpha_est, s2_est = self$s2_est )
Arguments
p_est
Is p being estimated?
alpha_est
Is alpha being estimated?
s2_est
Is s2 being estimated?
Method param_optim_upper()
Upper bounds of parameters for optimization
Usage
Periodic$param_optim_upper( p_est = self$p_est, alpha_est = self$alpha_est, s2_est = self$s2_est )
Arguments
p_est
Is p being estimated?
alpha_est
Is alpha being estimated?
s2_est
Is s2 being estimated?
Method set_params_from_optim()
Set parameters from optimization output
Usage
Periodic$set_params_from_optim( optim_out, p_est = self$p_est, alpha_est = self$alpha_est, s2_est = self$s2_est )
Arguments
optim_out
Output from optimization
p_est
Is p being estimated?
alpha_est
Is alpha being estimated?
s2_est
Is s2 being estimated?
Method s2_from_params()
Get s2 from params vector
Usage
Periodic$s2_from_params(params, s2_est = self$s2_est)
Arguments
params
parameter vector
s2_est
Is s2 being estimated?
Method print()
Print this object
Usage
Periodic$print()
Method clone()
The objects of this class are cloneable with this method.
Usage
Periodic$clone(deep = FALSE)
Arguments
deep
Whether to make a deep clone.
Examples
k1 <- Periodic$new(p=1, alpha=1)
plot(k1)
n <- 12
x <- matrix(seq(0,1,length.out = n), ncol=1)
y <- sin(2*pi*x) + rnorm(n,0,1e-1)
gp <- GauPro_kernel_model$new(X=x, Z=y, kernel=Periodic$new(D=1),
parallel=FALSE)
gp$predict(.454)
gp$plot1D()
gp$cool1Dplot()
plot(gp$kernel)
Power Exponential Kernel R6 class
Description
Power Exponential Kernel R6 class
Power Exponential Kernel R6 class
Usage
k_PowerExp(
alpha = 1.95,
beta,
s2 = 1,
D,
beta_lower = -8,
beta_upper = 6,
beta_est = TRUE,
alpha_lower = 1e-08,
alpha_upper = 2,
alpha_est = TRUE,
s2_lower = 1e-08,
s2_upper = 1e+08,
s2_est = TRUE,
useC = TRUE
)
Arguments
alpha |
Initial alpha value (the exponent). Between 0 and 2. |
beta |
Initial beta value |
s2 |
Initial variance |
D |
Number of input dimensions of data |
beta_lower |
Lower bound for beta |
beta_upper |
Upper bound for beta |
beta_est |
Should beta be estimated? |
alpha_lower |
Lower bound for alpha |
alpha_upper |
Upper bound for alpha |
alpha_est |
Should alpha be estimated? |
s2_lower |
Lower bound for s2 |
s2_upper |
Upper bound for s2 |
s2_est |
Should s2 be estimated? |
useC |
Should C code used? Much faster if implemented. |
Format
R6Class
object.
Value
Object of R6Class
with methods for fitting GP model.
Super classes
GauPro::GauPro_kernel
-> GauPro::GauPro_kernel_beta
-> GauPro_kernel_PowerExp
Public fields
alpha
alpha value (the exponent). Between 0 and 2.
alpha_lower
Lower bound for alpha
alpha_upper
Upper bound for alpha
alpha_est
Should alpha be estimated?
Methods
Public methods
Inherited methods
Method new()
Initialize kernel object
Usage
PowerExp$new( alpha = 1.95, beta, s2 = 1, D, beta_lower = -8, beta_upper = 6, beta_est = TRUE, alpha_lower = 1e-08, alpha_upper = 2, alpha_est = TRUE, s2_lower = 1e-08, s2_upper = 1e+08, s2_est = TRUE, useC = TRUE )
Arguments
alpha
Initial alpha value (the exponent). Between 0 and 2.
beta
Initial beta value
s2
Initial variance
D
Number of input dimensions of data
beta_lower
Lower bound for beta
beta_upper
Upper bound for beta
beta_est
Should beta be estimated?
alpha_lower
Lower bound for alpha
alpha_upper
Upper bound for alpha
alpha_est
Should alpha be estimated?
s2_lower
Lower bound for s2
s2_upper
Upper bound for s2
s2_est
Should s2 be estimated?
useC
Should C code used? Much faster if implemented.
Method k()
Calculate covariance between two points
Usage
PowerExp$k( x, y = NULL, beta = self$beta, alpha = self$alpha, s2 = self$s2, params = NULL )
Arguments
x
vector.
y
vector, optional. If excluded, find correlation of x with itself.
beta
Correlation parameters.
alpha
alpha value (the exponent). Between 0 and 2.
s2
Variance parameter.
params
parameters to use instead of beta and s2.
Method kone()
Find covariance of two points
Usage
PowerExp$kone(x, y, beta, theta, alpha, s2)
Arguments
x
vector
y
vector
beta
correlation parameters on log scale
theta
correlation parameters on regular scale
alpha
alpha value (the exponent). Between 0 and 2.
s2
Variance parameter
Method dC_dparams()
Derivative of covariance with respect to parameters
Usage
PowerExp$dC_dparams(params = NULL, X, C_nonug, C, nug)
Arguments
params
Kernel parameters
X
matrix of points in rows
C_nonug
Covariance without nugget added to diagonal
C
Covariance with nugget
nug
Value of nugget
Method dC_dx()
Derivative of covariance with respect to X
Usage
PowerExp$dC_dx( XX, X, theta, beta = self$beta, alpha = self$alpha, s2 = self$s2 )
Arguments
XX
matrix of points
X
matrix of points to take derivative with respect to
theta
Correlation parameters
beta
log of theta
alpha
alpha value (the exponent). Between 0 and 2.
s2
Variance parameter
Method param_optim_start()
Starting point for parameters for optimization
Usage
PowerExp$param_optim_start( jitter = F, y, beta_est = self$beta_est, alpha_est = self$alpha_est, s2_est = self$s2_est )
Arguments
jitter
Should there be a jitter?
y
Output
beta_est
Is beta being estimated?
alpha_est
Is alpha being estimated?
s2_est
Is s2 being estimated?
Method param_optim_start0()
Starting point for parameters for optimization
Usage
PowerExp$param_optim_start0( jitter = F, y, beta_est = self$beta_est, alpha_est = self$alpha_est, s2_est = self$s2_est )
Arguments
jitter
Should there be a jitter?
y
Output
beta_est
Is beta being estimated?
alpha_est
Is alpha being estimated?
s2_est
Is s2 being estimated?
Method param_optim_lower()
Lower bounds of parameters for optimization
Usage
PowerExp$param_optim_lower( beta_est = self$beta_est, alpha_est = self$alpha_est, s2_est = self$s2_est )
Arguments
beta_est
Is beta being estimated?
alpha_est
Is alpha being estimated?
s2_est
Is s2 being estimated?
Method param_optim_upper()
Upper bounds of parameters for optimization
Usage
PowerExp$param_optim_upper( beta_est = self$beta_est, alpha_est = self$alpha_est, s2_est = self$s2_est )
Arguments
beta_est
Is beta being estimated?
alpha_est
Is alpha being estimated?
s2_est
Is s2 being estimated?
Method set_params_from_optim()
Set parameters from optimization output
Usage
PowerExp$set_params_from_optim( optim_out, beta_est = self$beta_est, alpha_est = self$alpha_est, s2_est = self$s2_est )
Arguments
optim_out
Output from optimization
beta_est
Is beta estimate?
alpha_est
Is alpha estimated?
s2_est
Is s2 estimated?
Method print()
Print this object
Usage
PowerExp$print()
Method clone()
The objects of this class are cloneable with this method.
Usage
PowerExp$clone(deep = FALSE)
Arguments
deep
Whether to make a deep clone.
Examples
k1 <- PowerExp$new(beta=0, alpha=0)
Rational Quadratic Kernel R6 class
Description
Rational Quadratic Kernel R6 class
Rational Quadratic Kernel R6 class
Usage
k_RatQuad(
beta,
alpha = 1,
s2 = 1,
D,
beta_lower = -8,
beta_upper = 6,
beta_est = TRUE,
alpha_lower = 1e-08,
alpha_upper = 100,
alpha_est = TRUE,
s2_lower = 1e-08,
s2_upper = 1e+08,
s2_est = TRUE,
useC = TRUE
)
Arguments
beta |
Initial beta value |
alpha |
Initial alpha value |
s2 |
Initial variance |
D |
Number of input dimensions of data |
beta_lower |
Lower bound for beta |
beta_upper |
Upper bound for beta |
beta_est |
Should beta be estimated? |
alpha_lower |
Lower bound for alpha |
alpha_upper |
Upper bound for alpha |
alpha_est |
Should alpha be estimated? |
s2_lower |
Lower bound for s2 |
s2_upper |
Upper bound for s2 |
s2_est |
Should s2 be estimated? |
useC |
Should C code used? Much faster if implemented. |
Format
R6Class
object.
Value
Object of R6Class
with methods for fitting GP model.
Super classes
GauPro::GauPro_kernel
-> GauPro::GauPro_kernel_beta
-> GauPro_kernel_RatQuad
Public fields
alpha
alpha value (the exponent). Between 0 and 2.
logalpha
Log of alpha
logalpha_lower
Lower bound for log of alpha
logalpha_upper
Upper bound for log of alpha
alpha_est
Should alpha be estimated?
Methods
Public methods
Inherited methods
Method new()
Initialize kernel object
Usage
RatQuad$new( beta, alpha = 1, s2 = 1, D, beta_lower = -8, beta_upper = 6, beta_est = TRUE, alpha_lower = 1e-08, alpha_upper = 100, alpha_est = TRUE, s2_lower = 1e-08, s2_upper = 1e+08, s2_est = TRUE, useC = TRUE )
Arguments
beta
Initial beta value
alpha
Initial alpha value
s2
Initial variance
D
Number of input dimensions of data
beta_lower
Lower bound for beta
beta_upper
Upper bound for beta
beta_est
Should beta be estimated?
alpha_lower
Lower bound for alpha
alpha_upper
Upper bound for alpha
alpha_est
Should alpha be estimated?
s2_lower
Lower bound for s2
s2_upper
Upper bound for s2
s2_est
Should s2 be estimated?
useC
Should C code used? Much faster if implemented.
Method k()
Calculate covariance between two points
Usage
RatQuad$k( x, y = NULL, beta = self$beta, logalpha = self$logalpha, s2 = self$s2, params = NULL )
Arguments
x
vector.
y
vector, optional. If excluded, find correlation of x with itself.
beta
Correlation parameters.
logalpha
A correlation parameter
s2
Variance parameter.
params
parameters to use instead of beta and s2.
Method kone()
Find covariance of two points
Usage
RatQuad$kone(x, y, beta, theta, alpha, s2)
Arguments
x
vector
y
vector
beta
correlation parameters on log scale
theta
correlation parameters on regular scale
alpha
A correlation parameter
s2
Variance parameter
Method dC_dparams()
Derivative of covariance with respect to parameters
Usage
RatQuad$dC_dparams(params = NULL, X, C_nonug, C, nug)
Arguments
params
Kernel parameters
X
matrix of points in rows
C_nonug
Covariance without nugget added to diagonal
C
Covariance with nugget
nug
Value of nugget
Method dC_dx()
Derivative of covariance with respect to X
Usage
RatQuad$dC_dx(XX, X, theta, beta = self$beta, alpha = self$alpha, s2 = self$s2)
Arguments
XX
matrix of points
X
matrix of points to take derivative with respect to
theta
Correlation parameters
beta
log of theta
alpha
parameter
s2
Variance parameter
Method param_optim_start()
Starting point for parameters for optimization
Usage
RatQuad$param_optim_start( jitter = F, y, beta_est = self$beta_est, alpha_est = self$alpha_est, s2_est = self$s2_est )
Arguments
jitter
Should there be a jitter?
y
Output
beta_est
Is beta being estimated?
alpha_est
Is alpha being estimated?
s2_est
Is s2 being estimated?
Method param_optim_start0()
Starting point for parameters for optimization
Usage
RatQuad$param_optim_start0( jitter = F, y, beta_est = self$beta_est, alpha_est = self$alpha_est, s2_est = self$s2_est )
Arguments
jitter
Should there be a jitter?
y
Output
beta_est
Is beta being estimated?
alpha_est
Is alpha being estimated?
s2_est
Is s2 being estimated?
Method param_optim_lower()
Lower bounds of parameters for optimization
Usage
RatQuad$param_optim_lower( beta_est = self$beta_est, alpha_est = self$alpha_est, s2_est = self$s2_est )
Arguments
beta_est
Is beta being estimated?
alpha_est
Is alpha being estimated?
s2_est
Is s2 being estimated?
Method param_optim_upper()
Upper bounds of parameters for optimization
Usage
RatQuad$param_optim_upper( beta_est = self$beta_est, alpha_est = self$alpha_est, s2_est = self$s2_est )
Arguments
beta_est
Is beta being estimated?
alpha_est
Is alpha being estimated?
s2_est
Is s2 being estimated?
Method set_params_from_optim()
Set parameters from optimization output
Usage
RatQuad$set_params_from_optim( optim_out, beta_est = self$beta_est, alpha_est = self$alpha_est, s2_est = self$s2_est )
Arguments
optim_out
Output from optimization
beta_est
Is beta being estimated?
alpha_est
Is alpha being estimated?
s2_est
Is s2 being estimated?
Method print()
Print this object
Usage
RatQuad$print()
Method clone()
The objects of this class are cloneable with this method.
Usage
RatQuad$clone(deep = FALSE)
Arguments
deep
Whether to make a deep clone.
Examples
k1 <- RatQuad$new(beta=0, alpha=0)
Triangle Kernel R6 class
Description
Triangle Kernel R6 class
Triangle Kernel R6 class
Usage
k_Triangle(
beta,
s2 = 1,
D,
beta_lower = -8,
beta_upper = 6,
beta_est = TRUE,
s2_lower = 1e-08,
s2_upper = 1e+08,
s2_est = TRUE,
useC = TRUE,
isotropic = FALSE
)
Arguments
beta |
Initial beta value |
s2 |
Initial variance |
D |
Number of input dimensions of data |
beta_lower |
Lower bound for beta |
beta_upper |
Upper bound for beta |
beta_est |
Should beta be estimated? |
s2_lower |
Lower bound for s2 |
s2_upper |
Upper bound for s2 |
s2_est |
Should s2 be estimated? |
useC |
Should C code used? Much faster. |
isotropic |
If isotropic then a single beta/theta is used for all dimensions. If not (anisotropic) then a separate beta/beta is used for each dimension. |
Format
R6Class
object.
Value
Object of R6Class
with methods for fitting GP model.
Super classes
GauPro::GauPro_kernel
-> GauPro::GauPro_kernel_beta
-> GauPro_kernel_Triangle
Methods
Public methods
Inherited methods
GauPro::GauPro_kernel$plot()
GauPro::GauPro_kernel_beta$C_dC_dparams()
GauPro::GauPro_kernel_beta$initialize()
GauPro::GauPro_kernel_beta$param_optim_lower()
GauPro::GauPro_kernel_beta$param_optim_start()
GauPro::GauPro_kernel_beta$param_optim_start0()
GauPro::GauPro_kernel_beta$param_optim_upper()
GauPro::GauPro_kernel_beta$s2_from_params()
GauPro::GauPro_kernel_beta$set_params_from_optim()
Method k()
Calculate covariance between two points
Usage
Triangle$k(x, y = NULL, beta = self$beta, s2 = self$s2, params = NULL)
Arguments
x
vector.
y
vector, optional. If excluded, find correlation of x with itself.
beta
Correlation parameters.
s2
Variance parameter.
params
parameters to use instead of beta and s2.
Method kone()
Find covariance of two points
Usage
Triangle$kone(x, y, beta, theta, s2)
Arguments
x
vector
y
vector
beta
correlation parameters on log scale
theta
correlation parameters on regular scale
s2
Variance parameter
Method dC_dparams()
Derivative of covariance with respect to parameters
Usage
Triangle$dC_dparams(params = NULL, X, C_nonug, C, nug)
Arguments
params
Kernel parameters
X
matrix of points in rows
C_nonug
Covariance without nugget added to diagonal
C
Covariance with nugget
nug
Value of nugget
Method dC_dx()
Derivative of covariance with respect to X
Usage
Triangle$dC_dx(XX, X, theta, beta = self$beta, s2 = self$s2)
Arguments
XX
matrix of points
X
matrix of points to take derivative with respect to
theta
Correlation parameters
beta
log of theta
s2
Variance parameter
Method print()
Print this object
Usage
Triangle$print()
Method clone()
The objects of this class are cloneable with this method.
Usage
Triangle$clone(deep = FALSE)
Arguments
deep
Whether to make a deep clone.
Examples
k1 <- Triangle$new(beta=0)
plot(k1)
n <- 12
x <- matrix(seq(0,1,length.out = n), ncol=1)
y <- sin(2*pi*x) + rnorm(n,0,1e-1)
gp <- GauPro_kernel_model$new(X=x, Z=y, kernel=Triangle$new(1),
parallel=FALSE)
gp$predict(.454)
gp$plot1D()
gp$cool1Dplot()
White noise Kernel R6 class
Description
Initialize kernel object
Usage
k_White(
s2 = 1,
D,
s2_lower = 1e-08,
s2_upper = 1e+08,
s2_est = TRUE,
useC = TRUE
)
Arguments
s2 |
Initial variance |
D |
Number of input dimensions of data |
s2_lower |
Lower bound for s2 |
s2_upper |
Upper bound for s2 |
s2_est |
Should s2 be estimated? |
useC |
Should C code used? Not implemented for White. |
Format
R6Class
object.
Value
Object of R6Class
with methods for fitting GP model.
Super class
GauPro::GauPro_kernel
-> GauPro_kernel_White
Public fields
s2
variance
logs2
Log of s2
logs2_lower
Lower bound of logs2
logs2_upper
Upper bound of logs2
s2_est
Should s2 be estimated?
Methods
Public methods
Inherited methods
Method new()
Initialize kernel object
Usage
White$new( s2 = 1, D, s2_lower = 1e-08, s2_upper = 1e+08, s2_est = TRUE, useC = TRUE )
Arguments
s2
Initial variance
D
Number of input dimensions of data
s2_lower
Lower bound for s2
s2_upper
Upper bound for s2
s2_est
Should s2 be estimated?
useC
Should C code used? Not implemented for White.
Method k()
Calculate covariance between two points
Usage
White$k(x, y = NULL, s2 = self$s2, params = NULL)
Arguments
x
vector.
y
vector, optional. If excluded, find correlation of x with itself.
s2
Variance parameter.
params
parameters to use instead of beta and s2.
Method kone()
Find covariance of two points
Usage
White$kone(x, y, s2)
Arguments
x
vector
y
vector
s2
Variance parameter
Method dC_dparams()
Derivative of covariance with respect to parameters
Usage
White$dC_dparams(params = NULL, X, C_nonug, C, nug)
Arguments
params
Kernel parameters
X
matrix of points in rows
C_nonug
Covariance without nugget added to diagonal
C
Covariance with nugget
nug
Value of nugget
Method C_dC_dparams()
Calculate covariance matrix and its derivative with respect to parameters
Usage
White$C_dC_dparams(params = NULL, X, nug)
Arguments
params
Kernel parameters
X
matrix of points in rows
nug
Value of nugget
Method dC_dx()
Derivative of covariance with respect to X
Usage
White$dC_dx(XX, X, s2 = self$s2)
Arguments
XX
matrix of points
X
matrix of points to take derivative with respect to
s2
Variance parameter
theta
Correlation parameters
beta
log of theta
Method param_optim_start()
Starting point for parameters for optimization
Usage
White$param_optim_start(jitter = F, y, s2_est = self$s2_est)
Arguments
jitter
Should there be a jitter?
y
Output
s2_est
Is s2 being estimated?
Method param_optim_start0()
Starting point for parameters for optimization
Usage
White$param_optim_start0(jitter = F, y, s2_est = self$s2_est)
Arguments
jitter
Should there be a jitter?
y
Output
s2_est
Is s2 being estimated?
Method param_optim_lower()
Lower bounds of parameters for optimization
Usage
White$param_optim_lower(s2_est = self$s2_est)
Arguments
s2_est
Is s2 being estimated?
Method param_optim_upper()
Upper bounds of parameters for optimization
Usage
White$param_optim_upper(s2_est = self$s2_est)
Arguments
s2_est
Is s2 being estimated?
Method set_params_from_optim()
Set parameters from optimization output
Usage
White$set_params_from_optim(optim_out, s2_est = self$s2_est)
Arguments
optim_out
Output from optimization
s2_est
s2 estimate
Method s2_from_params()
Get s2 from params vector
Usage
White$s2_from_params(params, s2_est = self$s2_est)
Arguments
params
parameter vector
s2_est
Is s2 being estimated?
Method print()
Print this object
Usage
White$print()
Method clone()
The objects of this class are cloneable with this method.
Usage
White$clone(deep = FALSE)
Arguments
deep
Whether to make a deep clone.
Examples
k1 <- White$new(s2=1e-8)
Cube multiply over first dimension
Description
The result is transposed since that is what apply will give you
Usage
arma_mult_cube_vec(cub, v)
Arguments
cub |
A cube (3D array) |
v |
A vector |
Value
Transpose of multiplication over first dimension of cub time v
Examples
d1 <- 10
d2 <- 1e2
d3 <- 2e2
aa <- array(data = rnorm(d1*d2*d3), dim = c(d1, d2, d3))
bb <- rnorm(d3)
t1 <- apply(aa, 1, function(U) {U%*%bb})
t2 <- arma_mult_cube_vec(aa, bb)
dd <- t1 - t2
summary(dd)
image(dd)
table(dd)
# microbenchmark::microbenchmark(apply(aa, 1, function(U) {U%*%bb}),
# arma_mult_cube_vec(aa, bb))
Correlation Cubic matrix in C (symmetric)
Description
Correlation Cubic matrix in C (symmetric)
Usage
corr_cubic_matrix_symC(x, theta)
Arguments
x |
Matrix x |
theta |
Theta vector |
Value
Correlation matrix
Examples
corr_cubic_matrix_symC(matrix(c(1,0,0,1),2,2),c(1,1))
Correlation Gaussian matrix in C (symmetric)
Description
Correlation Gaussian matrix in C (symmetric)
Usage
corr_exponential_matrix_symC(x, theta)
Arguments
x |
Matrix x |
theta |
Theta vector |
Value
Correlation matrix
Examples
corr_gauss_matrix_symC(matrix(c(1,0,0,1),2,2),c(1,1))
Correlation Gaussian matrix gradient in C using Armadillo
Description
Correlation Gaussian matrix gradient in C using Armadillo
Usage
corr_gauss_dCdX(XX, X, theta, s2)
Arguments
XX |
Matrix XX to get gradient for |
X |
Matrix X GP was fit to |
theta |
Theta vector |
s2 |
Variance parameter |
Value
3-dim array of correlation derivative
Examples
# corr_gauss_dCdX(matrix(c(1,0,0,1),2,2),c(1,1))
Gaussian correlation
Description
Gaussian correlation
Usage
corr_gauss_matrix(x, x2 = NULL, theta)
Arguments
x |
First data matrix |
x2 |
Second data matrix |
theta |
Correlation parameter |
Value
Correlation matrix
Examples
corr_gauss_matrix(matrix(1:10,ncol=1), matrix(6:15,ncol=1), 1e-2)
Correlation Gaussian matrix in C using Rcpp
Description
Correlation Gaussian matrix in C using Rcpp
Usage
corr_gauss_matrixC(x, y, theta)
Arguments
x |
Matrix x |
y |
Matrix y, must have same number of columns as x |
theta |
Theta vector |
Value
Correlation matrix
Examples
corr_gauss_matrixC(matrix(c(1,0,0,1),2,2), matrix(c(1,0,1,1),2,2), c(1,1))
Correlation Gaussian matrix in C using Armadillo
Description
20-25
Usage
corr_gauss_matrix_armaC(x, y, theta, s2 = 1)
Arguments
x |
Matrix x |
y |
Matrix y, must have same number of columns as x |
theta |
Theta vector |
s2 |
Variance to multiply matrix by |
Value
Correlation matrix
Examples
corr_gauss_matrix_armaC(matrix(c(1,0,0,1),2,2),matrix(c(1,0,1,1),2,2),c(1,1))
x1 <- matrix(runif(100*6), nrow=100, ncol=6)
x2 <- matrix(runif(1e4*6), ncol=6)
th <- runif(6)
t1 <- corr_gauss_matrixC(x1, x2, th)
t2 <- corr_gauss_matrix_armaC(x1, x2, th)
identical(t1, t2)
# microbenchmark::microbenchmark(corr_gauss_matrixC(x1, x2, th),
# corr_gauss_matrix_armaC(x1, x2, th))
Correlation Gaussian matrix in C (symmetric)
Description
Correlation Gaussian matrix in C (symmetric)
Usage
corr_gauss_matrix_symC(x, theta)
Arguments
x |
Matrix x |
theta |
Theta vector |
Value
Correlation matrix
Examples
corr_gauss_matrix_symC(matrix(c(1,0,0,1),2,2),c(1,1))
Correlation Gaussian matrix in C using Armadillo (symmetric)
Description
About 30
Usage
corr_gauss_matrix_sym_armaC(x, theta)
Arguments
x |
Matrix x |
theta |
Theta vector |
Value
Correlation matrix
Examples
corr_gauss_matrix_sym_armaC(matrix(c(1,0,0,1),2,2),c(1,1))
x3 <- matrix(runif(1e3*6), ncol=6)
th <- runif(6)
t3 <- corr_gauss_matrix_symC(x3, th)
t4 <- corr_gauss_matrix_sym_armaC(x3, th)
identical(t3, t4)
# microbenchmark::microbenchmark(corr_gauss_matrix_symC(x3, th),
# corr_gauss_matrix_sym_armaC(x3, th), times=50)
Correlation Latent factor matrix in C (symmetric)
Description
Correlation Latent factor matrix in C (symmetric)
Usage
corr_latentfactor_matrix_symC(x, theta, xindex, latentdim, offdiagequal)
Arguments
x |
Matrix x |
theta |
Theta vector |
xindex |
Index to use |
latentdim |
Number of latent dimensions |
offdiagequal |
What to set off-diagonal values with matching values to. |
Value
Correlation matrix
Examples
corr_latentfactor_matrix_symC(matrix(c(1,.5, 2,1.6, 1,0),ncol=2,byrow=TRUE),
c(1.5,1.8), 1, 1, 1-1e-6)
corr_latentfactor_matrix_symC(matrix(c(0,0,0,1,0,0,0,2,0,0,0,3,0,0,0,4),
ncol=4, byrow=TRUE),
c(0.101, -0.714, 0.114, -0.755, 0.117, -0.76, 0.116, -0.752),
4, 2, 1-1e-6) * 6.85
Correlation Latent factor matrix in C (symmetric)
Description
Correlation Latent factor matrix in C (symmetric)
Usage
corr_latentfactor_matrixmatrixC(x, y, theta, xindex, latentdim, offdiagequal)
Arguments
x |
Matrix x |
y |
Matrix y |
theta |
Theta vector |
xindex |
Index to use |
latentdim |
Number of latent dimensions |
offdiagequal |
What to set off-diagonal values with matching values to. |
Value
Correlation matrix
Examples
corr_latentfactor_matrixmatrixC(matrix(c(1,.5, 2,1.6, 1,0),ncol=2,byrow=TRUE),
matrix(c(2,1.6, 1,0),ncol=2,byrow=TRUE),
c(1.5,1.8), 1, 1, 1-1e-6)
corr_latentfactor_matrixmatrixC(matrix(c(0,0,0,1,0,0,0,2,0,0,0,3,0,0,0,4),
ncol=4, byrow=TRUE),
matrix(c(0,0,0,2,0,0,0,4,0,0,0,1),
ncol=4, byrow=TRUE),
c(0.101, -0.714, 0.114, -0.755, 0.117, -0.76, 0.116, -0.752),
4, 2, 1-1e-6) * 6.85
Correlation Matern 3/2 matrix in C (symmetric)
Description
Correlation Matern 3/2 matrix in C (symmetric)
Usage
corr_matern32_matrix_symC(x, theta)
Arguments
x |
Matrix x |
theta |
Theta vector |
Value
Correlation matrix
Examples
corr_gauss_matrix_symC(matrix(c(1,0,0,1),2,2),c(1,1))
Correlation Gaussian matrix in C (symmetric)
Description
Correlation Gaussian matrix in C (symmetric)
Usage
corr_matern52_matrix_symC(x, theta)
Arguments
x |
Matrix x |
theta |
Theta vector |
Value
Correlation matrix
Examples
corr_matern52_matrix_symC(matrix(c(1,0,0,1),2,2),c(1,1))
Correlation ordered factor matrix in C (symmetric)
Description
Correlation ordered factor matrix in C (symmetric)
Usage
corr_orderedfactor_matrix_symC(x, theta, xindex, offdiagequal)
Arguments
x |
Matrix x |
theta |
Theta vector |
xindex |
Index to use |
offdiagequal |
What to set off-diagonal values with matching values to. |
Value
Correlation matrix
Examples
corr_orderedfactor_matrix_symC(matrix(c(1,.5, 2,1.6, 1,0),ncol=2,byrow=TRUE),
c(1.5,1.8), 1, 1-1e-6)
corr_orderedfactor_matrix_symC(matrix(c(0,0,0,1,0,0,0,2,0,0,0,3,0,0,0,4),
ncol=4, byrow=TRUE),
c(0.101, -0.714, 0.114, -0.755, 0.117, -0.76, 0.116, -0.752),
4, 1-1e-6) * 6.85
Correlation ordered factor matrix in C (symmetric)
Description
Correlation ordered factor matrix in C (symmetric)
Usage
corr_orderedfactor_matrixmatrixC(x, y, theta, xindex, offdiagequal)
Arguments
x |
Matrix x |
y |
Matrix y |
theta |
Theta vector |
xindex |
Index to use |
offdiagequal |
What to set off-diagonal values with matching values to. |
Value
Correlation matrix
Examples
corr_orderedfactor_matrixmatrixC(matrix(c(1,.5, 2,1.6, 1,0),ncol=2,byrow=TRUE),
matrix(c(2,1.6, 1,0),ncol=2,byrow=TRUE),
c(1.5,1.8), 1, 1-1e-6)
corr_orderedfactor_matrixmatrixC(matrix(c(0,0,0,1,0,0,0,2,0,0,0,3,0,0,0,4),
ncol=4, byrow=TRUE),
matrix(c(0,0,0,2,0,0,0,4,0,0,0,1),
ncol=4, byrow=TRUE),
c(0.101, -0.714, 0.114, -0.755, 0.117, -0.76, 0.116, -0.752),
4, 1-1e-6) * 6.85
Gaussian process regression model
Description
Fits a Gaussian process regression model to data.
An R6 object is returned with many methods.
'gpkm()' is an alias for 'GauPro_kernel_model$new()'. For full documentation, see documentation for 'GauPro_kernel_model'.
Standard methods that work include 'plot()', 'summary()', and 'predict()'.
Usage
gpkm(
X,
Z,
kernel,
trend,
verbose = 0,
useC = TRUE,
useGrad = TRUE,
parallel = FALSE,
parallel_cores = "detect",
nug = 1e-06,
nug.min = 1e-08,
nug.max = 100,
nug.est = TRUE,
param.est = TRUE,
restarts = 0,
normalize = FALSE,
optimizer = "L-BFGS-B",
track_optim = FALSE,
formula,
data,
...
)
Arguments
X |
Matrix whose rows are the input points |
Z |
Output points corresponding to X |
kernel |
The kernel to use. E.g., Gaussian$new(). |
trend |
Trend to use. E.g., trend_constant$new(). |
verbose |
Amount of stuff to print. 0 is little, 2 is a lot. |
useC |
Should C code be used when possible? Should be faster. |
useGrad |
Should the gradient be used? |
parallel |
Should code be run in parallel? Make optimization faster but uses more computer resources. |
parallel_cores |
When using parallel, how many cores should be used? |
nug |
Value for the nugget. The starting value if estimating it. |
nug.min |
Minimum allowable value for the nugget. |
nug.max |
Maximum allowable value for the nugget. |
nug.est |
Should the nugget be estimated? |
param.est |
Should the kernel parameters be estimated? |
restarts |
How many optimization restarts should be used when estimating parameters? |
normalize |
Should the data be normalized? |
optimizer |
What algorithm should be used to optimize the parameters. |
track_optim |
Should it track the parameters evaluated while optimizing? |
formula |
Formula for the data if giving in a data frame. |
data |
Data frame of data. Use in conjunction with formula. |
... |
Not used |
Details
The default kernel is a Matern 5/2 kernel, but factor/character inputs will be given factor kernels.
Calculate gradfunc in optimization to speed up. NEEDS TO APERM dC_dparams Doesn't need to be exported, should only be useful in functions.
Description
Calculate gradfunc in optimization to speed up. NEEDS TO APERM dC_dparams Doesn't need to be exported, should only be useful in functions.
Usage
gradfuncarray(dC_dparams, Cinv, Cinv_yminusmu)
Arguments
dC_dparams |
Derivative matrix for covariance function wrt kernel parameters |
Cinv |
Inverse of covariance matrix |
Cinv_yminusmu |
Vector that is the inverse of C times y minus the mean. |
Value
Vector, one value for each parameter
Examples
gradfuncarray(array(dim=c(2,4,4), data=rnorm(32)), matrix(rnorm(16),4,4), rnorm(4))
Calculate gradfunc in optimization to speed up. NEEDS TO APERM dC_dparams Doesn't need to be exported, should only be useful in functions.
Description
Calculate gradfunc in optimization to speed up. NEEDS TO APERM dC_dparams Doesn't need to be exported, should only be useful in functions.
Usage
gradfuncarrayR(dC_dparams, Cinv, Cinv_yminusmu)
Arguments
dC_dparams |
Derivative matrix for covariance function wrt kernel parameters |
Cinv |
Inverse of covariance matrix |
Cinv_yminusmu |
Vector that is the inverse of C times y minus the mean. |
Value
Vector, one value for each parameter
Examples
a1 <- array(dim=c(2,4,4), data=rnorm(32))
a2 <- matrix(rnorm(16),4,4)
a3 <- rnorm(4)
#gradfuncarray(a1, a2, a3)
#gradfuncarrayR(a1, a2, a3)
Derivative of cubic kernel covariance matrix in C
Description
Derivative of cubic kernel covariance matrix in C
Usage
kernel_cubic_dC(x, theta, C_nonug, s2_est, beta_est, lenparams_D, s2_nug, s2)
Arguments
x |
Matrix x |
theta |
Theta vector |
C_nonug |
cov mat without nugget |
s2_est |
whether s2 is being estimated |
beta_est |
Whether theta/beta is being estimated |
lenparams_D |
Number of parameters the derivative is being calculated for |
s2_nug |
s2 times the nug |
s2 |
s2 |
Value
Correlation matrix
Derivative of Matern 5/2 kernel covariance matrix in C
Description
Derivative of Matern 5/2 kernel covariance matrix in C
Usage
kernel_exponential_dC(
x,
theta,
C_nonug,
s2_est,
beta_est,
lenparams_D,
s2_nug,
s2
)
Arguments
x |
Matrix x |
theta |
Theta vector |
C_nonug |
cov mat without nugget |
s2_est |
whether s2 is being estimated |
beta_est |
Whether theta/beta is being estimated |
lenparams_D |
Number of parameters the derivative is being calculated for |
s2_nug |
s2 times the nug |
s2 |
s2 parameter |
Value
Correlation matrix
Derivative of Gaussian kernel covariance matrix in C
Description
Derivative of Gaussian kernel covariance matrix in C
Usage
kernel_gauss_dC(x, theta, C_nonug, s2_est, beta_est, lenparams_D, s2_nug)
Arguments
x |
Matrix x |
theta |
Theta vector |
C_nonug |
cov mat without nugget |
s2_est |
whether s2 is being estimated |
beta_est |
Whether theta/beta is being estimated |
lenparams_D |
Number of parameters the derivative is being calculated for |
s2_nug |
s2 times the nug |
Value
Correlation matrix
Derivative of covariance matrix of X with respect to kernel parameters for the Latent Factor Kernel
Description
Derivative of covariance matrix of X with respect to kernel parameters for the Latent Factor Kernel
Usage
kernel_latentFactor_dC(
x,
pf,
C_nonug,
s2_est,
p_est,
lenparams_D,
s2_nug,
latentdim,
xindex,
nlevels,
s2
)
Arguments
x |
Matrix x |
pf |
pf vector |
C_nonug |
cov mat without nugget |
s2_est |
whether s2 is being estimated |
p_est |
Whether theta/beta is being estimated |
lenparams_D |
Number of parameters the derivative is being calculated for |
s2_nug |
s2 times the nug |
latentdim |
Number of latent dimensions |
xindex |
Which column of x is the indexing variable |
nlevels |
Number of levels |
s2 |
Value of s2 |
Value
Correlation matrix
Derivative of Matern 5/2 kernel covariance matrix in C
Description
Derivative of Matern 5/2 kernel covariance matrix in C
Usage
kernel_matern32_dC(x, theta, C_nonug, s2_est, beta_est, lenparams_D, s2_nug)
Arguments
x |
Matrix x |
theta |
Theta vector |
C_nonug |
cov mat without nugget |
s2_est |
whether s2 is being estimated |
beta_est |
Whether theta/beta is being estimated |
lenparams_D |
Number of parameters the derivative is being calculated for |
s2_nug |
s2 times the nug |
Value
Correlation matrix
Derivative of Matern 5/2 kernel covariance matrix in C
Description
Derivative of Matern 5/2 kernel covariance matrix in C
Usage
kernel_matern52_dC(x, theta, C_nonug, s2_est, beta_est, lenparams_D, s2_nug)
Arguments
x |
Matrix x |
theta |
Theta vector |
C_nonug |
cov mat without nugget |
s2_est |
whether s2 is being estimated |
beta_est |
Whether theta/beta is being estimated |
lenparams_D |
Number of parameters the derivative is being calculated for |
s2_nug |
s2 times the nug |
Value
Correlation matrix
Derivative of covariance matrix of X with respect to kernel parameters for the Ordered Factor Kernel
Description
Derivative of covariance matrix of X with respect to kernel parameters for the Ordered Factor Kernel
Usage
kernel_orderedFactor_dC(
x,
pf,
C_nonug,
s2_est,
p_est,
lenparams_D,
s2_nug,
xindex,
nlevels,
s2
)
Arguments
x |
Matrix x |
pf |
pf vector |
C_nonug |
cov mat without nugget |
s2_est |
whether s2 is being estimated |
p_est |
Whether theta/beta is being estimated |
lenparams_D |
Number of parameters the derivative is being calculated for |
s2_nug |
s2 times the nug |
xindex |
Which column of x is the indexing variable |
nlevels |
Number of levels |
s2 |
Value of s2 |
Value
Correlation matrix
Gaussian Kernel R6 class
Description
Gaussian Kernel R6 class
Gaussian Kernel R6 class
Format
R6Class
object.
Value
Object of R6Class
with methods for fitting GP model.
Super class
GauPro::GauPro_kernel
-> GauPro_kernel_product
Public fields
k1
kernel 1
k2
kernel 2
s2
Variance
Active bindings
k1pl
param length of kernel 1
k2pl
param length of kernel 2
s2_est
Is s2 being estimated?
Methods
Public methods
Inherited methods
Method new()
Is s2 being estimated?
Length of the parameters of k1
Length of the parameters of k2
Initialize kernel
Usage
kernel_product$new(k1, k2, useC = TRUE)
Arguments
k1
Kernel 1
k2
Kernel 2
useC
Should C code used? Not applicable for kernel product.
Method k()
Calculate covariance between two points
Usage
kernel_product$k(x, y = NULL, params, ...)
Arguments
x
vector.
y
vector, optional. If excluded, find correlation of x with itself.
params
parameters to use instead of beta and s2.
...
Not used
Method param_optim_start()
Starting point for parameters for optimization
Usage
kernel_product$param_optim_start(jitter = F, y)
Arguments
jitter
Should there be a jitter?
y
Output
Method param_optim_start0()
Starting point for parameters for optimization
Usage
kernel_product$param_optim_start0(jitter = F, y)
Arguments
jitter
Should there be a jitter?
y
Output
Method param_optim_lower()
Lower bounds of parameters for optimization
Usage
kernel_product$param_optim_lower()
Method param_optim_upper()
Upper bounds of parameters for optimization
Usage
kernel_product$param_optim_upper()
Method set_params_from_optim()
Set parameters from optimization output
Usage
kernel_product$set_params_from_optim(optim_out)
Arguments
optim_out
Output from optimization
Method dC_dparams()
Derivative of covariance with respect to parameters
Usage
kernel_product$dC_dparams(params = NULL, C, X, C_nonug, nug)
Arguments
params
Kernel parameters
C
Covariance with nugget
X
matrix of points in rows
C_nonug
Covariance without nugget added to diagonal
nug
Value of nugget
Method C_dC_dparams()
Calculate covariance matrix and its derivative with respect to parameters
Usage
kernel_product$C_dC_dparams(params = NULL, X, nug)
Arguments
params
Kernel parameters
X
matrix of points in rows
nug
Value of nugget
Method dC_dx()
Derivative of covariance with respect to X
Usage
kernel_product$dC_dx(XX, X)
Arguments
XX
matrix of points
X
matrix of points to take derivative with respect to
Method s2_from_params()
Get s2 from params vector
Usage
kernel_product$s2_from_params(params, s2_est = self$s2_est)
Arguments
params
parameter vector
s2_est
Is s2 being estimated?
Method print()
Print this object
Usage
kernel_product$print()
Method clone()
The objects of this class are cloneable with this method.
Usage
kernel_product$clone(deep = FALSE)
Arguments
deep
Whether to make a deep clone.
Examples
k1 <- Exponential$new(beta=1)
k2 <- Matern32$new(beta=2)
k <- k1 * k2
k$k(matrix(c(2,1), ncol=1))
Gaussian Kernel R6 class
Description
Gaussian Kernel R6 class
Gaussian Kernel R6 class
Format
R6Class
object.
Value
Object of R6Class
with methods for fitting GP model.
Super class
GauPro::GauPro_kernel
-> GauPro_kernel_sum
Public fields
k1
kernel 1
k2
kernel 2
k1_param_length
param length of kernel 1
k2_param_length
param length of kernel 2
k1pl
param length of kernel 1
k2pl
param length of kernel 2
s2
variance
s2_est
Is s2 being estimated?
Methods
Public methods
Inherited methods
Method new()
Initialize kernel
Usage
kernel_sum$new(k1, k2, useC = TRUE)
Arguments
k1
Kernel 1
k2
Kernel 2
useC
Should C code used? Not applicable for kernel sum.
Method k()
Calculate covariance between two points
Usage
kernel_sum$k(x, y = NULL, params, ...)
Arguments
x
vector.
y
vector, optional. If excluded, find correlation of x with itself.
params
parameters to use instead of beta and s2.
...
Not used
Method param_optim_start()
Starting point for parameters for optimization
Usage
kernel_sum$param_optim_start(jitter = F, y)
Arguments
jitter
Should there be a jitter?
y
Output
Method param_optim_start0()
Starting point for parameters for optimization
Usage
kernel_sum$param_optim_start0(jitter = F, y)
Arguments
jitter
Should there be a jitter?
y
Output
Method param_optim_lower()
Lower bounds of parameters for optimization
Usage
kernel_sum$param_optim_lower()
Method param_optim_upper()
Upper bounds of parameters for optimization
Usage
kernel_sum$param_optim_upper()
Method set_params_from_optim()
Set parameters from optimization output
Usage
kernel_sum$set_params_from_optim(optim_out)
Arguments
optim_out
Output from optimization
Method dC_dparams()
Derivative of covariance with respect to parameters
Usage
kernel_sum$dC_dparams(params = NULL, C, X, C_nonug, nug)
Arguments
params
Kernel parameters
C
Covariance with nugget
X
matrix of points in rows
C_nonug
Covariance without nugget added to diagonal
nug
Value of nugget
Method C_dC_dparams()
Calculate covariance matrix and its derivative with respect to parameters
Usage
kernel_sum$C_dC_dparams(params = NULL, X, nug)
Arguments
params
Kernel parameters
X
matrix of points in rows
nug
Value of nugget
Method dC_dx()
Derivative of covariance with respect to X
Usage
kernel_sum$dC_dx(XX, X)
Arguments
XX
matrix of points
X
matrix of points to take derivative with respect to
Method s2_from_params()
Get s2 from params vector
Usage
kernel_sum$s2_from_params(params)
Arguments
params
parameter vector
s2_est
Is s2 being estimated?
Method print()
Print this object
Usage
kernel_sum$print()
Method clone()
The objects of this class are cloneable with this method.
Usage
kernel_sum$clone(deep = FALSE)
Arguments
deep
Whether to make a deep clone.
Examples
k1 <- Exponential$new(beta=1)
k2 <- Matern32$new(beta=2)
k <- k1 + k2
k$k(matrix(c(2,1), ncol=1))
Predict for class GauPro
Description
Predict for class GauPro
Usage
## S3 method for class 'GauPro'
predict(object, XX, se.fit = F, covmat = F, split_speed = T, ...)
Arguments
object |
Object of class GauPro |
XX |
new points to predict |
se.fit |
Should standard error be returned (and variance)? |
covmat |
Should the covariance matrix be returned? |
split_speed |
Should the calculation be split up to speed it up? |
... |
Additional parameters |
Value
Prediction from object at XX
Examples
n <- 12
x <- matrix(seq(0,1,length.out = n), ncol=1)
y <- sin(2*pi*x) + rnorm(n,0,1e-1)
gp <- GauPro(X=x, Z=y, parallel=FALSE)
predict(gp, .448)
Print summary.GauPro
Description
Print summary.GauPro
Usage
## S3 method for class 'summary.GauPro'
print(x, ...)
Arguments
x |
summary.GauPro object |
... |
Additional args |
Value
prints, returns invisible object
Find the square root of a matrix
Description
Same thing as 'expm::sqrtm', but faster.
Usage
sqrt_matrix(mat, symmetric)
Arguments
mat |
Matrix to find square root matrix of |
symmetric |
Is it symmetric? Passed to eigen. |
Value
Square root of mat
Examples
mat <- matrix(c(1,.1,.1,1), 2, 2)
smat <- sqrt_matrix(mat=mat, symmetric=TRUE)
smat %*% smat
Summary for GauPro object
Description
Summary for GauPro object
Usage
## S3 method for class 'GauPro'
summary(object, ...)
Arguments
object |
GauPro R6 object |
... |
Additional arguments passed to summary |
Value
Summary
Trend R6 class
Description
Trend R6 class
Trend R6 class
Format
R6Class
object.
Value
Object of R6Class
with methods for fitting GP model.
Super class
GauPro::GauPro_trend
-> GauPro_trend_0
Public fields
m
Trend parameters
m_lower
m lower bound
m_upper
m upper bound
m_est
Should m be estimated?
Methods
Public methods
Method new()
Initialize trend object
Usage
trend_0$new(m = 0, m_lower = 0, m_upper = 0, m_est = FALSE, D = NA)
Arguments
m
trend initial parameters
m_lower
trend lower bounds
m_upper
trend upper bounds
m_est
Logical of whether each param should be estimated
D
Number of input dimensions of data
Method Z()
Get trend value for given matrix X
Usage
trend_0$Z(X, m = self$m, params = NULL)
Arguments
X
matrix of points
m
trend parameters
params
trend parameters
Method dZ_dparams()
Derivative of trend with respect to trend parameters
Usage
trend_0$dZ_dparams(X, m = m$est, params = NULL)
Arguments
X
matrix of points
m
trend values
params
overrides m
Method dZ_dx()
Derivative of trend with respect to X
Usage
trend_0$dZ_dx(X, m = self$m, params = NULL)
Arguments
X
matrix of points
m
trend values
params
overrides m
Method param_optim_start()
Get parameter initial point for optimization
Usage
trend_0$param_optim_start(jitter, trend_est)
Arguments
jitter
Not used
trend_est
If the trend should be estimate.
Method param_optim_start0()
Get parameter initial point for optimization
Usage
trend_0$param_optim_start0(jitter, trend_est)
Arguments
jitter
Not used
trend_est
If the trend should be estimate.
Method param_optim_lower()
Get parameter lower bounds for optimization
Usage
trend_0$param_optim_lower(jitter, trend_est)
Arguments
jitter
Not used
trend_est
If the trend should be estimate.
Method param_optim_upper()
Get parameter upper bounds for optimization
Usage
trend_0$param_optim_upper(jitter, trend_est)
Arguments
jitter
Not used
trend_est
If the trend should be estimate.
Method set_params_from_optim()
Set parameters after optimization
Usage
trend_0$set_params_from_optim(optim_out)
Arguments
optim_out
Output from optim
Method clone()
The objects of this class are cloneable with this method.
Usage
trend_0$clone(deep = FALSE)
Arguments
deep
Whether to make a deep clone.
Examples
t1 <- trend_0$new()
Trend R6 class
Description
Trend R6 class
Trend R6 class
Format
R6Class
object.
Value
Object of R6Class
with methods for fitting GP model.
Super class
GauPro::GauPro_trend
-> GauPro_trend_LM
Public fields
m
Trend parameters
m_lower
m lower bound
m_upper
m upper bound
m_est
Should m be estimated?
b
trend parameter
b_lower
trend lower bounds
b_upper
trend upper bounds
b_est
Should b be estimated?
Methods
Public methods
Method new()
Initialize trend object
Usage
trend_LM$new( D, m = rep(0, D), m_lower = rep(-Inf, D), m_upper = rep(Inf, D), m_est = rep(TRUE, D), b = 0, b_lower = -Inf, b_upper = Inf, b_est = TRUE )
Arguments
D
Number of input dimensions of data
m
trend initial parameters
m_lower
trend lower bounds
m_upper
trend upper bounds
m_est
Logical of whether each param should be estimated
b
trend parameter
b_lower
trend lower bounds
b_upper
trend upper bounds
b_est
Should b be estimated?
Method Z()
Get trend value for given matrix X
Usage
trend_LM$Z(X, m = self$m, b = self$b, params = NULL)
Arguments
X
matrix of points
m
trend parameters
b
trend parameters (slopes)
params
trend parameters
Method dZ_dparams()
Derivative of trend with respect to trend parameters
Usage
trend_LM$dZ_dparams(X, m = self$m_est, b = self$b_est, params = NULL)
Arguments
X
matrix of points
m
trend values
b
trend intercept
params
overrides m
Method dZ_dx()
Derivative of trend with respect to X
Usage
trend_LM$dZ_dx(X, m = self$m, params = NULL)
Arguments
X
matrix of points
m
trend values
params
overrides m
Method param_optim_start()
Get parameter initial point for optimization
Usage
trend_LM$param_optim_start( jitter = FALSE, b_est = self$b_est, m_est = self$m_est )
Arguments
jitter
Not used
b_est
If the mean should be estimated.
m_est
If the linear terms should be estimated.
Method param_optim_start0()
Get parameter initial point for optimization
Usage
trend_LM$param_optim_start0( jitter = FALSE, b_est = self$b_est, m_est = self$m_est )
Arguments
jitter
Not used
b_est
If the mean should be estimated.
m_est
If the linear terms should be estimated.
Method param_optim_lower()
Get parameter lower bounds for optimization
Usage
trend_LM$param_optim_lower(b_est = self$b_est, m_est = self$m_est)
Arguments
b_est
If the mean should be estimated.
m_est
If the linear terms should be estimated.
Method param_optim_upper()
Get parameter upper bounds for optimization
Usage
trend_LM$param_optim_upper(b_est = self$b_est, m_est = self$m_est)
Arguments
b_est
If the mean should be estimated.
m_est
If the linear terms should be estimated.
Method set_params_from_optim()
Set parameters after optimization
Usage
trend_LM$set_params_from_optim(optim_out)
Arguments
optim_out
Output from optim
Method clone()
The objects of this class are cloneable with this method.
Usage
trend_LM$clone(deep = FALSE)
Arguments
deep
Whether to make a deep clone.
Examples
t1 <- trend_LM$new(D=2)
Trend R6 class
Description
Trend R6 class
Trend R6 class
Format
R6Class
object.
Value
Object of R6Class
with methods for fitting GP model.
Super class
GauPro::GauPro_trend
-> GauPro_trend_c
Public fields
m
Trend parameters
m_lower
m lower bound
m_upper
m upper bound
m_est
Should m be estimated?
Methods
Public methods
Method new()
Initialize trend object
Usage
trend_c$new(m = 0, m_lower = -Inf, m_upper = Inf, m_est = TRUE, D = NA)
Arguments
m
trend initial parameters
m_lower
trend lower bounds
m_upper
trend upper bounds
m_est
Logical of whether each param should be estimated
D
Number of input dimensions of data
Method Z()
Get trend value for given matrix X
Usage
trend_c$Z(X, m = self$m, params = NULL)
Arguments
X
matrix of points
m
trend parameters
params
trend parameters
Method dZ_dparams()
Derivative of trend with respect to trend parameters
Usage
trend_c$dZ_dparams(X, m = self$m, params = NULL)
Arguments
X
matrix of points
m
trend values
params
overrides m
Method dZ_dx()
Derivative of trend with respect to X
Usage
trend_c$dZ_dx(X, m = self$m, params = NULL)
Arguments
X
matrix of points
m
trend values
params
overrides m
Method param_optim_start()
Get parameter initial point for optimization
Usage
trend_c$param_optim_start(jitter = F, m_est = self$m_est)
Arguments
jitter
Not used
m_est
If the trend should be estimate.
Method param_optim_start0()
Get parameter initial point for optimization
Usage
trend_c$param_optim_start0(jitter = F, m_est = self$m_est)
Arguments
jitter
Not used
m_est
If the trend should be estimate.
Method param_optim_lower()
Get parameter lower bounds for optimization
Usage
trend_c$param_optim_lower(m_est = self$m_est)
Arguments
m_est
If the trend should be estimate.
Method param_optim_upper()
Get parameter upper bounds for optimization
Usage
trend_c$param_optim_upper(m_est = self$m_est)
Arguments
m_est
If the trend should be estimate.
Method set_params_from_optim()
Set parameters after optimization
Usage
trend_c$set_params_from_optim(optim_out)
Arguments
optim_out
Output from optim
Method clone()
The objects of this class are cloneable with this method.
Usage
trend_c$clone(deep = FALSE)
Arguments
deep
Whether to make a deep clone.
Examples
t1 <- trend_c$new()