Je crée actuellement différents signaux à l'aide de Matlab, je les mélange en les multipliant par une matrice de mélange A, puis j'essaie de récupérer les signaux d'origine en utilisant FastICA .
Jusqu'à présent, les signaux récupérés sont vraiment mauvais par rapport aux signaux d'origine, ce qui n'était pas ce à quoi je m'attendais.
J'essaie de voir si je fais quelque chose de mal. Les signaux que je génère sont les suivants:
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
Une condition pour que l'ICA réussisse est qu'au plus un signal soit gaussien, et je l'ai observé dans ma génération de signal.
Cependant, une autre condition est que tous les signaux soient statistiquement indépendants.
Tout ce que je sais, c'est que cela signifie que, étant donné deux signaux A et B, connaître un signal ne donne aucune information par rapport à l'autre, c'est-à-dire: P (A | B) = P (A) où P est la probabilité .
Maintenant, ma question est la suivante: mes signaux sont-ils statistiquement indépendants? Existe-t-il un moyen de déterminer cela? Peut-être une propriété qui doit être observée?
Une autre chose que j'ai remarquée est que lorsque je calcule les valeurs propres de la matrice de covariance (calculées pour la matrice contenant les signaux mixtes), le spectre propre semble montrer qu'il n'y a qu'une seule composante principale (principale) . Qu'est-ce que cela signifie vraiment? Ne devrait-il pas y en avoir 5, car j'ai 5 signaux (supposés) indépendants?
Par exemple, lorsque vous utilisez la matrice de mélange suivante:
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
Les valeurs propres sont: 0.0000 0.0005 0.0022 0.0042 0.0345
(seulement 4!)
Lors de l' utilisation de la matrice d'identité de la matrice de mélange ( à savoir les signaux mixtes sont les mêmes que ceux d' origine), le eigenspectrum est: 0.0103 0.0199 0.0330 0.0811 0.1762
. Il y a encore une valeur beaucoup plus grande que les autres ..
Merci de votre aide.
Je m'excuse si les réponses à mes questions sont douloureusement évidentes, mais je suis vraiment nouveau dans les statistiques, l'ICA et Matlab. Merci encore.
ÉDITER
J'ai 500 échantillons de chaque signal, dans la plage [0,2, 100], par pas de 0,2, soit x = 0: 0,1: 100.
De plus, étant donné le modèle ICA: X = As + n (je n'ajoute aucun bruit pour le moment), je me réfère au spectre propre de la transposition de X, c'est-à-dire eig (cov (X ')).
MISE À JOUR
Comme suggéré (se référer aux commentaires), j'ai essayé FastICA sur seulement 2 signaux. Les résultats étaient assez bons (voir photo ci-dessous). La matrice de mélange utilisée était A = [0.75 0.25; 0.25 0.75]
. Cependant, le spectre eigens 0.1657 0.7732
n'a montré qu'une seule composante principale principale.
Ma question se résume donc à ce qui suit: Quelle fonction / équation / propriété puis-je utiliser pour vérifier si un certain nombre de vecteurs de signaux sont statistiquement indépendants?