PCA veya FA'deki puanların veya yüklerin işaretinin bir anlamı var mı? İşareti tersine çevirebilir miyim?


37

İki farklı fonksiyon ( prcompve princomp) kullanarak R ile temel bileşen analizi (PCA) yaptım ve PCA puanlarının işaret olarak farklı olduğunu gözlemledim. Nasıl olabilir?

Bunu düşün:

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

+/-Bu iki analiz için işaretler ( ) neden farklı? Eğer o zaman ana bileşenleri PC1ve PC2bir regresyonda yordayıcılar olarak kullanıyor olsaydım , yani lm(y ~ PC1 + PC2), bu, iki değişkenin ykullandığım yönteme bağlı olarak etkisine dair anlayışımı tamamen değiştirecekti ! Öyleyse bunun PC1, örneğin üzerinde olumlu bir etkisi olduğunu yve PC2örneğin üzerinde olumsuz bir etkisi olduğunu nasıl söyleyebilirim y?


Ayrıca: PCA bileşenlerinin işareti anlamsızsa, faktör analizi (FA) için de doğru mu? Bireysel PCA / FA bileşen puanlarının (veya yükleme matriksinin bir sütunu olarak yüklenenlerin) işaretini çevirmek (tersine çevirmek) kabul edilebilir mi?


10
+1. Bu soru , bu forumda, farklı varyasyonlarda (bazen PCA, bazen faktör analizi hakkında) çokça sorulmaktadır . Bu, konuyu kapsayan en popüler konu (@ Ocak ayının mükemmel cevabı sayesinde), bu nedenle mevcut ve gelecekteki soruları bu sorunun kopyası olarak işaretlemek uygun olacaktır. Başlığı değiştirerek ve sonunda faktör analizi yaparak sorunuzu biraz daha genel hale getirme özgürlüğüne kavuştum. Umarım sakıncası olmaz. Ayrıca ek bir cevap verdim.
amip diyor Reinstate Monica

1
İşaret keyfidir; mantıksal olarak maddi anlam işarete bağlıdır. "X" etiketli herhangi bir faktörün işaretini her zaman zıt işarete göre değiştirebilir ve ardından "zıt X" olarak etiketleyebilirsiniz. Yüklemeler için, puanlar için geçerlidir. Bazı uygulamalar - kolaylık sağlamak için - bir faktörün işaretini değiştirir, böylelikle içindeki pozitif değerler (puanlarda veya yüklemelerde) toplamda baskın olur. Diğer uygulamalar hiçbir şey yapmaz ve sizdeki işareti tersine çevirip çevirmeyeceğine karar vermez - eğer umursuyorsanız. İstatistiksel anlam (etki gücü gibi) "yönünün" tersine çevrilmesinden ayrı olarak değişmez.
ttnphns

Yanıtlar:


38

PCA basit bir matematiksel dönüşümdür. Bileşen (ler) in işaretlerini değiştirirseniz, ilk bileşendeki varyansı değiştirmezsiniz. Ayrıca, işaretleri değiştirdiğinizde, ağırlıklar ( prcomp( ... )$rotation) da işareti değiştirir, böylece yorumlama tamamen aynı kalır:

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

gösterileri

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

ve pca2$loadingsgöster

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

Peki, yorum neden aynı kalıyor?

yBileşen 1 üzerindeki PCA regresyonunu yaparsınız. İlk versiyonda ( prcomp) katsayı pozitif olur: bileşen 1 büyüdükçe, y büyür. Orijinal değişkenlere gelince ne anlama geliyor? 1 değişkeninin ( 1:10a cinsinden) ağırlığı pozitif olduğundan, bu değişken 1 büyüdükçe, y büyüdükçe gösterilir.

Şimdi ikinci sürümü kullan ( princomp). Bileşen işareti değiştiğinden, y büyüdükçe, bileşen 1 küçülür - PC1 üzerindeki y <katsayısı artık negatiftir. Fakat değişken 1'in yüklenmesi de aynı şekildedir; Bu, değişken 1 ne kadar büyükse, bileşen 1 ne kadar küçükse, yorum o kadar büyüktür - yorum aynıdır.

Muhtemelen, bunu görmenin en kolay yolu, ikiplot kullanmaktır.

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

gösterileri

görüntü tanımını buraya girin

İkinci değişken gösterileri için aynı iki grafik

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

