mota {mota}R Documentation

Mean Optimal Transformation Approach

Description

Identifies arbitrary functional relations among columns of an input matrix. This is done with use of optimal transformations and a special test function designed to quantify the information contained in them. See [1] for further information about the test function.

Usage

mota(x, numOfBootSamp = 35, sampleSize = floor(length(x[,1])/2), threshold1 = 0.01, threshold2 = 0.07, threshold3 = 0.08, progress = FALSE)

Arguments

x (N X P) matrix, with N replicates for P parameters (see details)
numOfBootSamp The number of bootstrap samples drawn from x to estimate the mean optimal transformation
sampleSize Size of the bootstrap samples
threshold1 Lower threshold. The higher, the more conservative is the algorithm. threshold1 determines the value of the test function beneath which mota definitely assigns no functional relation. For values of the test function between threshold1 and threshodl2, mota adds additional parameters as predictors to explain more variance of the response in order to finally exceed threshold2.
threshold2 Upper threshold. The higher, the more conservative gets the algorithm. threshold2 should not exceed 1/12. threshold2 determines the value of the mean test function above which a functional relation is assigned to be strong.
threshold3 Additional threshold to increase sensitivity.
progress optional progress report in command line. Works only for Mac OS X and Windows GUIs.

Details

The matrix x is the only input required. mota investigates x for functional relations among the columns. Note, these relations may in general be non-linear, which renders this approach superior to algorithms based simply on the investigation of correlations. Roughly, mota takes column i as response and tries to find the optimal combination of the other columns j!=i to explain the variance of the response. Optimal transformations are employed to map potential nonlinear relations on a linear model. The test function calculates the variance of the mean optimal transformation for each column, see references for details. Predictors (columns) not associated with the response have low values of the test function. The mean of the optimal transformation is estimated by drawing bootstrap samples of size sampleSize from x.

The sampleSize does not equal the number of rows to ensure sufficient independency of the drawn bootstrap samples. threshold1 and threshold2 may be determined analytically [1]. threshold3 needs to be larger than threshold2. It improves under certain circumstances the sensitivity of the algorithm, however, it is not required for the functionallity of the algortithm. The number of bootstrap samples is a good trade off between computational speed and specificity, see, again, [1].

mota was designed for the identifiability analysis of nonlinear dynamical models. The generality of the concept, however, suggests applications in various fields. Whenever there is a need of detecting arbitrary functional relations between subgroups of parameters, mota may be superior especially for non-linear relations.

Value

An object of class mota with following attributes:

S A (P X P) matrix with 1 indicating functional relations
x The input matrix
Hout Value of the testfunction for the functional relation found for each paramater

Note

Use 'summary' and 'plot' to investigate the output. The attributes may be accessed with use of 'attr'. So, in order to get the matrix S one has to type S<-attr(motaOutput,"S") in the command line

Author(s)

Stefan Hengl

References

[1] S. Hengl, C. Kreutz, J. Timmer, and T. Maiwald, Data-based Identifiability Analysis of Nonlinear Dynamical Models, Bioinformatics, 2007
[2] L. Breiman and J.H. Friedman, Estimating Optimal Transformations for Multiple Regression and Correlation, Journal of the American Statistical Associtation, 1985, 80(391), 580-598

See Also

ace from the package acepack, summary.mota, plot.mota, attr

Examples

x<-array(data=0,dim=c(200,4))
#
# generate uniformly distributed data
x[,4]<-runif(200,1,5)
x[,3]<-runif(200,1,5)
x[,2]<-runif(200,1,5)
#
# introduce functional relation
x[,1]<-x[,2]^2+5*sin(x[,3])
#
# test with mota
motaOut<-mota(x)
#
# investigate result
summary(motaOut)

[Package mota version 1.2.1 Index]