Si me la construcción de un 2-D de la matriz compuesta enteramente de datos aleatorios, yo esperaría que el PCA y la enfermedad vesicular porcina componentes esencialmente para explicar nada.
En lugar de ello, parece que la primera de enfermedad vesicular porcina columna aparece para explicar el 75% de los datos. Cómo puede ser esto? ¿Qué estoy haciendo mal?
Aquí es la trama:
Aquí está el código R:
set.seed(1)
rm(list=ls())
m <- matrix(runif(10000,min=0,max=25), nrow=100,ncol=100)
svd1 <- svd(m, LINPACK=T)
par(mfrow=c(1,4))
image(t(m)[,nrow(m):1])
plot(svd1$d,cex.lab=2, xlab="SVD Column",ylab="Singluar Value",pch=19)
percentVarianceExplained = svd1$d^2/sum(svd1$d^2) * 100
plot(percentVarianceExplained,ylim=c(0,100),cex.lab=2, xlab="SVD Column",ylab="Percent of variance explained",pch=19)
cumulativeVarianceExplained = cumsum(svd1$d^2/sum(svd1$d^2)) * 100
plot(cumulativeVarianceExplained,ylim=c(0,100),cex.lab=2, xlab="SVD column",ylab="Cumulative percent of variance explained",pch=19)
Actualización
Gracias @Aaron. La solución, como se señaló, fue añadir que el escalado de la matriz de modo que los números están centradas alrededor de 0 (es decir, la media es 0).
m <- scale(m, scale=FALSE)
Aquí está la imagen corregida, mostrando una matriz con datos aleatorios, la primera de enfermedad vesicular porcina columna está cerca de 0, como se esperaba.