curso
Multicolinearidade na regressão: Um guia para cientistas de dados
Um dos principais desafios na criação de um modelo de regressão eficaz é o que chamamos de multicolinearidade. A multicolinearidade surge quando duas ou mais variáveis independentes em um modelo são altamente correlacionadas, levando a inferências estatísticas não confiáveis. Isso pode ser um grande problema se você precisar interpretar com precisão os coeficientes de regressão ou se precisar testar sua confiança neles.
Aqui, orientarei você sobre os principais conceitos de multicolinearidade, como detectá-la e também como lidar com ela. Se você não tem experiência com regressão linear, leia nosso tutorial, Simple Linear Regression: Everything You Need to Know como ponto de partida, mas não deixe de consultar Multiple Linear Regression in R: Tutorial With Examples,, que ensina sobre regressão com mais de uma variável independente, que é o local onde a multicolinearidade pode aparecer.
O que é multicolinearidade?
Criar modelos precisos de aprendizado de máquina é uma tarefa desafiadora porque há muitos fatores em jogo. Os dados devem ter qualidade, volume, etc. decentes. Em seguida, você precisa criar o tipo certo de algoritmos de aprendizado de máquina. No entanto, entre os dois, há um estágio de preparação de dados, que não é tão glamoroso quanto a criação de modelos preditivos, mas, com certeza, esse estágio costuma ser o fator decisivo no processo do ciclo de vida do aprendizado de máquina.
Durante a preparação dos dados, tomamos cuidado com a multicolinearidade, que ocorre quando as variáveis independentes em um modelo de regressão estão correlacionadas, o que significa que não são independentes umas das outras. Isso não é um bom sinal para o modelo, pois a multicolinearidade geralmente leva à distorção da estimativa dos coeficientes de regressão, inflando os erros padrão e, portanto, reduzindo o poder estatístico do modelo. Isso também dificulta a determinação da importância de variáveis individuais no modelo.
Tipos de multicolinearidade
A multicolinearidade pode assumir duas formas principais, cada uma afetando a forma como as variáveis independentes em um modelo de regressão interagem e a confiabilidade das estimativas resultantes.
Multicolinearidade perfeita
A multicolinearidade perfeita ocorre quando uma das variáveis independentes em um modelo de regressão pode ser prevista com exatidão usando uma ou mais das outras variáveis independentes. Isso significa que há um relacionamento perfeito entre eles.
Imagine que você tenha duas variáveis, X1
e X2
, e que elas estejam relacionadas com a equação: X1 = 2*X2 + 3
Isso significa basicamente que o modelo de regressão não conseguirá separar os efeitos de X1
e X2
porque elas estão essencialmente contando a mesma história. Em outras palavras, uma variável é uma função linear perfeita da outra.
Multicolinearidade imperfeita
Na multicolinearidade imperfeita, as variáveis são altamente correlacionadas, mas não de forma perfeita, uma a uma, como no caso da multicolinearidade perfeita. As variáveis podem ter uma correlação alta, ou seja, quando uma variável muda, a outra tende a mudar também, mas não é uma previsão exata.
Nessa situação, não é que o modelo não fornecerá os resultados a você. O único problema é que esses resultados podem ser instáveis, o que significa que mesmo pequenas alterações nos dados podem levar a grandes alterações nos coeficientes estimados. Isso torna mais difícil interpretar a importância de cada variável de forma confiável.
Multicolinearidade estrutural
A multicolinearidade estrutural decorre da forma como o modelo foi construído, e não tanto de suas relações naturais. Isso geralmente ocorre quando você inclui termos de interação ou termos polinomiais no seu modelo.
Por exemplo, se você acha que o tamanho do efeito de uma variável aumenta à medida que outra variável aumenta, você pode considerar a adição de um termo de interação. No entanto, o problema é que, se essas variáveis já estiverem um pouco correlacionadas, a adição do termo de interação pode realmente exagerar e levar a problemas de multicolinearidade.
Multicolinearidade na regressão
A multicolinearidade afeta a análise de regressão ao criar problemas quando você está tentando estimar a relação entre as variáveis independentes (os preditores) e a variável dependente (o resultado). Especificamente, a multicolinearidade aumenta a variação das estimativas do coeficiente, tornando-as sensíveis a pequenas alterações no modelo ou nos dados.
Quando os coeficientes se tornam instáveis, os erros padrão se tornam maiores, o que, por sua vez, pode resultar em valores p insignificantes, mesmo quando as variáveis são realmente importantes. É importante que você saiba que a multicolinearidade não afeta o poder preditivo geral do modelo. No entanto, isso afeta a interpretação do modelo porque nosso modelo terá erros inflados e estimativas instáveis.
Como detectar a multicolinearidade
A detecção da multicolinearidade requer várias ferramentas de diagnóstico. Vamos explorá-los usando um subconjunto do conjunto de dados retirado da Competição de Preços de Habitação no Kaggle. Você pode encontrar o subconjunto de dados que usaremos neste repositório do GitHub. Vamos carregar e explorar o conjunto de dados com o código abaixo:
import pandas as pd
import numpy as np
import seaborn as sns
from statsmodels.stats.outliers_influence import variance_inflation_factor
df = pd.read_csv('mc_df.csv')
df.head()
Matriz de correlação
Uma técnica amplamente usada para detectar a multicolinearidade é por meio de uma matriz de correlação que ajuda a visualizar a força das relações entre as variáveis. A matriz mostra os coeficientes de correlação de pares entre as variáveis, o que indica a intensidade com que elas estão linearmente relacionadas (os valores variam de -1 a 1). Uma regra geral que uso é que os valores de correlação absoluta acima de 0,6 indicam forte multicolinearidade.
Como a multicolinearidade foi detectada para variáveis independentes, precisamos remover a variável-alvo, SalePrice
, do nosso conjunto de dados. Isso é feito com o código abaixo.
multi_c_df = multi_c_df.drop('SalePrice', axis=1)
Agora você está pronto para a análise de correlação. O código abaixo calcula a matriz de correlação para o DataFrame multi_c_df
. Depois de calcular as correlações, o código usa a função heatmap()
da Seaborn para representar visualmente a matriz de correlação como um mapa de calor. O argumento annot=True
adiciona os valores de correlação numérica diretamente ao mapa de calor .
# Correlation matrix
correlation_matrix = multi_c_df.corr()
# Set up the matplotlib figure
plt.figure(figsize=(10, 6))
# Create a heatmap for the correlation matrix
sns.heatmap(correlation_matrix, annot=True, cmap="coolwarm", fmt=".2f", linewidths=0.5)
# Title for the heatmap
plt.title("Correlation Heatmap", fontsize=16)
# Show the heatmap
plt.show()
Matriz de correlação representada por mapa de calor. Imagem do autor
O resultado acima mostra que há correlação entre algumas das variáveis independentes. Por exemplo, BedroomAbvGr
e TotRmsAbvGrd
têm uma correlação relativamente alta (0,68). Além disso, GarageCars
e OverallQual
têm uma correlação de 0,60, indicando que também estão relacionados. Portanto, há variáveis independentes que têm uma correlação decente, sugerindo a presença de multicolinearidade para algumas, se não todas, dessas variáveis.
Neste momento, é muito importante observar que a multicolinearidade pode surgir mesmo quando não há correlação óbvia entre as variáveis, porque uma variável pode estar correlacionada com uma combinação linear de mais de uma outra variável. Por isso, é importante considerar também o fator de inflação da variância, que abordaremos a seguir.
Fator de inflação de variância (VIF)
O fator de inflação de variância (VIF) é uma das técnicas mais comuns para detectar a multicolinearidade. Em termos simples, ele fornece um valor numérico que indica o quanto a variação de um coeficiente de regressão está inflada devido à multicolinearidade. Um valor de VIF maior que 5 indica multicolinearidade moderada, enquanto valores acima de 10 sugerem multicolinearidade grave.
Vamos explorar isso em nosso conjunto de dados. Agora, calcularemos o valor VIF para cada uma dessas variáveis independentes. Essa tarefa é realizada no código abaixo com afunção variance_inflation_factor()
.
# Calculate VIF for each numerical feature
vif_data = pd.DataFrame()
vif_data["feature"] = multi_c_df.columns
# Calculate VIF and round to 4 decimal places
vif_data["VIF"] = [round(variance_inflation_factor(multi_c_df.values, i), 4) for i in range(df.shape[1])]
# Sort VIF values in descending order
vif_data = vif_data.sort_values(by="VIF", ascending=False)
# Display the VIF DataFrame
print(vif_data)
Valor VIF para as variáveis numéricas. Imagem do autor
Você pode ver que há diversas variáveis com um valor VIF maior que 10, indicando a presença de multicolinearidade.
Índice de condições
O índice de condição é outra ferramenta de diagnóstico para detectar a multicolinearidade, com valores acima de 10 indicando multicolinearidade moderada e valores acima de 30 indicando multicolinearidade grave. O índice de condição funciona verificando o quanto as variáveis independentes estão relacionadas entre si, examinando as relações entre seus valores próprios.
O código abaixo calcula o índice de condição para verificar se há multicolinearidade em um modelo de regressão. Primeiro, ele calcula os valores próprios da matriz de correlação (que mostra as relações entre as variáveis). O índice de condição é então calculado dividindo-se o maior valor próprio pelo menor.
from numpy.linalg import eigvals
# Calculate the condition index
eigenvalues = eigvals(correlation_matrix)
condition_index = max(eigenvalues) / min(eigenvalues)
print(f'Condition Index: {condition_index}')
Em nosso caso, o valor do índice de condição é 13, o que indica multicolinearidade moderada no modelo. Embora esse nível de multicolinearidade, de acordo com o índice de condição, não seja grave, ele ainda pode afetar a precisão das estimativas do coeficiente de regressão e dificultar a distinção das contribuições individuais das variáveis correlacionadas. Se você estiver interessado em saber mais sobre valores próprios, leia nosso artigo, Eigenvectors and Eigenvalues: Principais percepções para a ciência de dados.
Como lidar com a multicolinearidade
Para gerenciar com eficácia a multicolinearidade nos modelos de regressão, há várias técnicas que podem ser aplicadas. Esses métodos ajudam a garantir que o modelo permaneça preciso e interpretável, mesmo quando as variáveis independentes estão intimamente relacionadas.
Remoção de preditores redundantes
Uma das maneiras mais simples de lidar com a multicolinearidade é simplesmente remover uma das variáveis altamente correlacionadas, geralmente aquela com o maior valor de VIF. Isso é eficaz, mas a desvantagem é que pode resultar na perda de informações úteis se não for feito com cuidado.
Combinação de variáveis
A outra técnica é que, quando duas ou mais variáveis estão altamente correlacionadas, podemos combiná-las em um único preditor usando técnicas como a análise de componentes principais (PCA). Isso reduz a dimensionalidade do modelo e, ao mesmo tempo, retém as informações mais importantes. A principal desvantagem é a perda de interpretabilidade, pois é difícil explicar a ciência e a matemática por trás da PCA para um público não técnico.
Regressão Ridge e Lasso
Para os cientistas de dados, a aplicação de técnicas de regularização com regressão ridge e lasso é outra técnica popular para lidar com o problema de multicolinearidade. Essas técnicas de regularização aplicam penalidades ao modelo de regressão, diminuindo os coeficientes das variáveis correlacionadas e, portanto, atenuando os efeitos da multicolinearidade.
Erros comuns e práticas recomendadas
Ao lidar com a multicolinearidade, há alguns erros comuns que podem levar a um desempenho ruim do modelo. É importante que você esteja ciente desses erros e siga as práticas recomendadas para criar modelos de regressão mais confiáveis.
Interpretação incorreta de valores VIF altos
Quando você vê um fator de inflação de variância (VIF) alto para uma variável, é tentador remover imediatamente essa variável do modelo, supondo que ela esteja causando multicolinearidade. No entanto, isso pode ser um erro, pois mesmo que uma variável tenha um VIF alto, ela ainda pode ser muito importante para prever o resultado. Portanto, se você removê-lo sem verificar sua pontuação de importância, seu modelo poderá ter um desempenho pior. O segredo é avaliar cuidadosamente se a variável é essencial antes de decidir removê-la.
Excesso de confiança nas matrizes de correlação
Uma matriz de correlação é uma técnica útil para identificar a magnitude e a direção da relação entre as variáveis, mas o problema é que ela mostra apenas relações lineares. E quanto aos relacionamentos complexos e não lineares? Infelizmente, isso não será capturado na matriz. Portanto, depender apenas de uma matriz de correlação não dará a você uma visão completa. Por isso, é importante que você use outras métricas, como VIF e índice de condição, para obter uma visão mais completa.
Alternativas para lidar com a multicolinearidade
Além das abordagens tradicionais, há vários métodos avançados também disponíveis para lidar com o problema da multicolinearidade. Algumas dessas técnicas são discutidas a seguir.
Métodos de seleção de recursos
Os métodos automatizados de seleção de recursos, como o RFE (Recursive Feature Elimination, eliminação recursiva de recursos), podem ser uma boa alternativa. Esses métodos analisam a importância de cada preditor e removem automaticamente aqueles que não agregam muito valor. Isso simplifica o processo, facilitando a redução da multicolinearidade sem a necessidade de decidir manualmente quais variáveis remover.
Coleta de mais dados
O aumento do tamanho da amostra pode reduzir a multicolinearidade ao adicionar mais variação ao conjunto de dados, facilitando a distinção entre as contribuições de diferentes preditores. Portanto, outra solução é simplesmente coletar mais dados. Quando o tamanho do conjunto de dados aumenta, ele acrescenta mais variação às variáveis, facilitando a distinção entre os efeitos de diferentes preditores. Isso, por sua vez, ajuda a reduzir o impacto da multicolinearidade.
Conclusão
Compreender e tratar a multicolinearidade é fundamental para a criação de modelos de regressão robustos e interpretáveis. Ao detectar a multicolinearidade usando técnicas como VIF, matrizes de correlação e índice de condição, e resolvê-la com métodos como regressão lasso e ridge ou remover preditores redundantes, você pode garantir resultados de modelos confiáveis e significativos. Sempre verifique se há multicolinearidade em seus modelos de regressão e aplique as soluções adequadas para manter a integridade de suas análises.
Para aprender mais e se atualizar sobre como fazer regressão linear em seu espaço de trabalho favorito, considere explorar as seguintes fontes:
- Essentials of Linear Regression in Python (Fundamentos da regressão linear em Python): Saiba o que formula um problema de regressão e como funciona um algoritmo de regressão linear em Python.
- Regressão linear no Excel: Um guia abrangente para iniciantes: Um guia passo a passo sobre como realizar regressão linear no Excel, interpretar resultados e visualizar dados para obter insights acionáveis.
- Como fazer regressão linear no R: Aprenda a regressão linear, um modelo estatístico que analisa a relação entre variáveis usando o R.
Torne-se um cientista de ML

