Course
Multicolinealidad en Regresión: Guía para científicos de datos
Uno de los principales retos a la hora de construir un modelo de regresión eficaz es lo que denominamos multicolinealidad. La multicolinealidad surge cuando dos o más variables independientes de un modelo están muy correlacionadas, lo que da lugar a inferencias estadísticas poco fiables. Esto puede ser un gran problema si necesitas interpretar con precisión tus coeficientes de regresión o si necesitas comprobar tu confianza en ellos.
Aquí te guiaré a través de los conceptos clave de la multicolinealidad, cómo detectarla y también cómo abordarla. Si no conoces la regresión lineal, lee nuestro tutorial, Regresión lineal simple: Todo lo que necesitas saber como punto de partida, pero asegúrate de seguir con Multiple Linear Regression in R: Tutorial Con Ejemplos, que enseña sobre la regresión con más de una variable independiente, que es el lugar donde puede aparecer la multicolinealidad.
¿Qué es la Multicolinealidad?
Construir modelos precisos de aprendizaje automático es una tarea difícil porque hay muchos factores en juego. Los datos deben ser de calidad decente, volumen, etc. Entonces tienes que construir el tipo adecuado de algoritmos de aprendizaje automático. Sin embargo, entre ambas hay una etapa de preparación de datos, que no es tan glamurosa como la construcción de modelos predictivos, pero sin duda esta etapa es a menudo el factor decisivo en el proceso del ciclo de vida del aprendizaje automático.
Durante la preparación de los datos, vigilamos la multicolinealidad, que se produce cuando las variables independientes de un modelo de regresión están correlacionadas, lo que significa que no son independientes entre sí. Esto no es una buena señal para el modelo, ya que la multicolinealidad suele distorsionar la estimación de los coeficientes de regresión, inflando los errores estándar y, por tanto, reduciendo la potencia estadística del modelo. Esto también dificulta la determinación de la importancia de las variables individuales en el modelo.
Tipos de multicolinealidad
La multicolinealidad puede adoptar dos formas principales, cada una de las cuales afecta al modo en que interactúan las variables independientes de un modelo de regresión y a la fiabilidad de las estimaciones resultantes.
Multicolinealidad perfecta
La multicolinealidad perfecta se produce cuando una de las variables independientes de un modelo de regresión puede predecirse exactamente mediante una o varias de las demás variables independientes. Esto significa que existe una relación perfecta entre ellos.
Imagina que tienes dos variables, X1
y X2
, y que están relacionadas con la ecuación: X1 = 2*X2 + 3
, esto significa básicamente que el modelo de regresión no podrá separar los efectos de X1
y X2
porque, en esencia, están contando la misma historia. En otras palabras, una variable es una función lineal perfecta de la otra.
Multicolinealidad imperfecta
En la multicolinealidad imperfecta, las variables están muy correlacionadas, pero no de forma perfecta, uno a uno, como en el caso de la multicolinealidad perfecta. Las variables pueden compartir una alta correlación, lo que significa que cuando una variable cambia, la otra tiende a cambiar también, pero no es una predicción exacta.
En esta situación, no es que el modelo no te dé los resultados. El único problema es que estos resultados pueden ser inestables, lo que significa que incluso pequeños cambios en los datos pueden provocar grandes cambios en los coeficientes estimados. Esto dificulta la interpretación fiable de la importancia de cada variable.
Multicolinealidad estructural
La multicolinealidad estructural surge de la forma en que se ha construido el modelo, no tanto de sus relaciones naturales. Esto suele ocurrir cuando incluyes términos de interacción o términos polinómicos en tu modelo.
Por ejemplo, si crees que el tamaño del efecto de una variable aumenta al aumentar otra variable, puedes considerar añadir un término de interacción. Sin embargo, el problema es que si estas variables ya están algo correlacionadas, añadir el término de interacción podría ser realmente exagerado y provocar problemas de multicolinealidad.
Multicolinealidad en la regresión
La multicolinealidad afecta al análisis de regresión al crear problemas cuando intentas estimar la relación entre las variables independientes (los predictores) y la variable dependiente (el resultado). En concreto, la multicolinealidad aumenta la varianza de las estimaciones de los coeficientes, haciéndolas sensibles a pequeños cambios en el modelo o en los datos.
Cuando los coeficientes se vuelven inestables, los errores estándar se hacen mayores, lo que, a su vez, puede dar lugar a valores p insignificantes incluso cuando las variables son realmente importantes. Es importante saber que la multicolinealidad no afecta al poder predictivo global del modelo. Sin embargo, afecta a la interpretación del modelo, porque nuestro modelo tendrá errores inflados y estimaciones inestables.
Cómo detectar la multicolinealidad
Detectar la multicolinealidad requiere varias herramientas de diagnóstico. Las exploraremos utilizando un subconjunto del conjunto de datos extraído del Concurso de Precios de la Vivienda en Kaggle. El subconjunto de datos que utilizaremos puedes encontrarlo en este repositorio de GitHub. Carguemos y exploremos el conjunto de datos con el código siguiente:
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 correlaciones
Una técnica muy utilizada para detectar la multicolinealidad es mediante una matriz de correlaciones que ayuda a visualizar la fuerza de las relaciones entre las variables. La matriz muestra los coeficientes de correlación por pares entre las variables, lo que indica el grado de relación lineal entre ellas (los valores van de -1 a 1). Una regla empírica que utilizo es que los valores de correlación absoluta superiores a 0,6 indican una fuerte multicolinealidad.
Como se ha detectado multicolinealidad en las variables independientes, tenemos que eliminar la variable objetivo, SalePrice
, de nuestro conjunto de datos. Esto se hace con el siguiente código.
multi_c_df = multi_c_df.drop('SalePrice', axis=1)
Ahora ya estamos preparados para el análisis de correlación. El código siguiente calcula la matriz de correlaciones del DataFrame multi_c_df
. Tras calcular las correlaciones, el código utiliza la función heatmap()
de Seaborn para representar visualmente la matriz de correlaciones como un mapa de calor. El argumento annot=True
añade los valores numéricos de correlación directamente en el 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 correlación representada por mapa de calor. Imagen del autor
El resultado anterior muestra que existe correlación entre algunas de las variables independientes. Por ejemplo, BedroomAbvGr
y TotRmsAbvGrd
tienen una correlación relativamente alta (0,68). Además, GarageCars
y OverallQual
tienen una correlación de 0,60, lo que indica que también están relacionados. Así que hay variables independientes que tienen una correlación decente, lo que sugiere la presencia de multicolinealidad para algunas de estas variables, si no para todas.
En este punto, es muy importante señalar que la multicolinealidad puede surgir incluso cuando no existe una correlación evidente entre las variables, porque una variable podría estar correlacionada con una combinación lineal de más de una variable. Por eso es importante tener en cuenta también el factor de inflación de la varianza, que veremos a continuación.
Factor de inflación de la varianza (VIF)
El factor de inflación de la varianza (VIF) es una de las técnicas más comunes para detectar la multicolinealidad. En términos sencillos, da un valor numérico que indica cuánto se infla la varianza de un coeficiente de regresión debido a la multicolinealidad. Un valor VIF superior a 5 indica una multicolinealidad moderada, mientras que los valores superiores a 10 sugieren una multicolinealidad grave.
Exploremos esto en nuestro conjunto de datos. Ahora calcularemos el valor VIF para cada una de estas variables independientes. Esta tarea se realiza en el código siguiente con lafunción 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 de las variables numéricas. Imagen del autor
Puedes ver que hay varias variables que tienen un valor VIF superior a 10, lo que indica presencia de multicolinealidad.
Índice de condición
El índice de condición es otra herramienta de diagnóstico para detectar la multicolinealidad, con valores superiores a 10 que indican una multicolinealidad moderada y valores superiores a 30 que indican una multicolinealidad grave. El índice de condición funciona comprobando en qué medida las variables independientes están relacionadas entre sí examinando las relaciones entre sus valores propios.
El código siguiente calcula el índice de condición para comprobar la multicolinealidad en un modelo de regresión. Primero calcula los valores propios de la matriz de correlaciones (que muestra las relaciones entre las variables). A continuación, se calcula el índice de condición dividiendo el mayor valor propio por el 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}')
En nuestro caso, el valor del índice de condición es 13, lo que indica una multicolinealidad moderada en el modelo. Aunque este nivel de multicolinealidad, según el índice de condición, no es grave, puede afectar a la precisión de las estimaciones de los coeficientes de regresión y dificultar la distinción de las contribuciones individuales de las variables correlacionadas. Si te interesa saber más sobre los valores propios, lee nuestro artículo Eigenvectores y valores propios: Ideas clave para la ciencia de datos.
Cómo abordar la multicolinealidad
Para gestionar eficazmente la multicolinealidad en los modelos de regresión, se pueden aplicar varias técnicas. Estos métodos ayudan a garantizar que el modelo sigue siendo preciso e interpretable, incluso cuando las variables independientes están estrechamente relacionadas.
Eliminar predictores redundantes
Una de las formas más sencillas de tratar la multicolinealidad consiste simplemente en eliminar una de las variables altamente correlacionadas, a menudo la que tiene el valor VIF más alto. Esto es eficaz, pero el inconveniente es que puede provocar la pérdida de información útil si no se hace con cuidado.
Combinar variables
La otra técnica consiste en que, cuando dos o más variables están muy correlacionadas, podemos combinarlas en un único predictor mediante técnicas como el análisis de componentes principales (ACP). Esto reduce la dimensionalidad del modelo, conservando la información más crítica. El mayor inconveniente es la pérdida de interpretabilidad, ya que es difícil explicar la ciencia y las matemáticas que hay detrás del ACP a un público no técnico.
Regresión Ridge y Lasso
Para los científicos de datos, aplicar técnicas de regularización con regresión ridge y lasso es otra técnica popular para tratar el problema de la multicolinealidad. Estas técnicas de regularización aplican penalizaciones al modelo de regresión, reduciendo los coeficientes de las variables correlacionadas y, por tanto, mitigando los efectos de la multicolinealidad.
Errores comunes y buenas prácticas
Al tratar la multicolinealidad, hay algunos errores comunes que pueden conducir a un mal funcionamiento del modelo. Es importante ser consciente de estos errores y seguir las mejores prácticas para crear modelos de regresión más fiables.
Interpretar erróneamente valores altos de VIF
Cuando observas un factor de inflación de la varianza (VIF) elevado para una variable, es tentador eliminar inmediatamente esa variable de tu modelo, suponiendo que está causando multicolinealidad. Sin embargo, esto puede ser un error, porque aunque una variable tenga un VIF alto, podría seguir siendo muy importante para predecir el resultado. Por tanto, si lo eliminas sin comprobar su puntuación de importancia, tu modelo podría funcionar peor. La clave está en evaluar cuidadosamente si la variable es esencial antes de decidir eliminarla.
Exceso de confianza en las matrices de correlación
Una matriz de correlaciones es una técnica útil para identificar la magnitud y la dirección de la relación entre variables, pero el problema es que sólo muestra relaciones lineales. ¿Qué pasa con las relaciones complejas y no lineales? Por desgracia, eso no se captará en la matriz. Así que depender sólo de una matriz de correlaciones no te va a dar una imagen completa. Por eso es importante utilizar otras métricas, como el VIF y el índice de condición, para obtener una imagen más completa.
Alternativas para abordar la multicolinealidad
Además de los enfoques tradicionales, existen varios métodos avanzados para tratar el problema de la multicolinealidad. Algunas de estas técnicas se comentan a continuación.
Métodos de selección de rasgos
Los métodos automatizados de selección de rasgos, como la Eliminación Recursiva de Rasgos (RFE), pueden ser una buena alternativa. Estos métodos analizan la importancia de cada predictor y eliminan automáticamente los que no aportan mucho valor. Esto agiliza el proceso, facilitando la reducción de la multicolinealidad sin tener que decidir manualmente qué variables eliminar.
Recoger más datos
Aumentar el tamaño de la muestra puede reducir la multicolinealidad al añadir más variación al conjunto de datos, lo que facilita distinguir entre las contribuciones de los distintos predictores. Así que otra solución es simplemente recopilar más datos. Cuando aumenta el tamaño del conjunto de datos, se añade más variación a las variables, lo que facilita distinguir entre los efectos de los distintos predictores. Esto, a su vez, ayuda a reducir el impacto de la multicolinealidad.
Conclusión
Comprender y abordar la multicolinealidad es vital para construir modelos de regresión sólidos e interpretables. Detectando la multicolinealidad mediante técnicas como el VIF, las matrices de correlación y el índice de condición, y resolviéndola con métodos como el lazo y la regresión ridge o eliminando los predictores redundantes, puedes garantizar unos resultados del modelo fiables y significativos. Comprueba siempre si hay multicolinealidad en tus modelos de regresión y aplica las soluciones adecuadas para mantener la integridad de tus análisis.
Para seguir aprendiendo y refrescar conocimientos sobre cómo hacer regresión lineal en tu espacio de trabajo favorito, considera la posibilidad de explorar las siguientes fuentes:
- Fundamentos de Regresión Lineal en Python: Aprende qué formula un problema de regresión y cómo funciona un algoritmo de regresión lineal en Python.
- Regresión lineal en Excel: Guía completa para principiantes: Una guía paso a paso para realizar una regresión lineal en Excel, interpretar los resultados y visualizar los datos para obtener información práctica.
- Cómo hacer regresión lineal en R: Aprende regresión lineal, un modelo estadístico que analiza la relación entre variables utilizando R.
Conviértete en un Científico ML
Profesional experimentado en Ciencia de Datos, Inteligencia Artificial, Analítica y Funciones Estratégicas con más de 18 años de experiencia en las áreas de -: Ciencia de datos, ML e IA ~ Ciencia de datos, Aprendizaje automático supervisado y no supervisado, Aprendizaje profundo, Modelado predictivo, Procesamiento del lenguaje natural (NLP), Modelado y análisis estadístico, Optimización, Estrategia empresarial y Analítica ~ Desarrollo y evaluación de modelos empresariales, Analítica descriptiva y de diagnóstico, EDA, Visualización, Análisis de causa raíz, Análisis de sensibilidad y de escenarios.
Preguntas sobre la Multicolinealidad
¿Qué es la multicolinealidad?
La multicolinealidad se produce cuando dos o más variables independientes de un modelo de regresión están muy correlacionadas.
¿Qué es el factor de inflación de la varianza (VIF)?
El VIF mide cuánto aumenta la varianza de un coeficiente de regresión debido a la multicolinealidad. Un VIF alto significa que una variable está muy relacionada con otras, lo que puede hacer que el modelo sea inestable y menos fiable.
¿Cómo afecta la multicolinealidad a mi modelo de regresión?
La multicolinealidad infla los errores estándar de los coeficientes de regresión, haciendo más difícil identificar qué variables son significativas.
¿Cuál es la diferencia entre multicolinealidad perfecta e imperfecta?
La multicolinealidad perfecta se produce cuando una variable es una combinación lineal exacta de otra, lo que hace imposible calcular los coeficientes del modelo. En cambio, la multicolinealidad imperfecta se da cuando las variables están muy correlacionadas, pero no exactamente. Sin embargo, también puede dar lugar a estimaciones inestables del modelo.
¿Cómo ayuda el índice de condición a detectar la multicolinealidad?
Si el índice de condición es superior a 10, indica una multicolinealidad moderada, pero si es superior a 30, indica una multicolinealidad grave.
Aprende con DataCamp
Course
Introduction to Regression in R
Course
Inference for Linear Regression in R
blog
La maldición de la dimensionalidad en el aprendizaje automático: Retos, repercusiones y soluciones
tutorial
Regresión lineal múltiple en R: tutorial con ejemplos
tutorial
Tutorial de regresión lineal en R
Eladio Montero Porras
15 min
tutorial
GLM en R: Modelo lineal generalizado
DataCamp Team
2 min
tutorial
Tutorial de ecuación normal para regresión lineal
tutorial