Por que o primeiro vetor próprio no PCA se assemelha à derivada de uma tendência subjacente?

8

Estou usando o PCA para analisar várias séries temporais espacialmente relacionadas, e parece que o primeiro vetor próprio corresponde à derivada da tendência média da série (exemplo ilustrado abaixo). Estou curioso para saber por que o primeiro vetor próprio se relaciona com a derivada da tendência em oposição à própria tendência?

Os dados são organizados em uma matriz onde as linhas são as séries temporais de cada entidade espacial e as colunas (e por sua vez as dimensões no PCA) são os anos (ou seja, no exemplo abaixo, 10 séries temporais a cada 7 anos). Os dados também são centralizados antes da PCA.

Stanimirovic et al., 2007 chegaram à mesma conclusão, mas a explicação deles está um pouco além do meu entendimento da álgebra linear.

Exemplo

[Update] - adicionando dados conforme sugerido.

[Update2] - RESPONDIDO. Eu descobri que meu código estava incorretamente usando a transposição da matriz de vetor próprio ao plotar resultados ( excel_walkthrough ) (obrigado @amoeba). Parece que é apenas uma coincidência que a relação transpose-autovetor / derivado exista para essa configuração específica. Conforme descrito matematicamente e intuitivamente neste post, o primeiro vetor próprio se relaciona de fato com a tendência subjacente e não com sua derivada .

paul j
fonte
Quando você diz "centralizado na média", você quer dizer que as médias da coluna são subtraídas, médias da linha ou ambas?
Ameba
Por favor, explique o que você quer dizer com "derivada de uma tendência", considerando que um vetor próprio é um número enquanto os gráficos sugerem que você conceba a derivada como uma função .
whuber
@amoeba - as médias de coluna são subtraídos (para cada ano, tirar a média através do espaço)
paul j
@whuber - "derivada de uma tendência" simplesmente se refere à derivada / primeira diferença de uma tendência subjacente. No exemplo acima, a linha preta tracejada no primeiro gráfico é a minha "tendência subjacente" (o movimento médio). A primeira diferença dessa linha é a linha preta sólida no segundo gráfico, que é aproximadamente igual ao primeiro vetor próprio inferido do PCA (ambos em uma escala normalizada).
1913 paul paul j
Ainda estou perdido: essa linha preta sólida varia entre -1,4 e +1,4. Em que sentido isso "aproximadamente igual" qualquer coisa?
whuber

Respostas:

6

Vamos ignorar a centralização da média por um momento. Uma maneira de entender os dados é visualizar cada série temporal como sendo aproximadamente um múltiplo fixo de uma "tendência" geral, que por si só é uma série temporal (com o número de períodos). Vou me referir a isso abaixo como "tendo uma tendência semelhante".x=(x1,x2,,xp)p=7

Escrevendo para esses múltiplos (com o número de séries temporais), a matriz de dados é aproximadamenteϕ=(ϕ1,ϕ2,,ϕn)n=10

X=ϕx.

Os autovalores de PCA (sem centralização média) são os autovalores de

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

porque é apenas um número. Por definição, para qualquer valor próprio e qualquer vetor próprio correspondente ,ϕϕλβ

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

onde mais uma vez o número pode ser comutado com o vetor . Seja o maior valor próprio, portanto (a menos que todas as séries temporais sejam idênticas a zero o tempo todo) .x λ λ > 0xβxλλ>0

Como o lado direito de é um múltiplo de o lado esquerdo é um múltiplo diferente de zero de , o vetor próprio deve ser um múltiplo de .x β β x(1)xββx

Em outras palavras, quando um conjunto de séries temporais está em conformidade com esse ideal (que são todos múltiplos de uma série temporal comum),

  1. Existe um autovalor positivo único no PCA.

  2. Existe um espaço próprio exclusivo correspondente, abrangido pela série temporal comum .x

Coloquialmente, (2) diz que "o primeiro vetor próprio é proporcional à tendência".

"Centralização média" no PCA significa que as colunas estão centralizadas. Como as colunas correspondem aos tempos de observação da série temporal, isso equivale a remover a tendência temporal média, definindo separadamente a média de todas as séries temporais como zero em cada um dos tempos . Assim, cada série temporal é substituída por um residual , em que é a média do . Mas esta é a mesma situação de antes, simplesmente substituindo o pelos desvios do valor médio. p ϕ i x ( ϕ i - ˉ ϕ ) x ˉ ϕ ϕ i ϕnpϕix(ϕiϕ¯)xϕ¯ϕiϕ

