ica

fastIca

Descripción

La acción fastIca implementa el algoritmo FastICA para realizar análisis de componentes independientes (ICA). Este método es fundamental para la separación ciega de fuentes (Blind Source Separation), permitiendo descomponer señales multivariantes en componentes aditivos que son estadísticamente independientes y no gaussianos. Es ampliamente utilizado en procesamiento de señales, eliminación de artefactos en datos biomédicos y extracción de características. La acción permite elegir entre algoritmos de deflación o simétricos, especificar funciones de no linealidad para aproximar la negentropía, y opciones de pre-blanqueo (whitening) de datos.

Parámetros
ParámetroDescripción
tableEspecifica la tabla de entrada que contiene las variables numéricas mezcladas. Admite subcláusulas como 'caslib', 'name' y 'where'.
inputsLista de variables numéricas de la tabla de entrada que se utilizarán para el análisis ICA. Si no se especifica, se usan todas las numéricas.
nNúmero de componentes independientes a extraer. Si se establece en 0 (predeterminado), se calcula un número de componentes igual al número de variables de entrada.
methodDefine el algoritmo de extracción. La subopción 'name' acepta 'DEFLATION' (extracción uno a uno) o 'SYMMETRIC' (extracción paralela). También configura 'maxIter' y 'tolerance' para la convergencia.
gFunctionFunción no cuadrática utilizada en la aproximación de la negentropía. Las opciones son 'LOGCOSH' (predeterminado, más robusto) o 'EXP' (exponencial).
seedValor entero para la semilla de generación de números aleatorios, utilizado para inicializar la matriz de pesos. Garantiza reproducibilidad.
noCenterSi es True, suprime el paso de centrado (restar la media) de las variables antes del análisis. Por defecto es False (se centran).
noScaleSi es True, suprime el escalado de las variables a varianza unitaria. Por defecto es False.
eigenThresholdValor entre 0 y 1. Especifica el umbral de proporción de varianza explicada por los valores propios durante el paso de blanqueo. Los valores menores se descartan.
outputConfigura la tabla de salida con los resultados a nivel de observación (puntuaciones de componentes). Incluye opciones para nombrar componentes ('component') y variables blanqueadas ('white').
Creación de Señales Mezcladas para ICA

Genera una tabla con tres señales mezcladas linealmente: una onda sinusoidal, una onda de diente de sierra y ruido aleatorio.

¡Copiado!
1 
2DATA casuser.mixed_signals;
3keep t x1 x2 x3;
4DO t = 0 to 200 BY 0.1;
5s1 = sin(t);
6s2 = mod(t, 5) - 2.5;
7S3 = rannor(12345);
8x1 = 0.5*s1 + 0.3*s2 + 0.2*S3;
9x2 = 0.2*s1 + 0.7*s2 + 0.1*S3;
10x3 = 0.3*s1 + 0.1*s2 + 0.6*S3;
11OUTPUT;
12END;
13 
14RUN;
15 

Ejemplos

Ejecuta fastIca con la configuración predeterminada para extraer 3 componentes independientes.

Código SAS® / CAS Código en espera de validación por la comunidad
¡Copiado!
1 
2PROC CAS;
3ica.fastIca TABLE={name="mixed_signals", caslib="casuser"} inputs={"x1", "x2", "x3"} n=3;
4 
5RUN;
6 
Resultado :
Genera tablas de resultados que incluyen información del modelo, valores propios del blanqueo y la matriz de desmezcla (demixing matrix).

Configuración avanzada utilizando el método simétrico, función LogCosh, semilla fija y guardando los componentes calculados en una nueva tabla.

Código SAS® / CAS Código en espera de validación por la comunidad
¡Copiado!
1 
2PROC CAS;
3ica.fastIca TABLE={name="mixed_signals", caslib="casuser"} inputs={"x1", "x2", "x3"} n=3 method={name="SYMMETRIC", maxIter=1000, tolerance=1e-6} gFunction="LOGCOSH" seed=9876 OUTPUT={casOut={name="ica_scores", replace=true}, component="IndComp", white="WhitenedVar"} display={names={"Eigenvalues", "DemixingMatrix"}};
4 
5RUN;
6 
Resultado :
Calcula los componentes independientes de forma paralela. Crea la tabla 'ica_scores' con las columnas IndComp1-3 y WhitenedVar1-3. Muestra solo las tablas de Valores Propios y Matriz de Desmezcla.

FAQ

¿Cuál es el propósito de la acción fastIca?
¿Qué controla el parámetro eigenThreshold?
¿Qué opciones están disponibles para el parámetro gFunction?
¿Qué métodos de extracción de componentes se pueden utilizar?
¿Cómo se define el número de componentes independientes a calcular?
¿Es posible suprimir el centrado y escalado de las variables?
¿Cuál es el criterio de convergencia predeterminado?