Jak przeprowadzić analizę czynnikową, gdy macierz kowariancji nie jest pozytywnie określona?

11

Mam zestaw danych, który składa się z 717 obserwacji (wierszy), które są opisane przez 33 zmienne (kolumny). Dane są standaryzowane przez punktację Z wszystkich zmiennych. Żadne dwie zmienne nie są liniowo zależne ( ). Usunąłem również wszystkie zmienne o bardzo niskiej wariancji (mniej niż ). Poniższy rysunek pokazuje odpowiednią macierz korelacji (w wartościach bezwzględnych).0,1r=10,1

Kiedy próbuję uruchomić analizę czynników przy użyciu factoranMatlaba w następujący sposób:

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

Otrzymuję następujący błąd:

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

Czy możesz mi powiedzieć, gdzie jest problem? Czy wynika to z niskiej wzajemnej zależności między wykorzystywanymi zmiennymi? Ponadto, co mogę z tym zrobić?


Moja macierz korelacji:

wprowadź opis zdjęcia tutaj

Vasek
źródło
3
Myślę, że problemem jest tutaj niska wzajemna zależność . Prawdopodobnie masz pewne zmienne, które są liniowo zależne między sobą, co powoduje, że twoja macierz kowariancji jest półokreślona (tj. Ma kilka zerowych wartości własnych).
usεr11852
3
Do osób głosujących za pytaniem, aby zamknąć: dlaczego pytanie o pozytywną definitywność macierzy kowariancji próbki byłoby tutaj nie na temat ? Użytkownik jest zaniepokojony tym, dlaczego standardowa aplikacja Factor Analysis nie działa. Poproś o więcej informacji, jeśli chcesz!
usεr11852
2
Czy możesz obliczyć i przedstawić wartości własne macierzy kowariancji próbki? (np. eig(cov(Z2))). Podejrzewam, że niektóre z nich są bardzo małe.
usεr11852
3
Zgadzam się z @ usεr11852: wydaje się, że to pytanie zostało błędnie zamknięte jako nie na temat (głosowałem za jego zamknięciem). Wyglądało to jak pytanie programistyczne, ale w rzeczywistości jest to pytanie idealnie na temat i rozsądne. Zredagowałem to i głosowałem, aby ponownie otworzyć. Szkoda, że ​​PO zniknął.
ameba
3
Twierdzę, że w tym pytaniu mogą znajdować się treści statystyczne, z którymi społeczność Matlab nie będzie w stanie pomóc. Jak obliczasz swoją Z2matrycę? Jeśli brakuje danych, usunięcie parami może spowodować, że macierz stanie się nieodwracalna, gdy różne korelacje w tej macierzy zostaną obliczone przy użyciu różnych podpróbek danych.
StasK

Odpowiedzi:

1

do

C=QDQ1,
Qdo
re=(λ1000λ2)λn00000)
Q0ndo

0

λn+1,λn+2),...=10-15.
do~=Qre~Q-1,
re~=(λ1000λ2)λn10-1500010-15)

Q,re

[Q,D] = eig(C)

do~

dodo~

Jonas
źródło
0

Możliwe, że macie problemy z liczbami w macierzy. Być może jest to rzeczywiście wartość dodatnia, ale obliczenia numeryczne mówią inaczej.

Bardzo powszechnym rozwiązaniem w tym przypadku jest dodanie bardzo niskiej wartości (na przykład 1.E-10) do wszystkich elementów ukośnych. Jeśli to nie rozwiąże problemu, spróbuj stopniowo zwiększać tę wartość.

Romain Reboulleau
źródło
Przekątne wpisy wydają się już dość dominujące. Myślisz, że to pomogłoby?
Jonas,
Martwię się o pozycje 8 i 10, jeśli niektóre są liniowo zależne, muszą to być te dwa. Nie wiem wystarczająco dużo o rzeczywistym obliczeniu rozkładu własnego, ale myślę, że to rozwiązanie może działać: dodanie 1e-10 do przekątnej nie robi wiele na temat zależności liniowej, ale może po prostu dodać wszystko, co jest konieczne liczbowo, aby obliczanie wartości własnych jest ustalone (tj. brak wartości własnej 0). Jeśli jednak moje rozwiązanie nie działa, uważam, że jest ono dość eleganckie.
Romain Reboulleau,
-2

FA działa najlepiej, gdy twoje dane są gaussowskie, dlatego możesz wypróbować niektóre metody przetwarzania wstępnego, aby uzyskać dane bardziej podobne do gaussowskiej.

PickleRick
źródło
Jestem oszołomiony tą odpowiedzią. Jaki jest sens wykonywania FA nieskorelowanych danych?
ttnphns
@ttnphns Myślę, że masz rację! Zastosowanie FA do danych powiązanych nie ma sensu! Moja sugestia pochodzi od określonego rodzaju FA, w którym PCA zastosowało się we wstępnym przetwarzaniu tworzenia reprezentacji wektorowych z danych, w których zastosujesz FA. Oryginalne dane są zwykle rzutowane przez PCA przed przekształceniem w reprezentację wektorową. FA jest stosowana do reprezentacji wektorowej, a nie danych prognozowanych przez PCA. Mój błąd! Zaktualizuję moją odpowiedź. Chociaż w niektórych przypadkach probabilistyczna PCA może działać tak dobrze, jak FA, jeśli model FA się nie zbiegnie. Nie zgadzasz się
PickleRick