SVC_mle_control: Set Parameters for 'SVC_mle'

View source: R/SVC_mle.R

SVC_mle_controlR Documentation

Set Parameters for SVC_mle

Description

Function to set up control parameters for SVC_mle. In the following, we assume the GP-based SVC model to have q GPs which model the SVCs and p fixed effects.

Usage

SVC_mle_control(...)

## Default S3 method:
SVC_mle_control(
  cov.name = c("exp", "sph", "mat32", "mat52", "wend1", "wend2"),
  tapering = NULL,
  parallel = NULL,
  init = NULL,
  lower = NULL,
  upper = NULL,
  save.fitted = TRUE,
  profileLik = FALSE,
  mean.est = c("GLS", "OLS"),
  pc.prior = NULL,
  extract_fun = FALSE,
  hessian = TRUE,
  dist = list(method = "euclidean"),
  parscale = TRUE,
  ...
)

## S3 method for class 'SVC_mle'
SVC_mle_control(object, ...)

Arguments

...

Further Arguments yet to be implemented

cov.name

(character(1))
Name of the covariance function of the GPs. Currently, the following are implemented: "exp" for the exponential, "sph" for spherical, "mat32" and "mat52" for Matern class covariance functions with smoothness 3/2 or 5/2, as well as "wend1" and "wend2" for Wendland class covariance functions with kappa 1 or 2.

tapering

(NULL or numeric(1))
If NULL, no tapering is applied. If a scalar is given, covariance tapering with this taper range is applied, for all Gaussian processes modeling the SVC. Only defined for Matern class covariance functions, i.e., set cov.name either to "exp", "mat32", or "mat52".

parallel

(NULL or list)
If NULL, no parallelization is applied. If cluster has been established, define arguments for parallelization with a list, see documentation of optimParallel. See Examples.

init

(NULL or numeric(2q+1+p*as.numeric(profileLik)))
Initial values for optimization procedure. If NULL is given, an initial vector is calculated (see Details). Otherwise, the vector is assumed to consist of q-times (alternating) range and variance, the nugget variance and if profileLik = TRUE p mean effects.

lower

(NULL or numeric(2q+1+p*as.numeric(profileLik)))
Lower bound for init in optim. Default NULL calculates the lower bounds (see Details).

upper

(NULL or numeric(2q+1+p*as.numeric(profileLik)))
Upper bound for init in optim. Default NULL calculates the upper bounds (see Details).

save.fitted

(logical(1))
If TRUE, calculates the fitted values and residuals after MLE and stores them. This is necessary to call residuals and fitted methods afterwards.

profileLik

(logical(1))
If TRUE, MLE is done over profile Likelihood of covariance parameters.

mean.est

(character(1))
If profileLik = TRUE, the means have to be estimated seperately for each step. "GLS" uses the generalized least square estimate while "OLS" uses the ordinary least squares estimate.

pc.prior

(NULL or numeric(4))
If numeric vector is given, penalized complexity priors are applied. The order is ρ_0, α_ρ, σ_0, α_σ to give some prior believes for the range and the standard deviation of GPs, such that P(ρ < ρ_0) = α_ρ, P(σ > σ_0) = α_σ. This regulates the optimization process. Currently, only supported for GPs with of Matérn class covariance functions. Based on the idea by Fulgstad et al. (2018) doi: 10.1080/01621459.2017.1415907.

extract_fun

(logical(1))
If TRUE, the function call of SVC_mle stops before the MLE and gives back the objective function of the MLE as well as all used arguments. If FALSE, regular MLE is conducted.

hessian

(logical(1))
If TRUE, Hessian matrix is computed, see optim. This required to give the standard errors for covariance parameters and to do a Wald test on the variances, see summary.SVC_mle.

dist

(list)
List containing the arguments of dist or nearest.dist. This controls the method of how the distances and therefore dependency structures are calculated. The default gives Euclidean distances in a d-dimensional space. Further editable arguments are p, miles, R, see respective help files of dist or nearest.dist.

parscale

(logical(1))
Triggers parameter scaling within the optimization in optim. If TRUE, the optional parameter scaling in optim.control in function SVC_mle is overwritten by the initial value used in the numeric optimization. The initial value is either computed from the data or provided by the user, see init argument above or Details below. Note that we check whether the initial values are unequal to zero. If they are zero, the corresponding scaling factor is 0.001. If FALSE, the parscale argument in optim.control is let unchanged.

object

(SVC_mle)
The function then extracts the control settings from the function call used to compute in the given SVC_mle object.

Details

If not provided, the initial values as well as the lower and upper bounds are calculated given the provided data. In particular, we require the median distance between observations, the variance of the response and, the ordinary least square (OLS) estimates, see init_bounds_optim.

The argument extract_fun is useful, when one wants to modify the objective function. Further, when trying to parallelize the optimization, it is useful to check whether a single evaluation of the objective function takes longer than 0.05 seconds to evaluate, cf. Gerber and Furrer (2019) doi: 10.32614/RJ-2019-030. Platform specific issues can be sorted out by the user by setting up their own optimization.

Value

A list with which SVC_mle can be controlled.

Author(s)

Jakob Dambon

See Also

SVC_mle

Examples

control <- SVC_mle_control(init = rep(0.3, 10))
# or
control <- SVC_mle_control()
control$init <- rep(0.3, 10)


# Code for setting up parallel computing
require(parallel)
# exchange number of nodes (1) for detectCores()-1 or appropriate number
cl <- makeCluster(1, setup_strategy = "sequential")
clusterEvalQ(
  cl = cl,
  {
    library(spam)
    library(varycoef)
  })
# use this list for parallel argument in SVC_mle_control
parallel.control <- list(cl = cl, forward = TRUE, loginfo = TRUE)
# SVC_mle goes here ...
# DO NOT FORGET TO STOP THE CLUSTER!
stopCluster(cl); rm(cl)


varycoef documentation built on Sept. 18, 2022, 1:07 a.m.