21 votos

Extraño las correlaciones de la enfermedad vesicular porcina resultados de datos aleatorios; tienen un matemático explicación o es una LAPACK error?

Puedo observar un comportamiento extraño en la SVD resultado de datos aleatorios, que puedo reproducir en ambos Matlab y R. parece Que algunos numérica del problema en la librería LAPACK; es?

Puedo dibujar $n=1000$ de las muestras de la $k=2$ dimensiones de Gauss con cero la media y la identidad de la covarianza: $X\sim \mathcal N (0, \mathbf I)$. Yo montamos en un $1000 \times 2$ matriz de datos $\mathbf X$. (Puedo opcionalmente centro $\mathbf X$ o no, no influye en la siguiente.) A continuación, realizar la descomposición de valor singular (SVD) para obtener $\mathbf X=\mathbf{USV}^\top$. Vamos a tomar unos dos elementos particulares de $\mathbf U$, por ejemplo,$U_{11}$$U_{22}$, y preguntarse cuál es la correlación entre ellos a través de los diferentes sorteos de $\mathbf X$. Yo esperaría que si el número de $N_\mathrm{rep}$ de saca es razonablemente grande, entonces todas estas correlaciones deben ser alrededor de cero (es decir, la población correlaciones debe ser cero, y muestra las correlaciones será pequeño).

Sin embargo, observo algunas extrañamente fuertes correlaciones (alrededor de $\pm0.2$) entre $U_{11}$, $U_{12}$, $U_{21}$, y $U_{22}$, y sólo entre estos elementos. El resto de los pares de elementos que tienen correlaciones alrededor de cero, como se esperaba. Aquí es cómo la matriz de correlación para el $20$ "superior" elementos de $\mathbf U$ parece (primera $10$ elementos de la primera columna, luego la primera a la $10$ elementos de la segunda columna):

SVD weird correlations

Aviso extrañamente valores altos en la parte superior izquierda de las esquinas de cada uno de los cuadrantes.

Fue este @whuber el comentario de que la trajo a este efecto a mi atención. @whuber argumentó que la PC1 y la PC2 no son independientes y presentan esta correlación como una evidencia de que. Sin embargo, mi impresión es que él descubrió accidentalmente un error numérico en LAPACK de la biblioteca. ¿Qué está pasando aquí?

Aquí está @whuber I código:

stat <- function(x) {u <- svd(x)$u; c(u[1,1], u[2, 2])};
Sigma <- matrix(c(1,0,0,1), 2);
sim <- t(replicate(1e3, stat(MASS::mvrnorm(10, c(0,0), Sigma))));
cor.test(sim[,1], sim[,2]);

Aquí está mi código de Matlab:

clear all
rng(7)

n = 1000;     %// Number of variables
k = 2;        %// Number of observations
Nrep = 1000;  %// Number of iterations (draws)

for rep = 1:Nrep
    X = randn(n,k);
    %// X = bsxfun(@minus, X, mean(X));
    [U,S,V] = svd(X,0);

    t(rep,:) = [U(1:10,1)' U(1:10,2)'];
end

figure
imagesc(corr(t), [-.5 .5])
axis square
hold on
plot(xlim, [10.5 10.5], 'k')
plot([10.5 10.5], ylim, 'k')

23voto

jldugger Puntos 7490

Esto no es un error.

Como hemos explorado (mucho) en los comentarios, hay dos cosas que están sucediendo. La primera es que las columnas de a $U$ que están obligados a cumplir la enfermedad vesicular porcina requisitos: cada uno debe tener unidad de longitud y ser ortogonal a todos los demás. Visualización de $U$ como una variable aleatoria creado a partir de una matriz aleatoria $X$ a través de una determinada enfermedad vesicular porcina algoritmo, así podemos señalar que estos $k(k+1)/2$ funcionalmente independiente de las limitaciones de crear estadísticos dependencias entre las columnas de a $U$.

