В даний час я створюю різні сигнали за допомогою Matlab, змішуючи їх, множуючи їх на змішувальну матрицю A, а потім намагаюся повернути початкові сигнали за допомогою FastICA .
Поки що відновлені сигнали дійсно погані в порівнянні з вихідними, що не було те, що я очікував.
Я намагаюся зрозуміти, чи роблю я щось не так. Я генерую такі сигнали:
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
Однією умовою успішності ICA є те, що максимум один сигнал є гауссовим, і я це спостерігав у своєму генерації сигналу.
Однак ще однією умовою є те, що всі сигнали є статистично незалежними.
Все, що я знаю, це те, що це означає, що, даючи два сигнали A & B, знання одного сигналу не дає ніякої інформації щодо іншого, тобто: P (A | B) = P (A), де P - ймовірність .
Тепер моє запитання таке: чи мої сигнали статистично незалежні? Чи я можу це визначити? Можливо, якась властивість, яку треба дотримуватися?
Ще одна річ, яку я помітив, це те, що коли я обчислюю власні значення матриці коваріації (обчислюється для матриці, що містить змішані сигнали), власний спектр, схоже, показує, що існує лише одна (головна) основна складова . Що це насправді означає? Чи не повинно бути 5, оскільки у мене є 5 (нібито) незалежних сигналів?
Наприклад, при використанні наступної матриці змішування:
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
Власні значення: 0.0000 0.0005 0.0022 0.0042 0.0345
(лише 4!)
При використанні матриці тотожності в якості матриці змішування (тобто змішані сигнали , такі ж , як і оригінальні), тобто спектр власних: 0.0103 0.0199 0.0330 0.0811 0.1762
. Ще є одна величина, значно більша за решту.
Дякую за твою допомогу.
Прошу вибачення, якщо відповіді на мої запитання болісно очевидні, але я дійсно новачок у статистиці, ICA та Matlab. Знову дякую.
EDIT
У мене є 500 зразків кожного сигналу в діапазоні [0,2, 100], з кроком 0,2, тобто x = 0: 0,1: 100.
Також, враховуючи модель ICA: X = As + n (на даний момент я не додаю жодного шуму), я маю на увазі власний спектр транспозиції X, тобто eig (cov (X ')).
ОНОВЛЕННЯ
Як було запропоновано (див. Коментарі), я спробував FastICA лише на 2 сигнали. Результати були досить хорошими (див. Малюнок нижче). Використовувана матриця змішування була A = [0.75 0.25; 0.25 0.75]
. Однак власний спектр 0.1657 0.7732
все ще показав лише один основний основний компонент.
Моє запитання, таким чином, зводиться до наступного: Яку функцію / рівняння / властивість я можу використовувати, щоб перевірити, чи є ряд сигнальних векторів статистично незалежними?