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
tableSpecifies the settings for an input table.
inputsSpecifies the numeric variables to be analyzed. If omitted, all numeric variables are used.
nSpecifies the number of independent components to be computed. If 0, it equals the number of numeric variables.
methodSpecifies the settings for the component extraction method (maxIter, name, tolerance).
gFunctionSpecifies the nonquadratic function to be used in the approximation of negentropy. Values: EXP, LOGCOSH.
seedSpecifies the seed value for pseudorandom number generation.
prefixSpecifies a prefix for naming the independent components in the output.
noCenterWhen set to True, suppresses centering of the numeric variables to be analyzed.
noScaleWhen set to True, suppresses scaling of the numeric variables to be analyzed.
outputSpecifies 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?