Khi bạn xây dựng một biplot cho phân tích PCA, bạn có điểm PC1 thành phần chính trên trục x và điểm PC2 trên trục y. Nhưng hai trục còn lại ở bên phải và trên cùng của màn hình là gì?
Khi bạn xây dựng một biplot cho phân tích PCA, bạn có điểm PC1 thành phần chính trên trục x và điểm PC2 trên trục y. Nhưng hai trục còn lại ở bên phải và trên cùng của màn hình là gì?
Câu trả lời:
Bạn có nghĩa là, ví dụ, trong cốt truyện mà lệnh sau trả về?
biplot(prcomp(USArrests, scale = TRUE))
Nếu có, thì trục trên và trục phải được sử dụng để giải thích các mũi tên màu đỏ (các điểm mô tả các biến) trong cốt truyện.
Nếu bạn biết cách phân tích thành phần chính hoạt động và bạn có thể đọc mã R, mã bên dưới cho bạn thấy kết quả prcomp()
ban đầu được xử lý như thế nào biplot.prcomp()
trước khi vẽ sơ đồ cuối cùng biplot.default()
. Hai hàm này được gọi trong nền khi bạn vẽ đồ thị biplot()
và đoạn trích mã được sửa đổi sau đây là từ 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)
Trong một thời gian ngắn, trong ví dụ trên, ma trận tải trọng biến ( x$rotation
) được chia tỷ lệ theo độ lệch chuẩn của các thành phần chính ( x$sdev
) nhân căn bậc hai của số lượng quan sát. Điều này đặt tỷ lệ cho các trục trên và bên phải theo những gì nhìn thấy trên cốt truyện.
Có nhiều phương pháp khác để mở rộng quy mô tải thay đổi. Chúng được cung cấp, ví dụ như gói R thuần chay.
biplot.default
). Tôi thấy điều này là vô cùng khó hiểu.
Tôi có một hình dung tốt hơn cho biplot. Vui lòng kiểm tra hình sau.
Trong thử nghiệm, tôi đang cố gắng ánh xạ các điểm 3d thành 2d (tập dữ liệu mô phỏng).
Mẹo để hiểu biplot trong 2d là tìm góc chính xác để thấy điều tương tự trong 3d. Tất cả các điểm dữ liệu được đánh số, bạn có thể thấy ánh xạ rõ ràng.
Đây là mã để tái tạo kết quả.
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
lệnh trong R và được sao chép trong hình của bạn ở phía bên phải: có đám mây chấm được chuẩn hóa nhưng mũi tên có độ dài tương ứng với phương sai.
biplot
tạo ra với scale=0
đối số.