Wie wird eine Faktoranalyse durchgeführt, wenn die Kovarianzmatrix nicht eindeutig positiv ist?

11

Ich habe einen Datensatz, der aus 717 Beobachtungen (Zeilen) besteht, die durch 33 Variablen (Spalten) beschrieben werden. Die Daten werden durch Z-Scoring aller Variablen standardisiert. Keine zwei Variablen sind linear abhängig ( ). Ich habe auch alle Variablen mit sehr geringer Varianz (weniger als ) entfernt. Die folgende Abbildung zeigt die entsprechende Korrelationsmatrix (in absoluten Werten).0,1r=10,1

Wenn ich versuche, die Faktoranalyse factoranin Matlab wie folgt durchzuführen :

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

Ich erhalte folgende Fehlermeldung:

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

Könnten Sie mir bitte sagen, wo das Problem liegt? Liegt es an der geringen gegenseitigen Abhängigkeit zwischen den verwendeten Variablen? Was kann ich darüber hinaus tun?


Meine Korrelationsmatrix:

Geben Sie hier die Bildbeschreibung ein

Vasek
quelle
3
Ich denke, es ist das Gegenteil einer geringen gegenseitigen Abhängigkeit , das hier ein Problem darstellt. Sie haben wahrscheinlich einige Variablen, die linear voneinander abhängig sind, und dies führt dazu, dass Ihre Kovarianzmatrix semi-definit ist (dh einige Null-Eigenwerte hat).
usεr11852 sagt Reinstate Monic
3
An die Leute, die die Frage zum Abschluss ablehnen: Warum sollte eine Frage zur positiven Bestimmtheit der Stichproben-Kovarianzmatrix hier nicht zum Thema gehören ? Der Benutzer ist besorgt, warum eine Standardanwendung der Faktoranalyse nicht funktioniert. Fragen Sie nach weiteren Informationen, wenn Sie möchten!
usεr11852 sagt Reinstate Monic
2
Können Sie bitte die Eigenwerte der Stichproben-Kovarianzmatrix berechnen und darstellen? (zB eig(cov(Z2))). Ich vermute sehr, dass einige von ihnen sehr klein sind.
usεr11852 sagt Reinstate Monic
3
Ich stimme @ usεr11852 zu: Es scheint, dass diese Frage fälschlicherweise als nicht zum Thema gehörend geschlossen wurde (ich habe dafür gestimmt, sie selbst zu schließen). Es sah aus wie eine Programmierfrage, ist aber tatsächlich eine perfekt themenbezogene und vernünftige Frage. Ich habe es bearbeitet und für die Wiedereröffnung gestimmt. Schade, dass das OP verschwunden zu sein scheint.
Amöbe sagt Reinstate Monica
3
Ich würde argumentieren, dass diese Frage möglicherweise statistische Inhalte enthält, bei denen die Matlab-Community nicht helfen kann. Wie berechnet man seine Z2Matrix? Wenn Ihre Daten fehlende Werte enthalten, kann das paarweise Löschen dazu führen, dass die Matrix nicht mehr invertierbar ist, wenn die verschiedenen Korrelationen in dieser Matrix unter Verwendung verschiedener Teilstichproben der Daten berechnet werden.
StasK

Antworten:

1

C

C=QDQ1,
Q.C
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~

Jonas
quelle
0

Möglicherweise haben Sie numerische Probleme mit Ihrer Matrix. Es ist möglicherweise tatsächlich positiv definitiv, aber die numerische Berechnung sagt etwas anderes.

In diesem Fall besteht eine sehr häufige Lösung darin, allen diagonalen Elementen einen sehr niedrigen Wert (z. B. 1.E-10) hinzuzufügen. Wenn das Problem dadurch nicht behoben wird, versuchen Sie, diesen Wert schrittweise zu erhöhen.

Romain Reboulleau
quelle
Die diagonalen Einträge scheinen schon ziemlich dominant zu sein. Glaubst du, das würde helfen?
Jonas
Ich mache mir Sorgen um den 8. und 10. Eintrag. Wenn einige linear abhängig sind, müssen es diese beiden sein. Ich weiß nicht genug über die eigentliche Eigenzerlegungsberechnung, aber ich denke, dass diese Lösung funktionieren könnte: Das Hinzufügen von 1e-10 zur Diagonale hat nicht viel mit der linearen Abhängigkeit zu tun, sondern fügt möglicherweise nur das hinzu, was numerisch notwendig ist, damit die Die Berechnung der Eigenwerte ist fest (dh kein 0-Eigenwert). Wenn meine Lösung jedoch nicht funktioniert, finde ich Ihre ziemlich elegant.
Romain Reboulleau
-2

FA funktioniert am besten, wenn Ihre Daten Gauß'sch sind. Daher sollten Sie einige Vorverarbeitungsansätze ausprobieren, um mehr Gauß'sche Daten zu erhalten.

PickleRick
quelle
Diese Antwort verwirrt mich. Was macht es für einen Sinn, eine FA mit nicht korrelierten Daten zu erstellen?
ttnphns
@ttnphns Ich denke du hast recht! Es macht keinen Sinn, FA auf dekorrelierte Daten anzuwenden! Mein Vorschlag stammt von einer bestimmten Art von FA, bei der die PCA in einer Vorverarbeitung zum Erstellen von Vektordarstellungen aus Daten angewendet wurde, auf die Sie FA anwenden werden. Die Originaldaten werden normalerweise von PCA projiziert, bevor sie in die Vektordarstellung transformiert werden. Und die FA wird auf die Vektordarstellung angewendet und nicht auf die projizierten PCA-Daten. Mein Fehler! Ich werde meine Antwort aktualisieren. Obwohl in einigen Fällen eine probabilistische PCA möglicherweise genauso gut funktioniert wie FA, wenn das FA-Modell nicht konvergiert. Stimmst du nicht zu?
PickleRick