# EPPlabAgg: Function to Aggregate Directions From epplab Objects In REPPlab: R Interface to 'EPP-Lab', a Java Program for Exploratory Projection Pursuit

## 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

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

## 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.

## 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=1/m sum(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`.

## 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"`.

## Author(s)

Daniel Fischer, Klaus Nordhausen, Anne Ruiz-Gazen

## 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. ??-??.

`EPPlab`, `AOP`
 ``` 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``` ``` 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) ```