¿Por qué el primer vector propio en PCA se parece a la derivada de una tendencia subyacente?


8

Estoy usando PCA para analizar varias series de tiempo relacionadas espacialmente, y parece que el primer vector propio corresponde a la derivada de la tendencia media de la serie (ejemplo ilustrado a continuación). Tengo curiosidad por saber por qué el primer vector propio se relaciona con la derivada de la tendencia en oposición a la tendencia misma.

Los datos se organizan en una matriz donde las filas son las series de tiempo para cada entidad espacial y las columnas (y, a su vez, las dimensiones en el PCA) son los años (es decir, en el ejemplo a continuación, 10 series de tiempo de 7 años). Los datos también están centrados en la media antes de la PCA.

Stanimirovic et al., 2007 llegan a la misma conclusión, pero su explicación está un poco más allá de mi comprensión del álgebra lineal.

Ejemplo

[Actualización]: agregar datos como se sugiere.

[Actualización2] - RESPONDIDO. Encontré que mi código estaba usando incorrectamente la transposición de la matriz de vectores propios al trazar resultados ( excel_walkthrough ) (gracias @amoeba). Parece que es solo una coincidencia que exista la relación transposición-vector propio / derivada para esta configuración particular. Como se describe matemáticamente e intuitivamente en esta publicación, el primer vector propio de hecho se relaciona con la tendencia subyacente y no con su derivada .


Cuando dice "centrado en la media", ¿quiere decir que los promedios de las columnas se restan, los promedios de las filas o ambos?
ameba el

Explique qué quiere decir con la "derivada de una tendencia", dado que un vector propio es un número, mientras que los gráficos sugieren que concibe la derivada como una función .
whuber

@amoeba - los promedios de las columnas se restan (para cada año, saque el promedio en el espacio)
paul j

@whuber - "derivada de una tendencia" simplemente se refiere a la derivada / primera diferencia de una tendencia subyacente. En el ejemplo anterior, la línea negra discontinua en el primer gráfico es mi "tendencia subyacente" (el movimiento medio). La primera diferencia de esta línea es la línea negra continua en el segundo gráfico, que equivale aproximadamente al primer vector propio inferido de PCA (ambos en una escala normalizada).
Paul j

Todavía estoy perdido: esa línea negra continua varía entre -1.4 y +1.4. ¿En qué sentido eso "más o menos igual" algo?
whuber

Respuestas:


6

Ignoremos el centrado de la media por un momento. Una forma de entender los datos es ver cada serie de tiempo como aproximadamente un múltiplo fijo de una "tendencia" general, que en sí misma es una serie de tiempox=(x1,x2,,xp) (con p=7El número de períodos de tiempo). Me referiré a esto a continuación como "tener una tendencia similar".

Escritura ϕ=(ϕ1,ϕ2,,ϕn) para esos múltiplos (con n=10 el número de series de tiempo), la matriz de datos es aproximadamente

X=ϕx.

Los valores propios de PCA (sin centrado medio) son los valores propios de

XX=(xϕ)(ϕx)=x(ϕϕ)x=(ϕϕ)xx,

porque ϕϕEs solo un número. Por definición, para cualquier valor propioλ y cualquier vector propio correspondiente β,

(1)λβ=XXβ=(ϕϕ)xxβ=((ϕϕ)(xβ))x,

donde una vez más el número xβ se puede conmutar con el vector x. Dejarλ ser el valor propio más grande, entonces (a menos que todas las series de tiempo sean idénticamente cero en todo momento) λ>0.

Desde el lado derecho de (1) es un múltiplo de xy el lado izquierdo es un múltiplo distinto de ceroβ, el vector propio β debe ser un múltiplo de x, también.

En otras palabras, cuando un conjunto de series de tiempo se ajusta a este ideal (que todos son múltiplos de una serie de tiempo común), entonces

  1. Hay un valor propio positivo único en la PCA.

  2. Hay un espacio propio correspondiente único que abarca la serie temporal común x.

Coloquialmente, (2) dice que "el primer vector propio es proporcional a la tendencia".

"Centrado medio" en PCA significa que las columnas están centradas. Dado que las columnas corresponden a los tiempos de observación de las series de tiempo, esto equivale a eliminar la tendencia de tiempo promedio al establecer por separado el promedio de todosn series temporales a cero en cada una de las pveces. Por lo tanto, cada serie de tiempoϕix es reemplazado por un residual (ϕiϕ¯)x, dónde ϕ¯ es la media de ϕi. Pero esta es la misma situación que antes, simplemente reemplazando elϕ por sus desviaciones de su valor medio.

Por el contrario, cuando hay un valor propio único muy grande en el PCA, podemos retener un único componente principal y aproximarnos de cerca a la matriz de datos original X. Por lo tanto, este análisis contiene un mecanismo para verificar su validez:

Todas las series temporales tienen tendencias similares si y solo si hay un componente principal que domina a todos los demás.

Esta conclusión se aplica tanto a PCA en los datos sin procesar como a PCA en los datos centrados en la media (columna).


Permíteme ilustrar. Al final de esta publicación hay un Rcódigo para generar datos aleatorios de acuerdo con el modelo utilizado aquí y analizar su primera PC. Los valores dex y ϕson cualitativamente probables los que se muestran en la pregunta. El código genera dos filas de gráficos: un "gráfico de pantalla" que muestra los valores propios ordenados y un gráfico de los datos utilizados. Aquí hay un conjunto de resultados.

Cifras

