% Generated by roxygen2: do not edit by hand
% Please edit documentation in R/CVE.R
\name{cve.call}
\alias{cve.call}
\title{Conditional Variance Estimator (CVE).}
\usage{
cve.call(X, Y, method = "simple", nObs = sqrt(nrow(X)), h = NULL,
  min.dim = 1L, max.dim = 10L, k = NULL, momentum = 0, tau = 1,
  tol = 0.001, slack = 0, gamma = 0.5, V.init = NULL,
  max.iter = 50L, attempts = 10L, logger = NULL)
}
\arguments{
\item{X}{data matrix with samples in its rows.}

\item{Y}{Responses (1 dimensional).}

\item{method}{specifies the CVE method variation as one of
\itemize{
     \item "simple" exact implementation as described in the paper listed 
         below.
     \item "weighted" variation with addaptive weighting of slices.
}}

\item{nObs}{parameter for choosing bandwidth \code{h} using
\code{\link{estimate.bandwidth}} (ignored if \code{h} is supplied).}

\item{h}{bandwidth or function to estimate bandwidth, defaults to internaly
estimated bandwidth.}

\item{min.dim}{lower bounds for \code{k}, (ignored if \code{k} is supplied).}

\item{max.dim}{upper bounds for \code{k}, (ignored if \code{k} is supplied).}

\item{k}{Dimension of lower dimensional projection, if \code{k} is given
only the specified dimension \code{B} matrix is estimated.}

\item{momentum}{number of [0, 1) giving the ration of momentum for eucledian
gradient update with a momentum term.}

\item{tau}{Initial step-size.}

\item{tol}{Tolerance for break condition.}

\item{slack}{Positive scaling to allow small increases of the loss while
optimizing.}

\item{gamma}{step-size reduction multiple.}

\item{V.init}{Semi-orthogonal matrix of dimensions `(ncol(X), ncol(X) - k)
as optimization starting value. (If supplied, \code{attempts} is
set to 1 and \code{k} to match dimension)}

\item{max.iter}{maximum number of optimization steps.}

\item{attempts}{number of arbitrary different starting points.}

\item{logger}{a logger function (only for advanced user, significantly slows
down the computation).}
}
\value{
an S3 object of class \code{cve} with components:
\describe{
   \item{X}{Original training data,}
   \item{Y}{Responce of original training data,}
   \item{method}{Name of used method,}
   \item{call}{the matched call,}
   \item{res}{list of components \code{V, L, B, loss, h} and \code{k} for
              each \eqn{k=min.dim,...,max.dim} (dimension).}
}
}
\description{
Conditional Variance Estimation (CVE) is a novel sufficient dimension
reduction (SDR) method for regressions satisfying \eqn{E(Y|X) = E(Y|B'X)},
where \eqn{B'X} is a lower dimensional projection of the predictors. CVE,
similarly to its main competitor, the mean average variance estimation
(MAVE), is not based on inverse regression, and does not require the
restrictive linearity and constant variance conditions of moment based SDR
methods. CVE is data-driven and applies to additive error regressions with
continuous predictors and link function. The effectiveness and accuracy of 
CVE compared to MAVE and other SDR techniques is demonstrated in simulation
studies. CVE is shown to outperform MAVE in some model set-ups, while it
remains largely on par under most others.
Let \eqn{Y} be real denotes a univariate response and \eqn{X} a real
\eqn{p}-dimensional covariate vector. We assume that the dependence of
\eqn{Y} and \eqn{X} is modelled by
\deqn{Y = g(B'X) + \epsilon}
where \eqn{X} is independent of \eqn{\epsilon} with positive definite
variance-covariance matrix \eqn{Var(X) = \Sigma_X}. \eqn{\epsilon} is a mean
zero random variable with finite \eqn{Var(\epsilon) = E(\epsilon^2)}, \eqn{g}
is an unknown, continuous non-constant function,
and \eqn{B = (b_1, ..., b_k)} is
a real \eqn{p \times k}{p x k} of rank \eqn{k <= p}{k \leq p}. 
Without loss of generality \eqn{B} is assumed to be orthonormal.
}
\examples{
# create B for simulation (k = 1)
B <- rep(1, 5) / sqrt(5)

set.seed(21)
# creat predictor data X ~ N(0, I_p)
X <- matrix(rnorm(500), 100, 5)
# simulate response variable
#     Y = f(B'X) + err
# with f(x1) = x1 and err ~ N(0, 0.25^2)
Y <- X \%*\% B + 0.25 * rnorm(100)

# calculate cve with method 'simple' for k = 1
set.seed(21)
cve.obj.simple1 <- cve(Y ~ X, k = 1)

# same as
set.seed(21)
cve.obj.simple2 <- cve.call(X, Y, k = 1)

# extract estimated B's.
coef(cve.obj.simple1, k = 1)
coef(cve.obj.simple2, k = 1)
}
