Saya ingin mengklarifikasi komentar yang saya tinggalkan di bawah jawaban @ Peter-Flom tetapi mungkin layak dituliskan dalam jawaban. Sejauh mana Anda dapat mengurangi dimensi dengan menjalankan PCA pada data yang hampir ortogonal? Jawabannya adalah "itu tergantung" pada apakah Anda melakukan PCA pada matriks korelasi atau kovarian .
Jika Anda menggunakan PCA pada matriks korelasi, maka karena ini hanya akan sedikit berbeda dari matriks identitas, ada simetri bola yang menjadikan semua arah "sama informatif". Mengubah varian variabel Anda menjadi satu sebelum PCA adalah pendekatan yang setara secara matematis yang akan menghasilkan hasil yang sama. Sementara output PCA akan mengidentifikasi beberapa komponen dengan varians yang sedikit lebih rendah daripada yang lain, ini dapat dikaitkan (jika kita mengasumsikan nol korelasi dalam populasi) dengan tidak lebih dari variasi kebetulan dalam sampel, jadi tidak akan menjadi alasan yang baik untuk membuang ini komponen. Faktanya, perbedaan antara standar deviasi komponen harus dikurangi dalam besarnya ketika kita meningkatkan ukuran sampel. Kami dapat mengkonfirmasi ini dalam simulasi.
set.seed(123)
princompn <- function(n, sd1=1, sd2=1, sd3=1, sd4=1, cor=TRUE) {
x1 <- rnorm(n, mean=0, sd=sd1)
x2 <- rnorm(n, mean=0, sd=sd2)
x3 <- rnorm(n, mean=0, sd=sd3)
x4 <- rnorm(n, mean=0, sd=sd4)
prcomp(cbind(x1,x2,x3,x4), scale.=cor)
}
Keluaran:
> pc100 <- princompn(100)
> summary(pc100)
Importance of components:
PC1 PC2 PC3 PC4
Standard deviation 1.0736 1.0243 0.9762 0.9193
Proportion of Variance 0.2882 0.2623 0.2382 0.2113
Cumulative Proportion 0.2882 0.5505 0.7887 1.0000
>
> pc1m <- princompn(1e6)
> summary(pc1m)
Importance of components:
PC1 PC2 PC3 PC4
Standard deviation 1.0008 1.0004 0.9998 0.9990
Proportion of Variance 0.2504 0.2502 0.2499 0.2495
Cumulative Proportion 0.2504 0.5006 0.7505 1.0000
Namun, jika Anda melakukan PCA menggunakan matriks kovarians alih-alih matriks korelasi (ekuivalen: jika kami tidak menskalakan standar deviasi ke 1 sebelum menerapkan PCA), maka jawabannya tergantung pada penyebaran variabel Anda. Jika variabel Anda memiliki varian yang sama maka kami masih memiliki simetri bola, sehingga tidak ada "arah istimewa" dan pengurangan dimensi tidak dapat dicapai.
> pcEqual <- princompn(n=1e6, sd1=4, sd2=4, sd3=4, sd4=4, cor=FALSE)
> summary(pcEqual)
Importance of components:
PC1 PC2 PC3 PC4
Standard deviation 4.0056 4.0010 3.9986 3.9936
Proportion of Variance 0.2507 0.2502 0.2499 0.2492
Cumulative Proportion 0.2507 0.5009 0.7508 1.0000
Dengan campuran variabel varians tinggi dan rendah, simetri lebih seperti ellipsoid dengan beberapa kapak lebar dan lainnya tipis. Dalam situasi ini akan ada komponen varians tinggi memuat pada variabel varians tinggi (di mana ellipsoid lebar) dan komponen varians rendah memuat pada variabel varians rendah (di mana arah ellipsoid sempit).
> pcHiLo <- princompn(n=1e6, sd1=4, sd2=4, sd3=1, sd4=1, cor=FALSE)
> summary(pcHiLo)
Importance of components:
PC1 PC2 PC3 PC4
Standard deviation 4.0018 3.9985 1.0016 1.00005
Proportion of Variance 0.4709 0.4702 0.0295 0.02941
Cumulative Proportion 0.4709 0.9411 0.9706 1.00000
> round(pcHiLo$rotation, 3)
PC1 PC2 PC3 PC4
x1 0.460 0.888 0.000 0.000
x2 -0.888 0.460 0.000 0.000
x3 0.000 0.000 -0.747 -0.664
x4 0.000 0.000 0.664 -0.747
Jika variabel memiliki varians yang sangat berbeda (geometris ellipsoid lagi tetapi dengan semua sumbu berbeda), maka ortogonalitas memungkinkan PC pertama memuat sangat banyak pada variabel varians tertinggi dan seterusnya.
> pc1234 <- princompn(n=1e6, sd1=1, sd2=2, sd3=3, sd4=4, cor=FALSE)
> summary(pc1234)
Importance of components:
PC1 PC2 PC3 PC4
Standard deviation 3.9981 3.0031 1.9993 1.00033
Proportion of Variance 0.5328 0.3006 0.1332 0.03335
Cumulative Proportion 0.5328 0.8334 0.9667 1.00000
> round(pc1234$rotation, 3)
PC1 PC2 PC3 PC4
x1 0.000 0.000 -0.001 1.000
x2 0.001 -0.001 1.000 0.001
x3 0.003 -1.000 -0.001 0.000
x4 1.000 0.003 -0.001 0.000
Dalam dua kasus terakhir ada komponen varians rendah Anda mungkin mempertimbangkan membuang untuk mencapai pengurangan dimensi, tetapi melakukannya persis sama dengan membuang variabel varians terendah di tempat pertama . Pada dasarnya, ortogonalitas memungkinkan Anda untuk mengidentifikasi komponen varians rendah dengan variabel varians rendah, jadi jika Anda bermaksud mengurangi dimensi dengan cara ini, tidak jelas Anda akan mendapat manfaat dari menggunakan PCA untuk melakukannya.
Nota bene: lamanya waktu yang dihabiskan untuk membahas kasus di mana variabel tidak diubah kembali ke varians unit - yaitu menggunakan kovarians daripada matriks korelasi - tidak boleh dianggap sebagai indikasi bahwa pendekatan ini entah bagaimana lebih penting, dan tentu saja bukan karena itu lebih baik". Simetri situasi hanya lebih halus sehingga memerlukan diskusi lebih lama.