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가 제공하는 각 빨간색 축을 따라 데이터 집합의 분산은 고유 값으로 표시됩니다. 그러나 어떻게 같은 양의 등가 분산을 얻을 수 있습니까?하지만 두 개의 다른 축을 녹색으로 투영했습니다 .이 구성 요소 축의 pi / 10 회전입니다. IE는 원점에서 두 개의 직교 단위 벡터를 주었으므로 모든 임의의 (그러나 직교) 축을 따라 데이터 집합의 분산을 얻는 방법은 무엇입니까? 모든 분산이 설명되도록 PCA).