NAME
PDL::LinICA -- Linear Independent Component Analysis (ICA) for PerlDL
SYNOPSIS
use PDL::LinICA;
$ica = new PDL::LinICA($data,4, # 4th degree linear ica.
{ Accuracy => 0.01 }); # "scale" of data, for minimization
$newdata = $ica->get_newdata(); # Get transformed data
print $ica->check_independence(5,3,4);
# How independent are dimensions
# 3 and 4 to 5th degree?
$nodata = $ica->transform($otherdata);
# Transform some other data.
undef $ica; # Make sure nothing lingers.
WARNING
This package is not ready for prime-time yet.
DESCRIPTION
This package implements the linear independent component analysis (ICA) algorithm described in [1]. The package first does a full PCA analysis by finding the eigenvalues and -vectors of the covariance matrix and transforming the data so that its covariance matrix becomes diagonal.
After this a rotation matrix parametrized by an antisymmetric matrix is optimized to yield the lowest values of diagonal cumulants.
The package includes some functions to test the resulting alleged statistical independence between any components of your choosing. This is very useful for data where you really cannot calculate the full off-diagonal moment tensor.
The available options are
- Averaged
-
The data is already averaged. This is most useful when $data is HUGE and you want to avoid extra copies at all costs.
- Accuracy
-
A number that gives an approximate scale on how accurate the ICA is. Currently not defined too well.
REFERENCES
Deco & Obradovic: Information-theoretic ... NN. XXX
AUTHOR
Copyright (C) Tuomas J. Lukka 1997.