A padronização de variáveis ​​independentes reduz a colinearidade?

12

Encontrei um texto muito bom sobre Bayes / MCMC. A TI sugere que uma padronização de suas variáveis ​​independentes tornará um algoritmo MCMC (Metropolis) mais eficiente, mas também poderá reduzir a (multi) colinearidade. Isso pode ser verdade? Isso é algo que eu deveria fazer como padrão (desculpe).

Kruschke 2011, Doing Bayesian Data Analysis. (AP)

edit: por exemplo

     > data(longley)
     > cor.test(longley$Unemployed, longley$Armed.Forces)

Pearson's product-moment correlation

     data:  longley$Unemployed and longley$Armed.Forces 
     t = -0.6745, df = 14, p-value = 0.5109
     alternative hypothesis: true correlation is not equal to 0 
     95 percent confidence interval:
     -0.6187113  0.3489766 
     sample estimates:
      cor 
     -0.1774206 

     > standardise <- function(x) {(x-mean(x))/sd(x)}
     > cor.test(standardise(longley$Unemployed), standardise(longley$Armed.Forces))

Pearson's product-moment correlation

     data:  standardise(longley$Unemployed) and standardise(longley$Armed.Forces) 
     t = -0.6745, df = 14, p-value = 0.5109
      alternative hypothesis: true correlation is not equal to 0 
     95 percent confidence interval:
      -0.6187113  0.3489766 
      sample estimates:
       cor 
     -0.1774206 

Isso não reduziu a correlação ou, portanto, a dependência linear, embora limitada, de vetores.

O que está acontecendo?

R

Rosser
fonte

Respostas:

19

Não altera a colinearidade entre os principais efeitos. A escala também não. Qualquer transformação linear não fará isso. O que muda é a correlação entre os principais efeitos e suas interações. Mesmo que A e B sejam independentes com uma correlação de 0, a correlação entre A e A: B dependerá dos fatores de escala.

Tente o seguinte em um console R. Observe que rnormapenas gera amostras aleatórias a partir de uma distribuição normal com valores populacionais definidos, neste caso 50 amostras. A scalefunção padroniza a amostra para uma média de 0 e DP de 1.

set.seed(1) # the samples will be controlled by setting the seed - you can try others
a <- rnorm(50, mean = 0, sd = 1)
b <- rnorm(50, mean = 0, sd = 1)
mean(a); mean(b)
# [1] 0.1004483 # not the population mean, just a sample
# [1] 0.1173265
cor(a ,b)
# [1] -0.03908718

A correlação incidental é próxima de 0 para essas amostras independentes. Agora normalize com média de 0 e DP de 1.

a <- scale( a )
b <- scale( b )
cor(a, b)
# [1,] -0.03908718

Novamente, esse é exatamente o mesmo valor, embora a média seja 0 e DP = 1 para ambos ae b.

cor(a, a*b)
# [1,] -0.01038144

Também é muito próximo de 0. (a * b pode ser considerado o termo de interação)

No entanto, geralmente o DP e a média dos preditores diferem bastante, então vamos mudar b. Em vez de coletar uma nova amostra, redimensionarei o original bpara ter uma média de 5 e DP de 2.

b <- b * 2 + 5
cor(a, b)
 # [1] -0.03908718

Novamente, essa correlação familiar que vimos o tempo todo. A escala não tem impacto na correlação entre ae b. Mas!!

cor(a, a*b)
# [1,] 0.9290406

Agora isso terá uma correlação substancial que você pode fazer desaparecendo, centralizando e / ou padronizando. Eu geralmente vou apenas com a centralização.

John
fonte
1
+1 para resposta abrangente e compreensível (com código!)
Peter Flom - Restabelece Monica
1
Também é útil se você quiser incluir, digamos, um termo quadrático.
Aniko8 /
Absolutamente Aniko
John
1
Melhor resposta - obrigado por isso. Eu posso ter cometido uma injustiça no livro também, mas talvez tenha valido a pena expor minha ignorância.
Rosser 10/10
7

Como outros já mencionaram, a padronização não tem nada a ver com colinearidade.

Colinearidade perfeita

XμXσX

ZX=X-μXσX

μZ=0 0σZ=1E(X+uma)=E(X)+umaE(bX)=bE(X)Vumar(X+uma)=Vumar(X)Vumar(bX)=b2Vumar(X)Xuma,b

XYλ0 0λ1

Y=λ0 0+λ1X

XμXσXYμY=λ0 0+λ1μXσY=λ1σXZX=ZX

Correlação

É claro que a colinearidade perfeita não é algo que veríamos com frequência, mas variáveis ​​fortemente correlacionadas também podem ser um problema (e são espécies relacionadas à colinearidade). Então, a padronização afeta a correlação? Compare os seguintes gráficos que mostram duas variáveis ​​correlacionadas em dois gráficos antes e depois do dimensionamento: insira a descrição da imagem aqui

