ica

fastIca

Beschreibung

Die Aktion 'fastIca' berechnet unabhängige Komponenten mithilfe des FastICA-Algorithmus. Dieses Verfahren wird häufig zur blinden Quellentrennung (Blind Source Separation) verwendet, um gemischte Signale in ihre ursprünglichen, statistisch unabhängigen Komponenten zu zerlegen. Es basiert auf der Maximierung der Nicht-Gaussianität.

ica.fastIca <result=results> <status=rc> / attributes={{format="string", formattedLength=integer, label="string", name="variable-name", nfd=integer, nfl=integer}, {...}} display={caseSensitive=TRUE | FALSE, exclude=TRUE | FALSE, excludeAll=TRUE | FALSE, keyIsPath=TRUE | FALSE, names={"string-1" <, "string-2", ...>}, pathType="LABEL" | "NAME", traceNames=TRUE | FALSE} eigenThreshold=double gFunction="EXP" | "LOGCOSH" groupByLimit=64-bit-integer inputs={{format="string", formattedLength=integer, label="string", name="variable-name", nfd=integer, nfl=integer}, {...}} method={maxIter=integer, name="DEFLATION" | "SYMMETRIC", tolerance=double} n=integer noCenter=TRUE | FALSE noScale=TRUE | FALSE output={casOut={caslib="string", compress=TRUE | FALSE, indexVars={"variable-name-1" <, "variable-name-2", ...>}, label="string", lifetime=64-bit-integer, maxMemSize=64-bit-integer, memoryFormat="DVR" | "INHERIT" | "STANDARD", name="table-name", promote=TRUE | FALSE, replace=TRUE | FALSE, replication=integer, tableRedistUpPolicy="DEFER" | "NOREDIST" | "REBALANCE", threadBlockSize=64-bit-integer, timeStamp="string", where={"string-1" <, "string-2", ...>}}, component="string", copyVars={"variable-name-1" <, "variable-name-2", ...>}, white="string"} outputTables={groupByVarsRaw=TRUE | FALSE, includeAll=TRUE | FALSE, names={"string-1" <, "string-2", ...>} | {key-1={casouttable-1} <, key-2={casouttable-2}, ...>}, repeated=TRUE | FALSE, replace=TRUE | FALSE} prefix="string" seed=integer table={caslib="string", computedOnDemand=TRUE | FALSE, computedVars={{format="string", formattedLength=integer, label="string", name="variable-name", nfd=integer, nfl=integer}, {...}}, computedVarsProgram="string", dataSourceOptions={key-1=any-list-or-data-type-1 <, key-2=any-list-or-data-type-2, ...>}, groupBy={{format="string", formattedLength=integer, label="string", name="variable-name", nfd=integer, nfl=integer}, {...}}, groupByMode="NOSORT" | "REDISTRIBUTE", importOptions={fileType="ANY" | "AUDIO" | "AUTO" | "BASESAS" | "CSV" | "DELIMITED" | "DOCUMENT" | "DTA" | "ESP" | "EXCEL" | "FMT" | "HDAT" | "IMAGE" | "JMP" | "LASR" | "PARQUET" | "SOUND" | "SPSS" | "VIDEO" | "XLS", fileType-specific-parameters}, name="table-name", where="where-expression"} whitePrefix="string";
Einstellungen
ParameterBeschreibung
tableGibt die Einstellungen für die Eingabetabelle an, die die zu analysierenden Daten enthält.
inputsListe der numerischen Variablen in der Eingabetabelle, die für die Analyse verwendet werden sollen.
nGibt die Anzahl der zu berechnenden unabhängigen Komponenten an. Wenn 0 (Standard), entspricht die Anzahl der Komponenten der Anzahl der Eingabevariablen.
methodSpezifiziert die Methode zur Komponentenextraktion. 'name' kann 'DEFLATION' (deflationäre Dekorrelation) oder 'SYMMETRIC' (symmetrische Dekorrelation) sein. Enthält auch 'maxIter' und 'tolerance'.
seedGibt den Startwert für den Pseudozufallszahlengenerator an, um reproduzierbare Ergebnisse zu gewährleisten.
gFunctionLegt die nichtquadratische Funktion fest, die zur Annäherung der Negentropie verwendet wird ('EXP' oder 'LOGCOSH').
eigenThresholdSchwellenwert für den Anteil der Varianz, der durch Eigenwerte erklärt wird. Eigenwerte unterhalb dieses Schwellenwerts werden verworfen.
noCenterWenn auf TRUE gesetzt, wird die Zentrierung der numerischen Variablen unterdrückt.
noScaleWenn auf TRUE gesetzt, wird die Skalierung der numerischen Variablen unterdrückt.
outputKonfiguriert die Ausgabetabelle, die beobachtungsweise Statistiken und die unabhängigen Komponenten enthält. Unterparameter umfassen 'casOut', 'component' (Präfix für Komponenten), 'white' (Präfix für geweißte Variablen).
outputTablesListe der Ergebnistabellen, die als CAS-Tabellen auf dem Server gespeichert werden sollen.
prefixPräfix für die Benennung der unabhängigen Komponenten (Standard: 'Comp').
whitePrefixPräfix für die Benennung der geweißten (whitened) Variablen (Standard: 'White').
Erstellung von synthetischen Signaldaten

