Posso usar a análise de componentes independentes se houver duas populações distintas de fontes de sinal misturadas?


10

Entendo (principalmente) como a análise de componentes independentes (ICA) funciona em um conjunto de sinais de uma população, mas não estou conseguindo fazê-lo funcionar se minhas observações (matriz X) incluírem sinais de duas populações diferentes (com meios diferentes) e eu Estou me perguntando se é uma limitação inerente à ICA ou se posso resolver isso. Meus sinais são diferentes do tipo comum que está sendo analisado, pois meus vetores de origem são muito curtos (por exemplo, 3 valores), mas tenho muitas (por exemplo, 1000) de observações. Especificamente, estou medindo a fluorescência em três cores, onde os amplos sinais de fluorescência podem "transbordar" para outros detectores. Eu tenho 3 detectores e usando 3 fluoróforos diferentes em partículas. Pode-se pensar nisso como uma espectroscopia de resolução muito ruim. Qualquer partícula fluorescente pode ter uma quantidade arbitrária de qualquer um dos três fluoróforos diferentes. No entanto, tenho um conjunto misto de partículas que tendem a ter concentrações bastante distintas de fluoróforos. Por exemplo, um conjunto geralmente pode ter muito fluoróforo nº 1 e pouco fluoróforo nº 2, enquanto o outro conjunto possui pouco número 1 e muitos nº 2.

Basicamente, eu quero desconvolver o efeito spillover para estimar a quantidade real de cada fluoróforo em cada partícula, em vez de ter uma fração do sinal de um fluoróforo adicionada ao sinal de outra. Parecia que isso seria possível para a ICA, mas após algumas falhas significativas (a transformação da matriz parece priorizar a separação das populações em vez de girar para otimizar a independência do sinal), estou me perguntando se a ICA não é a solução certa ou se preciso pré-processe meus dados de alguma outra maneira para resolver isso.

Resultados do algoritmo FastICA com 2 populações em 1 conjunto de dados

Os gráficos mostram meus dados sintéticos usados ​​para demonstrar o problema. Começando com fontes "verdadeiras" (painel A) consistindo de uma mistura de 2 populações, criei uma matriz "verdadeira" de mistura (A) e calculei a matriz de observação (X) (painel B). O FastICA estima a matriz S (mostrada no painel C) e, em vez de encontrar minhas fontes verdadeiras, parece-me que ele gira os dados para minimizar a covariância entre as duas populações.

Procurando sugestões ou insights.

Respostas:


1

Conceitualmente, para que a ICA funcione, são necessárias N observações do mesmo fenômeno e tentará decompor esses sinais (as misturas) em <N componentes.

A partir da sua descrição, cada detector está contando uma partícula de energia diferente. Ou seja, as "Misturas" já são na verdade três sinais diferentes. Considere o exemplo em que você usa as gravações de 4 microfones diferentes para tentar distinguir entre 2 fontes sonoras diferentes (independentes). Nesse caso, cada microfone está gravando uma soma (diferente) de AMBAS fontes de som. No seu caso, devido ao fenômeno que você está observando, cada "microfone" (detector) NÃO está gravando uma soma (diferente) de AMBAS fontes, mas, ao contrário, registra cada fonte separadamente (na maioria das vezes).

Como você descreve, algumas vezes, o mesmo evento pode ser gravado por mais de um detector (transbordamento). Nesse caso, se você insistir com o ICA, ele tentará decompor essa soma.

Portanto, talvez você deva considerar algo mais simples, como obter a correlação cruzada entre os eventos registrados por cada um dos três detectores diferentes como um indicador da quantidade de transbordamento.

Mas, neste caso, em vez de examinar 1000 "trigêmeos" de observações, você cria três séries temporais diferentes. Uma série temporal por detector descrevendo os eventos (no tempo) de cada detector.

Se seus detectores e aparelhos forem rápidos o suficiente, esse sinal parecerá uma série de pulsos decadentes exponencialmente. Caso contrário, seu sinal parecerá um trem de pulsos convoluídos com a resposta de impulso do sistema (uma versão suavizada). Nos dois casos, se o mesmo evento tiver sido detectado por mais de um detector, a saída desses detectores aumentará simultaneamente de nível (e aumentará a correlação cruzada ou alguma outra forma de métrica de correlação). Será mais fácil detectar esse aumento no primeiro caso (sistema rápido).

Portanto, o problema agora se torna aquele em que você precisa decidir a qual detector atribuir esse evento para que seja contado corretamente. Existem várias maneiras de fazer isso (sem usar o ICA), mas você precisará conhecer a resposta espectral do seu detector (amplitude de pulso VS energia ou tensão de saída VS energia). Você seria capaz de criar uma soma ponderada das partículas contadas procurando o "peso" de cada pulso na resposta do seu detector. Ou você pode aplicar uma "janela" aos pulsos. Ou seja, considere um limiar acentuado em torno do pico de resposta do detector e conte apenas eventos que geram pulsos (geralmente altos). Considerando uma região curta em torno do pico de desempenho do detector rejeitará os pulsos (inferiores) criados pelo transbordamento.

Eu espero que isso ajude. Espero ter entendido sua configuração corretamente.


0

Parece que seus "sinais" não são do tipo adequado para ICA. No entanto, parece que você pode se beneficiar dos algoritmos de agrupamento, especialmente se você souber o sinal distinto (nível de energia ou comprimento de onda) esperado de cada tipo de fluoróforo. Você pode criar os clusters sintéticos ideais e agrupar os dados observacionais com eles. Ao variar a quantidade de clusters e outros parâmetros, você poderá estender o derramamento de cada fluoróforo entre si como clusters adicionais. Os métodos de agrupamento espectral ou hierárquico podem ser melhores para isso (em oposição ao k-means).

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.