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?
fonte
Respostas:
Os sinais 3 e 5 parecem estar bastante correlacionados - eles compartilham seu primeiro harmônico. Se eu recebesse duas misturas dessas, não seria capaz de separá-las, ficaria tentado a colocar a harmônica comum como um sinal e as harmônicas mais altas como segundo sinal. E eu estaria errado! Isso pode explicar o valor próprio ausente.
Os sinais 1 e 2 também não parecem independentes.
Uma "verificação de sanidade" rápida e suja para a independência de duas séries é fazer um gráfico (x, y) de um sinal contra o outro:
e depois fazer o mesmo gráfico (x, y) com um sinal embaralhado:
Se os dois gráficos tiverem uma aparência diferente, seus sinais não serão independentes. De maneira mais geral, se o gráfico (x, y) dos dados mostra "características", desimetrias etc., é um mau presságio.
Testes adequados de independência (e essas são as funções objetivas usadas no loop de otimização da ACI) incluem, por exemplo, informações mútuas.
A ICA está recuperando os sinais mais independentes, cuja mistura linear produz seus dados de entrada . Ele funcionará como um método de separação de sinal e recuperará os sinais originais apenas se eles fossem maximamente independentes, de acordo com o critério de otimização usado na sua implementação de ICA.
fonte
Não sou especialista em ACI, mas posso falar um pouco sobre independência.
Como alguns dos comentários mencionaram, a independência estatística entre duas variáveis aleatórias pode ser mais ou menos interpretada como "a quantidade de informação que a observação de uma variável fornece sobre outra".
Aqui está um código matlab que irá gerar dois sinais independentes de uma distribuição conjunta construída e dois de uma distribuição conjunta não independente e depois calcular as informações mútuas das juntas.
A função "computeMIplugin.m" é uma função simples que escrevi que calcula as informações mútuas usando a fórmula de soma acima.
Mais uma vez, isso pressupõe que você tenha uma boa estimativa da distribuição conjunta (junto com outras suposições mais alegres), mas deve ser útil como regra geral.
fonte
Como mencionado acima, ambos os sinais 3 e 5 parecem estar bastante correlacionados e têm um período semelhante.
Podemos pensar em dois sinais sendo correlacionados se pudermos mudar uma das fontes para a esquerda ou direita e aumentar ou diminuir sua amplitude para que ela se encaixe em cima da outra fonte. Observe que não estamos alterando a frequência da fonte, apenas realizando uma mudança de fase e amplitude.
No caso acima, podemos mudar a fonte 3 para que seus picos coincidam com a fonte 5. Esse é o tipo de coisa que interferirá na extração da fonte ao usar o ICA devido à suposição de independência.
Nota : Uma boa ilustração do conceito acima é pensar em duas ondas sinusoidais. Ambos são completamente determinísticos. Se ambos tiverem a mesma frequência (mesmo com fases diferentes), estarão perfeitamente correlacionados e a ACI não poderá separá-los. Se, em vez disso, eles tiverem frequências diferentes (que não são múltiplos inteiros um do outro), eles serão independentes e poderão ser separados.
Abaixo está um código Matlab para você ver por si mesmo
Observe que, para as ondas da mesma frequência, o ICA apenas retorna os sinais de entrada, mas para diferentes frequências, ele retorna as fontes originais.
fonte
Rachel,
Até agora, em minhas pesquisas, consegui encontrar algo chamado ' Teste Qui-Quadrado de Independência ', mas não sei ao certo como funciona no momento, mas pode valer a pena dar uma olhada.
fonte