GauPro model that uses kernels
GauPro model that uses kernels
Object of R6Class
with methods for fitting GP model.
R6Class
object.
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
and Z
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.
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.
new()
Create kernel_model object
GauPro_kernel_model$new( X, Z, kernel, trend, verbose = 0, useC = F, useGrad = T, parallel = FALSE, parallel_cores = "detect", nug = 1e-06, nug.min = 1e-08, nug.max = Inf, nug.est = TRUE, param.est = TRUE, restarts = 5, normalize = FALSE, optimizer = "L-BFGS-B", ... )
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.
...
Not used
fit()
Fit model
GauPro_kernel_model$fit(X, Z)
X
Inputs
Z
Outputs
update_K_and_estimates()
Update covariance matrix and estimates
GauPro_kernel_model$update_K_and_estimates()
predict()
Predict for a matrix of points
GauPro_kernel_model$predict(XX, se.fit = F, covmat = F, split_speed = F)
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?
pred()
Predict for a matrix of points
GauPro_kernel_model$pred(XX, se.fit = F, covmat = F, split_speed = F)
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?
pred_one_matrix()
Predict for a matrix of points
GauPro_kernel_model$pred_one_matrix( XX, se.fit = F, covmat = F, return_df = FALSE )
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?
pred_mean()
Predict mean
GauPro_kernel_model$pred_mean(XX, kx.xx)
XX
points to predict at
kx.xx
Covariance of X with XX
pred_meanC()
Predict mean using C
GauPro_kernel_model$pred_meanC(XX, kx.xx)
XX
points to predict at
kx.xx
Covariance of X with XX
pred_var()
Predict variance
GauPro_kernel_model$pred_var(XX, kxx, kx.xx, covmat = F)
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?
pred_LOO()
leave one out predictions
GauPro_kernel_model$pred_LOO(se.fit = FALSE)
se.fit
Should standard errors be included?
pred_var_after_adding_points()
Predict variance after adding points
GauPro_kernel_model$pred_var_after_adding_points(add_points, pred_points)
add_points
Points to add
pred_points
Points to predict at
pred_var_after_adding_points_sep()
Predict variance reductions after adding each point separately
GauPro_kernel_model$pred_var_after_adding_points_sep(add_points, pred_points)
add_points
Points to add
pred_points
Points to predict at
pred_var_reduction()
Predict variance reduction for a single point
GauPro_kernel_model$pred_var_reduction(add_point, pred_points)
add_point
Point to add
pred_points
Points to predict at
pred_var_reductions()
Predict variance reductions
GauPro_kernel_model$pred_var_reductions(add_points, pred_points)
add_points
Points to add
pred_points
Points to predict at
cool1Dplot()
Make cool 1D plot
GauPro_kernel_model$cool1Dplot( n2 = 20, nn = 201, col2 = "gray", xlab = "x", ylab = "y", xmin = NULL, xmax = NULL, ymin = NULL, ymax = NULL )
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
plot1D()
Make 1D plot
GauPro_kernel_model$plot1D( n2 = 20, nn = 201, col2 = 2, xlab = "x", ylab = "y", xmin = NULL, xmax = NULL, ymin = NULL, ymax = NULL )
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
plot2D()
Make 2D plot
GauPro_kernel_model$plot2D()
loglikelihood()
Calculate loglikelihood of parameters
GauPro_kernel_model$loglikelihood(mu = self$mu_hatX, s2 = self$s2_hat)
mu
Mean parameters
s2
Variance parameter
get_optim_functions()
Get optimization functions
GauPro_kernel_model$get_optim_functions(param_update, nug.update)
param_update
Should parameters be updated?
nug.update
Should nugget be updated?
param_optim_lower()
Lower bounds of parameters for optimization
GauPro_kernel_model$param_optim_lower(nug.update)
nug.update
Is the nugget being updated?
param_optim_upper()
Upper bounds of parameters for optimization
GauPro_kernel_model$param_optim_upper(nug.update)
nug.update
Is the nugget being updated?
param_optim_start()
Starting point for parameters for optimization
GauPro_kernel_model$param_optim_start(nug.update, jitter)
nug.update
Is nugget being updated?
jitter
Should there be a jitter?
param_optim_start0()
Starting point for parameters for optimization
GauPro_kernel_model$param_optim_start0(nug.update, jitter)
nug.update
Is nugget being updated?
jitter
Should there be a jitter?
param_optim_start_mat()
Get matrix for starting points of optimization
GauPro_kernel_model$param_optim_start_mat(restarts, nug.update, l)
restarts
Number of restarts to use
nug.update
Is nugget being updated?
l
Not used
optim()
Optimize parameters
GauPro_kernel_model$optim( restarts = 5, param_update = T, nug.update = self$nug.est, parallel = self$parallel, parallel_cores = self$parallel_cores )
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?
optimRestart()
Run a single optimization restart.
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 )
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
update()
Update the model. Should only give in (Xnew and Znew) or (Xall and Zall).
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 )
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?
update_fast()
Fast update when adding new data.
GauPro_kernel_model$update_fast(Xnew = NULL, Znew = NULL)
Xnew
New X values to add.
Znew
New Z values to add.
update_params()
Update the parameters.
GauPro_kernel_model$update_params(..., nug.update)
...
Passed to optim.
nug.update
Is the nugget being updated?
update_data()
Update the data. Should only give in (Xnew and Znew) or (Xall and Zall).
GauPro_kernel_model$update_data( Xnew = NULL, Znew = NULL, Xall = NULL, Zall = NULL )
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.
update_corrparams()
Update correlation parameters. Not the nugget.
GauPro_kernel_model$update_corrparams(...)
...
Passed to self$update()
update_nugget()
Update nugget Not the correlation parameters.
GauPro_kernel_model$update_nugget(...)
...
Passed to self$update()
deviance()
Calculate the deviance.
GauPro_kernel_model$deviance( params = NULL, nug = self$nug, nuglog, trend_params = NULL )
params
Kernel parameters
nug
Nugget
nuglog
Log of nugget. Only give in nug or nuglog.
trend_params
Parameters for the trend.
deviance_grad()
Calculate the gradient of the deviance.
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 )
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.
deviance_fngr()
Calculate the deviance along with its gradient.
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 )
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.
grad()
Calculate gradient
GauPro_kernel_model$grad(XX, X = self$X, Z = self$Z)
XX
points to calculate at
X
X points
Z
output points
grad_norm()
Calculate norm of gradient
GauPro_kernel_model$grad_norm(XX)
XX
points to calculate at
grad_dist()
Calculate distribution of gradient
GauPro_kernel_model$grad_dist(XX)
XX
points to calculate at
grad_sample()
Sample gradient at points
GauPro_kernel_model$grad_sample(XX, n)
XX
points to calculate at
n
Number of samples
grad_norm2_mean()
Calculate mean of gradient norm squared
GauPro_kernel_model$grad_norm2_mean(XX)
XX
points to calculate at
grad_norm2_dist()
Calculate distribution of gradient norm squared
GauPro_kernel_model$grad_norm2_dist(XX)
XX
points to calculate at
grad_norm2_sample()
Get samples of squared norm of gradient
GauPro_kernel_model$grad_norm2_sample(XX, n)
XX
points to sample at
n
Number of samples
hessian()
Calculate Hessian
GauPro_kernel_model$hessian(XX, as_array = FALSE)
XX
Points to calculate Hessian at
as_array
Should result be an array?
sample()
Sample at rows of XX
GauPro_kernel_model$sample(XX, n = 1)
XX
Input matrix
n
Number of samples
print()
Print this object
GauPro_kernel_model$print()
clone()
The objects of this class are cloneable with this method.
GauPro_kernel_model$clone(deep = FALSE)
deep
Whether to make a deep clone.
Class providing object with methods for fitting a GP model. Allows for different kernel and trend functions to be used.
# NOT RUN {
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)
# }
Run the code above in your browser using DataLab