ica

fastIca

Description

Computes independent components by using the fastICA method. This action separates a multivariate signal into additive subcomponents assuming that the subcomponents are non-Gaussian and statistically independent. It includes options for data pre-processing (centering and scaling), different decorrelation methods (deflationary or symmetric), and nonquadratic functions for negentropy approximation.

Settings
ParameterDescription
table Specifies the settings for an input table.
inputs Specifies the numeric variables to be analyzed. If omitted, all numeric variables are used.
n Specifies the number of independent components to be computed. If 0, it equals the number of numeric variables.
method Specifies the settings for the component extraction method (maxIter, name, tolerance).
gFunction Specifies the nonquadratic function to be used in the approximation of negentropy. Values: EXP, LOGCOSH.
seed Specifies the seed value for pseudorandom number generation.
prefix Specifies a prefix for naming the independent components in the output.
noCenter When set to True, suppresses centering of the numeric variables to be analyzed.
noScale When set to True, suppresses scaling of the numeric variables to be analyzed.
output Specifies the output table to be created to contain observationwise statistics.
Data Preparation View data prep sheet
Create Mixed Signal Data

Create a dataset in CAS containing two mixed signals generated from a sine wave and a sawtooth wave.

Copied!
1 
2DATA mycas.signals;
3DO t = 1 to 200;
4s1 = sin(t/2);
5s2 = mod(t, 10);
6x1 = 0.6*s1 + 0.4*s2;
7x2 = 0.4*s1 + 0.6*s2;
8OUTPUT;
9END;
10 
11RUN;
12 

Examples

Perform Independent Component Analysis on the mixed signals variables x1 and x2.

SAS® / CAS Code Code awaiting community validation
Copied!
1 
2PROC CAS;
3ica.fastIca / TABLE={name='signals'}, inputs={'x1', 'x2'}, seed=123;
4 
5RUN;
6 
Result :
Generates the Mixing Matrix and Unmixing Matrix to separate the original signals.

Perform ICA using the symmetric method, the log-cosh function for negentropy, specifying 2 components, and saving the results.

SAS® / CAS Code Code awaiting community validation
Copied!
1 
2PROC CAS;
3ica.fastIca / TABLE={name='signals'}, inputs={'x1', 'x2'}, n=2, method={name='SYMMETRIC', maxIter=1000}, gFunction='LOGCOSH', OUTPUT={casOut={name='ica_scores', replace=true}, component='Comp'}, seed=54321;
4 
5RUN;
6 
Result :
Computes 2 components using symmetric decorrelation and saves the component scores to the 'ica_scores' table with prefix 'Comp'.

FAQ

What is the primary function of the fastIca action?
How can I specify the nonquadratic function for negentropy approximation?
How do I configure the component extraction method?
How can I suppress the centering and scaling of numeric variables?
What is the purpose of the eigenThreshold parameter?
How do I determine the number of independent components to be computed?