Atualmente, estou criando sinais diferentes usando o Matlab, misturando-os multiplicando-os por uma matriz de mixagem A e, em seguida, tentando recuperar os sinais originais usando o FastICA .
Até agora, os sinais recuperados são realmente ruins quando comparados aos originais, o que não era o que eu esperava.
Estou tentando ver se estou fazendo algo errado. Os sinais que estou gerando são os seguintes:
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
Uma condição para o sucesso da ICA é que no máximo um sinal seja gaussiano, e observei isso na minha geração de sinal.
No entanto, outra condição é que todos os sinais sejam estatisticamente independentes.
Tudo o que sei é que isso significa que, dados dois sinais A e B, conhecer um sinal não fornece nenhuma informação em relação ao outro, ou seja: P (A | B) = P (A) onde P é a probabilidade .
Agora, minha pergunta é a seguinte: meus sinais são estatisticamente independentes? Existe alguma maneira de determinar isso? Talvez alguma propriedade que deva ser observada?
Outra coisa que notei é que, quando calculo os valores próprios da matriz de covariância (calculados para a matriz que contém os sinais mistos), o espectro eigens parece mostrar que existe apenas um componente principal (principal) . O que isso realmente significa? Não deveria haver 5, já que tenho 5 (supostamente) sinais independentes?
Por exemplo, ao usar a seguinte matriz de mistura:
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
Os autovalores são: 0.0000 0.0005 0.0022 0.0042 0.0345
(apenas 4!)
Quando se utiliza a matriz identidade como a matriz de mistura (isto é, os sinais mistos são as mesmas que as originais), o eigenspectrum é: 0.0103 0.0199 0.0330 0.0811 0.1762
. Ainda existe um valor muito maior que o resto.
Obrigado pela ajuda.
Peço desculpas se as respostas às minhas perguntas são dolorosamente óbvias, mas sou realmente novo em estatísticas, ICA e Matlab. Obrigado novamente.
EDITAR
Eu tenho 500 amostras de cada sinal, no intervalo [0,2, 100], nas etapas de 0,2, ou seja, x = 0: 0,1: 100.
Além disso, dado o modelo ICA: X = As + n (não estou adicionando nenhum ruído no momento), estou me referindo ao espectro eigens da transposição de X, ou seja, eig (cov (X ')).
ATUALIZAR
Conforme sugerido (consulte os comentários), tentei o FastICA em apenas 2 sinais. Os resultados foram muito bons (veja a foto abaixo). A matriz de mistura utilizada foi A = [0.75 0.25; 0.25 0.75]
. No entanto, o espectro eigens 0.1657 0.7732
ainda mostrava apenas um componente principal principal.
Minha pergunta, portanto, se resume ao seguinte: Que função / equação / propriedade posso usar para verificar se vários vetores de sinais são estatisticamente independentes?