ฉันต้องการที่จะเข้าใจว่าฉันจะได้รับเปอร์เซ็นต์ความแปรปรวนของชุดข้อมูลไม่ใช่ในพื้นที่พิกัดที่จัดทำโดย PCA แต่เทียบกับเวกเตอร์ (หมุน) ชุดที่แตกต่างกันเล็กน้อย
set.seed(1234)
xx <- rnorm(1000)
yy <- xx * 0.5 + rnorm(1000, sd = 0.6)
vecs <- cbind(xx, yy)
plot(vecs, xlim = c(-4, 4), ylim = c(-4, 4))
vv <- eigen(cov(vecs))$vectors
ee <- eigen(cov(vecs))$values
a1 <- vv[, 1]
a2 <- vv[, 2]
theta = pi/10
rotmat <- matrix(c(cos(theta), sin(theta), -sin(theta), cos(theta)), 2, 2)
a1r <- a1 %*% rotmat
a2r <- a2 %*% rotmat
arrows(0, 0, a1[1], a1[2], lwd = 2, col = "red")
arrows(0, 0, a2[1], a2[2], lwd = 2, col = "red")
arrows(0, 0, a1r[1], a1r[2], lwd = 2, col = "green3")
arrows(0, 0, a2r[1], a2r[2], lwd = 2, col = "green3")
legend("topleft", legend = c("eigenvectors", "rotated"), fill = c("red", "green3"))
โดยพื้นฐานแล้วฉันรู้ว่าความแปรปรวนของชุดข้อมูลตามแกนสีแดงแต่ละอันที่กำหนดโดย PCA นั้นมีค่าลักษณะเฉพาะแทน แต่วิธีการที่ฉันจะได้รับความแปรปรวนเทียบเท่ารวมเป็นเงินเหมือนกัน แต่คาดว่าทั้งสองแตกต่างกันแกนสีเขียวซึ่งเป็นที่มีการหมุนโดยปี่ / 10 ของแกนองค์ประกอบหลัก IE ได้รับเวกเตอร์หน่วยสองมุมฉากจากจุดกำเนิดฉันจะได้ความแปรปรวนของชุดข้อมูลตามแต่ละแกน (แต่มุมฉาก) เหล่านี้โดยพลการได้อย่างไร PCA)