Contenido de este artículo
- 0
- 0
- 0
- 0
La multicolinealidad en el análisis de regresión ocurre cuando dos o más variables explicativas están altamente correlacionadas entre sí, de manera que no brindan información única o independiente en el modelo de regresión. Si el grado de correlación entre variables es lo suficientemente alto, puede causar problemas al ajustar e interpretar el modelo de regresión.
Una forma de detectar la multicolinealidad es mediante el uso de una métrica conocida como factor de inflación de la varianza (VIF) , que mide la correlación y la fuerza de la correlación entre las variables explicativas en un modelo de regresión .
Este tutorial explica cómo calcular VIF en Python.
Ejemplo: calcular VIF en Python
Para este ejemplo usaremos un conjunto de datos que describe los atributos de 10 jugadores de baloncesto:
importar numpy como np importar pandas como pd #create conjunto de datos df = pd.DataFrame ({'calificación': [90, 85, 82, 88, 94, 90, 76, 75, 87, 86], 'puntos': [25, 20, 14, 16, 27, 20, 12, 15, 14, 19], 'asiste': [5, 7, 7, 8, 5, 7, 6, 9, 9, 5], 'rebotes': [11, 8, 10, 6, 6, 9, 6, 10, 10, 7]}) #ver conjunto de datos df puntos de calificación ayuda a rebotes 0 90 25 5 11 1 85 20 7 8 2 82 14 7 10 3 88 16 8 6 4 94 27 5 6 5 90 20 7 9 6 76 12 6 6 7 75 15 9 10 8 87 14 9 10 9 86 19 5 7
Suponga que nos gustaría ajustar un modelo de regresión lineal múltiple utilizando la calificación como variable de respuesta y los puntos, asistencias y rebotes como variables explicativas.
Para calcular el VIF para cada variable explicativa en el modelo, podemos usar la función variance_inflation_factor () de la biblioteca statsmodels:
del patsy importación dmatrices de statsmodels.stats.outliers_influence importación variance_inflation_factor # encontrar la matriz de diseño para el modelo de regresión lineal usando 'calificación' como variable de respuesta y, X = dmatrices ('rating ~ puntos + asistencias + rebotes', data = df, return_type = 'dataframe') #calcular VIF para cada variable explicativa vif = pd.DataFrame () vif ['VIF'] = [varnce_inflation_factor (X.values, i) for i in range (X.shape [1])] vif ['variable'] = X.columns #ver VIF para cada variable explicativa vif Variable VIF 0101.258171 Intercepción 1 1.763977 puntos 2 1.959104 asistencias 3 1.175030 rebotes
Podemos observar los valores de VIF para cada una de las variables explicativas:
- puntos: 1,76
- asistencias: 1,96
- rebotes: 1,18
Nota: Ignore el VIF para la «Intercepción» en el modelo, ya que este valor es irrelevante.
Cómo interpretar los valores de VIF
El valor de VIF comienza en 1 y no tiene límite superior. Una regla general para interpretar los VIF es la siguiente:
- Un valor de 1 indica que no hay correlación entre una variable explicativa dada y cualquier otra variable explicativa en el modelo.
- Un valor entre 1 y 5 indica una correlación moderada entre una variable explicativa dada y otras variables explicativas en el modelo, pero esto a menudo no es lo suficientemente grave como para requerir atención.
- Un valor mayor que 5 indica una correlación potencialmente severa entre una variable explicativa dada y otras variables explicativas en el modelo. En este caso, las estimaciones de los coeficientes y los valores p en el resultado de la regresión probablemente no sean confiables.
Dado que cada uno de los valores de VIF para las variables explicativas en nuestro modelo de regresión está cerca de 1, la multicolinealidad no es un problema en nuestro ejemplo.
- https://r-project.org
- https://www.python.org/
- https://www.stata.com/
¿Te hemos ayudado?
Ayudanos ahora tú, dejanos un comentario de agradecimiento, nos ayuda a motivarnos y si te es viable puedes hacer una donación:La ayuda no cuesta nada
Por otro lado te rogamos que compartas nuestro sitio con tus amigos, compañeros de clase y colegas, la educación de calidad y gratuita debe ser difundida, recuerdalo: