Description Usage Arguments Details Value Note References See Also Examples
Creator for the class "covRadial"
, which describes radial
kernels.
1 2 3 4 5 6 7 8 |
k1Fun1 |
A function of a scalar numeric variable, and possibly of an
extra "shape" parameter. This function should return the first-order
derivative or the two-first order derivatives as an attribute with
name |
cov |
A character string specifying the kind of covariance kernel:
correlation kernel ( |
iso |
Integer. The value |
hasGrad |
Integer or logical. Tells if the value returned by the function
|
inputs |
Character. Names of the inputs. |
d |
Integer. Number of inputs. |
par, parLower, parUpper |
Optional numeric values for the lower bounds on the parameters. Can be
|
parNames |
Names of the parameters. By default, ranges are prefixed
|
label |
A short description of the kernel object. |
... |
Other arguments passed to the method |
A radial kernel on the d-dimensional Euclidean space takes the form
K(x, x') = sigma^2 * k1(r)
where k1(r) is a suitable correlation kernel for a one-dimensional input, and r is given by
r = sigma2 * sqrt(sum((x[l] - x'[l])^2 / theta[l]^2))
In this default form, the radial kernel depends on d + 1 parameters: the ranges theta[l] > 0 and the variance sigma2.
An isotropic form uses the same range theta for
all inputs, i.e. sets theta[l]=theta for all l. This is obtained
by using iso = TRUE
.
A correlation version uses sigma2 = 1. This
is obtained by using cov = "corr"
.
Finally, the correlation kernel k1(r) can depend on a "shape" parameter, e.g. have the form k1(r, alpha). The extra shape parameter alpha will be considered then as a parameter of the resulting radial kernel, making it possible to estimate it by ML along with the range(s) and the variance.
An object with class "covRadial"
.
When k1Fun1
has more than one formal argument, its arguments
with position > 1
are assumed to be "shape" parameters of the
model. Examples are functions with formals function(x, shape =
1.0)
or function(x, alpha = 2.0, beta = 3.0)
, corresponding to
vector of parameter names c("shape")
and c("alpha",
"beta")
. Using more than one shape parameter has not been tested
yet.
Remind that using a one-dimensional correlation kernel k1(r) here does not warrant that a positive semi-definite kernel will result for any dimension d. This question relates to Schoenberg's theorem and the concept of completely monotone functions.
Gregory Fassauher and Michael McCourt (2016) Kernel-based Approximation Methods using MATLAB. World Scientific.
k1Fun1Exp
, k1Fun1Matern3_2
,
k1Fun1Matern5_2
or k1Fun1Gauss
for
examples of functions that can be used as values for the k1Fun1
formal.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 | set.seed(123)
d <- 2; ng <- 20
xg <- seq(from = 0, to = 1, length.out = ng)
X <- as.matrix(expand.grid(x1 = xg, x2 = xg))
## ============================================================================
## A radial kernel using the power-exponential one-dimensional
## function
## ============================================================================
d <- 2
myCovRadial <- covRadial(k1Fun1 = k1Fun1PowExp, d = 2, cov = "homo", iso = 1)
coef(myCovRadial)
inputNames(myCovRadial) <- colnames(X)
coef(myCovRadial) <- c(alpha = 1.8, theta = 2.0, sigma2 = 4.0)
y <- simulate(myCovRadial, X = X, nsim = 1)
persp(x = xg, y = xg, z = matrix(y, nrow = ng))
## ============================================================================
## Define the inverse multiquadric kernel function. We return the first two
## derivatives and the gradient as attributes of the result.
## ============================================================================
myk1Fun <- function(x, beta = 2) {
prov <- 1 + x * x
res <- prov^(-beta)
der <- matrix(NA, nrow = length(x), ncol = 2)
der[ , 1] <- - beta * 2 * x * res / prov
der[ , 2] <- -2 * beta * (1 - (1 + 2 * beta) * x * x) * res / prov / prov
grad <- -log(prov) * res
attr(res, "gradient") <- grad
attr(res, "der") <- der
res
}
myCovRadial1 <- covRadial(k1Fun1 = myk1Fun, d = 2, cov = "homo", iso = 1)
coef(myCovRadial1)
inputNames(myCovRadial1) <- colnames(X)
coef(myCovRadial1) <- c(beta = 0.2, theta = 0.4, sigma2 = 4.0)
y1 <- simulate(myCovRadial1, X = X, nsim = 1)
persp(x = xg, y = xg, z = matrix(y1, nrow = ng))
|
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.