Apakah tanda skor atau beban di PCA atau FA memiliki arti? Bolehkah saya membalikkan tandanya?

37

Saya melakukan analisis komponen utama (PCA) dengan R menggunakan dua fungsi yang berbeda ( prcompdan princomp) dan mengamati bahwa skor PCA berbeda dalam tanda. Bagaimana bisa?

Pertimbangkan ini:

set.seed(999)
prcomp(data.frame(1:10,rnorm(10)))$x

            PC1        PC2
 [1,] -4.508620 -0.2567655
 [2,] -3.373772 -1.1369417
 [3,] -2.679669  1.0903445
 [4,] -1.615837  0.7108631
 [5,] -0.548879  0.3093389
 [6,]  0.481756  0.1639112
 [7,]  1.656178 -0.9952875
 [8,]  2.560345 -0.2490548
 [9,]  3.508442  0.1874520
[10,]  4.520055  0.1761397

set.seed(999)
princomp(data.frame(1:10,rnorm(10)))$scores
         Comp.1     Comp.2
 [1,]  4.508620  0.2567655
 [2,]  3.373772  1.1369417
 [3,]  2.679669 -1.0903445
 [4,]  1.615837 -0.7108631
 [5,]  0.548879 -0.3093389
 [6,] -0.481756 -0.1639112
 [7,] -1.656178  0.9952875
 [8,] -2.560345  0.2490548
 [9,] -3.508442 -0.1874520
[10,] -4.520055 -0.1761397

Mengapa tanda-tanda ( +/-) berbeda untuk kedua analisis? Jika saya kemudian menggunakan komponen utama PC1dan PC2sebagai prediktor dalam regresi, yaitu lm(y ~ PC1 + PC2), ini akan benar-benar mengubah pemahaman saya tentang efek dari dua variabel ytergantung pada metode yang saya gunakan! Bagaimana saya dapat mengatakan bahwa PC1misalnya memiliki efek positif ydan PC2misalnya memiliki efek negatif y?


Selain itu: Jika tanda komponen PCA tidak ada artinya, apakah ini juga berlaku untuk analisis faktor (FA)? Apakah bisa membalik (membalikkan) tanda skor komponen PCA / FA individu (atau memuat, sebagai kolom matriks pemuatan)?

pengguna1320502
sumber
10
+1. Pertanyaan ini banyak ditanyakan di forum ini, dalam variasi yang berbeda (kadang-kadang tentang PCA, kadang-kadang tentang analisis faktor). Yang ini adalah utas paling populer yang membahas masalah ini (terima kasih atas jawaban bagus Januari), jadi akan lebih mudah untuk menandai pertanyaan lain yang ada dan yang akan datang sebagai duplikat dari pertanyaan ini. Saya mengambil kebebasan untuk membuat pertanyaan Anda sedikit lebih umum dengan mengubah judul dan dengan menyebutkan analisis faktor pada akhirnya. Saya harap Anda tidak keberatan. Saya juga memberikan jawaban tambahan.
Amuba mengatakan Reinstate Monica
1
Tanda arbitrer; makna substantif secara logis tergantung pada tanda. Anda selalu dapat mengubah tanda faktor apa pun yang berlabel "X" menjadi tanda yang berlawanan, dan label itu kemudian "berlawanan X". Memang benar untuk memuat, untuk skor. Beberapa implementasi akan - untuk kenyamanan - mengubah tanda faktor sehingga nilai positif (dalam skor atau beban) di dalamnya akan mendominasi, secara keseluruhan. Implementasi lain tidak melakukan apa-apa dan meninggalkan keputusan apakah akan membalikkan tanda pada Anda - jika Anda peduli. Makna statistik (seperti kekuatan efek) tidak berubah selain dari "arahnya" akan terbalik.
ttnphns

Jawaban:

38

PCA adalah transformasi matematika sederhana. Jika Anda mengubah tanda-tanda komponen, Anda tidak mengubah varians yang terkandung dalam komponen pertama. Selain itu, ketika Anda mengubah tanda, bobot ( prcomp( ... )$rotation) juga mengubah tanda, sehingga interpretasinya tetap sama persis:

set.seed( 999 )
a <- data.frame(1:10,rnorm(10))
pca1 <- prcomp( a )
pca2 <- princomp( a )
pca1$rotation

menunjukkan

                 PC1       PC2
X1.10      0.9900908 0.1404287
rnorm.10. -0.1404287 0.9900908

dan pca2$loadingstunjukkan

Loadings:
          Comp.1 Comp.2
X1.10     -0.99  -0.14 
rnorm.10.  0.14  -0.99 

               Comp.1 Comp.2
SS loadings       1.0    1.0
Proportion Var    0.5    0.5
Cumulative Var    0.5    1.0

Jadi, mengapa interpretasinya tetap sama?

Anda melakukan regresi PCA ypada komponen 1. Pada versi pertama ( prcomp), katakan koefisiennya positif: semakin besar komponen 1, semakin besar y. Apa artinya itu ketika datang ke variabel asli? Karena bobot variabel 1 ( 1:10dalam a) positif, yang menunjukkan bahwa semakin besar variabel 1, semakin besar y.

Sekarang gunakan versi kedua ( princomp). Karena komponen memiliki tanda yang diubah, semakin besar y, semakin kecil komponen 1 - koefisien y <lebih dari PC1 sekarang negatif. Namun demikian, memuat variabel 1; itu berarti, semakin besar variabel 1, semakin kecil komponen 1, semakin besar y - interpretasinya sama.

Mungkin, cara termudah untuk melihat itu adalah dengan menggunakan biplot.

library( pca3d )
pca2d( pca1, biplot= TRUE, shape= 19, col= "black"  )

menunjukkan

masukkan deskripsi gambar di sini

Biplot yang sama untuk varian kedua menunjukkan

pca2d( pca2$scores, biplot= pca2$loadings[,], shape= 19, col= "black" )

Seperti yang Anda lihat, gambar diputar oleh 180 °. Namun, hubungan antara bobot / pemuatan (panah merah) dan titik data (titik hitam) persis sama; dengan demikian, interpretasi komponen tidak berubah.

masukkan deskripsi gambar di sini

Januari
sumber
Saya bahkan menambahkan gambar sekarang :-)
Januari Januari
1
Ini benar, tetapi bagaimana dengan proyeksi di PCA? Saya mengkodekan PCA sendiri, dan beberapa vektor eigen saya terbalik dibandingkan dengan MATLAB bawaan princomp. Jadi selama proyeksi, data yang diproyeksikan saya juga terbalik dalam beberapa dimensi. Tujuan saya adalah melakukan klasifikasi pada koefisien. Tandanya masih tidak penting di sini?
Sibbs Gambling
Jadi, jika hanya karena alasan lebih mudah memahami PC saya, saya ingin menukar tanda-tanda skor, apakah itu valid?
13

Pertanyaan ini banyak ditanyakan di forum ini, jadi saya ingin menambahkan jawaban luar biasa @ Januari dengan pertimbangan yang lebih umum.

x1,x2,...xdz1,z2,...zkx1z1z2x12z1+3z223

HAIrsayagsayanSebuahlvSebuahrsayaSebuahblesScHairesL.HaiSebuahdsayangs.

z1

-1-1=1.

Kesimpulannya adalah bahwa untuk setiap komponen PCA atau FA, tanda nilai dan muatannya arbitrer dan tidak berarti. Itu bisa dibalik, tetapi hanya jika tanda skor dan pemuatan dibalik pada saat yang sama.

amuba kata Reinstate Monica
sumber
Ini benar, tetapi bagaimana dengan proyeksi di PCA? Saya mengkodekan PCA sendiri, dan beberapa vektor eigen saya terbalik dibandingkan dengan MATLAB bawaan princomp. Jadi selama proyeksi, data yang diproyeksikan saya juga terbalik dalam beberapa dimensi. Tujuan saya adalah melakukan klasifikasi pada koefisien. Tandanya masih tidak penting di sini?
Perjudian Sibbs
1
Masih tidak masalah. Kenapa harus begitu? Data yang dibalik sama persis dengan data yang tidak dibalik untuk semua keperluan, termasuk klasifikasi.
Amoeba berkata Reinstate Monica
Ya, tidak untuk semua tujuan. Untuk konsistensi antara algoritma, saya juga sangat ingin mencocokkan tanda. Namun, tidak semua terbalik ketika melihat komponen. Bagaimana R memilih tanda sehingga saya dapat melakukan hal yang sama?
Myoch
1
@Myoch Saya akan merekomendasikan untuk menciptakan konvensi Anda sendiri dan menerapkannya di mana-mana, sebagai lawan dari mencoba untuk mencari tahu apa yang sedang dilakukan R. Anda dapat memilih tanda sedemikian rupa sehingga nilai pertama positif, atau bahwa lebih dari separuh nilai positif, dll.
amoeba mengatakan Reinstate Monica
1
@user_anon Tidak ada kebalikan.
Amoeba berkata Reinstate Monica
7

180

pengguna130327
sumber