Actualmente estoy creando diferentes señales usando Matlab, mezclándolas multiplicándolas por una matriz de mezcla A, y luego tratando de recuperar las señales originales usando FastICA.ICA - Independencia estadística y autovalores de la matriz de covarianza
Hasta ahora, las señales recuperadas son realmente malas en comparación con las originales, que no era lo que esperaba.
Estoy tratando de ver si estoy haciendo algo mal. Las señales que estoy generando son los siguientes: (. Amplitudes están en el intervalo [0,1])
s1 = (-x.^2 + 100*x + 500)/3000; % quadratic
s2 = exp(-x/10); % -ve exponential
s3 = (sin(x)+ 1) * 0.5; % sine
s4 = 0.5 + 0.1 * randn(size(x, 2), 1); % gaussian
s5 = (sawtooth(x, 0.75)+ 1) * 0.5; % sawtooth
Una condición para ICA para tener éxito es que a lo sumo una señal es gaussiana , y he observado esto en mi generación de señal.
Sin embargo, otra condición es que todas las señales son estadísticamente independientes.
Lo único que sé es que esto significa que, dadas dos señales A & B, sabiendo una señal no da ninguna información con respecto a la otra, es decir: P (A | B) = P (A) donde P es la probabilidad.
Ahora mi pregunta es esta: ¿Mis señales son estadísticamente independientes? ¿Hay alguna manera de que pueda determinar esto? Tal vez alguna propiedad que debe ser observada?
Otra cosa que he notado es que cuando puedo calcular los valores propios de la matriz de covarianza (calculado para la matriz que contiene las señales mixtas), la eigenspectrum parece demostrar que sólo hay una (principal) de componentes principales. ¿Qué significa esto realmente? ¿No debería haber 5, ya que tengo 5 señales (supuestamente) independientes?
Por ejemplo, cuando se utiliza la siguiente matriz de mezcla:
A =
0.2000 0.4267 0.2133 0.1067 0.0533
0.2909 0.2000 0.2909 0.1455 0.0727
0.1333 0.2667 0.2000 0.2667 0.1333
0.0727 0.1455 0.2909 0.2000 0.2909
0.0533 0.1067 0.2133 0.4267 0.2000
Los valores propios son: 0.0000 0.0005 0.0022 0.0042 0.0345
(Sólo 4)
Cuando se utiliza la matriz de identidad como la matriz de mezcla (es decir, las señales mixtas son al igual que los originales), el espectro propio es: 0.0103 0.0199 0.0330 0.0811 0.1762
. Todavía hay un valor mucho más grande que el resto ..
Gracias por su ayuda.
Me disculpo si las respuestas a mis preguntas son dolorosamente obvias, pero soy realmente nuevo en estadísticas, ICA y Matlab. Gracias de nuevo.
EDIT - Tengo 500 muestras de cada señal, en el rango [0.2, 100], en pasos de 0.2, es decir, x = 0:0.1:100
.
EDITAR - Dado el modelo ICA: X = As + n (no estoy añadiendo cualquier ruido en el momento), pero me refiero a la eigenspectrum de la transpuesta de X, es decir eig(cov(X'))
.
Utilicé x = 0.2: 0.2: 100 (Acabo de agregar este detalle a mi pregunta original, gracias por señalarlo). ¿Cómo llegó a esa matriz de covarianza? La matriz de covarianza para la matriz de mezcla A que publiqué en la pregunta es diferente. Además, al usar eig (cov (A)) se obtienen los valores propios, no los vectores propios, de la matriz. Aparte de esto, no me estaba refiriendo a los valores propios de la matriz de covarianza de A, sino a los valores propios de la matriz de covarianza de las señales mixtas. Agregaré esto a mi pregunta para hacerlo más claro. – Rachel
Ah, y gracias por el enlace, pero ¿pueden explicarlo más? Como dije, soy un novato en estadísticas. Me gustaría saber si hay un método general que se usa para verificar si un número de señales son estadísticamente independientes o no. – Rachel
Gracias por su comentario, sin embargo, realmente no me ha llegado a ninguna parte. Mi problema no era calcular los valores propios, sino más bien por qué los valores propios son lo que son. Puedes ver que uno de los valores propios es relativamente grande.Creo que para las señales estadísticamente independientes, los valores propios serían más o menos iguales, y me gustaría saber si esto es cierto. Además, todavía no he encontrado una manera concreta de verificar si mis señales son independientes o no. – Rachel