Learn R Programming

REPPlab (version 0.9.6)

EPPlabAgg: Function to Aggregate Directions From epplab Objects

Description

Function that automatically aggregates the projection directions from one or more epplab objects. Three options are available on how to choose the final projection which can have a rank larger than one. The parameter x can either be a single object or a list of epplab objects. Options for method are inverse, sq.inverse and cumulative.

Usage

EPPlabAgg(x, method = "cumulative", percentage = 0.85)

Value

A list with class 'epplabagg' containing the following components:

P

The estimated average orthogonal projection matrix.

O

An orthogonal matrix on which P is based upon.

k

The rank of the average orthogonal projection matrix.

eigenvalues

The relevant eigenvalues, see details. Only given if method="cumulative".

Arguments

x

An object of class epplab or a list of epplab objects.

method

The type of method, see details. Options are inverse, sq.inverse and cumulative.

percentage

Threshold for the relative eigenvalue sum to retain, see details.

Author

Daniel Fischer, Klaus Nordhausen, Anne Ruiz-Gazen

Details

Denote \(p_i, i=1,...,m\), the projection vectors contained in the list of epplab objects and \(P_i, i=1,..,m\), the corresponding orthogonal projection matrices (each having rank one). The method cumulative is based on the eigenvalue decomposition of \(P_w=\frac 1m \sum_{i=1}^m P_i\) and transforms as O the eigenvectors such that the corresponding relative eigenvalues sum is at least percentage. The number of eigenvectors retained corresponds to the rank k and P is the corresponding orthogonal projection matrix. The methods inverse and sq.inverse are automatic rules to choose the number of eigenvectors to retain as implemented by the function AOP.

References

Liski, E., Nordhausen, K., Oja, H. and Ruiz-Gazen, A. (201?), Combining Linear Dimension Reduction Estimates, to appear in the Proceedings of ICORS 2015, pp. ??-??.

See Also

EPPlab, AOP

Examples

Run this code

 library(tourr)
 data(olive)
 # To keep the runtime short, maxiter and n.simu were chosen very 
 # small for demonstration purposes, real life applications would
 # rather choose larger values, e.g. n.simu=100, maxiter=200
 olivePP.kurt.max <-
   EPPlab(olive[,3:10],PPalg="PSO",PPindex="KurtosisMax",n.simu=10, maxiter=20)
 
 olivePP.fried <-
   EPPlab(olive[,3:10],PPalg="PSO",PPindex="Friedman",n.simu=10, maxiter=20)
 
 olivePPs <- list(olivePP.kurt.max, olivePP.fried)
 
 EPPlabAgg(olivePP.kurt.max)$k
 EPPlabAgg(olivePPs, "cum", 0.99)$k
 
 pairs(olivePP.kurt.max$x %*% EPPlabAgg(olivePPs, "cum", 0.99)$O,
       col=olive[,2], pch=olive[,1])
 
 
 olivAOP.sq <- EPPlabAgg(olivePPs, "inv")
 oliveProj <- olivePP.kurt.max$x %*% olivAOP.sq$O
 plot(density(oliveProj))
 rug(oliveProj[olive$region==1],col=1)
 rug(oliveProj[olive$region==2],col=2)
 rug(oliveProj[olive$region==3],col=3)

Run the code above in your browser using DataLab