Hangi değişkenler hangi PCA bileşenlerini açıklar ya da tam tersi?


15

Bu verileri kullanma:

head(USArrests)
nrow(USArrests)

Ben böyle bir PCA yapabilirsiniz:

plot(USArrests)
otherPCA <- princomp(USArrests)

Yeni bileşenleri

otherPCA$scores

ve aşağıdaki bileşenlerle açıklanan varyans oranı

summary(otherPCA)

Ama hangi değişkenlerin çoğunlukla hangi temel bileşenler tarafından açıklandığını bilmek istersem? Ve tam tersi: örneğin PC1 veya PC2 en çok tarafından açıklanıyor murdermu? Bunu nasıl yapabilirim?

Örneğin PC1'in% 80'inin murderveya tarafından açıklandığını söyleyebilir miyim assault?

Yüklemelerin burada bana yardımcı olduğunu düşünüyorum, ancak anladığım gibi açıklanan varyansın yönünü gösteriyorlar, örn.

otherPCA$loadings

Loadings:
         Comp.1 Comp.2 Comp.3 Comp.4
Murder                         0.995
Assault  -0.995                     
UrbanPop        -0.977 -0.201       
Rape            -0.201  0.974   

2
Yüklerin işaretlerinin keyfi olduğunu unutmayın. Üç suç değişkeninin hepsi birbiriyle pozitif ilişkilidir, ancak yukarıdaki yüklemelerin belirtilerinden bunu yapmak akıllıca olacaktır.
Nick Cox

Ne yazık ki, bu soruya kabul edilen cevabın yanlış olduğuna inanıyorum. Aşağıda kendi cevabımı gönderdim.
amip diyor Reinstate Monica

Yanıtlar:


11

Haklısın, yüklemeler burada sana yardımcı olabilir. Değişkenler ile temel bileşenler arasındaki korelasyonu hesaplamak için kullanılabilirler. Ayrıca, bir değişkenin tüm ana bileşenler üzerindeki kare yüklerinin toplamı 1'e eşittir. Bu nedenle, kare yükler, bir ana bileşen tarafından açıklanan bir değişkenin varyans oranını gösterir.

Princomp ile ilgili sorun, sadece "çok yüksek" yükleme gösterir. Ancak yüklemeler sadece kovaryans matrisinin özvektörleri olduğundan, eigenR'deki komutu kullanarak tüm yüklemeleri alabilirsiniz :

 loadings <- eigen(cov(USArrests))$vectors
 explvar <- loadings^2

Şimdi, matriste istenen bilgilere sahipsiniz explvar.


teşekkür ederim rastgele adam, örneğin bana gösterebilir misin assaultyoksa urban popbunu yapabilir miyiz? matris içinde sadece bir korelasyon olduğu için kısmen karışıkassault
user1320502

1
Üzgünüm, cevabımı geliştirdim ve yayınımı zaten yorumladığını fark etmedim. PC1'de -0.995 ile saldırı yükleri. Böylece, bu değerin karesi alındıktan sonra PC1 değişken saldırının varyansının% 99'unu açıklar. Kentsel pop değerlerini kareledikten sonra, PC3'ün kentsel pop varyansının% 4 ve PC2% 95.5'ini açıkladığı sonucuna varabilirsiniz.
random_guy

1
OP, PCA'nın ne kadarının bir değişkenle ilişkilendirilebileceğini sormuyor mu? Cevabınız, bir değişkenin ne kadarının bir EBM ile açıklanabileceğidir
Heisenberg

2
Bu soruya dönersek, bu cevabın yanlış olduğunu düşünüyorum. Birbirleri arasında yüksek oranda (% 99) korelasyonlu olan ve hepsi birim varyansına göre ölçeklendirilmiş 10 değişken düşünün. İlk bilgisayar temelde aralarındaki ortalama olacaktır. Yani birinci özvektör, uzunluk ile olacak ve ilk özdeğer neredeyse , örneğin . Şimdi, her değişken ilk bilgisayar tarafından neredeyse tamamen açıklanmaktadır. Ve ilk bilgisayar neredeyse her değişken tarafından tamamen açıklanmaktadır . Ama nasıl karesi elemanlarından biri veya başka sonuçlandırmak olacak bütün olan ? 1 10 9.9 ağırlık 0.1w=(0.3,0.3,...0.3)1109.9w0.1
amip diyor Reinstate Monica

2
Israr ettiğim için üzgünüm, ama yukarıdaki yorumumda yanlış olduğumu düşünüyor musunuz? Değilse, olası karışıklığı gidermek için cevabınızı düzenleyebilirsiniz, bu gelecekteki okuyucular için çok yararlı olacaktır. Bu sorunları daha ayrıntılı olarak açıklamaya çalışarak kendime bir cevap gönderdim.
amip, Reinstate Monica

9

Kabul edilen cevabın tehlikeli yanıltıcı olabileceğini düşünüyorum (-1). OP'de birbirine karışan en az dört farklı soru var. Onları birbiri ardına ele alacağım.


  • S1. Belirli bir PC'nin varyansının ne kadarı belirli bir orijinal değişkenle açıklanır? Belirli bir orijinal değişkenin varyansının ne kadarı belirli bir bilgisayar tarafından açıklanır?

Bu iki soru eşdeğerdir ve cevap, değişken ile PC arasındaki korelasyon katsayısının karesi tarafından verilir . Eğer korelasyonlar üzerinde PCA yapılırsa, korelasyon katsayısı yüklerin karşılık gelen elemanı tarafından verilir ( buraya bakınız ) . PC , korelasyon matrisinin bir özvektörü ve karşılık gelen özdeğer . Bir yükleri vektör verilir . Elemanları bu bilgisayarın ilgili orijinal değişkenlerle korelasyonudur. r ı V ı s ı L i L i = ( s i ) 1 / 2 V ir2riVisiLiLi=(si)1/2Vi