Por outro lado, quando há uma única grande valor próprio no APC, pode-se reter um único componente principal e aproximar de perto a matriz de dados original . Assim, esta análise contém um mecanismo para verificar sua validade:X

Todas as séries temporais têm tendências semelhantes se e somente se houver um componente principal dominando todos os outros.

Esta conclusão se aplica tanto ao PCA nos dados brutos quanto ao PCA nos dados centralizados (coluna) médios.


Permita-me ilustrar. No final deste post, há um Rcódigo para gerar dados aleatórios de acordo com o modelo usado aqui e analisar seu primeiro PC. Os valores de e são qualitativamente prováveis ​​aqueles mostrados na pergunta. O código gera duas linhas de gráficos: um "scree plot" mostrando os autovalores classificados e um plot dos dados utilizados. Aqui está um conjunto de resultados.ϕxϕ

Figuras

Os dados brutos aparecem no canto superior direito. O gráfico de seixos no canto superior esquerdo confirma que o maior autovalor domina todos os outros. Acima dos dados, plotei o primeiro vetor próprio (primeiro componente principal) como uma linha preta grossa e a tendência geral (a média do tempo) como uma linha vermelha tracejada. Eles são praticamente coincidentes.

Os dados centralizados aparecem no canto inferior direito. Você agora a "tendência" nos dados é uma tendência de variabilidade e não de nível. Embora o gráfico do scree esteja longe de ser bom - o maior valor próprio não predomina mais -, no entanto, o primeiro vetor próprio faz um bom trabalho ao traçar essa tendência.

#
# 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"
}
whuber
fonte
Isso faz todo o sentido de por que "o primeiro vetor próprio é proporcional à tendência" e era o que eu esperava antes dos resultados da análise. No entanto, o que Stanimivroc e eu estamos vendo é que o primeiro vetor próprio é proporcional ao DERIVATIVO (ou primeira diferença) da tendência ... e não à própria tendência.
1913 paul paul j
Sim - e o que você acha que está vendo depois de realizar a centralização média?
whuber
Apenas os dados subjacentes centralizados em torno de 0 ... aqui está um exemplo bidimensional . No meu caso, são 7 dimensões (eixos) em vez de duas. A forma / tendência dos dados não muda com a centralização da média ... apenas é centralizada para ajudar a garantir que o PCA produza resultados significativos.
21136 paul j j
2
@paulj Obrigado por postar os dados. Não consigo reproduzir sua figura. Quando faço a centralização média e depois o PCA (SVD), recebo o PC1 de sinal constante (e quase monotonicamente aumentando, semelhante à sua "tendência" e ao de whuber's ), como eu esperava. x
Ameba
1
@amoeba - obrigado ... você está correto. Eu descobri que meu código estava incorretamente usando a transposição da matriz de vetor próprio ao plotar resultados ( excel_walkthrough ). Parece que é apenas uma coincidência a relação de transposição / primeira derivada existir. Mais uma vez obrigado.
1913 paul paul j
0

A derivada dos dados (~ primeira diferença) remove as dependências pontuais nos dados que são devidas à não-estacionariedade (cf. ARIMA). O que você recupera é aproximadamente o sinal estacionário estável, que eu acho que o SVD está se recuperando.

LE Rogerson
fonte
1
Não vejo como isso responde à pergunta sobre a semelhança de PC1 e a derivada da média.
Ameba
Obrigado a ambos por suas respostas. Também concordo com @amoeba ... Entendo que a derivada (ou primeira diferença, como você disse) ajuda a tornar os dados estacionários, mas por que essa primeira diferença equivale essencialmente ao primeiro componente principal desta configuração?
1913 paul paul j
Eu também não tenho uma intuição tão forte sobre o porquê disso. Talvez valha a pena executar algumas simulações para ver se esse é o caso empiricamente, mas não tenho certeza se é analiticamente transparente.
precisa
1
Obrigado @LERogerson ... sim, fiz algumas simulações e o resultado parece ser válido. O artigo de Stanimirovic que publiquei acima tem as mesmas descobertas e oferece uma explicação complexa de álgebra linear, mas está um pouco além do meu alcance / não é muito intuitivo.
Paul J
@paulj Para ser sincero, não entendo bem o exemplo dado em seu post. Se eu olhar para a Figura 1 e imaginar o que acontece após a centralização média, a linha tracejada preta deve estar no zero constante e a maioria das séries temporais deve estar inteiramente acima ou abaixo de zero. Isso sugere que o PC1 deve ter sinal constante, mas o PC1 mostrado na Figura 2 altera o sinal várias vezes. Isto é estranho. Deseja adicionar seus dados à sua pergunta?
Ameba