Ich erstelle derzeit mit Matlab verschiedene Signale, mische sie, indem ich sie mit einer Mischmatrix A multipliziere, und versuche dann, die ursprünglichen Signale mit FastICA wiederzuerlangen .
Bisher sind die wiederhergestellten Signale im Vergleich zu den ursprünglichen Signalen wirklich schlecht, was nicht das war, was ich erwartet hatte.
Ich versuche zu sehen, ob ich etwas falsch mache. Die Signale, die ich generiere, sind die folgenden:
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
Eine Voraussetzung für den Erfolg von ICA ist, dass höchstens ein Signal Gauß ist, und das habe ich bei meiner Signalerzeugung beobachtet.
Eine andere Bedingung ist jedoch, dass alle Signale statistisch unabhängig sind.
Ich weiß nur, dass dies bedeutet, dass bei zwei Signalen A & B das Wissen um ein Signal keine Informationen bezüglich des anderen gibt, dh: P (A | B) = P (A) wobei P die Wahrscheinlichkeit ist .
Meine Frage ist nun: Sind meine Signale statistisch unabhängig? Kann ich das irgendwie feststellen? Vielleicht eine Eigenschaft, die beachtet werden muss?
Eine andere Sache, die mir aufgefallen ist, ist, dass wenn ich die Eigenwerte der Kovarianzmatrix (berechnet für die Matrix mit den gemischten Signalen) berechne, das Eigenspektrum zu zeigen scheint, dass es nur eine (Haupt-) Hauptkomponente gibt . Was heißt das eigentlich? Sollte es nicht 5 geben, da ich 5 (angeblich) unabhängige Signale habe?
Zum Beispiel bei Verwendung der folgenden Mischmatrix:
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
Die Eigenwerte sind: 0.0000 0.0005 0.0022 0.0042 0.0345
(nur 4!)
Wenn die Einheitsmatrix als Mischmatrix (dh die gemischten Signale die gleiche wie die Originale sind), ist das Eigenspektrum: 0.0103 0.0199 0.0330 0.0811 0.1762
. Es gibt immer noch einen Wert, der viel größer ist als der Rest.
Danke für deine Hilfe.
Ich entschuldige mich, wenn die Antworten auf meine Fragen schmerzlich offensichtlich sind, aber ich bin wirklich neu in Statistik, ICA und Matlab. Danke noch einmal.
BEARBEITEN
Ich habe 500 Abtastwerte von jedem Signal im Bereich [0,2, 100] in Schritten von 0,2, dh x = 0: 0,1: 100.
Unter Berücksichtigung des ICA-Modells: X = As + n (ich füge im Moment kein Rauschen hinzu) beziehe ich mich auch auf das Eigenspektrum der Transponierten von X, dh eig (cov (X ')).
AKTUALISIEREN
Wie vorgeschlagen (siehe Kommentare), habe ich FastICA auf nur 2 Signalen ausprobiert . Die Ergebnisse waren recht gut (siehe Bild unten). Die verwendete Mischmatrix war A = [0.75 0.25; 0.25 0.75]
. Das Eigenspektrum 0.1657 0.7732
zeigte jedoch nur eine Hauptkomponente.
Meine Frage beschränkt sich daher auf Folgendes: Mit welcher Funktion / Gleichung / Eigenschaft kann ich prüfen, ob eine Reihe von Signalvektoren statistisch unabhängig sind?