Not özvektörler o ve yüklemeler iki farklı şeydir! R'de, özvektörlere kafa karıştırıcı bir şekilde "yükleme" denir; dikkatli olunmalıdır: öğeleri istenen korelasyonlar değildir . [Bu konuda kabul edilen cevap ikisini karıştırıyor.]ViLi

Ek olarak, PCA kovaryanslarda (korelasyonlarda değil) yapılırsa, yüklemeler de korelasyonları değil kovaryansları verecektir. Korelasyonları elde etmek için, PCA'yı takip ederek bunları manuel olarak hesaplamak gerekir. [Şu anda kabul edilen cevap bu konuda net değil.]

  • S2. Belirli bir orijinal değişkenin varyansının ne kadarı belirli bir PC alt kümesi tarafından açıklanır? Açıklamak için bu altkümeyi nasıl seçersiniz ? Örneğin varyansın ?80%

PC'ler dikey (yani ilişkisiz) olduğundan, genel değerini elde etmek için tek tek değerleri eklenebilir (bkz. Q1) .R 2r2R2

Bir alt küme seçmek için , istenen açıklanmış varyans miktarına ( ) ulaşılana kadar belirli bir orijinal değişkenle en yüksek korelasyonlara ( ) sahip bilgisayarlar eklenebilir .R 2r2R2

  • Q3. Belirli bir bilgisayarın varyansının ne kadarı belirli bir orijinal değişken alt kümesi ile açıklanır? Açıklamak için bu altkümeyi nasıl seçersiniz ? Örneğin varyansın ?80%

Bu sorunun cevabı PCA tarafından otomatik olarak verilmez! Örneğin, tüm orijinal değişkenler ikili ile çok güçlü bir şekilde korelasyon içinde ise, ilk PC ile tüm değişkenler arasındaki korelasyonlar civarında olacaktır . Bu sayıları, bu bilgisayarın beş orijinal değişkenle açıklanan varyans oranını hesaplamak için eklenemez (bu, saçma bir sonuç ). Bunun yerine, bu bilgisayarı bu değişkenler üzerinde gerilemek ve çoklu değerini elde etmek gerekir .r = 0,9 R 2 R, 2 = 0.9 0.9 5 > 1 R, 2r=0.9r=0.9r2R2=0.90.95>1R2

@FrankHarrell (+1) tarafından verilen varyans miktarını açıklayan bir alt kümenin nasıl seçileceği önerildi.


+1, bu kabul edilen cevap olmalıdır.
19:01

8

Bileşenlerini veya bileşenlerinin bileşen bileşenlerinden oluşan doğrusal bir kombinasyonunu tahmin eden, adım adım ileri veya geri değişken seçimi yapabilirsiniz. Geri adım atma kullanırsanız, ilk adımda 1,0 olur. Kademeli regresyon, tahmin ederken bir felaket olsa da, burada olduğu gibi tahmin mekanik olduğunda iyi çalışabilir. Temel bileşenlerdeki bilgilerin 0.8 veya 0.9'unu (örneğin) açıklayana kadar değişken ekleyebilir veya kaldırabilirsiniz. YR2Y


6

ABD, R ile birlikte verilen verileri tutuklar, burada sadece bir örnektir, ancak söz konusu yük hesaplamalarının kovaryans matrisinin bir PCA'sından geldiğine dikkat çekiyorum . Değişkenler farklı ölçeklerde ölçüldüğü için, keyfi ve saçma arasında bir yer.

Kentsel nüfus yüzde gibi görünüyor. Kaliforniya% 91 ve en yüksektir.

Üç suç değişkeni, nüfus büyüklüğüne göre (muhtemelen bir süre için) ifade edilen suçlar için tutuklamaların sayısı gibi görünmektedir. Muhtemelen bir yerde 1000 veya 10000 başına tutuklama olup olmadığı belgelenmiştir.

Verilen birimlerdeki saldırı değişkeninin ortalaması yaklaşık 171 ve ortalama cinayet yaklaşık 8'dir.

Bu nedenle, verilerde, cinayetler vb. Saldırılardan çok daha fazla tutuklama olduğu yönünde bir anlam olmasına rağmen, bilinen (veya şaşırtıcı olmayan) gerçek, analize baskındır.

Bu, istatistiklerde başka herhangi bir yerde olduğu gibi, bir PCA'da ne yaptığınızı düşünmeniz gerektiğini gösterir.

Bunu daha ileri götürürseniz:

  1. Ben kentsel yüzde analizden daha iyi olduğunu iddia ediyorum. Kentsel olmak suç değildir; elbette suçu etkileyen değişkenler için proxy sunabilir.

  2. Bir korelasyon matrisine dayanan bir PCA benim görüşüme göre daha anlamlı olur. Diğer bir olasılık, tutuklama oranlarıyla değil tutuklama oranlarının logaritması ile çalışmaktır (tüm değerler pozitiftir; aşağıya bakınız).

Not: @ random_guy'un cevabı kasıtlı olarak kovaryans matrisini kullanır.

İşte bazı özet istatistikler. Stata'yı kullandım, ama bu oldukça önemsiz.

    Variable |       Obs        Mean    Std. Dev.       Min        Max
-------------+--------------------------------------------------------
   urban_pop |        50       65.54    14.47476         32         91
      murder |        50       7.788     4.35551         .8       17.4
        rape |        50      21.232    9.366384        7.3         46
     assault |        50      170.76    83.33766         45        337
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.