Attualmente sto creando segnali diversi usando Matlab, mescolandoli moltiplicandoli per una matrice di missaggio A, e quindi cercando di recuperare i segnali originali usando FastICA .
Finora, i segnali recuperati sono davvero cattivi rispetto a quelli originali, che non era quello che mi aspettavo.
Sto cercando di vedere se sto facendo qualcosa di sbagliato. I segnali che sto generando sono i seguenti:
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

Una condizione affinché l'ICA abbia successo è che al massimo un segnale è gaussiano e l'ho osservato nella mia generazione del segnale.
Tuttavia, un'altra condizione è che tutti i segnali siano statisticamente indipendenti.
Tutto quello che so è che ciò significa che, dati due segnali A e B, conoscere un segnale non fornisce alcuna informazione rispetto all'altro, ovvero: P (A | B) = P (A) dove P è la probabilità .
Ora la mia domanda è questa: i miei segnali sono statisticamente indipendenti? C'è un modo per determinarlo? Forse qualche proprietà che deve essere osservata?
Un'altra cosa che ho notato è che quando calcolo gli autovalori della matrice di covarianza (calcolata per la matrice contenente i segnali misti), l'eigenspectrum sembra mostrare che esiste un solo componente principale (principale) . Cosa significa veramente? Non dovrebbero esserci 5, dato che ho 5 (presumibilmente) segnali indipendenti?
Ad esempio, quando si utilizza la seguente matrice di miscelazione:
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
Gli autovalori sono: 0.0000 0.0005 0.0022 0.0042 0.0345(solo 4!)
Quando si utilizza la matrice identità come matrice di miscelazione (cioè i segnali misti sono uguali a quelli originali), il eigenspectrum è: 0.0103 0.0199 0.0330 0.0811 0.1762. C'è ancora un valore molto più grande del resto ..
Grazie per l'aiuto.
Mi scuso se le risposte alle mie domande sono dolorosamente ovvie, ma sono davvero nuovo alle statistiche, ICA e Matlab. Grazie ancora.
MODIFICARE
Ho 500 campioni di ciascun segnale, nell'intervallo [0,2, 100], con incrementi di 0,2, ovvero x = 0: 0,1: 100.
Inoltre, dato il modello ICA: X = As + n (al momento non sto aggiungendo alcun rumore), mi riferisco all'eigenspectrum del trasposizione di X, cioè eig (cov (X ')).
AGGIORNARE
Come suggerito (fare riferimento ai commenti), ho provato FastICA su solo 2 segnali. I risultati sono stati abbastanza buoni (vedi foto sotto). La matrice di miscelazione utilizzata era A = [0.75 0.25; 0.25 0.75]. Tuttavia, l'eigenspectrum 0.1657 0.7732mostrava ancora solo un componente principale principale.
La mia domanda si riduce quindi a quanto segue: Quale funzione / equazione / proprietà posso usare per verificare se un numero di vettori di segnale sono statisticamente indipendenti?