Erzeugt eine CAS-Tabelle mit gemischten Signalen (Sinus, Sägezahn, Rauschen), um die Trennung durch ICA zu demonstrieren.

Kopiert!
1 
2PROC CAS;
3dataStep.runCode / code="
4data casuser.signals;
5do t = 1 to 1000;
6s1 = sin(t/10);
7s2 = mod(t, 20)-10;
8s3 = rannor(1);
9x1 = 0.6*s1 + 0.4*s2;
10x2 = 0.3*s2 + 0.7*s3;
11x3 = 0.2*s1 + 0.3*s2 + 0.5*s3;
12output;
13end;
14 
15run;
16";
17 
18RUN;
19 

Beispiele

Führt eine FastICA-Analyse auf den gemischten Signalen durch, um 3 unabhängige Komponenten zu extrahieren.

SAS® / CAS-Code Code wartet auf Validierung durch die Community
Kopiert!
1 
2PROC CAS;
3ica.fastIca / TABLE={name="signals", caslib="casuser"} inputs={"x1", "x2", "x3"} n=3 seed=12345;
4 
5RUN;
6 
Ergebnis :
Die Aktion erzeugt Ergebnistabellen, die Informationen über das Modell, die Analyse und die extrahierten unabhängigen Komponenten anzeigen.

Verwendet die symmetrische Methode, die Log-Cosh-Funktion und speichert die berechneten Komponenten in einer Ausgabetabelle.

SAS® / CAS-Code Code wartet auf Validierung durch die Community
Kopiert!
1 
2PROC CAS;
3ica.fastIca / TABLE={name="signals", caslib="casuser"} inputs={"x1", "x2", "x3"} n=3 seed=12345 method={name="SYMMETRIC", maxIter=1000, tolerance=1e-5} gFunction="LOGCOSH" prefix="IC" OUTPUT={casOut={name="ica_scores", caslib="casuser", replace=true}, component="Comp", white="Whitened"};
4 
5RUN;
6 
Ergebnis :
Erzeugt eine Ausgabetabelle 'ica_scores', die die Originaldaten sowie die berechneten unabhängigen Komponenten (IC1, IC2, IC3) und geweißten Variablen enthält.

FAQ

Was ist der Zweck der Aktion fastIca?
Wie kann ich die Methode zur Extraktion der Komponenten festlegen?
Welche Funktionen stehen zur Approximation der Negentropie zur Verfügung?
Wie bestimme ich die Anzahl der zu berechnenden unabhängigen Komponenten?
Kann ich die Zentrierung oder Skalierung der Variablen unterdrücken?
Was bewirkt der Parameter eigenThreshold?
Wie werden die Ausgabevariablen für unabhängige Komponenten benannt?