Saat Anda membuat biplot untuk analisis PCA, Anda memiliki skor PC1 komponen utama pada sumbu x dan skor PC2 pada sumbu y. Tapi apa dua sumbu lainnya ke kanan dan atas layar?
Saat Anda membuat biplot untuk analisis PCA, Anda memiliki skor PC1 komponen utama pada sumbu x dan skor PC2 pada sumbu y. Tapi apa dua sumbu lainnya ke kanan dan atas layar?
Jawaban:
Apakah maksud Anda, misalnya, dalam plot bahwa perintah berikut kembali?
biplot(prcomp(USArrests, scale = TRUE))
Jika ya, maka sumbu atas dan kanan dimaksudkan untuk digunakan untuk menafsirkan panah merah (titik yang menggambarkan variabel) dalam plot.
Jika Anda tahu cara kerja analisis komponen utama, dan Anda dapat membaca kode R, kode di bawah ini menunjukkan kepada Anda bagaimana hasil dari prcomp()
awalnya diperlakukan biplot.prcomp()
sebelum sebelum merencanakan akhir biplot.default()
. Kedua fungsi ini dipanggil di latar belakang saat Anda menggambar biplot()
, dan kutipan kode yang dimodifikasi berikut ini berasal biplot.prcomp()
.
x<-prcomp(USArrests, scale=TRUE)
choices = 1L:2L
scale = 1
pc.biplot = FALSE
scores<-x$x
lam <- x$sdev[choices]
n <- NROW(scores)
lam <- lam * sqrt(n)
lam <- lam^scale
yy<-t(t(x$rotation[, choices]) * lam)
xx<-t(t(scores[, choices])/lam)
biplot(xx,yy)
Singkatnya, dalam contoh di atas, matriks pemuatan variabel ( x$rotation
) diskalakan oleh standar deviasi komponen utama ( x$sdev
) kali akar kuadrat dari jumlah pengamatan. Ini mengatur skala untuk sumbu atas dan kanan untuk apa yang terlihat di plot.
Ada metode lain untuk skala beban variabel, juga. Ini ditawarkan misalnya oleh paket R vegan.
Saya memiliki visualisasi yang lebih baik untuk biplot. Silakan periksa gambar berikut.
Dalam percobaan, saya mencoba memetakan titik 3d menjadi 2d (set data simulasi).
Trik untuk memahami biplot dalam 2d adalah menemukan sudut yang benar untuk melihat hal yang sama dalam 3d. Semua titik data diberi nomor, Anda dapat melihat pemetaan dengan jelas.
Berikut adalah kode untuk mereproduksi hasilnya.
require(rgl)
set.seed(0)
feature1=round(rnorm(50)*10+20)
feature2=round(rnorm(50)*10+30)
feature3=round(runif(50)*feature1)
d=data.frame(feature1,feature2,feature3)
head(d)
plot(feature1,feature2)
plot(feature2,feature3)
plot(feature1,feature3)
plot3d(d$feature1, d$feature2, d$feature3, type = 'n')
points3d(d$feature1, d$feature2, d$feature3, color = 'red', size = 10)
shift <- matrix(c(-2, 2, 0), 12, 3, byrow = TRUE)
text3d(d+shift,texts=1:50)
grid3d(c("x", "y", "z"))
pr.out=prcomp(d,scale.=T)
biplot(pr.out)
grid()
biplot
perintah dalam R dan direproduksi dalam gambar Anda di sisi kanan: di sana awan titik-titik distandarisasi tetapi panah memiliki panjang yang sesuai dengan varians.
biplot
menghasilkan dengan scale=0
argumen.