2019-10-18 07:06:36 +00:00
|
|
|
#' Bandwidth estimation for CVE.
|
2019-09-16 09:15:51 +00:00
|
|
|
#'
|
2019-10-22 08:33:41 +00:00
|
|
|
#' Estimates a bandwidth \code{h} according
|
2019-09-16 09:15:51 +00:00
|
|
|
#' \deqn{%
|
2019-11-20 18:03:21 +00:00
|
|
|
#' h = (2 * tr(\Sigma) / p) * (1.2 * n^{-1 / (4 + k)})^2}{%
|
2019-11-25 19:49:43 +00:00
|
|
|
#' h = (2 * tr(\Sigma) / p) * (1.2 * n^(\frac{-1}{4 + k}))^2}
|
2019-10-22 08:33:41 +00:00
|
|
|
#' with \eqn{n} the sample size, \eqn{p} its dimension
|
2019-10-18 07:06:36 +00:00
|
|
|
#' (\code{n <- nrow(X); p <- ncol(X)}) and the covariance-matrix \eqn{\Sigma}
|
2019-10-22 08:33:41 +00:00
|
|
|
#' which is \code{(n-1)/n} times the sample covariance estimate.
|
2019-09-16 09:15:51 +00:00
|
|
|
#'
|
2019-10-18 07:06:36 +00:00
|
|
|
#' @param X data matrix with samples in its rows.
|
|
|
|
#' @param k Dimension of lower dimensional projection.
|
2019-10-22 08:33:41 +00:00
|
|
|
#' @param nObs number of points in a slice, see \eqn{nObs} in CVE paper.
|
2019-09-16 09:15:51 +00:00
|
|
|
#'
|
2019-11-20 18:03:21 +00:00
|
|
|
#' @return Estimated bandwidth \code{h}.
|
|
|
|
#'
|
2019-09-16 09:15:51 +00:00
|
|
|
#' @export
|
|
|
|
estimate.bandwidth <- function(X, k, nObs) {
|
|
|
|
n <- nrow(X)
|
|
|
|
p <- ncol(X)
|
|
|
|
|
2019-10-18 07:06:36 +00:00
|
|
|
X_centered <- scale(X, center = TRUE, scale = FALSE)
|
2019-11-20 18:03:21 +00:00
|
|
|
Sigma <- crossprod(X_centered, X_centered) / n
|
2019-09-16 09:15:51 +00:00
|
|
|
|
2019-11-20 18:03:21 +00:00
|
|
|
return((2 * sum(diag(Sigma)) / p) * (1.2 * n^(-1 / (4 + k)))^2)
|
2019-09-16 09:15:51 +00:00
|
|
|
}
|