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.
| Parameter | Description |
|---|---|
| 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. |
Create a dataset in CAS containing two mixed signals generated from a sine wave and a sawtooth wave.
| 1 | |
| 2 | DATA mycas.signals; |
| 3 | DO t = 1 to 200; |
| 4 | s1 = sin(t/2); |
| 5 | s2 = mod(t, 10); |
| 6 | x1 = 0.6*s1 + 0.4*s2; |
| 7 | x2 = 0.4*s1 + 0.6*s2; |
| 8 | OUTPUT; |
| 9 | END; |
| 10 | |
| 11 | RUN; |
| 12 |
Perform Independent Component Analysis on the mixed signals variables x1 and x2.
| 1 | |
| 2 | PROC CAS; |
| 3 | ica.fastIca / TABLE={name='signals'}, inputs={'x1', 'x2'}, seed=123; |
| 4 | |
| 5 | RUN; |
| 6 |
Perform ICA using the symmetric method, the log-cosh function for negentropy, specifying 2 components, and saving the results.
| 1 | |
| 2 | PROC CAS; |
| 3 | ica.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 | |
| 5 | RUN; |
| 6 |