Menginterpretasikan perbedaan antara R dan SPSS dengan analisis faktor eksplorasi

14

Saya seorang mahasiswa pascasarjana dalam ilmu komputer. Saya telah melakukan beberapa analisis faktor eksplorasi untuk proyek penelitian. Rekan-rekan saya (yang memimpin proyek) menggunakan SPSS, sementara saya lebih suka menggunakan R. Ini tidak masalah sampai kami menemukan perbedaan besar antara dua paket statistik.

Kami menggunakan pemfaktoran sumbu utama sebagai metode ekstraksi (harap dicatat bahwa saya menyadari perbedaan antara PCA dan analisis faktor, dan bahwa kami tidak menggunakan PCA , setidaknya tidak dengan sengaja). Dari apa yang saya baca, ini harus sesuai dengan metode "sumbu utama" di R, dan baik "anjak piutang sumbu utama" atau "tertimbang kuadrat" di SPSS, menurut dokumentasi R . Kami menggunakan metode rotasi miring (khususnya, promax ) karena kami mengharapkan faktor yang berkorelasi, dan menafsirkan matriks pola .

Menjalankan dua prosedur dalam R dan SPSS, ada perbedaan besar. Matriks pola memberikan beban yang berbeda. Meskipun ini memberikan lebih atau kurang faktor yang sama untuk hubungan variabel, ada hingga 0,15 perbedaan antara beban yang sesuai, yang tampaknya lebih dari yang diharapkan oleh hanya implementasi yang berbeda dari metode ekstraksi dan rotasi promax. Namun, itu bukan perbedaan yang paling mengejutkan.

Varians kumulatif yang dijelaskan oleh faktor-faktor tersebut adalah sekitar 40% dalam hasil SPSS, dan 31% dalam hasil R. Ini adalah perbedaan besar, dan telah menyebabkan kolega saya ingin menggunakan SPSS alih-alih R. Saya tidak punya masalah dengan ini, tetapi perbedaan yang besar membuat saya berpikir bahwa kita mungkin menafsirkan sesuatu secara tidak benar, yang merupakan masalah.

Semakin memperkeruh perairan, SPSS melaporkan berbagai jenis varian yang dijelaskan ketika kami menjalankan anjak kuadrat terkecil berbobot. Proporsi varians yang dijelaskan oleh Initial Eigenvalues ​​adalah 40%, sedangkan proporsi varians yang dijelaskan dari Jumlah Ekstraksi Jumlah Pemadatan Kuadrat (SSL) adalah 33%. Ini membuat saya berpikir bahwa Nilai Eigen Awal bukan angka yang tepat untuk dilihat (saya menduga ini adalah perbedaan yang dijelaskan sebelum rotasi, meskipun yang begitu besar di luar saya). Yang lebih membingungkan, SPSS juga menunjukkan Rotasi SSL, tetapi tidak menghitung persentase varian yang dijelaskan (SPSS memberitahu saya bahwa memiliki faktor yang berkorelasi berarti saya tidak dapat menambahkan SSL untuk menemukan varian total, yang masuk akal dengan matematika yang pernah saya lihat). SSL yang dilaporkan dari R tidak cocok dengan semua ini, dan R memberitahu saya bahwa itu menggambarkan 31% dari total varians. SSL R cocok dengan Rotasi SSL yang paling dekat. Nilai eigen R dari matriks korelasi asli memang cocok dengan nilai Eigen awal dari SPSS.

Juga, harap dicatat bahwa saya telah bermain-main dengan menggunakan metode yang berbeda, dan bahwa ULS dan PAF SPSS tampaknya cocok dengan metode PA R yang paling dekat.

Pertanyaan spesifik saya:

  1. Berapa banyak perbedaan yang harus saya harapkan antara R dan SPSS dengan implementasi analisis faktor?
  2. Manakah dari Jumlah Beban Kuadrat dari SPSS yang harus saya interpretasikan, Nilai Eigen Awal, Ekstraksi, atau Rotasi?
  3. Apakah ada masalah lain yang mungkin saya abaikan?

Panggilan saya ke SPSS dan R adalah sebagai berikut:

SPSS:

FACTOR
/VARIABLES <variables>
/MISSING PAIRWISE
/ANALYSIS <variables>
/PRINT INITIAL KMO AIC EXTRACTION ROTATION
/FORMAT BLANK(.35)
/CRITERIA FACTORS(6) ITERATE(25)
/EXTRACTION ULS
/CRITERIA ITERATE(25)
/ROTATION PROMAX(4).

R:

library(psych)
fa.results <- fa(data, nfactors=6, rotate="promax",
scores=TRUE, fm="pa", oblique.scores=FALSE, max.iter=25)
Oliver
sumber
Tidak dapat memeriksanya karena saya tidak menggunakan R, tetapi saya curiga ada kesalahan dalam dokumentasi. fm = "pa" harus sesuai dengan / EKSTRAKSI PAF. Selain itu, cobalah untuk membandingkan solusi sebelum rotasi apa pun, karena perbedaan ringan dalam rotasi algos dapat bercampur dengan perbedaan metode ekstraksi.
ttnphns
1
Terima kasih telah melihatnya! Saya akan mencoba membandingkan solusi sebelum rotasi. Saya harus menyebutkan bahwa saya sudah mencoba keduanya / ULS EKSTRAKSI dan / EKSTRAKSI PAF, dan ada sangat sedikit perbedaan dalam memuat (tetapi tidak ada yang benar-benar dekat dengan metode R "pa"). Alasan saya menunjukkan / EXTRACTION ULS di atas adalah karena itulah perintah yang memberikan berbagai SSL.
Oliver
1
Metode poros utama dan metode kuadrat terkecil yang tidak berbobot kadang-kadang dapat memberikan hasil yang serupa tetapi secara algoritmik berbeda. Saya percaya bahwa kesetaraan antara R dan SPSS adalah sebagai berikut: "pa" = PAF, "minres" = ULS, "gls" = GLS, "ml" = ML
ttnphns
1
Juga, periksa perawatan nilai yang hilang. Dalam kode SPSS Anda, Anda menghapusnya berpasangan. Di dalam kamu kode R - ...?
ttnphns
Saya telah membandingkan pra-rotasi SSL dari R dan mereka cocok dengan SSL Ekstraksi dalam solusi ULS dari SPSS (sayangnya, solusi PAF di SPSS tidak memberi saya nilai-nilai ini). Saya pikir rotasi promax tampaknya menjadi penyebabnya. Baik, itu atau cara SPSS mencetak Rotation SSLs. Mungkin R membuat estimasi total varians yang dijelaskan oleh SSL akhir, sementara SPSS memberi tahu saya bahwa tidak ada estimasi yang sesuai.
Oliver

Jawaban:

21

Pertama-tama, saya merekomendasikan ttnphns kedua untuk melihat solusi sebelum rotasi. Analisis faktor seperti yang diterapkan dalam SPSS adalah prosedur yang kompleks dengan beberapa langkah, membandingkan hasil dari masing-masing langkah ini akan membantu Anda untuk menentukan masalah.

Secara khusus Anda dapat menjalankan

FACTOR
/VARIABLES <variables>
/MISSING PAIRWISE
/ANALYSIS <variables>
/PRINT CORRELATION
/CRITERIA FACTORS(6) ITERATE(25)
/EXTRACTION ULS
/CRITERIA ITERATE(25)
/ROTATION NOROTATE.

untuk melihat matriks korelasi yang digunakan SPSS untuk melakukan analisis faktor. Kemudian, di R, siapkan matriks korelasi sendiri dengan menjalankan

r <- cor(data)

Setiap perbedaan dalam cara nilai-nilai yang hilang ditangani harus jelas pada tahap ini. Setelah Anda memeriksa bahwa matriks korelasinya sama, Anda dapat memasukkannya ke fungsi fa dan menjalankan analisis Anda lagi:

fa.results <- fa(r, nfactors=6, rotate="promax",
scores=TRUE, fm="pa", oblique.scores=FALSE, max.iter=25)

Jika Anda masih mendapatkan hasil yang berbeda di SPSS dan R, masalahnya tidak hilang terkait nilai.

Selanjutnya, Anda dapat membandingkan hasil analisis faktor / metode ekstraksi itu sendiri.

FACTOR
/VARIABLES <variables>
/MISSING PAIRWISE
/ANALYSIS <variables>
/PRINT EXTRACTION
/FORMAT BLANK(.35)
/CRITERIA FACTORS(6) ITERATE(25)
/EXTRACTION ULS
/CRITERIA ITERATE(25)
/ROTATION NOROTATE.

dan

fa.results <- fa(r, nfactors=6, rotate="none", 
scores=TRUE, fm="pa", oblique.scores=FALSE, max.iter=25)

Sekali lagi, bandingkan matriks faktor / komunitas / jumlah pemuatan kuadrat. Di sini Anda dapat mengharapkan beberapa perbedaan kecil tetapi tentu saja tidak sebesar yang Anda gambarkan. Semua ini akan memberi Anda ide yang lebih jelas tentang apa yang terjadi.