Los datos en bruto aparecen en la esquina superior derecha. El diagrama de pantalla en la esquina superior izquierda confirma que el valor propio más grande domina a todos los demás. Por encima de los datos, he trazado el primer vector propio (primer componente principal) como una línea negra gruesa y la tendencia general (las medias por tiempo) como una línea roja discontinua. Son prácticamente coincidentes.

Los datos centrados aparecen en la esquina inferior derecha. Ahora la "tendencia" en los datos es una tendencia en la variabilidad en lugar de nivel. Aunque el diagrama de pantalla está lejos de ser agradable, el valor propio más grande ya no predomina, sin embargo, el primer vector propio hace un buen trabajo al rastrear esta tendencia.

#
# Specify a model.
#
x <- c(5, 11, 15, 25, 20, 35, 28)
phi <- exp(seq(log(1/10)/5, log(10)/5, length.out=10))
sigma <- 0.25 # SD of errors
#
# Generate data.
#
set.seed(17)
D <- phi %o% x * exp(rnorm(length(x)*length(phi), sd=0.25))
#
# Prepare to plot results.
#
par(mfrow=c(2,2))
sub <- "Raw data"
l2 <- function(y) sqrt(sum(y*y))
times <- 1:length(x)
col <- hsv(1:nrow(X)/nrow(X), 0.5, 0.7, 0.5)
#
# Plot results for data and centered data.
#
k <- 1 # Use this PC
for (X in list(D, sweep(D, 2, colMeans(D)))) {
  #
  # Perform the SVD.
  #
  S <- svd(X)
  X.bar <- colMeans(X)
  u <- S$v[, k] / l2(S$v[, k]) * l2(X) / sqrt(nrow(X))
  u <- u * sign(max(X)) * sign(max(u))
  #
  # Check the scree plot to verify the largest eigenvalue is much larger
  # than all others.
  #
  plot(S$d, pch=21, cex=1.25, bg="Tan2", main="Eigenvalues", sub=sub)
  #
  # Show the data series and overplot the first PC.
  #
  plot(range(times)+c(-1,1), range(X), type="n", main="Data Series",
       xlab="Time", ylab="Value", sub=sub)
  invisible(sapply(1:nrow(X), function(i) lines(times, X[i,], col=col[i])))
  lines(times, u, lwd=2)
  #
  # If applicable, plot the mean series.
  #
  if (zapsmall(l2(X.bar)) > 1e-6*l2(X)) lines(times, X.bar, lwd=2, col="#a03020", lty=3)
  #
  # Prepare for the next step.
  #
  sub <- "Centered data"
}

Esto tiene mucho sentido por qué "el primer vector propio es proporcional a la tendencia", y es lo que esperaba antes de los resultados del análisis. Sin embargo, lo que Stanimivroc y yo estamos viendo es que el primer vector propio es proporcional a la DERIVADA (o primera diferencia) de la tendencia ... y no a la tendencia en sí.
Paul j

Sí, ¿y qué supone que está mirando después de realizar el centrado medio?
whuber

Solo los datos subyacentes centrados alrededor de 0 ... aquí hay un ejemplo bidimensional . En mi caso, son 7 dimensiones (ejes) en lugar de dos. La forma / tendencia de los datos no cambia a través del centrado medio ... simplemente se centra para ayudar a garantizar que la PCA arroje resultados significativos.
Paul j

2
@paulj Gracias por publicar los datos. No puedo reproducir tu figura. Cuando hago el centrado medio y luego PCA (SVD), obtengo PC1 de signo constante (y aumentando de forma aproximadamente monotónica, similar a su "tendencia" y a la de Whuberx), como yo esperaba.
ameba

1
@amoeba - gracias ... tienes razón. Encontré que mi código estaba usando incorrectamente la transposición de la matriz de vectores propios al trazar resultados ( excel_walkthrough ). Parece que es solo una coincidencia que exista la relación transposición / primera derivada. Gracias de nuevo.
Paul j

0

La derivada de los datos (~ primera diferencia) elimina las dependencias puntuales en los datos que se deben a la no estacionariedad (cf. ARIMA). Lo que luego recupera es aproximadamente la señal estacionaria estable, que supongo que la SVD se está recuperando.


1
No veo cómo esto responde la pregunta sobre el parecido de PC1 y la derivada de la media.
ameba

Gracias a los dos por sus respuestas. También estoy de acuerdo con @amoeba ... Entiendo que la derivada (o primera diferencia, como dijiste) ayuda a hacer que los datos sean estacionarios, pero ¿por qué esta primera diferencia esencialmente equivale al primer componente principal en esta configuración?
Paul j

Tampoco tengo una intuición tan fuerte sobre por qué podría ser esto. Quizás valga la pena ejecutar algunas simulaciones para ver si este es el caso empíricamente, pero no estoy seguro de si es analíticamente transparente.
LE Rogerson el

1
Gracias @LERogerson ... sí, he realizado algunas simulaciones, y el resultado parece mantenerse. El artículo de Stanimirovic que publiqué anteriormente tiene los mismos hallazgos y ofrece una explicación compleja de álgebra lineal, pero está un poco más allá de mi alcance / no es muy intuitivo.
Paul j

@paulj Para ser honesto, no entiendo bien el ejemplo dado en tu publicación. Si miro su Figura 1 e imagino lo que sucede después del centrado medio, la línea punteada negra debe estar en cero constante y la mayoría de las series de tiempo deben estar completamente por encima o completamente por debajo de cero. Esto me sugiere que la PC1 debe tener un signo constante, pero su PC1 que se muestra en la Figura 2 cambia de signo varias veces. Esto es extraño. ¿Quizás quiera agregar sus datos a su pregunta?
ameba
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.