#' @export directions <- function(dr, k) { UseMethod("directions") } #' Computes projected training data \code{X} for given dimension `k`. #' #' Projects the dimensional design matrix \eqn{X} on the columnspace of the #' cve-estimate for given dimension \eqn{k}. #' #' @param dr Instance of \code{'cve'} as returned by \code{\link{cve}}. #' @param k SDR dimension to use for projection. #' #' @return the \eqn{n\times k}{n x k} dimensional matrix \eqn{X B} where \eqn{B} #' is the cve-estimate for dimension \eqn{k}. #' #' @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.simple <- cve(y ~ x, k = 1, method = 'simple') #' # get projected data for k = 1 #' x.proj <- directions(cve.obj.simple, k = 1) #' # plot y against projected data #' plot(x.proj, y) #' #' @method directions cve #' @aliases directions directions.cve #' @export directions.cve <- function(dr, k) { if (!(k %in% names(dr$res))) { stop("SDR directions for requested dimension `k` not computed.") } return(dr$X %*% dr$res[[as.character(k)]]$B) }