Czy mogę zastosować analizę niezależnych składników, jeśli mam zmieszane dwie odrębne populacje źródeł sygnałów?

10

Rozumiem (głównie), w jaki sposób niezależna analiza składowa (ICA) działa na zestawie sygnałów z jednej populacji, ale nie udaje mi się, aby działała, jeśli moje obserwacje (macierz X) obejmują sygnały z dwóch różnych populacji (posiadających różne środki) i ja Zastanawiam się, czy jest to nieodłączne ograniczenie ICA, czy też mogę to rozwiązać. Moje sygnały różnią się od typowego analizowanego typu tym, że moje wektory źródłowe są bardzo krótkie (np. 3 wartości), ale mam wiele (np. 1000) obserwacji. W szczególności mierzę fluorescencję w 3 kolorach, w których szerokie sygnały fluorescencji mogą „przeniknąć” do innych detektorów. Mam 3 detektory i używam 3 różnych fluoroforów na cząstkach. Można to uznać za spektroskopię o bardzo niskiej rozdzielczości. Każda cząsteczka fluorescencyjna może mieć dowolną ilość dowolnego z 3 różnych fluoroforów. Mam jednak mieszany zestaw cząstek, które mają dość wyraźne stężenia fluoroforów. Na przykład, jeden zestaw może ogólnie mieć dużo fluoroforu # 1 i mało fluoroforu # 2, podczas gdy drugi zestaw ma niewiele # 1 i dużo # 2.

Zasadniczo chcę dekonwoluować efekt przelewania, aby oszacować rzeczywistą ilość każdego fluoroforu na każdej cząstce, zamiast tego, aby ułamek sygnału z jednego fluoroforu zwiększał sygnał innego. Wydawało się, że byłoby to możliwe w przypadku ICA, ale po kilku poważnych awariach (transformacja macierzy wydaje się priorytetem raczej oddzielenie populacji niż rotacja w celu optymalizacji niezależności sygnału), zastanawiam się, czy ICA nie jest właściwym rozwiązaniem, czy też muszę wstępnie przetwarzać moje dane w inny sposób, aby rozwiązać ten problem.

Wyniki algorytmu FastICA z 2 populacjami w 1 zbiorze danych

Wykresy pokazują moje syntetyczne dane wykorzystane do zademonstrowania problemu. Zaczynając od „prawdziwych” źródeł (panel A) składających się z mieszaniny 2 populacji, stworzyłem „prawdziwą” macierz mieszania (A) i obliczyłem macierz obserwacji (X) (panel B). FastICA szacuje macierz S (pokazaną w panelu C) i zamiast znaleźć moje prawdziwe źródła, wydaje mi się, że obraca dane, aby zminimalizować kowariancję między dwiema populacjami.

Szukasz sugestii lub wglądu.

Edward
źródło

Odpowiedzi:

1

Koncepcyjnie, aby ICA działało, wymaga obserwacji N zjawiska SAME i podejmie próbę rozłożenia tych sygnałów (mieszanin) na składniki <N.

Z twojego opisu każdy detektor liczy inną cząsteczkę energii. Oznacza to, że „mikstury” są w rzeczywistości już trzema różnymi sygnałami. Rozważ przykład, w którym używasz nagrań 4 różnych mikrofonów, aby rozróżnić 2 różne (wzajemnie niezależne) źródła dźwięku. W takim przypadku każdy mikrofon rejestruje (inną) SUMĘ obu źródeł dźwięku. W twoim przypadku, ze względu na obserwowane zjawisko, każdy „mikrofon” (detektor) NIE rejestruje (innej) sumy OBU źródeł, ale raczej rejestruje każde źródło osobno (przez większość czasu).

Jak opisano, czasami zdarzenie SAME może zostać zarejestrowane przez więcej niż jeden detektor (efekt przelewu). W takim przypadku, jeśli nalegasz na ICA, wówczas spróbuje on rozłożyć TAKĄ sumę.

Dlatego być może powinieneś rozważyć coś prostszego, na przykład uzyskanie korelacji krzyżowej między zdarzeniami zarejestrowanymi przez każdy z trzech różnych detektorów jako wskaźnika wielkości efektu rozlania.

Ale w tym przypadku zamiast badać 1000 „trojaczków” obserwacji, tworzysz trzy różne szeregi czasowe. Jeden szereg czasowy na detektor opisujący zdarzenia (w czasie) każdego detektora.

Jeśli twoje detektory i aparaty są wystarczająco szybkie, sygnał ten będzie wyglądał jak seria wykładniczo zanikających impulsów. Jeśli nie, twój sygnał będzie wyglądał jak ciąg impulsów splecionych z odpowiedzią impulsową systemu (wersja wygładzona). W obu przypadkach, jeśli to samo zdarzenie zostało wykryte przez więcej niż jeden detektor, wówczas poziom wyjściowy tych detektorów wzrośnie jednocześnie (i zwiększy korelację krzyżową lub inną formę pomiaru korelacji). Łatwiej będzie wykryć ten wzrost w pierwszym przypadku (szybki system).

Dlatego problemem staje się teraz ten, w którym musisz zdecydować, do którego detektora przyporządkować to zdarzenie, aby zostało poprawnie policzone. Istnieje wiele sposobów, aby to zrobić (bez użycia ICA), ale będziesz musiał znać reakcję spektralną detektora (amplituda impulsu VS energia lub napięcie wyjściowe VS energia). Będziesz wtedy w stanie stworzyć ważoną sumę zliczonych cząstek, sprawdzając „wagę” każdego impulsu w odpowiedzi detektora. Lub możesz zastosować „okno” do impulsów. To znaczy, rozważ ostry próg wokół szczytowej odpowiedzi detektora i licz tylko zdarzenia generujące takie (zwykle wysokie) impulsy. Biorąc pod uwagę krótki obszar wokół szczytowej wydajności detektora, odrzuci (niższe) impulsy wytworzone przez przelewanie.

Mam nadzieję, że to pomoże. Mam nadzieję, że poprawnie zrozumiałem twoją konfigurację.

A_A
źródło
0

Wygląda na to, że twoje „sygnały” nie są odpowiednie dla ICA. Wydaje się jednak, że możesz skorzystać z algorytmów grupowania, zwłaszcza jeśli znasz odrębny sygnał (poziom energii lub długość fali) oczekiwany od każdego typu fluoroforu. Można stworzyć idealne syntetyczne klastry i wspólnie z nimi gromadzić dane obserwacyjne. Zmieniając liczbę klastrów i inne parametry, powinieneś być w stanie wylać wyciek każdego fluoroforu do siebie jako dodatkowe klastry. Spektralne lub hierarchiczne metody klastrowania mogą być do tego najlepsze (w przeciwieństwie do k-średnich).

wwwslinger
źródło