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,1
Wenn ich versuche, die Faktoranalyse factoran
in 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:
eig(cov(Z2))
). Ich vermute sehr, dass einige von ihnen sehr klein sind.Z2
Matrix? 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.Antworten:
quelle
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.
quelle
FA funktioniert am besten, wenn Ihre Daten Gauß'sch sind. Daher sollten Sie einige Vorverarbeitungsansätze ausprobieren, um mehr Gauß'sche Daten zu erhalten.
quelle