Variabel mana yang menjelaskan komponen PCA mana, dan sebaliknya?

14

Menggunakan data ini:

head(USArrests)
nrow(USArrests)

Saya dapat melakukan PCA sebagai berikut:

plot(USArrests)
otherPCA <- princomp(USArrests)

Saya bisa mendapatkan komponen baru

otherPCA$scores

dan proporsi varian dijelaskan oleh komponen dengan

summary(otherPCA)

Tetapi bagaimana jika saya ingin tahu variabel mana yang sebagian besar dijelaskan oleh komponen utama mana? Dan sebaliknya: apakah PC1 atau PC2 kebanyakan dijelaskan oleh murder? Bagaimana saya bisa melakukan ini?

Dapatkah saya katakan misalnya bahwa PC1 80% dijelaskan oleh murderatau assault?

Saya pikir memuat membantu saya di sini, tetapi mereka menunjukkan directionality bukan varians yang dijelaskan seperti yang saya pahami, misalnya

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   
pengguna1320502
sumber
2
Perhatikan bahwa tanda-tanda pemuatan bersifat arbitrer. Ketiga variabel kriminal semuanya berkorelasi positif satu sama lain, tetapi Anda akan pandai mengerjakannya dari tanda-tanda pemuatan di atas.
Nick Cox
Sayangnya, saya percaya bahwa jawaban yang diterima untuk pertanyaan ini salah. Saya memposting jawaban saya sendiri di bawah ini.
Amuba mengatakan Reinstate Monica

Jawaban:

10

Anda benar, memuat dapat membantu Anda di sini. Mereka dapat digunakan untuk menghitung korelasi antara variabel dan komponen utama. Selain itu, jumlah pemuatan kuadrat dari satu variabel atas semua komponen utama sama dengan 1. Oleh karena itu, pemuatan kuadrat memberi tahu Anda proporsi varians dari satu variabel yang dijelaskan oleh satu komponen utama.

Masalahnya dengan princomp adalah, itu hanya menunjukkan beban "sangat tinggi". Tetapi karena pemuatan hanya vektor eigen dari matriks kovarians, kita bisa mendapatkan semua pemuatan menggunakan eigenperintah di R:

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

Sekarang, Anda memiliki informasi yang diinginkan dalam matriks explvar.

random_guy
sumber
terima kasih cowok acak, bisakah kamu tunjukkan contohnya assaultatau urban popkita bisa melakukan ini? sebagian bingung karena hanya ada satu korelasi hadir dalam matriks untukassault
user1320502
1
Maaf, saya meningkatkan jawaban saya dan tidak melihat Anda sudah mengomentari posting saya. banyak serangan dengan -0,995 pada PC1. Dengan demikian, seseorang dapat menyimpulkan setelah mengkuadratkan nilai ini PC1 menjelaskan 99% dari varian serangan variabel. Setelah mengkuadratkan nilai-nilai pop perkotaan, Anda dapat menyimpulkan PC3 menjelaskan 4% dan PC2 95,5% dari varian pop perkotaan.
random_guy
1
Tidak OP bertanya tentang berapa banyak PCA dapat dikaitkan dengan suatu variabel? Jawaban Anda adalah tentang seberapa besar variabel dapat dijelaskan oleh CPA
Heisenberg
2
w=(0.3,0.3,...0.3)1109.9w0.1
2
Maaf untuk bersikeras, tetapi apakah Anda pikir saya salah dalam komentar saya di atas? Jika tidak, maka Anda dapat mengedit jawaban Anda untuk menghilangkan potensi kebingungan, ini akan sangat membantu bagi pembaca di masa depan. Saya sendiri baru saja mengirim jawaban, mencoba menjelaskan masalah ini secara lebih rinci.
Amuba mengatakan Reinstate Monica
9

Saya pikir jawaban yang diterima bisa menyesatkan berbahaya (-1). Setidaknya ada empat pertanyaan berbeda yang digabungkan bersama dalam OP. Saya akan mempertimbangkan mereka satu demi satu.


  • Q1. Berapa banyak varian PC yang diberikan dijelaskan oleh variabel asli yang diberikan? Berapa banyak varian dari variabel asli yang diberikan dijelaskan oleh PC yang diberikan?

r2riVisiLiLi=(si)1/2Vi. Elemen-elemennya adalah korelasi PC ini dengan masing-masing variabel asli.

ViLi

Selain itu, jika PCA dilakukan pada kovarian (dan bukan pada korelasi), maka memuat juga akan memberi Anda kovarian, bukan korelasi. Untuk mendapatkan korelasi, kita perlu menghitungnya secara manual, mengikuti PCA. [Jawaban yang saat ini diterima tidak jelas tentang itu.]

  • 80%

r2R2

r2R2

  • 80%

r=0.9r=0.9r2R2=0.90.95>1R2

Cara memilih subset yang menjelaskan jumlah varians yang diberikan, disarankan oleh @FrankHarrell (+1).

amuba kata Reinstate Monica
sumber
+1, ini harus menjadi jawaban yang diterima.
gented
8

R2Y

Frank Harrell
sumber
6

Data penangkapan AS yang digabungkan dengan R hanyalah sebuah contoh di sini, tetapi saya perhatikan bahwa perhitungan pemuatan dalam pertanyaan tersebut berasal dari PCA dari matriks kovarians . Itu di suatu tempat antara sewenang-wenang dan tidak masuk akal, karena variabel diukur pada skala yang berbeda.

Populasi perkotaan terlihat seperti persen. California 91% dan tertinggi.

Tiga variabel kejahatan tampaknya adalah jumlah penangkapan untuk kejahatan yang diekspresikan relatif terhadap ukuran populasi (mungkin untuk beberapa periode waktu). Mungkin itu didokumentasikan di suatu tempat entah itu penangkapan per 1000 atau 10.000 atau apa pun.

Rata-rata dari variabel serangan di unit yang diberikan adalah sekitar 171 dan pembunuhan rata-rata sekitar 8. Jadi, penjelasan beban Anda adalah bahwa sebagian besar polanya adalah artefak: itu tergantung pada variabilitas variabel yang sangat berbeda.

Jadi, meskipun ada data yang masuk akal bahwa ada lebih banyak penangkapan karena serangan daripada pembunuhan, dll., Fakta yang diketahui (atau tidak mengejutkan) mendominasi analisis.

Ini menunjukkan bahwa, sebagaimana di mana pun dalam statistik, Anda harus memikirkan apa yang Anda lakukan dalam PCA.

Jika Anda mengambil ini lebih lanjut:

  1. Saya berpendapat bahwa persen perkotaan lebih baik ditinggalkan dari analisis. Menjadi urban bukanlah kejahatan; tentu saja dapat melayani proxy untuk variabel yang mempengaruhi kejahatan.

  2. PCA berdasarkan matriks korelasi akan lebih masuk akal dalam pandangan saya. Kemungkinan lain adalah bekerja dengan logaritma tingkat penangkapan, bukan tingkat penangkapan (semua nilai positif; lihat di bawah).

Catatan: Jawaban @ random_guy sengaja menggunakan matriks kovarians.

Berikut adalah beberapa statistik ringkasan. Saya menggunakan Stata, tapi itu tidak penting.

    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
Nick Cox
sumber