15 votos

¿Para una matriz al azar, no debe ' t un SVD explicar nada en absoluto? ¿Lo que estoy haciendo mal?

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:

enter image description here

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.

Corrected image

12voto

Raptrex Puntos 115

La primera PC es explicar que las variables no están centradas alrededor de cero. Escala primera o centrado sus variables aleatorias alrededor de cero se tiene el resultado que esperas. Por ejemplo, cualquiera de estas:

m <- matrix(runif(10000,min=0,max=25), nrow=100,ncol=100)
m <- scale(m, scale=FALSE)

m <- matrix(runif(10000,min=-25,max=25), nrow=100,ncol=100)

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X