% Generated by roxygen2: do not edit by hand
% Please edit documentation in R/WarpKrigingClass.R
\name{WarpKriging}
\alias{WarpKriging}
\title{Create a WarpKriging model}
\usage{
WarpKriging(
  y,
  X,
  warping,
  kernel = "gauss",
  regmodel = "constant",
  normalize = FALSE,
  optim = "BFGS+Adam",
  objective = "LL",
  parameters = NULL,
  noise = NULL
)
}
\arguments{
\item{y}{numeric vector of observations (n)}

\item{X}{numeric matrix of inputs (n x d)}

\item{warping}{character vector of warp specifications, one per column
of X. Use \code{warp_*()} helpers or plain strings:
\code{"none"}, \code{"affine"}, \code{"boxcox"}, \code{"kumaraswamy"},
\code{"neural_mono(8)"}, \code{"mlp(16:8,2,selu)"},
\code{"knots(3)"}, \code{"knots(0.25:0.5:0.75)"},
\code{"categorical(5,2)"}, \code{"ordinal(4)"}.}

\item{kernel}{covariance kernel: "gauss", "matern3_2", "matern5_2", "exp"}

\item{regmodel}{trend: "constant", "linear", "quadratic"}

\item{normalize}{logical; normalise continuous inputs?}

\item{optim}{optimiser (currently only one bi-level strategy)}

\item{objective}{"LL" (log-likelihood)}

\item{parameters}{optional named list of tuning parameters,
e.g. \code{list(max_iter_adam = "300", adam_lr = "0.001",
                max_iter_bfgs = "50")}}

\item{noise}{Either a numeric vector of per-observation noise variances,
or \code{"nugget"} to estimate a homogeneous nugget, or
\code{NULL} (default) for noise-free interpolation.}
}
\value{
An S3 object of class "WarpKriging".
}
\description{
Kriging with per-variable input warping.  Each input
dimension is independently transformed before the GP kernel is
evaluated.  Supports continuous, categorical, ordinal variables
and joint deep kernel learning.
}
\examples{
# Continuous with Kumaraswamy warping
X <- as.matrix(c(0.0, 0.25, 0.5, 0.75, 1.0))
f <- function(x) 1 - 1/2 * (sin(12*x)/(1+x) + 2*cos(7*x)*x^5 + 0.7)
y <- f(X)
k <- WarpKriging(y, X, warping = "kumaraswamy", kernel = "gauss")
print(k)

# Mixed: 1 continuous + 1 categorical (3 levels)
n <- 15
X_mix <- cbind(runif(n), rep(0:2, length.out = n))
y_mix <- sin(2 * pi * X_mix[, 1]) * c(1, 2, 0.5)[X_mix[, 2] + 1]
k2 <- WarpKriging(y_mix, X_mix,
         warping = c("mlp(16:8,2,selu)", "categorical(3,2)"),
         kernel = "matern5_2")

}
