8 votos

¿Por qué el primer autovector en el PCA se asemejan a la derivada de una tendencia de fondo?

Estoy usando PCA para analizar varias espacialmente relacionados con el tiempo de la serie, y parece que el primer vector propio corresponde a la derivada de la media de la tendencia de la serie (ejemplo ilustrado a continuación). Soy curioso en cuanto a por qué el primer vector propio se refiere a la derivada de la tendencia opuesta a la tendencia de la misma?

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

Stanimirovic et al., 2007 llegado a la misma conclusión, pero su explicación es un poco fuera de mi alcance de álgebra lineal.

Example

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

[Update2] - RESPONDIÓ. He encontrado mi código era incorrecto el uso de la transpuesta del vector propio de la matriz cuando se gracan los resultados (excel_walkthrough)(gracias @ameba). Parece que es sólo una coincidencia, que la transposición-autovector/derivado de la relación que existe para esta instalación en particular. Como se describe matemáticamente y de manera intuitiva en este post, el primer vector propio de hecho se refieren a la tendencia subyacente y no sus derivados.

8voto

jldugger Puntos 7490

Vamos a pasar por alto la media de centrado por un momento. Una manera de entender los datos que está a la vista de cada una de las series de tiempo como ser aproximadamente un fijo múltiples de un conjunto de "tendencia", la cual es una serie de tiempo $x=(x_1, x_2, \ldots, x_p)^\prime$ ($p=7$ el número de períodos de tiempo). Me referiré a esto más adelante como "tener una tendencia similar."

Escrito $\phi=(\phi_1, \phi_2, \ldots, \phi_n)^\prime$ para los múltiplos (con $n=10$ el número de serie de tiempo), la matriz de datos es de aproximadamente

$$X = \phi x^\prime.$$

The PCA eigenvalues (without mean centering) are the eigenvalues of

$$X^\prime X = (x\phi^\prime)(\phi x^\prime) = x(\phi^\prime \phi)x^\prime = (\phi^\prime \phi) x x^\prime,$$

because $\phi^\prime \phi$ is just a number. By definition, for any eigenvalue $\lambda $ and any corresponding eigenvector $\beta$,

$$\lambda \beta = X^\prime X \beta = (\phi^\prime \phi) x x^\prime \beta = ((\phi^\prime \phi) (x^\prime \beta)) x,\tag{1}$$

where once again the number $x^\prime\beta$ can be commuted with the vector $x$. Let $\lambda$ be the largest eigenvalue, so (unless all time series are identically zero at all times) $\lambda \gt 0$.

Since the right hand side of $(1)$ is a multiple of $x$ and the left hand side is a nonzero multiple of $\beta$, the eigenvector $\beta$ must be a multiple of $x$, demasiado.

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

  1. No hay un único autovalor positivo en el PCA.

  2. No hay una única correspondiente espacio propio se extendió por el común de la serie de tiempo de $x$.

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

"Significa centrarse" en el PCA significa que las columnas están centrados. Desde las columnas corresponden a los tiempos de observación de la serie de tiempo, esto equivale a la eliminación de la media de la tendencia del tiempo por separado la configuración de la media de todos los $n$ series de tiempo a cero en cada una de las $p$ veces. Por lo tanto, cada una de las series de tiempo $\phi_i x$ es reemplazado por un residual $(\phi_i - \bar\phi) x$ donde $\bar\phi$ es la media de las $\phi_i$. Pero esta es la misma situación que antes, simplemente la sustitución de la $\phi$ por sus desviaciones de su valor medio.

Por el contrario, cuando hay un único, muy grande autovalor en el PCA, podemos conservar un único componente principal y se aproximan a los datos originales de la matriz de $X$. Por lo tanto, este análisis contiene un mecanismo para comprobar su validez:

Todos las series de tiempo han tendencias similares si y sólo si existe un componente principal que domina todos los demás.

Esta conclusión se aplica tanto a la PCA en los datos brutos y la PCA en la (columna) media centrada en los datos.


Permítanme ilustrar. Al final de este post es R código para generar datos aleatorios de acuerdo con el modelo utilizado aquí y analizar su primer PC. Los valores de $x$ $\phi$ son cualitativamente probable que los que se muestran en la pregunta. El código genera dos filas de gráficos: un "gráfico de sedimentación", mostrando las ordenadas valores propios y una parcela de los datos utilizados. Aquí es un conjunto de resultados.

Figures

Los datos en bruto que aparecen en la esquina superior derecha. El gráfico de sedimentación en la parte superior izquierda confirma el mayor autovalor domina a todos los demás. Por encima de los datos que han conspirado para que el primer vector propio (primer componente principal) como una gruesa línea negra y la tendencia general (medio tiempo) como una línea roja discontinua. Son prácticamente coincidentes.

El centro de datos aparecen en la parte inferior derecha. Ahora que la "tendencia" en los datos es una tendencia en la variabilidad en lugar de nivel. Aunque el gráfico de sedimentación es muy agradable, el mayor autovalor ya no predomina--sin embargo, el primer autovector hace un buen trabajo de seguimiento de 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"
}

0voto

LE Rogerson Puntos 106

Derivado de los datos (~ primera diferencia) elimina la pointwise dependencias en los datos que son debido a la no estacionariedad (cf. ARIMA). Lo que a continuación, recuperar es de aproximadamente el establo estacionario de la señal, que supongo que la enfermedad vesicular porcina se está recuperando.

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