Prosedur yang disarankan untuk analisis faktor pada data dikotomis dengan R

10

Saya harus menjalankan analisis faktor pada dataset yang terdiri dari variabel dikotomis (0 = ya, 1 = tidak) dan saya tidak tahu apakah saya berada di jalur yang benar.

Menggunakan tetrachoric()saya membuat matriks korelasi, yang saya jalankan fa(data,factors=1). Hasilnya cukup dekat dengan hasil yang saya terima ketika menggunakan MixFactor , tetapi tidak sama.

  1. Apakah ini boleh atau Anda akan merekomendasikan prosedur lain?
  2. Mengapa fa()berhasil dan factanal()menghasilkan kesalahan? ( Fehler in solve.default(cv) : System ist für den Rechner singulär: reziproke Konditionszahl = 4.22612e-18)
cada
sumber
1
Saya tidak berbicara (Jerman?) Tetapi kesalahannya sepertinya karena tetrachoric matrix menjadi singular (non-invertible). Bahkan dengan sampel berukuran baik beberapa perkiraan matriks korelasi polikorik dapat gagal menjadi matriks korelasi yang tepat. Firasat saya adalah bahwa fa () menggunakan komponen utama dan factanal () melakukan FA kemungkinan maksimum, tetapi itu tidak jelas bagi saya dari dokumentasi untuk fa ().
JMS
@ada Berapa item / subjek yang Anda miliki? Dan metode apa yang diterapkan di MixFactor?
chl
1
@ada mengapa Anda menjalankan analisis faktor? Jika Anda bertujuan untuk memperkirakan kemampuan peserta, IRT mungkin merupakan pendekatan yang lebih baik. pada masalah fa versus factanal, fa menggunakan residu minimum secara default, sedangkan factanal menggunakan metode ML.
richiemorrisroe
@ chl: terlalu sedikit! Saya baru saja memulai survei dan sekarang hanya ada 45 subjek. Saya tidak dapat mengumpulkan data baru pada saat itu dan itulah sebabnya saya mencoba melakukan sebanyak mungkin kode r ...
cada
1
@cada CFA dengan 45 subjek akan surealis :-) Saya akan mencoba menambahkan pemikiran saya nanti.
chl

Jawaban:

12

Singkatnya, dengan n = 45 mata pelajaran yang tersisa dengan pendekatan deskriptif berbasis korelasi dan multivariat. Namun, karena kuesioner ini seharusnya bersifat satu dimensi, ini selalu merupakan awal yang baik.

Apa yang akan saya lakukan:

  • Hitung korelasi berpasangan untuk 22 item Anda; melaporkan kisaran dan median - ini akan memberikan indikasi konsistensi relatif dari respon item yang diamati (korelasi di atas 0,3 umumnya dianggap sebagai indikasi validitas konvergen yang baik, tetapi tentu saja ketepatan estimasi ini tergantung pada ukuran sampel) ; cara alternatif untuk mempelajari konsistensi internal kuesioner adalah dengan menghitung alpha Cronbach , meskipun dengan n = 45 interval kepercayaan yang terkait (gunakan bootstrap untuk itu) akan relatif besar.
  • Hitung korelasi titik-biserial antara item dan skor skala yang dijumlahkan; itu akan memberi Anda gambaran tentang kekuatan diskriminatif dari setiap item (seperti memuat di FA), di mana nilai di atas 0,3 menunjukkan hubungan yang memuaskan antara setiap item dan skala yang sesuai.
  • Gunakan PCA untuk meringkas matriks korelasi (ini menghasilkan interpretasi yang setara dengan apa yang akan diperoleh dari analisis korespondensi berganda jika item-item yang diberi skor dikotomi). Jika instrumen Anda berperilaku sebagai skala unidimensional untuk sampel Anda, Anda harus mengamati sumbu variasi dominan (seperti yang tercermin pada nilai eigen pertama).

2(1-r2)/(n)

chl
sumber
Terima kasih banyak! Jawaban Anda sangat terperinci dan sangat membantu! Terima kasih!
cada
3

Utas ini memiliki posisi Google yang bagus untuk kesalahan "System ist für den Rechner singulär: reziproke Konditionszahl" dengan menggunakan factanal (dalam bahasa Inggris: "sistem secara komputasi tunggal: nomor kondisi timbal balik") - oleh karena itu saya akan menambahkan komentar:

Ketika matriks korelasi dihitung secara apriori (misalnya, untuk berpasangan dengan menghapus nilai yang hilang), pastikan factanal () tidak berpikir bahwa matriks adalah data yang akan dianalisis (https://stat.ethz.ch/pipermail/r- bantuan / 2007-Oktober / 142567.html).

PREVIOUS: matrix = cor(data, use="pairwise.complete.obs")  # For example
WRONG: factanal(matrix, 3, rotation="varimax")
RIGHT: factanal(covmat=matrix, factors=3, rotation="varimax")

BurninLeo

BurninLeo
sumber