Eigen Vectors of A and transpose(A)
Data Preparation
> file <- "C:/Cauldron/garage/R/soulcraft/Volatility/Learn/Wolfgang_Multivariate/Data/food.dat" > x <- as.data.frame(read.table(file)) > y <- as.matrix(x[, -1]) > colnames(y) <- c("bread", "vegetables", "fruits", "meat", "poultry", + "milk", "wine") > rownames(y) <- paste(c("MA", "EM", "CA"), c(rep("2", 3), rep("3", + 3), rep("4", 3), rep("5", 3)), sep = "") > print(y) bread vegetables fruits meat poultry milk wine MA2 332 428 354 1437 526 247 427 EM2 293 559 388 1527 567 239 258 CA2 372 767 562 1948 927 235 433 MA3 406 563 341 1507 544 324 407 EM3 386 608 396 1501 558 319 363 CA3 438 843 689 2345 1148 243 341 MA4 534 660 367 1620 638 414 407 EM4 460 699 484 1856 762 400 416 CA4 385 789 621 2366 1149 304 282 MA5 655 776 423 1848 759 495 486 EM5 584 995 548 2056 893 518 319 CA5 515 1097 887 2630 1167 561 284 > n <- dim(y)[1] > p <- dim(y)[2] > z <- y - matrix(rep(apply(y, 2, mean), n), byrow = T, nrow = n) > for (i in 1:p) { + z[, i] <- z[, i]/apply(y, 2, sd)[i] + } > print(z) bread vegetables fruits meat poultry milk MA2 -1.07017495 -1.6069348 -0.9146401 -1.13644860 -1.1106185 -0.9498231 EM2 -1.43415887 -0.9144728 -0.7086946 -0.90903254 -0.9463298 -1.0181250 CA2 -0.69685811 0.1850089 0.3452615 0.15476927 0.4962054 -1.0522760 MA3 -0.37953879 -0.8933289 -0.9933839 -0.95956944 -1.0384917 -0.2924175 EM3 -0.56619721 -0.6554602 -0.6602369 -0.97473051 -0.9823931 -0.3351061 CA3 -0.08088532 0.5867426 1.1145283 1.15792679 1.3817617 -0.9839741 MA4 0.81507511 -0.3805898 -0.8358962 -0.67403594 -0.6618298 0.4759788 EM4 0.12443895 -0.1744370 -0.1272016 -0.07770049 -0.1649566 0.3564505 CA4 -0.57553013 0.3013003 0.7026374 1.21099054 1.3857687 -0.4631722 MA5 1.94435855 0.2325827 -0.4966920 -0.09791525 -0.1769777 1.1675354 EM5 1.28172116 1.3902100 0.2604604 0.42766854 0.3599659 1.3639033 CA5 0.63774961 1.9293789 2.3138577 1.87807765 1.4578955 1.7310260 wine MA2 0.8138087 EM2 -1.5405481 CA2 0.8973954 MA3 0.5351866 EM3 -0.0777820 CA3 -0.3842663 MA4 0.5351866 EM4 0.6605666 CA4 -1.2062015 MA5 1.6357439 EM5 -0.6907506 CA5 -1.1783393 |
> cov.mat <- cov(z) > Xt <- z %*% eigen(cov.mat)$vectors > lambdas <- eigen(cov.mat)$values > par(mfrow = c(1, 2)) > plot(Xt[, 1], Xt[, 2], pch = 19, main = "p dimensions") > text(Xt[, 1], Xt[, 2], col = "blue", labels = rownames(y), adj = c(1, + 1), cex = 0.7) > abline(v = 0, col = "grey") > abline(h = 0, col = "grey") > Vt <- Xt > for (i in 1:p) { + Vt[, i] <- Xt[, i]/sqrt(lambdas[i]) + } > Wt <- t(z) %*% Vt > plot(Wt[, 1], Wt[, 2], pch = 19, main = "n dimensions") > text(Wt[, 1], Wt[, 2], col = "blue", labels = colnames(y), adj = c(0, + 0), cex = 0.7) > abline(v = 0, col = "grey") > abline(h = 0, col = "grey") |