Estas dependencias pueden ser revelada a un mayor o menor grado por el estudio de las correlaciones entre los componentes de $U$, pero un segundo fenómeno que emerge: la enfermedad vesicular porcina solución no es única. Como mínimo, cada columna de $U$ puede ser negado de forma independiente, dando al menos $2^k$ soluciones distintas con $k$ columnas. Correlaciones fuertes (superiores a $1/2$) puede ser inducida por el cambio de los signos de las columnas de forma adecuada. (Una manera de hacer esto es dado en mi primer comentario a la Ameba, la respuesta en este hilo: me fuerza a todos los $u_{ii},i=1,\ldots, k$ a tienen el signo, haciendo que todos ellos negativos o positivos, con igual probabilidad.) Por otro lado, todas las correlaciones que pueden hacerse desaparecer mediante la elección de los signos al azar, de forma independiente, con igualdad de probabilidades. (Doy un ejemplo de abajo, en el apartado "Edición".)

Con cuidado, que en parte puede discernir estos dos fenómenos, cuando la lectura de matrices de diagramas de dispersión de los componentes de $U$. Ciertas características, tales como la aparición de puntos casi uniformemente distribuidos dentro de los bien definidos circular regiones--carece de una falta de independencia. Otros, tales como diagramas de dispersión que muestra clara distinto de cero correlaciones, dependerá, obviamente, de las decisiones tomadas en el algoritmo--pero tales decisiones sólo son posibles debido a la falta de independencia en el primer lugar.

La última prueba de un algoritmo de descomposición como la enfermedad vesicular porcina (o Cholesky, LR, LU, etc.) es que si hace lo que dice. En esta circunstancia es suficiente para comprobar que cuando la enfermedad vesicular porcina devuelve el triple de matrices $(U, D, V)$, $X$ es recuperado, hasta anticipado de punto flotante de error, por el producto $UDV^\prime$; que las columnas de a $U$ e de $V$ son ortonormales; y que $D$ es diagonal, su diagonal elementos son no negativos, y se organizan en orden descendente. He aplicado dichas pruebas a la svd algoritmo en R y nunca he encontrado a estar en un error. Aunque eso no es garantía de que es perfectamente correcto, la experiencia, que creo que es compartida por un gran número de personas--sugiere que cualquier error podría requerir algunos de los increíbles tipo de entrada con el fin de ser manifiesto.

Lo que sigue es un análisis más detallado de las cuestiones específicas planteadas en la pregunta.


El uso de R's svd procedimiento, se puede comprobar que, como $k$ aumenta, las correlaciones entre los coeficientes de $U$ crecimiento más débil, pero aún son distintos de cero. Si usted simplemente fueron a realizar una mayor simulación, usted podría encontrar que son significativas. (Al $k=3$, 50000 iteraciones deberían ser suficientes.) Contrariamente a la afirmación de la pregunta, las correlaciones no "desaparece en su totalidad."

Segundo, una mejor manera de estudiar este fenómeno es volver a la pregunta básica de la independencia de los coeficientes. Aunque las correlaciones tienden a ser cercano a cero en la mayoría de los casos, la falta de independencia es claramente evidente. Esto se hace más evidente al estudiar la plena multivariante de la distribución de los coeficientes de $U$. La naturaleza de la distribución surge incluso en pequeñas simulaciones en las que el cero correlaciones no pueden (aún) ser detectado. Por ejemplo, examinar un diagrama de dispersión de la matriz de los coeficientes. Para hacer esto posible, me ajustar el tamaño de cada conjunto de datos simulados a $4$ y se mantienen $k=2$, con lo que el dibujo de $1000$ realizaciones de la $4\times 2$ matriz $U$, la creación de una $1000\times 8$ matriz. Aquí está toda su diagrama de dispersión de la matriz, con las variables enumeradas por sus posiciones dentro de $U$:

Figure

El escaneo de la primera columna muestra un interesante falta de independencia entre el $u_{11}$ y el otro $u_{ij}$: mira cómo el cuadrante superior del diagrama de dispersión con $u_{21}$ es casi vacía, por ejemplo; o examinar la elíptica inclinación ascendente en la nube que describe la $(u_{11}, u_{22})$ relación y el descendente, en la nube para la $(u_{21}, u_{12})$ par. Una mirada más de cerca revela una clara falta de independencia entre casi todos de estos coeficientes: muy pocos de ellos se ven de forma remota independiente, aunque la mayoría de ellos presentan cerca de cero correlación.

