พิจารณา PCA biplot ต่อไปนี้:
library(mvtnorm)
set.seed(1)
x <- rmvnorm(2000, rep(0, 6), diag(c(5, rep(1,5))))
x <- scale(x, center=T, scale=F)
pc <- princomp(x)
biplot(pc)
มีลูกศรสีแดงจำนวนหนึ่งพล็อตพวกมันหมายถึงอะไร ฉันรู้ว่าลูกศรแรกที่มีป้ายกำกับ "Var1" ควรชี้ทิศทางที่แตกต่างกันมากที่สุดของชุดข้อมูล (ถ้าเราคิดว่ามันเป็นจุดข้อมูล 2,000 จุดแต่ละอันเป็นเวกเตอร์ขนาด 6) ฉันอ่านจากที่อื่นทิศทางที่แตกต่างกันมากที่สุดควรเป็นทิศทางของเวกเตอร์ไอเกนลำดับที่ 1
อย่างไรก็ตามการอ่านรหัส biplot ใน R บรรทัดเกี่ยวกับลูกศรคือ:
if(var.axes)
arrows(0, 0, y[,1L] * 0.8, y[,2L] * 0.8, col = col[2L],
y
เมทริกการโหลดอยู่ที่ไหน, ซึ่งก็คือเมทริกซ์ไอเกนเวกเตอร์ ดังนั้นดูเหมือนว่าลูกศรที่ 1 ที่เป็นจริงชี้จากการ(0, 0)
(y[1, 1], y[1, 2])
ฉันเข้าใจว่าเรากำลังพยายามพล็อตลูกศรมิติสูงลงบนระนาบ 2D นั่นเป็นเหตุผลที่เรากำลังนำองค์ประกอบที่ 1 และ 2 ของy[1, ]
เวกเตอร์ อย่างไรก็ตามสิ่งที่ฉันไม่เข้าใจคือ:
ไม่ควรทิศทางวิคเตอร์ 1 เป็นเวกเตอร์แสดงโดยy[, 1]
แทนy[1, ]
? (อีกครั้งนี่y
คือเมทริกซ์ eigenvector ที่ได้จาก PCA หรือโดย eigendecomposition ของt(x) %*% x
.) นั่นคือ eigenvector ควรเป็นเวกเตอร์คอลัมน์ไม่ใช่เวกเตอร์แนวนอนเหล่านั้น
แม้ว่าเราจะพล็อตมันบนระนาบ 2 มิติเราควรวาดทิศทางที่ 1 ให้(0, 0)
ชี้ไปที่(y[1, 1], y[2, 1])
?