Obecnie tworzę różne sygnały za pomocą Matlaba, miksuję je, mnożąc je przez macierz miksowania A, a następnie próbuję odzyskać oryginalne sygnały za pomocą FastICA .
Jak dotąd odzyskane sygnały są naprawdę złe w porównaniu z oryginalnymi, czego nie oczekiwałem.
Próbuję sprawdzić, czy robię coś źle. Generowane przeze mnie sygnały to:
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
Jednym z warunków powodzenia ICA jest to, że co najwyżej jeden sygnał jest gaussowski i zaobserwowałem to podczas generowania sygnału.
Jednak innym warunkiem jest to, że wszystkie sygnały są statystycznie niezależne.
Wiem tylko, że oznacza to, że biorąc pod uwagę dwa sygnały A i B, znajomość jednego sygnału nie daje żadnych informacji w odniesieniu do drugiego, tj .: P (A | B) = P (A), gdzie P jest prawdopodobieństwem .
Teraz moje pytanie brzmi: czy moje sygnały są statystycznie niezależne? Czy jest jakiś sposób, aby to ustalić? Może jakaś własność, której należy przestrzegać?
Inną rzeczą, którą zauważyłem, jest to, że kiedy obliczam wartości własne macierzy kowariancji (obliczonej dla macierzy zawierającej sygnały mieszane), widmo własne wydaje się pokazywać, że istnieje tylko jeden (główny) główny składnik . Co to tak naprawdę znaczy? Czy nie powinno być 5, skoro mam 5 (podobno) niezależnych sygnałów?
Na przykład przy użyciu następującej matrycy mieszania:
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
Wartościami własnymi są: 0.0000 0.0005 0.0022 0.0042 0.0345
(tylko 4!)
Przy użyciu macierzy tożsamości jako matrycy do mieszania (tj sygnały mieszane są takie same jak oryginalne), przy czym eigenspectrum jest: 0.0103 0.0199 0.0330 0.0811 0.1762
. Jest jeszcze jedna wartość znacznie większa niż reszta.
Dziękuję za pomoc
Przepraszam, jeśli odpowiedzi na moje pytania są boleśnie oczywiste, ale naprawdę jestem nowy w statystyce, ICA i Matlabie. Dzięki jeszcze raz.
EDYTOWAĆ
Mam 500 próbek każdego sygnału, w zakresie [0,2, 100], w krokach co 0,2, tj. X = 0: 0,1: 100.
Ponadto, biorąc pod uwagę model ICA: X = As + n (w tej chwili nie dodam żadnego hałasu), mam na myśli spektrum własne transpozycji X, tj. Eig (cov (X ')).
AKTUALIZACJA
Zgodnie z sugestią (patrz komentarze), wypróbowałem FastICA tylko na 2 sygnałach. Wyniki były dość dobre (patrz zdjęcie poniżej). Zastosowano matrycę mieszającą A = [0.75 0.25; 0.25 0.75]
. Jednak spektrum własne 0.1657 0.7732
nadal wykazywało tylko jeden główny główny składnik.
Moje pytanie sprowadza się zatem do następującego: jakiej funkcji / równania / właściwości mogę użyć do sprawdzenia, czy pewna liczba wektorów sygnałowych jest statystycznie niezależna?