Sekarang, untuk menjawab tiga pertanyaan Anda secara langsung:

  1. Dalam pengalaman saya, mungkin untuk mendapatkan hasil yang sangat mirip, kadang-kadang setelah menghabiskan waktu mencari tahu berbagai terminologi dan mengutak-atik parameter. Saya memiliki beberapa kesempatan untuk menjalankan analisis faktor di SPSS dan R (biasanya bekerja di R dan kemudian mereproduksi analisis di SPSS untuk dibagikan dengan rekan kerja) dan pada dasarnya selalu mendapatkan hasil yang sama. Karena itu saya umumnya tidak mengharapkan perbedaan besar, yang membuat saya curiga bahwa masalahnya mungkin spesifik untuk kumpulan data Anda. Namun saya dengan cepat mencoba perintah yang Anda berikan pada kumpulan data yang saya miliki (skala Likert) dan perbedaannya sebenarnya lebih besar dari yang biasa saya lakukan tetapi tidak sebesar yang Anda gambarkan. (Saya mungkin memperbarui jawaban saya jika saya punya lebih banyak waktu untuk bermain-main dengan ini.)
  2. Sebagian besar waktu, orang menafsirkan jumlah beban kuadrat setelah rotasi sebagai "proporsi varian dijelaskan" oleh masing-masing faktor, tetapi ini tidak berarti mengikuti rotasi miring (yang mengapa tidak dilaporkan sama sekali dalam psik dan SPSS hanya melaporkan nilai eigen dalam kasus ini - bahkan ada catatan kaki kecil tentang hal itu di output). Nilai eigen awal dihitung sebelum ekstraksi faktor apa pun. Jelas, mereka tidak memberi tahu Anda apa-apa tentang proporsi varian yang dijelaskan oleh faktor-faktor Anda dan juga tidak benar-benar “jumlah beban kuadrat” (mereka sering digunakan untuk memutuskan jumlah faktor yang akan dipertahankan). SPSS "Jumlah Ekstraksi dari Pemuatan Kuadrat" harus cocok dengan "pemuatan SS" yang disediakan oleh psik .
  3. Ini adalah tebakan liar pada tahap ini tetapi apakah Anda sudah memeriksa apakah prosedur ekstraksi faktor terkonvergensi dalam 25 iterasi? Jika rotasi gagal untuk konvergen, SPSS tidak menampilkan matriks pola / struktur apa pun dan Anda tidak dapat melewatkannya, tetapi jika ekstraksi gagal untuk konvergen, matriks faktor terakhir tetap ditampilkan dan SPSS dengan bahagia melanjutkan rotasi. Namun Anda akan melihat catatan “a. Mencoba mengekstraksi 6 faktor. Diperlukan lebih dari 25 iterasi. (Konvergensi = XXX). Ekstraksi dihentikan. ”Jika nilai konvergensi kecil (sekitar 0,005, kondisi berhenti default adalah“ kurang dari 0,0001 ”), itu masih tidak akan menjelaskan perbedaan yang Anda laporkan tetapi jika benar-benar besar ada sesuatu yang patologis tentang data Anda.
Gala
sumber
2
Jawaban yang sangat bagus Saya akan menyarankan (jika mungkin) penulis memberikan matriks korelasi sampel untuk melihat di mana masalahnya. Seharusnya tidak terlalu sulit untuk memalsukannya / membuatnya cukup ambigu untuk berbagi data. Juga jika seseorang tidak dapat mereproduksi masalah ketika memulai langsung dengan matriks korelasi yang sama yang sebagian mengidentifikasi masalah.
Andy W
Terima kasih, ini jawaban yang fantastis. Saya akan melalui langkah-langkah ini setelah saya kembali ke mesin SPSS saya. Menanggapi # 3, solusinya memang menyatu dalam 9 iterasi, tapi saya akan mengingatnya untuk setiap analisis masa depan yang saya lakukan. Sangat membantu untuk mengetahui bahwa perbedaan biasanya tidak sebesar yang saya jelaskan (saya juga bekerja dengan data skala Likert, 5 poin).
Oliver
Jika ada orang lain yang bertanya-tanya, fafungsi dalam R adalah dari psychpaket. The factanalfungsi dari paket dasar harus melakukan yang sama, tapi psychlayak menggunakan untuk tujuan lain pula. Bahkan, karena ini adalah data Likert, akan lebih bijaksana untuk menggunakan psychpaket itu fa.polysebagai gantinya: lihat dokumentasi bantuan .
Nick Stauner
6