Gördüğünüz gibi, görüntüler 180 ° döndürülür. Ancak, ağırlıklar / yükler (kırmızı oklar) ile veri noktaları (siyah noktalar) arasındaki ilişki tamamen aynıdır; bu nedenle, bileşenlerin yorumunda değişiklik yoktur.

görüntü tanımını buraya girin


Şimdi resimler bile ekledim :-)
Ocak

1
Bu doğru, peki PCA'daki çıkıntılar? PCA'yı kendim kodluyorum ve özvektörlerimden bazıları MATLAB yerleşiklerine göre ters çevrilmiş princomp. Bu yüzden, projeksiyon sırasında, yansıtılan verilerim de bazı boyutlarda işaret olarak çevrilir. Amacım katsayılar üzerinde sınıflandırma yapmak. İşareti hala burada önemli değil mi?
Sibbs Gambling

Öyleyse, bilgisayarlarımı daha kolay anlamak için, puanların işaretlerini değiştirmek istiyorum, bu geçerli mi?

13

Bu soru bu forumda çokça soruluyor , bu yüzden Ocak ayının mükemmel yanıtını biraz daha genel düşüncelerle desteklemek istiyorum.

Hem temel bileşen analizinde (PCA) hem de faktör analizinde (FA), bazı gizli bileşenleri (veya gizli değişkenleri) tahmin için orijinal değişkenlerini . Bu gizli bileşenler PCA veya FA bileşen puanları ile verilmektedir. Her orijinal değişken, bu bileşenlerin bazı ağırlıklar ile doğrusal bir birleşimidir: örneğin, ilk orijinal değişken , iki kez artı üç kez , böylece , . Skorlar standartlaştırılmışsa, bu ağırlıklar ( ve ) yük olarak bilinir. Yani, gayri resmi olarak, bunu söyleyebiliriz.x1,x2,...xdz1,z2,...zkx1z1z2x12z1+3z223

OriginalvariablesScoresLoadings.

Buradan, örneğin bir gizli bileşen , puanlarının ve yüklerinin işaretini çevirirsek, bunun sonuç (veya yorumlama) üzerinde bir etkisi olmayacağını , çünküz1

11=1.

Sonuç, her PCA veya FA bileşeni için, puanlarının ve yüklerinin işaretinin keyfi ve anlamsız olduğu şeklindedir. Ters çevrilebilir, ancak yalnızca hem puanların hem de yüklerin işareti aynı anda ters çevrilirse.


Bu doğru, peki PCA'daki çıkıntılar? PCA'yı kendim kodluyorum ve özvektörlerimden bazıları MATLAB yerleşiklerine göre ters çevrilmiş princomp. Bu yüzden, projeksiyon sırasında, yansıtılan verilerim de bazı boyutlarda işaret olarak çevrilir. Amacım katsayılar üzerinde sınıflandırma yapmak. İşareti hala burada önemli değil mi?
Sibbs Gambling

1
Hala önemli değil. Neden olsun ki? Döndürülmüş veriler, sınıflandırma dahil tüm amaçlar için saydam olmayan verilere tam olarak eşdeğerdir.
amip diyor Reinstate Monica,

Şey, bütün amaçlar için değil. Algoritma arasındaki tutarlılık için ben de işaretleri eşleştirmek istiyorum. Ancak, bileşenlere bakarken hepsi çevrilmiş değil. R işaretini nasıl seçiyor, böylece aynısını yapabilirim?
Myoch

1
@Benim R'nin ne yaptığını anlamaya çalışmak yerine, kendi konvansiyonunu icat etmeni ve her yere uygulamanı tavsiye ederim. İlk değer pozitif, değerlerin yarısından fazlası pozitif, vb.
İşaretini

1
@ user_anon Ters yok.
amip diyor Reinstate Monica

7

Bu, yukarıda iyi cevaplandı. Sadece biraz daha matematiksel alaka sağlamak için, temel bileşenlerin hareket ettiği yönler sistemin özvektörlerine karşılık gelir. Olumlu ya da olumsuz bir PC elde ediyorsanız, bu sadece bir yöne ya da diğer yöne yaklaşık işaret eden bir özvektöre yansıtmakta olduğunuz anlamına gelir . Ne olursa olsun, yorum aynı kalır! Ayrıca, ana bileşenlerin uzunluklarının sadece özdeğerler olduğu da eklenmelidir.180

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.