domingo, 19 de abril de 2015

Supuestos en Regresion Lineal


Para validar si un modelo de regresión lineal es bueno, existen algunos "supuestos" estadísticos (o assumption en ingles) que el modelo debe cumplir. Estos son algunos:


SUPUESTO DE LINEALIDAD
Existe linealidad si se presenta una relación significativa entre la variable  que se quiere predecir y las otras variables. Puede usarse el coeficiente "R cuadrado ajustado", para saber si existe linealidad (mayor o igual a 0.7 suele ser "indicio" de linealidad)

Ejemplo en R:






SUPUESTO DE INDEPENDENCIA DE LOS RESIDUOS
Este supuesto asume que los residuos no están auto-correlacionados, por lo cual son independientes. La autocorrelacion es cuando el residuo en la predicción de un valor es afectado por el residuo en la predicción del valor más cercano. Esta autocorrelacion suele presentarse en series de tiempo.

Para validar la independencia de los residuos puede usarse el test durbin-watson, cuyo resultado estará cerca de 2 cuando los residuos son independientes. Si el valor está entre 1.5 y 2.5 puede concluirse que no existe dependencia de los residuos.

Ejemplo en R:




SUPUESTO DE RESIDUOS CONSTANTE
Este supuesto asume que los residuos en las predicciones son constantes en cada predicción (es decir, varianza constante). Este supuesto valida que los residuos no aumenta ni disminuye cuando se predicen valores cada vez más altos o mas pequeños. A esta constancia en los errores de predicción le dicen "homocedasticidad", y cuando los errores varían, le dicen "heterocedasticidad".

























SUPUESTO DE NORMALIDAD DE RESIDUOS
Este supuesto asume que los residuos deben presentar una distribución normal, y la ausencia de normalidad supone  poca precisión en los intervalos de confianza creados por el modelo.




























Otras pruebas para validar el supuesto de normalidad son: prueba de asimetría y kurtosis, prueba de chi-cuadrado, prueba de residuos estandarizados, prueba de Kolmogorov-Smirnov-Liliefors, etc..





El scrip en R:
# Supuestos sobre Regresion Lineal
 
 
# ------------------------------------------------------------------
# carga csv desde dropbox
datos.url     <- 'https://dl.dropboxusercontent.com/u/59930995/R/CantPrecio_a.csv'
datos.a       <- read.csv(datos.url) 
datos.url     <- 'https://dl.dropboxusercontent.com/u/59930995/R/CantPrecio_b.csv'
datos.b       <- read.csv(datos.url) 
 
# ------------------------------------------------------------------
# crea modelos lineaL para datos.a y para datos.b
modelo.a.lm   <- lm(cant ~ precio, datos.a)
modelo.b.lm   <- lm(cant ~ precio, datos.b)
 
 
 
#################################################################
# Supuesto de Linealidad 
par(mfrow = c(1,2))
plot(datos.a$precio,datos.a$cant,cex.axis=.7,cex.lab=.7, col=4)
abline(modelo.a.lm,col=4)
legend("bottomright",
       legend = paste("R-Cuadrado Ajustado=",
                      round(summary(modelo.a.lm)$adj.r.squared,2))
       ,cex=.7)
title(main="Sí cumple Supuesto de Linealidad
      R cuadrado Ajustado es mayor a 0.7",cex.main=.7,col.main=4)
 
# crea modelos lineaL para caso A
plot(datos.b$precio,datos.b$cant,cex.axis=.7,cex.lab=.7,col=2)
abline(modelo.b.lm,col=2)
legend("bottomright",
       legend = paste("R-Cuadrado Ajustado=",
                      round(summary(modelo.b.lm)$adj.r.squared,2))
       ,cex=.7)
title(main="No cumple Supuesto de Linealidad
      R Cuadrado Ajustado es menor a 0.7",cex.main=.7,col.main=2)
par(mfrow = c(1,1))
 
 
#################################################################
# Supuesto de Independencia de Errores
library(lmtest)
datos.a.dwtest            <-dwtest(cant ~.,data=datos.a)
datos.a.dwtest$statistic
 
datos.b.dwtest            <-dwtest(cant ~.,data=datos.b)
datos.b.dwtest$statistic
 
 
#################################################################
# Supuesto de Errores Constantes. Homocedasticidad
par(mfrow = c(1,2))
plot(modelo.a.lm,1:1, main="Si existe homocedasticidad.
     El error se mantiene constante",col.main="blue",cex.main=.9)
 
plot(modelo.b.lm,1:1,main="No existe homocedasticidad.
     El error presenta varianza", col.main="red", cex.main=.9)
 
par(mfrow = c(1,1))
 
 
#################################################################
# Supuesto de Normalidad de los Residuos
par(mfrow = c(1,2))
hist(modelo.a.lm$residuals, 
     main="Residuos con distribucion normal",
     cex.main=.9,col.main="blue")
 
hist(modelo.b.lm$residuals,
     main="Residuos sin distribucion normal"
     ,cex.main=.9
     ,col.main="red")
 
par(mfrow = c(1,1))
 


Referencia:
1. https://www.youtube.com/watch?v=eTZ4VUZHzxw






3 comentarios:

  1. "Para validar la independencia de los residuos puede usarse el test durbin-watson, cuyo resultado estará cerca de 2 cuando los residuos son independientes. Si el valor está entre 1.5 y 2.5 puede concluirse que ¿no? existe independencia de los residuos"

    No sé si no entendí bien pero creo que hay una contradicción cuando dices que si el valor de DW cae entre 1.5 y 2.5 NO existe independencia de los residuos

    ResponderEliminar
    Respuestas
    1. Tienes razón, es "no existe dependencia de los residuos". Hago la corrección. Gracias por el comentario.

      Eliminar
  2. Y que se puede hacer cuando no se cumple ninguno o alguno de los supuestos.

    ResponderEliminar