Lidar com a multicolinearidade

12

Aprendi que, usando o vif()método de carpacote, podemos calcular o grau de multicolinearidade das entradas em um modelo. Na wikipedia , se o vifvalor for maior que 5então, podemos considerar que a entrada está sofrendo de um problema de multicolinearidade. Por exemplo, desenvolvi um modelo de regressão linear usando o lm()método e vif()fornece o seguinte. Como podemos ver, as entradas ub, lbe tbestá sofrendo de multicolinearidade.

 vif(lrmodel)
     tb        ub        lb          ma     ua        mb         sa     sb 
 7.929757 50.406318 30.826721  1.178124  1.891218  1.364020  2.113797  2.357946

Para evitar o problema da multicolinearidade e, assim, tornar meu modelo mais robusto, tomei a interação entre ube lb, e agora a tabela vif do novo modelo é a seguinte:

   tb     ub:lb      ma       mb      sa        sb     ua
1.763331 1.407963 1.178124 1.327287 2.113797 1.860894 1.891218

Não há muita diferença nos R^2valores e também não há muita diferença nos erros dos testes de CV únicos, nos dois casos acima.

Minhas perguntas são:

  1. É bom evitar o problema da multicolinearidade tomando a interação como mostrado acima?

  2. Existe alguma maneira melhor de apresentar o problema da multicolinearidade em comparação com os resultados do método vif acima.

Por favor me forneça suas sugestões.

Obrigado.

samarasa
fonte
O seu modelo de regressão log-log (interação como restrição está de acordo com eles)? Em wiki há um artigo mais completo sobre multicolinearidade problema en.wikipedia.org/wiki/Multicollinearity Também sugiro para explorar a tag multicollinearity neste site, parece ser uma pergunta freqüente.
Dmitrij Celov
@Dmitrij Celov: Obrigado. Não, meu modelo é regressão linear simples, sem logs ... #
273

Respostas:

10

Você parece incluir o termo de interação ub:lb, mas não ube lbeles mesmos como preditores separados. Isso violaria o chamado "princípio da marginalidade", que afirma que termos de ordem superior devem incluir apenas variáveis ​​presentes em termos de ordem inferior ( Wikipedia, para começar ). Efetivamente, agora você está incluindo um preditor que é apenas o produto dos elementos ube de lb.

é apenas 1VIFj ondeR 2 j é oR2valor quando você executa uma regressão com o seu variável de previsão originaisjcomo critério previsto por todos os preditores restantes (é também oj-ésimo elemento diagonal deR - 1 x , o inverso da matriz de correlação dos preditores). A VIF-valor de 50 indica, portanto, que você obtenha umR2de 0,98, quando a previsãocom os outros preditores, indicando queé quase completamente redundante (o mesmo para,R2de 0,97).11Rj2Rj2R2jjRx1R2ubublbR2

Eu começaria a fazer todas as correlações entre pares entre preditores e executaria as regressões mencionadas acima para ver quais variáveis ​​predizem ube lbpara ver se a redundância é facilmente explicada. Nesse caso, você pode remover os preditores redundantes. Você também pode examinar a regressão do cume ( lm.ridge()do pacoteMASS em R).

Os diagnósticos de multicolinearidade mais avançados usam a estrutura de valor próprio de onde X é a matriz de design da regressão (ou seja, todos os preditores como vetores de coluna). A condição κ é XtXXκ ondeλmumXeλminsão maiores e menores (0) valores próprios deXtX. Em R, você pode usar, onde omodelo normalmente usa as variáveis ​​padronizadas.λmaxλminλmaxλmin0XtXkappa(lm(<formula>))lm()

Geometricamente, fornece uma idéia sobre a forma da nuvem de dados formada pelos preditores. Com 2 preditores, o gráfico de dispersão pode parecer uma elipse com 2 eixos principais. κκκ então diz como a elipse é "plana", ou seja, é uma medida da razão entre o comprimento do maior eixo e o menor do eixo principal. Com três preditores, você pode ter a forma de charuto e três eixos principais. Quanto mais plana sua nuvem de dados estiver em alguma direção, mais redundantes serão as variáveis ​​quando consideradas em conjunto.

κκvif(lm(y ~ x1 + x2))vif(lm(scale(y) ~ scale(x1) + scale(x2)))kappa(lm(y ~ x1 + x2))kappa(lm(scale(y) ~ scale(x1) + scale(x2)))

caracal
fonte
ub lbalogub+aloglb=alogublbublb
@Dmitrij: Não, ub + lb + sb = 100.
samarasa
Existe alguma representação gráfica agradável para multicolinearidade? Por favor, sugira-me se existe algum método em R para thi.
samarasa
2
pairs()scatterplot3dκ2perturb
1

Você também deve considerar o valor P durante a consideração da variável.

  1. Se o valor P for muito baixo (p <0,05) e o VIF for alto (> 5), talvez seja, você deve considerar outras variáveis ​​insignificantes. E reconstrua seu modelo.
  2. Se você tiver valor P e VIF ambos altos, essa variável será insignificante.
Manish Kumar
fonte