Attualmente sto creando diversi segnali usando Matlab, mescolandoli moltiplicandoli per una matrice di missaggio A, e quindi cercando di recuperare i segnali originali usando FastICA.ICA - Statistical Independence & Eigenvalues of Covariance Matrix
Finora, i segnali recuperati sono davvero cattivi se confrontati con quelli originali, il che non era quello che mi aspettavo.
Sto cercando di capire se sto facendo qualcosa di sbagliato. I segnali Sto elettrogeni sono i seguenti: (. Le ampiezze sono nell'intervallo [0,1])
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 per ICA abbia successo è che al massimo un segnale è gaussiana e l'ho osservato nella generazione del segnale.
Tuttavia, un'altra condizione è che tutti i segnali sono statisticamente indipendenti.
Tutto quello che so è che questo significa che, dati due segnali A & 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'è qualche modo per determinare questo? Forse alcune proprietà che devono essere osservate?
Un'altra cosa che ho notato è che quando ho calcolare gli autovalori della matrice di covarianza (calcolato per la matrice contenente i segnali misti), l'eigenspectrum sembra dimostrare che v'è una sola (principale) componente principale. Cosa significa veramente? Non dovrebbe esserci 5, dal momento che ho 5 (presumibilmente) segnali indipendenti?
Ad esempio, quando si utilizza la matrice seguente 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
(! Soltanto 4)
Quando si utilizza la matrice identità come matrice di miscelazione (cioè i segnali misti sono lo stesso di quelli originali), l'eigenspectrum è: 0.0103 0.0199 0.0330 0.0811 0.1762
. C'è ancora un valore molto più grande del resto ..
Grazie per il vostro aiuto.
Mi scuso se le risposte alle mie domande sono dolorosamente ovvie, ma sono davvero nuovo per le statistiche, ICA e Matlab. Grazie ancora.
EDIT - Ho 500 campioni di ciascun segnale, nell'intervallo [0,2, 100], in incrementi di 0,2, cioè x = 0:0.1:100
.
EDIT - dato il modello ICA: X = Come + n (io non sono l'aggiunta di alcun rumore al momento), ma mi riferisco al eigenspectrum della trasposta di X, vale a dire eig(cov(X'))
.
Ho usato x = 0.2: 0.2: 100 (Ho appena aggiunto questo dettaglio alla mia domanda originale - grazie per averlo indicato.) Come sei arrivato a quella matrice di covarianza? La matrice di covarianza per la matrice di missaggio A che ho postato nella domanda è diversa. Inoltre, l'uso di eig (cov (A)) fornisce gli autovalori, non gli autovettori, della matrice. A parte questo, non mi riferivo agli autovalori della matrice di covarianza di A, ma agli autovalori della matrice di covarianza dei segnali misti. Aggiungerò questo alla mia domanda per renderla più chiara. – Rachel
Oh e grazie per il link, ma puoi spiegarci meglio? Come ho detto, sono un principiante delle statistiche. Mi piacerebbe sapere se esiste un metodo generale utilizzato per verificare se un numero di segnali è statisticamente indipendente o meno. – Rachel
Grazie per il tuo commento, tuttavia, non mi ha davvero portato da nessuna parte. Il mio problema non era quello di calcolare gli autovalori, ma più del perché gli autovalori sono quello che sono .. Si può vedere che uno degli autovalori è relativamente grande.Penserei che per i segnali statisticamente indipendenti, gli autovalori sarebbero più o meno uguali, e mi piacerebbe sapere se questo è vero. Inoltre, non ho ancora trovato un modo concreto per verificare se i miei segnali sono indipendenti o meno. – Rachel