Come eseguire l'analisi fattoriale quando la matrice di covarianza non è definita positiva?


11

Ho un set di dati composto da 717 osservazioni (righe) che sono descritte da 33 variabili (colonne). I dati sono standardizzati assegnando un punteggio z a tutte le variabili. Non esistono due variabili che dipendono linearmente ( ). Ho anche rimosso tutte le variabili con varianza molto bassa (inferiore a 0,1 ). La figura seguente mostra la matrice di correlazione corrispondente (in valori assoluti).r=10.1

Quando sto cercando di eseguire l'analisi dei fattori usando factoranin Matlab come segue:

[Loadings1,specVar1,T,stats] = factoran(Z2,1);

Ricevo il seguente errore:

The data X must have a covariance matrix that is positive definite.

Potresti dirmi dov'è il problema? È dovuto alla bassa dipendenza reciproca tra le variabili utilizzate? Inoltre, cosa posso fare al riguardo?


La mia matrice di correlazione:

inserisci qui la descrizione dell'immagine


3
Penso che sia qui il contrario della bassa dipendenza reciproca . Probabilmente hai alcune variabili che sono linearmente dipendenti tra loro e questo fa sì che la tua matrice di covarianza sia semi-definita (cioè abbia alcuni autovalori zero).
usεr11852,

3
Alle persone che votano per chiudere la domanda: Perché una domanda sull'affidabilità positiva della matrice di covarianza del campione sarebbe fuori tema qui? L'utente è preoccupato per il motivo per cui un'applicazione standard di Factor Analysis non funziona. Chiedi maggiori informazioni se vuoi!
usεr11852

2
Potete per favore calcolare e presentare gli autovalori della matrice di covarianza del campione? (es. eig(cov(Z2))). Sospetto fortemente che alcuni di essi siano molto piccoli.
usεr11852

3
Sono d'accordo con @ usεr11852: sembra che questa domanda sia stata erroneamente chiusa come fuori tema (ho votato per chiuderla da sola). Sembrava una domanda di programmazione, ma in realtà è una domanda perfettamente in argomento e ragionevole. L'ho modificato e ho votato per riaprire. Peccato che l'OP sembra essere scomparso però.
ameba dice Reinstate Monica il

3
Direi che potrebbe esserci un contenuto statistico a questa domanda che la comunità Matlab non sarà in grado di aiutare. Come calcoli la tua Z2matrice? Se mancano dei valori nei dati, l'eliminazione a coppie può indurre la matrice a diventare non invertibile quando le diverse correlazioni in quella matrice vengono calcolate utilizzando diversi sottocampioni dei dati.
StasK,

Risposte:


1

C

C=QDQ1,
QC
D=(λ1000λ2λn00000)
Q0nC

0

λn+1,λn+2,...=1015.
C~=QD~Q1,
D~=(λ1000λ2λn10150001015)

Q,D

[Q,D] = eig(C)

C~

CC~


0

È possibile che tu stia affrontando problemi numerici con la tua matrice. Probabilmente è in realtà definito positivo, ma il calcolo numerico dice il contrario.

Una soluzione molto comune, in quel caso, è aggiungere un valore molto basso (1.E-10 per esempio) a tutti gli elementi diagonali. Se ciò non risolve il problema, provare ad aumentare progressivamente questo valore.


Le voci diagonali sembrano già abbastanza dominanti. Pensi che questo sarebbe d'aiuto?
Jonas,

Sono preoccupato per l'ottava e la decima voce, se alcune sono linearmente dipendenti, devono essere queste due. Non so abbastanza dell'effettivo calcolo di decomposizione degli automi, ma penso che questa soluzione potrebbe funzionare: l'aggiunta di 1e-10 alla diagonale non fa molto sulla dipendenza lineare, ma potrebbe semplicemente aggiungere tutto ciò che è numericamente necessario in modo che il il calcolo dei valori degli automi è fisso (cioè nessun valore degli automi 0). Tuttavia, se la mia soluzione non funziona, trovo la tua abbastanza elegante.
Romain Reboulleau,

-2

FA funziona meglio quando i tuoi dati sono gaussiani, quindi potresti voler provare alcuni approcci di pre-elaborazione per avere dati più gaussiani.


Sono sconcertato da questa risposta. Che senso ha fare una FA di dati non correlati?
ttnphns,

@ttnphns Penso che tu abbia ragione! Non ha senso applicare la FA su dati decorrelati! Il mio suggerimento proviene da un tipo specifico di FA, in cui il PCA si è applicato in una pre-elaborazione della creazione di rappresentazioni vettoriali dai dati, in cui verrà applicato il FA. I dati originali vengono solitamente proiettati da PCA prima di essere trasformati nella rappresentazione vettoriale. E la FA viene applicata sulla rappresentazione vettoriale e non sui dati proiettati PCA. Colpa mia! Aggiornerò la mia risposta. Sebbene in alcuni casi un PCA probabilistico potrebbe funzionare altrettanto bene di FA se il modello FA non riuscisse a convergere. Non sei d'accordo?
PickleRick,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.