Aprendi que, usando o vif()
método de car
pacote, podemos calcular o grau de multicolinearidade das entradas em um modelo. Na wikipedia , se o vif
valor for maior que 5
entã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
, lb
e tb
está 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 ub
e 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^2
valores e também não há muita diferença nos erros dos testes de CV únicos, nos dois casos acima.
Minhas perguntas são:
É bom evitar o problema da multicolinearidade tomando a interação como mostrado acima?
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.
fonte
Respostas:
Você parece incluir o termo de interação
ub:lb
, mas nãoub
elb
eles 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 elementosub
e delb
.é 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).11−R2j R2j R2 j j R−1x R2 R2
ub
ub
lb
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
ub
elb
para 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 κ é √XtX X κ 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 λmin ≠0 XtX
kappa(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)))
fonte
ub
lb
pairs()
scatterplot3d
perturb
Você também deve considerar o valor P durante a consideração da variável.
fonte