(NB: la Mayoría de la circular nubes son proyecciones de un hypersphere creado por la normalización de la condición obligando a la suma de los cuadrados de todos los componentes de cada columna de la unidad.)

Diagrama de dispersión de las matrices con $k=3$ $k=4$ presentan patrones similares: estos fenómenos no están confinados a $k=2$, ni dependen de ellos el tamaño de cada conjunto de datos simulados: se ponen más difíciles de generar y examinar.

Las explicaciones para estos patrones de ir a el algoritmo utilizado para obtener el $U$ en la descomposición de valor singular, pero sabemos que tales patrones de la no-independencia que debe existir por la propia definición de propiedades de $U$: desde cada una de las sucesivas columna es (geométricamente) ortogonal a la anterior, estos ortogonalidad de las condiciones de imponer las dependencias funcionales entre los coeficientes, que así se traduce estadístico dependencias entre las correspondientes variables aleatorias.


Editar

En respuesta a los comentarios, puede ser la pena destacar en la medida en que estos dependencia de los fenómenos reflejan el algoritmo subyacente (calcular un SVD) y lo mucho que son inherentes a la naturaleza del proceso.

El específico de los patrones de correlaciones entre los coeficientes dependen mucho arbitrarias decisiones tomadas por la enfermedad vesicular porcina algoritmo, debido a que la solución no es única: las columnas de a $U$ siempre de forma independiente, se multiplica por $-1$ o $1$. No hay ninguna manera intrínseca para elegir el signo. Por lo tanto, cuando dos SVD algoritmos hacen diferentes (arbitraria o tal vez incluso al azar) opciones de signo, que pueden dar lugar a diferentes patrones de dispersión de la $(u_{ij}, u_{i^\prime j^\prime})$ valores. Si a usted le gustaría ver esto, reemplace la stat función en el código siguiente

stat <- function(x) {
  i <- sample.int(dim(x)[1]) # Make a random permutation of the rows of x
  u <- svd(x[i, ])$u         # Perform SVD
  as.vector(u[order(i), ])   # Unpermute the rows of u
}

Esta primera aleatoriamente re-ordena las observaciones x, realiza SVD, entonces se aplica la inversa de pedidos a u para que coincida con el original de la observación de la secuencia. Debido a que el efecto es formar mezclas de reflejadas y rotadas versiones de la original diagramas de dispersión, diagramas de dispersión en la matriz tendrá un aspecto mucho más uniforme. Todos los de las muestras correlaciones va a ser muy cercano a cero (por construcción: subyacente correlaciones son exactamente cero). Sin embargo, la falta de dependencia todavía será evidente (en la circular uniforme de las formas que aparecen, en particular entre las $u_{i,j}$$u_{i,j^\prime}$).

La falta de datos en algunos cuadrantes de algunos de los originales de diagramas de dispersión (que se muestra en la figura anterior) surge de cómo la R SVD algoritmo selecciona los signos de las columnas.

No cambia nada acerca de las conclusiones. Porque la segunda columna de $U$ es ortogonal a la primera, (considerado como un multivariante variable aleatoria) es dependiente en la primera (también considerada como un multivariante variable aleatoria). Usted puede tener todos los componentes de una columna en un ser independiente de todos los componentes de los otros; todo lo que puedes hacer es buscar en los datos en formas que ocultan las dependencias--pero la dependencia va a persistir.


Aquí se actualizó R código para manejar los casos de $k\gt 2$ y dibujar una parte del diagrama de dispersión de la matriz.

k <- 2    # Number of variables
p <- 4    # Number of observations
n <- 1e3  # Number of iterations
stat <- function(x) as.vector(svd(x)$u)
Sigma <- diag(1, k, k); Mu <- rep(0, k)
set.seed(17)
sim <- t(replicate(n, stat(MASS::mvrnorm(p, Mu, Sigma))))
colnames(sim) <- as.vector(outer(1:p, 1:k, function(i,j) paste0(i,",",j)))
pairs(sim[, 1:min(11, p*k)], pch=".")

