Multicolinearidade e VIF
A multicolinearidade ocorre quando dois ou mais preditores em uma regressão múltipla são altamente correlacionados linearmente entre si. Ela não enviesa as previsões nem prejudica o ajuste geral do modelo, mas infla os erros padrão dos coeficientes afetados, tornando os coeficientes individuais instáveis e seus testes de significância não confiáveis. Este post se baseia nas breves menções em regressão linear múltipla e diagnósticos de regressão.
Por que a multicolinearidade é um problema
Com preditores correlacionados, a regressão não consegue separar claramente o efeito individual de cada preditor sobre a resposta. Pequenas mudanças nos dados podem fazer os coeficientes estimados oscilarem violentamente, os erros padrão explodirem, e até os sinais dos coeficientes podem se inverter para algo implausível, mesmo que as previsões gerais do modelo permaneçam precisas. Os valores ajustados \(\hat y\) continuam confiáveis; são os coeficientes individuais, e qualquer história que você tente contar a partir deles, que se tornam não confiáveis.
O Fator de Inflação da Variância
Para o preditor \(j\), regrida-o sobre todos os OUTROS preditores e tome o \(R_j^2\) resultante:
\[VIF_j = \frac{1}{1 - R_j^2}\]
Se o preditor \(j\) é completamente não correlacionado com os outros, \(R_j^2 = 0\) e \(VIF_j = 1\): nenhuma inflação. Conforme \(R_j^2 \to 1\) (o preditor \(j\) é quase perfeitamente explicado por uma combinação linear dos outros), \(VIF_j \to \infty\).
A interpretação direta: \(VIF_j\) indica que a variância do coeficiente é \(VIF_j\) vezes maior do que seria se o preditor \(j\) não fosse correlacionado com os outros preditores. De forma equivalente, o erro padrão é inflado por um fator de \(\sqrt{VIF_j}\).
Exemplo resolvido: prevendo salário
A forma mais clara de ver a multicolinearidade é construir uma regressão em que os preditores sejam deliberadamente emaranhados entre si e observar o que acontece com os coeficientes.
Um conjunto de dados de \(n=50\) funcionários prevê o salário a partir de três preditores deliberadamente correlacionados: anos de experiência, idade e anos desde a graduação. Nesta amostra simulada, a idade e os anos desde a graduação se movem quase em sincronia com a experiência.
Matriz de correlação entre os preditores:
| experience | age | grad_years | |
|---|---|---|---|
| experience | 1,000 | 0,975 | 0,968 |
| age | 0,975 | 1,000 | 0,995 |
| grad_years | 0,968 | 0,995 | 1,000 |
As três correlações entre pares estão acima de 0,96, um sinal de alerta por si só, mesmo antes de calcular o VIF.
Coeficientes de regressão de lm(salary ~ experience + age + grad_years):
| Preditor | Estimativa | Erro padrão | Valor t | valor-p |
|---|---|---|---|---|
| Intercepto | 15561 | 9908 | 1,57 | 0,123 |
| experience | 1246 | 192 | 6,50 | < 0,001 |
| age | 772 | 453 | 1,71 | 0,095 |
| grad_years | -276 | 418 | -0,66 | 0,512 |
O ajuste geral é excelente: \(R^2 = 0{,}974\), \(F(3,46) = 576\), \(p < 0{,}001\). Ainda assim, apenas experience é claramente significativo; age está no limite e grad_years não é significativo de forma alguma, e seu coeficiente até tem o sinal errado (negativo, implicando que mais anos desde a graduação de alguma forma reduz o salário previsto, o que não faz sentido substantivo). Essa é a assinatura clássica da multicolinearidade: um modelo geral forte e significativo, mas com coeficientes individuais instáveis e difíceis de confiar.
Valores de VIF:
| Preditor | VIF |
|---|---|
| experience | 20,6 |
| age | 119,7 |
| grad_years | 94,1 |
Os três estão muito acima do limiar de alerta comum de 5. O VIF de age, 119,7, significa que a variância de seu coeficiente é cerca de 120 vezes maior, e seu erro padrão cerca de \(\sqrt{119{,}7} \approx 10{,}9\) vezes maior, do que seria se age não fosse correlacionada com experience e grad_years.

Detectando a multicolinearidade
Além de calcular o VIF diretamente, procure por:
- Uma matriz de correlação ou mapa de calor de correlação dos preditores, como primeira verificação rápida, exatamente como mostrado acima.
- Um \(R^2\) geral alto ou um teste F significativo combinado com poucos ou nenhum coeficiente individualmente significativo, um sinal de alerta clássico, exatamente o que aconteceu no exemplo acima.
- Coeficientes com sinal ou magnitude implausíveis, como visto com
grad_yearsacima.
⚠️ A multicolinearidade não enviesa previsões nem prejudica o R-quadrado
A multicolinearidade é puramente um problema de interpretação de coeficientes, não um problema de previsão. Se o único objetivo é prever \(\hat y\), a multicolinearidade muitas vezes pode ser ignorada com segurança: os valores ajustados e o \(R^2\) permanecem confiáveis mesmo com VIFs nas centenas. Ela só se torna um problema real quando você precisa interpretar um coeficiente individual, por exemplo “quanto o salário aumenta por ano de idade, mantendo fixos a experiência e os anos desde a graduação?”, uma pergunta que a multicolinearidade torna essencialmente impossível de responder a partir desses dados, já que os preditores quase não variam de forma independente entre si na amostra.
Corrigindo a multicolinearidade
- Remova um dos preditores altamente correlacionados, mantendo o que for mais diretamente relevante ou medido de forma mais confiável. Aqui,
experienceé provavelmente o mais diretamente significativo e o menos redundante dos três. - Combine preditores correlacionados em um único índice, ou use redução de dimensionalidade, como a regressão sobre componentes principais, veja a análise de componentes principais.
- Use regularização: a regressão ridge trata especialmente bem os preditores correlacionados ao encolher os coeficientes, veja a regressão ridge.
- Colete mais dados, ou dados com mais variação independente nos preditores, quando viável.
Executando em R
O fluxo completo, do ajuste do modelo à verificação do VIF e da matriz de correlação bruta, cabe em poucas linhas:
fit <- lm(salary ~ experience + age + grad_years)
summary(fit)
library(car)
vif(fit)
# Correlation matrix of predictors as a quick first check
cor(data.frame(experience, age, grad_years))
💡 Limiares de referência do VIF
VIF = 1 significa nenhuma correlação com outros preditores. VIF entre 1 e 5 geralmente está bem. VIF entre 5 e 10 merece uma análise mais atenta. VIF acima de 10 (alguns profissionais usam um limiar mais estrito de 5) é um forte sinal de multicolinearidade problemática que provavelmente precisa de uma das correções acima. O VIF não tem limite superior. Ele só detecta relações LINEARES entre preditores, e tecnicamente verifica cada preditor contra uma combinação linear de todos os outros, não apenas a correlação par a par, por isso pode detectar multicolinearidade que uma simples matriz de correlação par a par deixaria passar.