Profissional experiente em funções de ciência de dados, inteligência artificial, análise e estratégia, com mais de 18 anos de experiência nas áreas de -: Ciência de dados, ML e IA ~ Ciência de dados, machine learning supervisionado e não supervisionado, aprendizagem profunda, modelagem preditiva, processamento de linguagem natural (NLP), modelagem e análise estatística, otimização, estratégia de negócios e análise ~ desenvolvimento e avaliação de modelos de negócios, análise descritiva e diagnóstica, EDA, visualização, análise de causa raiz, análise de sensibilidade e cenário.
Perguntas sobre multicolinearidade
O que é multicolinearidade?
A multicolinearidade ocorre quando duas ou mais variáveis independentes em um modelo de regressão estão altamente correlacionadas.
O que é o fator de inflação de variância (VIF)?
O VIF mede o quanto a variação de um coeficiente de regressão é aumentada devido à multicolinearidade. Um VIF alto significa que uma variável está altamente relacionada a outras, o que pode tornar o modelo instável e menos confiável.
Como a multicolinearidade afeta meu modelo de regressão?
A multicolinearidade aumenta os erros padrão dos coeficientes de regressão, dificultando a identificação de quais variáveis são significativas.
Qual é a diferença entre multicolinearidade perfeita e imperfeita?
A multicolinearidade perfeita ocorre quando uma variável é uma combinação linear exata de outra, impossibilitando o cálculo dos coeficientes do modelo. Por outro lado, a multicolinearidade imperfeita ocorre quando as variáveis estão altamente correlacionadas, mas não exatamente. No entanto, isso também pode levar a estimativas instáveis do modelo.
Como o índice de condição ajuda a detectar a multicolinearidade?
Se o índice de condição estiver acima de 10, isso indica multicolinearidade moderada, mas se estiver acima de 30, indica multicolinearidade grave.
Aprenda com a DataCamp
curso
Introduction to Regression in R
curso
Inference for Linear Regression in R
tutorial
Regressão linear múltipla no R: Tutorial com exemplos
tutorial
Tutorial de regressão linear no R
Eladio Montero Porras
15 min
tutorial
Tutorial de regressão logística no R
tutorial
Introdução a modelos não lineares e percepções usando o R
Somil Asthana
17 min
tutorial
GLM em R: Modelo Linear Generalizado

DataCamp Team
2 min
tutorial
Tutorial de regressão Lasso e Ridge em Python

DataCamp Team
10 min