11voto

zowens Puntos 1417

Esta respuesta presenta una réplica de @whuber de resultados en Matlab, y también una demostración directa de que las correlaciones son un "artefacto" de cómo la enfermedad vesicular porcina implementación elige el signo de los componentes.

Dada la larga cadena de la posibilidad de confundir los comentarios, quiero estrés para el futuro de los lectores que estoy totalmente de acuerdo con lo siguiente:

  1. En el contexto de esta discusión, $\mathbf U$ sin duda es una variable aleatoria.
  2. Columnas de $\mathbf U$ tiene que ser de la longitud de la $1$. Esto significa que los elementos dentro de cada columna no son independientes; sus plazas suma a uno. Sin embargo, esto no implica ningún tipo de correlación entre el$U_{i1}$$U_{j1}$$i\ne j$, y la muestra de correlación debe ser pequeño para la gran cantidad $N_\mathrm{rep}$ de los sorteos.
  3. Columnas de $\mathbf U$ tienen que ser ortogonales. Esto significa que los elementos de las diferentes columnas no son independientes; su producto escalar es cero. De nuevo, esto no implica ningún tipo de correlación entre el$U_{i1}$$U_{j2}$, y la muestra de correlación debe ser pequeña.

Mi pregunta era: ¿por qué vemos correlaciones altas de $\sim 0.2$, incluso el gran número de sorteos $N_\mathrm{rep}=1000$?

Aquí está una réplica de @whuber el ejemplo con $n=4$, $k=2$, y $N_\mathrm{rep}=1000$ en Matlab:

SVD

A la izquierda está la matriz de correlación, en la derecha, los diagramas de dispersión similar a la de @whuber. El acuerdo entre nuestras simulaciones parece perfecto.

Ahora, tras una ingeniosa sugerencia de @ttnphns, puedo asignar al azar los signos de las columnas de a $U$, es decir, después de esta línea:

[U,S,V] = svd(X,0);

Yo agregue las siguientes dos líneas:

U(:,1) = U(:,1) * sign(randn(1));
U(:,2) = U(:,2) * sign(randn(1));

Aquí está el resultado:

SVD with random signs

Todas las correlaciones se desvanecen, exactamente como lo esperaba desde el principio!

Como @whuber dice, la falta de independencia puede ser visto en la perfecta forma circular de unos gráficos de dispersión (debido a la longitud de cada columna debe ser igual a $1$, la suma de los cuadrados de dos elementos no puede exceder $1$). Pero las correlaciones hacer desaparecer.

Resumiendo la cuestión, vemos que la fuerte correlación aparecen porque LAPACK elige los signos de las columnas de a $\mathbf U$ en la manera específica en que parece depender de los dos primeros puntos de datos. Ciertamente, no es un error, ya que la descomposición es correcta. Pero LAPACK esencialmente crea estos "artefactos" correlaciones mediante la explotación de la libertad para asignar los signos. Estas correlaciones no reflejan la dependencia de los elementos de $\mathbf U$; en cambio, reflejan la libertad en la SVD solución y un particular LAPACK de la convención para solucionarlo.

PS. Felicitaciones a @whuber para pasar 100k reputación de hoy!

0voto

Aksakal Puntos 11351

Verificación de la norma de su singular vectores U y V, es 1 por definición. Usted no necesita ir a través de la enfermedad vesicular porcina para obtener exactamente la misma matriz de la trama, simplemente mediante la generación de dos variables aleatorias $x$ $y$ con la restricción de que la suma de sus cuadrados es 1: $$x^2+y^2=1$$

Asumir que los medios son cero, entonces $$Cov[x,y]=Var[xy]=E[x^2y^2]-E[xy]^2$$

Esto no va a ser igual a cero. Usted puede conectar la normal estándar en $x$ $y$ a ver ¿cuál es el valor de la covarianza de esperar aquí.

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