kernelEVD:

Usage Arguments Examples

Usage

1

Arguments

x

Examples

 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
##---- Should be DIRECTLY executable !! ----
##-- ==>  Define data, use random,
##--	or do  help(data=index)  for the standard data sets.

## The function is currently defined as
function (x) 
{
    if (!is.matrix(x)) {
        stop("The function kernelEVD requires input of type 'matrix'.")
    }
    n <- nrow(x)
    p <- ncol(x)
    if (n > p) {
        return(classSVD(x))
    }
    else {
        centerofX <- apply(x, 2, mean)
        Xcentered <- scale(x, center = TRUE, scale = FALSE)
        if (n == 1) {
            stop("The sample size is 1. No singular value decomposition can be performed.")
        }
        eigen <- eigen(Xcentered %*% t(Xcentered)/(n - 1))
        eigen.descending <- greatsort(eigen$values)
        loadings <- eigen$vectors[, eigen.descending$index]
        tolerance <- n * max(eigen$values) * .Machine$double.eps
        rank <- sum(eigen.descending$sortedvector > tolerance)
        eigenvalues <- eigen.descending$sortedvector[1:rank]
        loadings <- t((Xcentered/sqrt(n - 1))) %*% loadings[, 
            1:rank] %*% diag(1/sqrt(eigenvalues), nrow = length(eigenvalues), 
            ncol = length(eigenvalues))
        scores <- Xcentered %*% loadings
        return(list(loadings = as.matrix(loadings), scores = as.matrix(scores), 
            eigenvalues = as.vector(eigenvalues), rank = rank, 
            Xcentered = as.matrix(Xcentered), centerofX = as.vector(centerofX)))
    }
  }

musto101/wilcox_R documentation built on May 23, 2019, 10:52 a.m.