Eu sempre uso lm()
em R para executar regressão linear de em . Essa função retorna um coeficiente tal que
Hoje eu aprendi sobre o total de mínimos quadrados e essa princomp()
função (análise de componentes principais, PCA) pode ser usada para realizá-lo. Deve ser bom para mim (mais preciso). Eu fiz alguns testes usando princomp()
, como:
r <- princomp( ~ x + y)
Meu problema é: como interpretar seus resultados? Como posso obter o coeficiente de regressão? Por "coeficiente", quero dizer o número que eu tenho que usar para multiplicar o valor para fornecer um número próximo de .x y
Respostas:
Mínimos quadrados comuns vs. mínimos quadrados totais
Vamos primeiro considerar o caso mais simples de apenas uma variável preditora (independente) . Para simplificar, deixe x e y centralizados, ou seja, a interceptação é sempre zero. A diferença entre a regressão OLS padrão e a regressão TLS "ortogonal" é mostrada claramente nesta figura (adaptada por mim) da resposta mais popular no segmento mais popular no PCA:x x y
OLS ajusta a equaçãoy=βx minimizando distâncias quadradas entre os valores observados y e valores preditos y . TLS se encaixa na mesma equação, minimizando distâncias ao quadrado entre ( x , yy^ e sua projeção na linha. Neste caso mais simples, a linha TLS é simplesmente o primeiro componente principal dos dados 2D. Para encontrar β , do APC em ( x , y ) pontos, isto é, a construção de 2 × 2 covariância matriz Σ e encontrar o seu primeiro vector próprio v =(x,y) β (x,y) 2×2 Σ ; então β = v y / v x .v=(vx,vy) β=vy/vx
No Matlab:
Em R:
A propósito, esta vai produzir inclinação correcta, mesmo quex e y não foram centrado (porque funções internas PCA executar automaticamente centragem). Para recuperar a interceptação, calcule .β0=y¯−βx¯
OLS vs. TLS, regressão múltipla
Dada uma variável dependente e muitas variáveis independentes x i (novamente, todas centradas na simplicidade), a regressão se ajusta a uma equação y = β 1 x 1 + … + β p x p . O OLS faz o ajuste minimizando os erros ao quadrado entre os valores observados de y e os valores previstosy xi
Observe que não há mais "linha de regressão"! A equação acima especifica um hiperplano : é um plano 2D se houver dois preditores, hiperplano 3D se houver três preditores, etc. Portanto, a solução acima não funciona: não podemos obter a solução TLS usando apenas o primeiro PC (que é uma linha). Ainda, a solução pode ser facilmente obtida via PCA.
Como antes, o PCA é executado em pontos . Isto produz p + 1 vectores próprios em colunas de V . As primeiras p vectores próprios definir uma p -dimensional hiperplana H que é necessário; o último (número p + 1 ) autovetor(x,y) p+1 V p p H p+1 é ortogonal a ele. A questão é como transformar a base de H dado pelos primeirospvectores próprios para ospcoeficientes.vp+1 H p β
Observe que, se definir para todos os i ≠ k e só x k = 1 , então y = p k , ou seja, o vector ( 0 , ... , 1 , ... , β k ) ∈ H reside no hiperplana H . Por outro lado, sabemos que vxi=0 i≠k xk=1 y^=βk
No Matlab:
Em R:
Mais uma vez, isto irá proporcionar pistas correctas, mesmo que e y não foram centrado (porque funções internas PCA executar automaticamente centragem). Para recuperar a interceptação, calcule β 0 = ˉ y - ˉ x β .x y β0=y¯−x¯β
Como verificação de integridade, observe que esta solução coincide com a anterior no caso de apenas um único preditor . De fato, o espaço ( x , y ) é 2D e, portanto, dado que o primeiro vetor próprio PCA é ortogonal ao segundo (último), v ( 1 ) y / v ( 1 ) x = - v ( 2 ) x / v ( 2 ) y .x (x,y) v(1)y/v(1)x=−v(2)x/v(2)y
Solução de formulário fechado para TLS
Surpreendentemente, verifica-se que existe uma equação de forma fechada para . O argumento abaixo é retirado do livro de Sabine van Huffel "O total de mínimos quadrados" (seção 2.3.2).β
Seja e y as matrizes de dados centralizadas. O último vetor próprio PCAX y é um vetor próprio da matriz de covariância de[ Xvp+1 com um valor próprio σ 2 p + 1 . Se é um vetor próprio, então o é - v p +[Xy] σ2p+1 . Escrever a equação eigenvector:
( X ⊤ X X ⊤ y y ⊤ X y ⊤ y ) ( β - 1 ) = σ 2 p + 1 ( β - 1 ) ,
e calcular o produto à esquerda, nós imediatamente obter esse β T L S = ( X ⊤ X - σ−vp+1/vp+1=(β−1)⊤
Regressão múltipla multivariada
A mesma fórmula pode ser generalizada para o caso multivariado, mas mesmo para definir o que o TLS multivariado faz, exigiria alguma álgebra. Veja a Wikipedia sobre TLS . A regressão OLS multivariada é equivalente a várias regressões OLS univariadas para cada variável dependente, mas, no caso do TLS, não é assim.
fonte
Com base na ingênua implementação GNU Octave encontrada aqui , algo como isto pode (grão de sal, é tarde) funcionar.
fonte
princomp
está executando a análise de componentes principais em vez da regressão total de mínimos quadrados. Até onde eu sei, não há função R nem pacote que faça TLS; no máximo, há regressão de Deming no MethComp .No entanto, trate isso como uma sugestão de que provavelmente não vale a pena.
fonte