Alternating Conditional Expectation algorithm (ACE) to calculate optimal transformations
by fast boxcar averaging of rank-ordered data.
The program ace_main.m performs a calculation of optimal transformations from a data set.
The algorithm has been invented by L. Breiman and J.H. Friedman [1]
and the program follows it closely, besides two differences:
1. The output is not normalized with respect to the mean values of the
optimal transformations, so the mean values may not necessarily be zero.
2. The data are rank ordered before the calculation of the optimal
transformations. This leads to a simpler computation of conditional expectation values.
The algorithm (but not the particular subroutine of estimating the
conditional expectation values) is also described in [2],[3],[4]. An application
to fitting the complex Ginzburg-Landau equation to binary fluid data is provided in [5].
Usage:
The program ace_main.m contains the definition of the data, the call of ace.m, and the display of the results.
This function is the one that has to be modified for applications to
other than the example data; the other subroutines do not need to be modified then.
The function ace.m is defined as
'function [psi,phi]=ace(x,ll,dim,wl,oi,ii,ocrit,icrit,shol,shil)'.
Therefore, the outputs are psi (the maximal correlation)
and phi (the set of optimal transformations).
The input parameters are defined as follows:
x: The data set of size (dim+1) X ll.
ll: The number of data points of each of the dim+1 terms, e.g. 1000, if the
regression analysis is performed on 1000 data tuples.
dim: The number of terms for the rhs, can be 1,2,3, etc.
The 0th term corresponds to the lhs of the regression equation,
the 1st to dimth terms correspond to the rhs of the regression equation.
wl: Half of the length of the boxcar window, i.e., 2*wl+1=width of filter.
wl=0,1,2...
oi: Maximum number of iterations of outer loop, e.g. 10
ii: Maximum number of iterations of inner loop, e.g. 10
ocrit: Outer iteration stop criterion, should be a small number like 1e-12
icrit: The same for the inner loop, should be the same value or larger than osc
shol, shil: If 1, ace.m prints the iteration result during calculations for
outer and inner loop. If set to 0, no effect.
When the program is done, two output variables are produced:
1. psi contains the maximal correlation.
2. phi contains the transformed x-values in the same order as the inputs.
Therefore, to display the result, one has to plot the input variables pointwise against the output.
If you use this program in publications and want to cite it, please do it as:
H. Voss and J. Kurths, Reconstruction of nonlinear time delay models from data by the
use of optimal transformations, Phys. Lett. A 234, 336-344 (1997).
I will be happy to email this paper on request.
For commercial use and questions, please contact me.
++++++++++++++++++++++++++++++++++++++++++++++
Henning U. Voss, Ph.D.
Associate Professor of Physics in Radiology
Citigroup Biomedical Imaging Center
Weill Medical College of Cornell University
516 East 72nd Street
New York, NY 10021
Tel. 001-212 746-5216
Email: hev2006@med.cornell.edu
++++++++++++++++++++++++++++++++++++++++++++++
References:
[1] L. Breiman and J.H. Friedman,
Estimating optimal transformations for multiple regression and correlation,
J. Am. Stat. Assoc. 80 (1985) 580-619.
[2] W. Haerdle, Applied Nonparametric Regression,
Cambridge Univ. Press, Cambridge, 1990.
[3] H. Voss and J. Kurths,
Reconstruction of nonlinear time delay models from data by the
use of optimal transformations,
Phys. Lett. A 234, 336-344 (1997).
[4] H. Voss and J. Kurths,
Reconstruction of nonlinear time delay models from optical data,
Chaos, Solitons & Fractals 10, 805-809 (1999).
[5] H.U. Voss, P. Kolodner, M. Abel, and J. Kurths,
Amplitude equations from spatiotemporal binary-fluid convection data,
Phys. Rev. Lett. 83, 3422-3425 (1999).
Create scripts with code, output, and formatted text in a single executable document.
Henning U. Voss (view profile)
If error messages occur, this is due to Matlab versions before R2012b. For example, in R2009b, the ~ notation was introduced as a placeholder for undefined variables. If Matlab versions before R2009b are used, one needs to replace the ~ symbol in line 138 with an unused variable name such as tmp.
Henning U. Voss (view profile)
Dear Mr. Mokhtar,
does it run with the default data provided or not at all?
You can send me those 22 data points directly per email and I can have a look what is going on.
Hesham Mokhtar (view profile)
Dear Mr. Henning,
Thank you ver much for your work in the attached file. But i tried to run the code the following error message had arose
"
??? Error: File: ace_main.m Line: 138 Column: 18
Expression or statement is incorrect--possibly unbalanced (, {, or [.
".
In addition to,i'd like to use this code to make the optimal trnsformation for a data set containing a 22 data points, what are the form of the data to be imported to MATLAB.
Hesham Mokhtar (view profile)
Dear Mr. Henning,
Thank you ver much for your work in the attached file. But i tried to run the code the following error message had arose
"
??? Error: File: ace_main.m Line: 138 Column: 18
Expression or statement is incorrect--possibly unbalanced (, {, or [.
".
In addition to,i'd like to use this code to make the optimal trnsformation for a data set containing a 22 data points, what are the form of the data to be imported to MATLAB.