Saya telah mencoba mereproduksi beberapa penelitian (menggunakan PCA) dari SPSS di R. Dalam pengalaman saya, principal()
fungsi dari paket psych
adalah satu-satunya fungsi yang mendekati (atau jika ingatan saya benar, mati) untuk mencocokkan output. Untuk mencocokkan hasil yang sama seperti di SPSS, saya harus menggunakan parameter principal(..., rotate = "varimax")
. Saya telah melihat makalah berbicara tentang bagaimana mereka melakukan PCA, tetapi berdasarkan pada output SPSS dan penggunaan rotasi, sepertinya analisis Faktor.
Pertanyaan: Apakah PCA, bahkan setelah rotasi (menggunakan varimax
), masih PCA? Saya mendapat kesan bahwa ini mungkin sebenarnya adalah Analisis faktor ... Jika tidak, detail apa yang saya lewatkan?
r
spss
pca
factor-analysis
factor-rotation
Roman Luštrik
sumber
sumber
principal
fungsi yang Anda tanyakan. Jika jawabannya memang menjawab pertanyaan Anda, maka mungkin pertanyaan Anda tidak dirumuskan secara memadai; apakah Anda akan mempertimbangkan untuk mengedit? Kalau tidak, saya menemukan bahwa jawaban doktor lebih dekat untuk benar-benar menjawab pertanyaan Anda. Perhatikan bahwa Anda dapat mengubah jawaban yang diterima kapan saja.Jawaban:
Pertanyaan ini sebagian besar tentang definisi PCA / FA, sehingga pendapat mungkin berbeda. Pendapat saya adalah bahwa PCA + varimax tidak boleh disebut PCA atau FA, tetapi lebih tepatnya disebut misalnya "PCA varimax-rotated".
Saya harus menambahkan bahwa ini adalah topik yang cukup membingungkan. Dalam jawaban ini saya ingin menjelaskan apa sebenarnya rotasi itu ; ini akan membutuhkan beberapa matematika. Seorang pembaca biasa dapat langsung beralih ke ilustrasi. Hanya dengan begitu kita dapat mendiskusikan apakah rotasi PCA + seharusnya atau tidak disebut "PCA".
Salah satu rujukannya adalah buku Jolliffe "Analisis Komponen Utama", bagian 11.1 "Rotasi Komponen Utama", tetapi saya merasa bisa lebih jelas.
Biarkan menjadi matriks data yang kita asumsikan terpusat. Jumlah PCA ( lihat jawaban saya di sini ) untuk dekomposisi nilai singular: . Ada dua tampilan yang setara tetapi gratis pada dekomposisi ini: tampilan "proyeksi" gaya PCA yang lebih dan tampilan "variabel laten" gaya FA. n × p X = U S V ⊤X n×p X=USV⊤
Menurut pandangan gaya PCA, kami menemukan banyak arah ortogonal (ini adalah vektor eigen dari matriks kovarians, juga disebut "arah utama" atau "sumbu"), dan "komponen utama" ( juga disebut komponen utama "skor") adalah proyeksi data pada arah ini. Komponen utama tidak berkorelasi, yang pertama memiliki varians yang maksimal, dll. Kita dapat menulis:U S X = U S ⋅ V ⊤ = Skor ⋅ Arahan utama .V US
Menurut pandangan FA-style, kami menemukan beberapa unit-variance tidak berkorelasi "faktor laten" yang menimbulkan variabel yang diamati melalui "pemuatan". Memang, adalah komponen utama standar (tidak berkorelasi dan dengan varian unit), dan jika kita mendefinisikan pemuatan sebagai , lalu (Perhatikan bahwa .) Kedua tampilan sama. Perhatikan bahwa pemuatan adalah vektor eigen yang diskalakan oleh masing-masing nilai eigen ( adalah nilai eigen dari matriks kovarians).L=VS/ √U˜=n−1−−−−−√U X= √L=VS/n−1−−−−−√
(Saya harus menambahkan tanda kurung yang PCA FA≠ ; FA secara eksplisit bertujuan menemukan faktor laten yang dipetakan secara linier ke variabel yang diamati melalui pemuatan; lebih fleksibel daripada PCA dan menghasilkan pemuatan yang berbeda. Itulah sebabnya saya lebih suka menyebut di atas "Tampilan FA-style pada PCA" dan bukan FA, meskipun beberapa orang menganggapnya sebagai salah satu metode FA.)
Sekarang, apa yang dilakukan rotasi? Misalnya rotasi ortogonal, seperti varimax. Pertama, ia hanya mempertimbangkan komponen , yaitu:Maka dibutuhkan persegi orthogonal matriks , dan colokan ke dalam dekomposisi ini: mana pemuatan yang diputar diberikan olehX ≈ U k S k V ⊤ k = ˜ U k L ⊤ k . k × kk<p
Perhatikan bahwa yang dirotasi adalah: (1) skor terstandarisasi, (2) pemuatan. Tapi bukan skor mentah dan bukan arah utama! Jadi rotasi terjadi di ruang laten , bukan di ruang asli. Ini sangat penting.
Dari sudut pandang gaya FA, tidak banyak yang terjadi. (A) Faktor laten masih tidak berkorelasi dan standar. (B) Mereka masih dipetakan ke variabel yang diamati melalui pemuatan (diputar). (C) Jumlah varians yang ditangkap oleh masing-masing komponen / faktor diberikan oleh jumlah nilai kuadrat dari kolom pemuatan yang sesuai di . (D) Secara geometris, pemuatan masih menjangkau subruang dimensi yang sama di (subruang yang direntang oleh vektor eigen PCA pertama ). (E) Perkiraan untuk dan kesalahan rekonstruksi tidak berubah sama sekali. (F) Matriks kovarians masih diperkirakan sama baiknya: k R p k XLrot k Rp k X
Tetapi sudut pandang gaya PCA praktis telah runtuh. Pemuatan yang diputar tidak sesuai dengan arah / sumbu ortogonal dalam lagi, yaitu kolom tidak ortogonal! Lebih buruk lagi, jika Anda [secara orthogonal] memproyeksikan data ke arah yang diberikan oleh pemuatan yang diputar, Anda akan mendapatkan proyeksi berkorelasi (!) Dan tidak akan dapat memulihkan skor. [Sebagai gantinya, untuk menghitung skor terstandarisasi setelah rotasi, seseorang perlu melipatgandakan matriks data dengan pseudo-invers dari loading . Atau, seseorang dapat dengan mudah memutar skor standar yang asli dengan matriks rotasi:Rp Lrot U˜rot=X(L+rot)⊤ U˜rot=U˜T ] Juga, komponen yang diputar tidak secara berturut - turut menangkap jumlah varian maksimal: varian akan didistribusikan kembali di antara komponen (bahkan meskipun semua diputar komponen capture persis sebanyak varians karena semua komponen utama asli).k k
Ini sebuah ilustrasi. Data adalah elips 2D yang membentang di sepanjang diagonal utama. Arah utama pertama adalah diagonal utama, yang kedua adalah ortogonal untuk itu. Vektor pemuatan PCA (vektor eigen yang diskalakan oleh nilai eigen) ditunjukkan dengan titik merah di kedua arah dan juga diregangkan oleh faktor konstan untuk visibilitas. Kemudian saya menerapkan rotasi ortogonal sebesar ke beban. Vektor pemuatan yang dihasilkan ditunjukkan dalam magenta. Perhatikan bagaimana mereka tidak ortogonal (!).30∘
Intuisi FA-style di sini adalah sebagai berikut: bayangkan sebuah "ruang laten" di mana poin mengisi lingkaran kecil (berasal dari Gaussian 2D dengan varian unit). Distribusi titik-titik ini kemudian direntangkan di sepanjang pemuatan PCA (merah) untuk menjadi elips data yang kita lihat pada gambar ini. Namun, distribusi titik yang sama dapat diputar dan kemudian direntangkan di sepanjang pemuatan PCA yang diputar (magenta) untuk menjadi elips data yang sama .
[Untuk benar-benar melihat bahwa rotasi beban orthogonal adalah rotasi , kita perlu melihat biplot PCA; di sana vektor / sinar yang sesuai dengan variabel asli hanya akan diputar.]
Mari kita simpulkan. Setelah rotasi ortogonal (seperti varimax), sumbu "prinsip rotasi" tidak ortogonal, dan proyeksi ortogonal pada mereka tidak masuk akal. Jadi, seseorang harus menjatuhkan seluruh sudut / proyeksi sudut pandang ini. Akan aneh untuk tetap menyebutnya PCA (yang semuanya tentang proyeksi dengan varians maksimal dll).
Dari sudut pandang FA-style, kami hanya memutar faktor laten kami (standar dan tidak berkorelasi), yang merupakan operasi yang valid. Tidak ada "proyeksi" di FA; sebaliknya, faktor laten menghasilkan variabel yang diamati melalui pemuatan. Logika ini masih dipertahankan. Namun, kami mulai dengan komponen utama, yang sebenarnya bukan faktor (karena PCA tidak sama dengan FA). Jadi akan aneh untuk menyebutnya FA juga.
Alih-alih berdebat apakah seseorang "harus" lebih suka menyebutnya PCA atau FA, saya akan menyarankan untuk teliti dalam menentukan prosedur yang tepat digunakan: "PCA diikuti oleh rotasi varimax".
Nota bene. Hal ini mungkin untuk mempertimbangkan prosedur rotasi alternatif, di mana dimasukkan antara dan . Ini akan memutar skor mentah dan vektor eigen (bukan skor dan pemuatan standar). Masalah terbesar dengan pendekatan ini adalah bahwa setelah "rotasi" seperti itu, skor tidak akan berkorelasi lagi, yang cukup fatal untuk PCA. Seseorang dapat melakukannya, tetapi bukan bagaimana rotasi biasanya dipahami dan diterapkan.U S V ⊤TT⊤ US V⊤
sumber
PCA loading vectors... are shown in red
,stretched along the rotated PCA loadings (magenta)
. Saya bertanya-tanya bagaimana "memuat" atau "vektor" mereka dapat ditampilkan sebagai sumbu pada sebar data. Bisakah Anda membuatnya lebih jelas? Dan gagasan "peregangan"? Terima kasih.Analisis Komponen Utama (PCA) dan Analisis Faktor Umum (CFA) adalah metode yang berbeda. Seringkali, mereka menghasilkan hasil yang serupa dan PCA digunakan sebagai metode ekstraksi standar dalam rutinitas Analisis Faktor SPSS. Ini tidak diragukan lagi menghasilkan banyak kebingungan tentang perbedaan antara keduanya.
Intinya adalah, ini adalah dua model yang berbeda, secara konseptual. Dalam PCA, komponennya adalah kombinasi linear ortogonal aktual yang memaksimalkan total varians. Dalam FA, faktor-faktornya adalah kombinasi linear yang memaksimalkan bagian bersama dari varian - yang mendasari "konstruksi laten". Itu sebabnya FA sering disebut "analisis faktor umum". FA menggunakan berbagai rutin optimasi dan hasilnya, tidak seperti PCA, tergantung pada rutin optimasi yang digunakan dan titik awal untuk rutinitas tersebut. Sederhananya tidak ada solusi tunggal yang unik.
Dalam R, fungsi factanal () memberikan CFA dengan ekstraksi kemungkinan maksimum. Jadi, Anda seharusnya tidak mengharapkannya mereproduksi hasil SPSS yang didasarkan pada ekstraksi PCA. Itu hanya bukan model atau logika yang sama. Saya tidak yakin apakah Anda akan mendapatkan hasil yang sama jika Anda menggunakan ekstraksi Kemungkinan Maksimum SPSS karena mereka mungkin tidak menggunakan algoritma yang sama.
Baik atau buruk di R, Anda dapat, mereproduksi "analisis faktor" campuran yang disediakan SPSS sebagai standarnya. Inilah proses dalam R. Dengan kode ini, saya dapat mereproduksi hasil Komponen Utama SPSS "Analisis Faktor" menggunakan dataset ini. (Dengan pengecualian tanda, yang tidak pasti). Hasil itu juga dapat diputar menggunakan metode rotasi Rs yang tersedia.
sumber
prcomp
atauprincomp
lakukan dibandingkan dengan pendekatan campuran SPSS? Apa yang sebenarnya dilakukan SPSS dengan ekstraksi?zz <- scale(attitude,T,T)
danpc1 <- zz %*% solve(cor(attitude),lamba[,1])
. Di mana lambda adalah hasil dari baris terakhir dari contoh @Brett Magills.Jawaban ini adalah untuk menyajikan, dalam bentuk grafik jalan, hal tentang yang @amoeba beralasan di dalam (tapi sedikit rumit) nya jawaban di thread ini (aku agak setuju dengan itu oleh 95%) dan bagaimana mereka muncul untuk saya .
PCA dalam bentuknya yang semestinya, minimal adalah rotasi ortogonal spesifik dari data yang berkorelasi ke bentuknya yang tidak berkorelasi, dengan komponen utama yang membaca sekuensial secara berurutan lebih sedikit dan lebih sedikit dari keseluruhan variabilitas. Jika hanya pengurangan dimensi yang kita inginkan, biasanya kita tidak menghitung pemuatan dan apa pun yang menyeretnya. Kami senang dengan skor (mentah) komponen utama . [Harap dicatat bahwa notasi pada bagan tidak tepat mengikuti @ amoeba, - Saya tetap pada apa yang saya adopsi dalam beberapa jawaban saya yang lain.]P
Pada bagan, saya mengambil contoh sederhana dari dua variabel
p=2
dan menggunakan kedua komponen utama yang diekstraksi. Meskipun kami biasanya menyimpan hanya beberapam<p
komponen pertama , untuk pertanyaan teoretis yang kami pertimbangkan ("Apakah PCA dengan rotasi PCA atau apa?") Tidak ada bedanya jika menyimpanm
atau semuanyap
; setidaknya dalam jawaban khusus saya.Trik pemuatan adalah untuk menarik skala (besarnya, variabilitas, inersia ) dari komponen (skor mentah) dan ke koefisien (vektor eigen) meninggalkan yang sebelumnya menjadi "kerangka" kosong (standar standar) . skor komponen) dan yang terakhir menjadi berdaging (memuat). Anda mengembalikan data dengan sama baiknya dengan keduanya: . Tetapi memuat prospek terbuka: (i) untuk menafsirkan komponen; (ii) dirotasi; (iii) untuk mengembalikan korelasi / kovarian dari variabel. Ini semua karena fakta bahwa variabilitas data telah ditulis dalam beban, sebagai bebannya.V P z A X = P V ′ = P z A ′L V Pz A X=PV′=PzA′
Dan mereka dapat mengembalikan muatan itu kembali ke titik data kapan saja - sekarang atau setelah rotasi . Jika kita membayangkan rotasi ortogonal seperti varimax itu berarti kita ingin komponen tetap tidak berkorelasi setelah rotasi dilakukan. Hanya data dengan matriks kovarians bola, ketika diputar secara ortogonal, yang mempertahankan ketidakterkaitan. Dan voila, komponen utama standar (yang dalam pembelajaran mesin sering disebut "data PCA-memutihkan") adalah data ajaib ( sebenarnya sebanding dengan kiri, yaitu deretan vektor vektor data). Sementara kita mencari matriks rotasi varimaxP z QPz Pz Q untuk memfasilitasi interpretasi pemuatan, titik-titik data secara pasif menunggu dalam kebulatan & identitas suci mereka (atau "keputihan").
Setelah ditemukan, rotasi dengan itu sama dengan perhitungan cara biasa dari skor komponen utama terstandarisasi melalui kebalikan umum dari matriks pemuatan, - kali ini, dari pemuatan yang diputar , (lihat grafik ). Komponen utama yang diputar-varimax yang dihasilkan, tidak berkorelasi, seperti yang kita inginkan, plus data dipulihkan oleh mereka sebaik sebelum rotasi: . Kami kemudian dapat memberikan mereka kembali skala mereka disimpan (dan sesuai diputar) di - untuk tidak terstandarisasi mereka: .P z A r C z X = P z A ′ = C z A ′ r A r CQ Pz Ar Cz X=PzA′=CzA′r Ar C
Kita harus sadar, bahwa "komponen utama yang dirotasi-varimax" bukan komponen utama lagi: Saya menggunakan notasi Cz, C, alih-alih Pz, P, untuk menekankannya. Mereka hanya "komponen". Komponen utama itu unik, tetapi komponennya bisa banyak. Rotasi selain varimax akan menghasilkan variabel-variabel baru lainnya yang juga disebut komponen dan juga tidak berkorelasi, di samping variabel .C
Juga untuk mengatakan, komponen utama yang diputar varimax (atau diputar secara ortogonal) (sekarang hanya "komponen"), sementara tetap tidak berkorelasi, ortogonal, tidak menyiratkan bahwa pemuatannya juga masih ortogonal. Kolom saling ortogonal (seperti vektor eigen ), tetapi bukan kolom (lihat juga catatan kaki di sini ).V A rA V Ar
Dan akhirnya - memutar komponen utama mentah dengan bukanlah tindakan yang bermanfaat. Kami akan mendapatkan beberapa variabel yang berkorelasi dengan makna yang bermasalah. muncul untuk mengoptimalkan (dalam beberapa cara tertentu) konfigurasi pemuatan yang telah menyerap semua skala ke dalamnya . tidak pernah dilatih untuk memutar titik data dengan semua skala tersisa pada mereka. Rotating dengan akan sama dengan memutar vektor eigen dengan (keQP Q Q Q P Q V Q V r " C " = X V r"C" Q Q P Q V Q Vr ) dan kemudian menghitung skor komponen mentah sebagai . "Jalur" ini dicatat oleh @amoeba di Postscriptum mereka."C"=XVr
Tindakan yang diuraikan terakhir ini (tidak berguna untuk sebagian besar) mengingatkan kita bahwa vektor eigen, tidak hanya pemuatan, dapat diputar, secara umum. Sebagai contoh, prosedur varimax dapat diterapkan pada mereka untuk menyederhanakan struktur mereka . Tetapi karena vektor eigen tidak membantu dalam menafsirkan makna komponen seperti beban, rotasi vektor eigen jarang dilakukan.
Jadi, PCA dengan rotasi varimax (atau lainnya) berikutnya adalah
Saya tidak merujuk pada analisis faktor dalam jawaban ini. Bagi saya penggunaan kata @ amoeba untuk kata "ruang laten" agak berisiko dalam konteks pertanyaan yang diajukan. Saya akan, bagaimanapun, setuju bahwa rotasi analitik PCA + mungkin disebut "FA- style view on PCA".
sumber
Dalam
psych::principal()
Anda dapat melakukan berbagai jenis rotasi / transformasi untuk Komponen Anda diekstrak Principal (s) atau '' PC '' menggunakanrotate=
argumen, seperti:"none"
,"varimax"
(Default),"quatimax"
,"promax"
,"oblimin"
,"simplimax"
, dan"cluster"
. Anda harus memutuskan secara empiris mana yang harus masuk akal dalam kasus Anda, jika perlu, tergantung pada penilaian dan pengetahuan Anda sendiri tentang masalah yang sedang diselidiki. Sebuah pertanyaan kunci yang mungkin memberi Anda petunjuk: mana yang lebih bisa ditafsirkan (lagi jika perlu)?Dalam bantuan Anda mungkin menemukan yang berikut ini juga membantu:
sumber
Pemahaman saya adalah bahwa perbedaan antara PCA dan analisis Faktor terutama adalah apakah ada istilah kesalahan. Dengan demikian PCA dapat, dan akan, dengan setia mewakili data sedangkan analisis faktor kurang setia terhadap data yang dilatihnya tetapi berupaya untuk mewakili tren atau komunalitas yang mendasari dalam data. Di bawah pendekatan standar PCA tidak dirotasi, tetapi secara matematis dimungkinkan untuk melakukannya, sehingga orang melakukannya dari waktu ke waktu. Saya setuju dengan para komentator dalam bahwa "makna" dari metode ini agak untuk diperebutkan dan bahwa mungkin bijaksana untuk memastikan fungsi yang Anda gunakan melakukan apa yang Anda inginkan - misalnya, seperti yang Anda perhatikan R memiliki beberapa fungsi yang melakukan jenis PCA yang berbeda dari yang dikenal pengguna SPSS.
sumber
Berkat kekacauan dalam definisi keduanya, keduanya secara efektif adalah sinonim. Jangan percaya kata-kata dan melihat jauh ke dermaga untuk menemukan persamaan.
sumber
Meskipun pertanyaan ini sudah merupakan jawaban yang diterima, saya ingin menambahkan sesuatu ke titik pertanyaan.
"PCA" -jika saya ingat dengan benar - berarti "analisis komponen utama"; jadi selama Anda menganalisis komponen utama, mungkin tanpa rotasi atau dengan rotasi, kita masih dalam analisis "komponen utama" (yang ditemukan oleh dekomposisi matriks awal yang sesuai).
Saya akan merumuskan bahwa setelah "varimax" -proteksi pada dua komponen utama pertama, bahwa kita memiliki "varimax-solusi dari dua pc pertama" (atau sesuatu yang lain), tetapi masih dalam kerangka analisis komponen utama, atau lebih pendek, berada dalam kerangka "pca".
Untuk memperjelas poin saya: Saya tidak merasa bahwa pertanyaan rotasi sederhana memperkenalkan masalah membedakan antara EFA dan CFA (yang disebutkan terakhir / diperkenalkan ke masalah misalnya dalam jawaban Brett)
sumber
Saya menemukan ini sebagai yang paling membantu: Abdi & Williams, 2010, analisis komponen utama .
(lihat kertas untuk definisi Q).
sumber