Você pode ver a diferença? Como você pode ver, removi propositalmente os rótulos dos eixos. Para convencê-lo de que não estou trapaceando, veja os gráficos com rótulos adicionados:

insira a descrição da imagem aqui

Matematicamente falando, se correlação é

Corr(X,Y)=Cov(X,Y)Vumar(X)Vumar(Y)

então com variáveis ​​colineares temos

Corr(X,Y)=E[(X-μX)(Y-μY)]σXσY=E[(X-μX)(λ0 0+λ1X-λ0 0-λ1μX)]σXλ1σX=E[(X-μX)(λ1X-λ1μX)]σXλ1σX=E[(X-μX)λ1(X-μX)]σXλ1σX=λ1E[(X-μX)(X-μX)]σXλ1σX=E[(X-μX)(X-μX)]σXσX

Cov(X,X)=Vumar(X)

=Cov(X,X)σX2=Vumar(X)Vumar(X)=1

Enquanto com variáveis ​​padronizadas

Corr(ZX,ZY)=E[(ZX-0 0)(ZY-0 0)]1×1=Cov(ZX,ZY)=Vumar(ZX)=1

ZX=ZY

Finalmente, observe que o que Kruschke está falando é que a padronização das variáveis facilita a vida do amostrador de Gibbs e leva à redução da correlação entre interceptação e inclinação no modelo de regressão que ele apresenta. Ele não diz que a padronização de variáveis ​​reduz a colinearidade entre as variáveis.

Tim
fonte
0

A padronização não afeta a correlação entre variáveis. Eles permanecem exatamente os mesmos. A correlação captura a sincronização da direção das variáveis. Não há nada na padronização que mude a direção das variáveis.

Se você deseja eliminar a multicolinearidade entre suas variáveis, sugiro usar a Análise de Componentes Principais (PCA). Como você sabe, o PCA é muito eficaz na eliminação do problema da multicolinearidade. Por outro lado, o PCA torna as variáveis ​​combinadas (componentes principais P1, P2, etc ...) bastante opacas. Um modelo de PCA é sempre muito mais difícil de explicar do que o modelo multivariado mais tradicional.

Sympa
fonte
Uma alternativa moderna, geralmente melhor, é a regularização.
Kjetil b halvorsen
Testei a seleção de variáveis ​​entre algoritmos stepwise padrão e o LASSO. E o LASSO chega em um segundo muito distante. O LASSO penaliza influências variáveis, pode selecionar variáveis ​​fracas sobre variáveis ​​mais fortes. Pode até causar alterações nos sinais das variáveis. Além disso, divide toda a estrutura de significância estatística, intervalos de confiança e intervalos de previsão. O LASSO às vezes pode funcionar. Mas, observe com muito cuidado o gráfico MSEs vs. Lambda e os coeficientes vs. Lambda. É aí que você pode observar visualmente se o seu modelo LASSO funcionou.
Sympa
0

Não reduz a colinearidade, pode reduzir o VIF. Geralmente usamos o VIF como indicador de preocupações com colinearidade.

Fonte: http://blog.minitab.com/blog/adventures-in-statistics-2/what-are-the-effects-of-multicollinearity-and-when-can-i-ignore-them

Bill Chen
fonte
2
Bem vindo ao site. No momento, isso é mais um comentário do que uma resposta. Você pode expandi-lo, talvez dando um resumo das informações no link, ou podemos convertê-lo em um comentário para você. Além disso, minha leitura da postagem vinculada não é exatamente a padronização que reduz o VIF sem reduzir a colinearidade. O exemplo deles é muito específico e mais matizado do que isso.
gung - Restabelece Monica
-3

A padronização é uma maneira comum de reduzir a colinearidade. (Você deve poder verificar muito rapidamente se funciona, testando-o em alguns pares de variáveis.) Se você faz isso rotineiramente, depende do grau de colinearidade de um problema em suas análises.

Edit: Eu vejo que estava errado. O que a padronização faz, no entanto, é reduzir a colinearidade com os termos do produto (termos de interação).

rolando2
fonte
Hmm, você poderia explicar? A padronização apenas altera a média e a variância de uma variável aleatória (para 0 e 1, respectivamente). Isso não deve alterar a correlação entre duas variáveis. Vejo como a padronização pode melhorar a eficiência computacional, mas não como reduz a multicolinearidade.
Charlie
Não, estou perdido ... como isso pode mudar a dependência linear dos elementos da coluna na matriz de preditores. (Não que o collinearity é sobre é?)
rosser
Embora não seja correto que a padronização altere a colinearidade em um sentido puramente matemático, ela pode melhorar a estabilidade numérica dos algoritmos para resolver sistemas lineares. Essa pode ser a fonte da confusão nesta resposta.
whuber
A padronização simplesmente não reduz a multicolinearidade. Normalmente não altera a correlação entre variáveis.
Sympa 10/10