Bagaimana melakukan analisis faktor ketika matriks kovarians tidak pasti positif?


11

Saya memiliki satu set data yang terdiri dari 717 pengamatan (baris) yang dijelaskan oleh 33 variabel (kolom). Data terstandarisasi dengan z-scoring semua variabel. Tidak ada dua variabel yang bergantung linear ( ). Saya juga menghapus semua variabel dengan varians sangat rendah (kurang dari ). Gambar di bawah ini menunjukkan matriks korelasi yang sesuai (dalam nilai absolut).r=10.1

Ketika saya mencoba menjalankan analisis faktor menggunakan factoranMatlab sebagai berikut:

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

Saya menerima kesalahan berikut:

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

Bisakah Anda memberi tahu saya di mana masalahnya? Apakah karena ketergantungan timbal balik yang rendah antara variabel yang digunakan? Selain itu, apa yang bisa saya lakukan?


Matriks korelasi saya:

masukkan deskripsi gambar di sini


3
Saya pikir itu adalah kebalikan dari saling ketergantungan rendah yang menjadi masalah di sini. Anda mungkin memiliki beberapa variabel yang bergantung secara linear di antara mereka sendiri dan ini menyebabkan matriks kovarians Anda menjadi semi-pasti (mis. Memiliki beberapa vektor eigen nol).
usεr11852

3
Kepada orang-orang yang memberikan suara untuk menutup pertanyaan: Mengapa pertanyaan tentang kepastian positif dari matriks kovarians sampel di luar topik di sini? Pengguna prihatin mengapa aplikasi standar Analisis Faktor tidak berfungsi. Minta info lebih lanjut jika Anda mau!
usεr11852

2
Bisakah Anda menghitung dan menyajikan nilai eigen dari matriks kovarians sampel? (mis. eig(cov(Z2))). Saya sangat curiga bahwa beberapa dari mereka sangat kecil.
usεr11852

3
Saya setuju dengan @ usεr11852: sepertinya pertanyaan ini salah ditutup sebagai di luar topik (saya memilih untuk menutupnya sendiri). Memang terlihat seperti pertanyaan pemrograman, tetapi sebenarnya adalah pertanyaan yang tepat dan masuk akal. Saya mengeditnya dan memilih untuk membuka kembali. Sayang sekali bahwa OP tampaknya telah menghilang.
Amoeba berkata Reinstate Monica

3
Saya berpendapat mungkin ada konten statistik untuk pertanyaan ini bahwa komunitas Matlab tidak akan dapat membantu. Bagaimana Anda menghitung Z2matriks Anda ? Jika Anda memiliki nilai yang hilang dalam data Anda, maka penghapusan berpasangan dapat mendorong matriks menjadi noninvertibel ketika korelasi yang berbeda dalam matriks tersebut dihitung menggunakan subsampel data yang berbeda.
Tugas

Jawaban:


1

Mari kita mendefinisikan matriks korelasi dengan . Karena positif semi-pasti, tetapi tidak pasti positif, dekomposisi spektralnya terlihat seperti mana kolom terdiri dari vektor eigen ortonormal dan 0 \ end {pmatrix} adalah matriks diagonal yang berisi nilai eigen yang sesuai dengan vektor eigen di . Beberapa di antaranyaC

C=QDQ1,
QC
D=(λ1000λ2λn00000)
Q0 . Selain itu, adalah pangkat .nC

Cara sederhana untuk mengembalikan kepastian positif adalah dengan menetapkan -eigenvalues ​​ke beberapa nilai yang secara numerik tidak nol, misalnyaKarenanya, set mana Lalu,0

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

Di Matlab, seseorang dapat memperoleh menggunakan perintah:Q,D

[Q,D] = eig(C)

Membangun kemudian hanyalah manipulasi Matrix sederhana.C~

Catatan: Akan sulit untuk mengatakan bagaimana ini memengaruhi analisis faktor; karenanya, orang mungkin harus berhati-hati dengan metode ini. Selain itu, meskipun ini adalah adalah matriks korelasi, mungkin tidak. Oleh karena itu, normalisasi lain dari entri mungkin diperlukan.CC~


0

Mungkin saja Anda menghadapi masalah numerik dengan matriks Anda. Ini mungkin benar-benar pasti positif, tetapi perhitungan numerik mengatakan sebaliknya.

Solusi yang sangat umum, dalam hal ini, adalah menambahkan nilai yang sangat rendah (misalnya 1.E-10) ke semua elemen diagonal. Jika ini tidak menyelesaikan masalah, cobalah untuk semakin meningkatkan nilai ini.


Entri diagonal tampaknya sudah cukup dominan. Apakah Anda pikir ini akan membantu?
Jonas

Saya khawatir tentang entri ke-8 dan ke-10, jika ada yang bergantung secara linear, pastilah keduanya. Saya tidak cukup tahu tentang perhitungan dekomposisi eigen yang sebenarnya, tetapi saya pikir solusi ini dapat bekerja: menambahkan 1e-10 ke diagonal tidak banyak berpengaruh pada ketergantungan linear, tetapi mungkin saja menambahkan apa saja yang diperlukan secara numerik sehingga perhitungan nilai-nilai eigen adalah tetap (yaitu tidak ada nilai eigen 0). Namun, jika solusi saya tidak berhasil, saya menemukan solusi Anda cukup elegan.
Romain Reboulleau

-2

FA berfungsi paling baik ketika data Anda adalah Gaussian, karena itu Anda mungkin ingin mencoba beberapa pendekatan pra-pemrosesan untuk memiliki data yang lebih mirip Gaussian.


Saya bingung dengan jawaban ini. Apa arti melakukan FA data yang tidak berkorelasi?
ttnphns

@ttnphns Saya pikir kamu benar! Tidak masuk akal untuk menerapkan FA pada data yang terkait dengan dekorasi! Saran saya berasal dari jenis FA tertentu, di mana PCA diterapkan dalam pra-pemrosesan pembuatan representasi vektor dari data, di mana Anda akan menerapkan FA. Data asli biasanya diproyeksikan oleh PCA sebelum diubah menjadi representasi vektor. Dan FA diterapkan pada representasi vektor, dan bukan data proyeksi PCA. Salahku! Saya akan memperbarui jawaban saya. Meskipun dalam beberapa kasus PCA probabilistik mungkin bekerja sebaik FA jika model FA gagal untuk bertemu. Apakah kamu tidak setuju?
PickleRick
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.