Baru-baru ini saya telah menemukan bahwa sebagian besar perbedaan analisis faktor antara SPSS dan R (dengan paket Psikologi) menjernihkan ketika data diperlakukan hilang-listwise dalam setiap program, matriks korelasi menunjukkan persis sama di masing-masing, dan tidak ada rotasi miring digunakan.

Satu perbedaan yang tersisa adalah dalam rangkaian nilai yang muncul dalam plot scree yang menunjukkan nilai eigen setelah ekstraksi. Dalam "scree (cor (mydata))" R "faktor-faktor ini" tidak cocok dengan yang tercantum dalam tabel Dijelaskan Varians SPSS di bawah "Jumlah Ekstraksi dari Pemuatan Kuadrat." Perhatikan bahwa "komponen" plot R scree cocok dengan plot scree SPSS, yang juga cocok dengan "Initial Eigenvalues" tabel varians yang Dijelaskan.

Saya juga menemukan bahwa "Proportion Var" yang dijelaskan oleh masing-masing faktor adalah, dalam R, kadang-kadang dilaporkan sebagai (proporsi untuk faktor yang diberikan) / (jumlah yang dijelaskan oleh semua faktor), sementara di lain waktu itu adalah (proporsi untuk faktor yang diberikan) (jumlah item dalam analisis). Jadi, jika Anda mendapatkan yang pertama, itu adalah, sementara bukan kecocokan, setidaknya sebanding dengan dan turunan dari apa yang dilaporkan SPSS di bawah "Jumlah Ekstraksi dari Beban Kuadrat ...% dari Varians."

Memperkenalkan rotasi oblimin di setiap program, bagaimanapun, menciptakan perbedaan yang cukup besar dalam pemuatan item atau varians faktor yang menjelaskan bahwa saya belum dapat menyelesaikannya.

rolando2
sumber
1

Metode rotasi default di R adalah oblimin, jadi ini kemungkinan akan menyebabkan perbedaan. Sebagai tes jalankan PAF / oblimin di SPSS dan R dan Anda akan menemukan hasil yang hampir sama.

Stefan Dombrowski
sumber
0

Saya tidak tahu apa yang menyebabkan perbedaan dalam pemuatan pola, tetapi saya berasumsi bahwa perbedaan dalam% dari varians yang dijelaskan adalah karena: - apakah Anda mungkin menafsirkan bagian pertama (dari 2 atau 3) SPSS menjelaskan tabel varians yang sebenarnya menunjukkan hasil analisis komponen utama. Bagian kedua menunjukkan hasil untuk hasil analisis faktor yang tidak diputar dan hasil ketiga setelah rotasi (jika digunakan). - fakta bahwa fa berfungsi (atau lebih tepatnya metode cetaknya) salah menghitung SSL untuk faktor miring. Untuk mendapatkan% dari total varians yang dijelaskan oleh faktor, Anda harus menghitung jumlah beban struktural kuadrat berdasarkan faktor dan membaginya dengan jumlah variabel. Namun, Anda tidak dapat menjumlahkan ini (dalam kasus rotasi miring) untuk mendapatkan% dari perbedaan dijelaskan oleh semua faktor. Untuk mendapatkan ini,

Aleš Žiberna
sumber
Selamat datang di situs, @AlesZiberna. Kami mencoba membangun repositori permanen dari informasi statistik dalam bentuk pertanyaan & jawaban. Jadi satu hal yang kami khawatirkan adalah linkrot. Bisakah Anda memberikan ikhtisar informasi di tautan seandainya mati, & sehingga pembaca dapat memutuskan apakah mereka ingin meneruskannya?
gung - Reinstate Monica
0

Jawaban ini aditif untuk yang di atas. Seperti yang disarankan oleh Gala dalam jawabannya, pertama-tama orang harus menentukan apakah solusi yang diberikan oleh R (mis. Fa in psych) dan SPSS berbeda sebelum rotasi. Jika sama, maka lihat pengaturan rotasi di setiap program. (Untuk SPSS, Anda dapat menemukan semua pengaturan dalam entri manual referensi untuk FACTOR).

Satu pengaturan penting untuk dicari adalah normalisasi Kaiser . Secara default, SPSS melakukan normalisasi Kaiser selama rotasi, sedangkan beberapa fungsi R seperti 'fa' tidak. Anda dapat mengontrol pengaturan itu di SPSS dengan menentukan / CRITERIA = NOKAISER / KAISER, untuk memverifikasi apakah itu menghilangkan ketidaksesuaian antara hasil dengan masing-masing program.

AlexR
sumber