Regresión lineal

Publicado por

La regresión es sin duda el caballo de batalla de la estadística, existe un gran número de métodos estadísticos que se llaman regresión o fundamentados en la idea principal de la regresión que no es más que la relación lineal entre dos o más variables.

Índice

  1. Introducción
  2. Fórmula matemática
  3. Ejemplo: Prediciendo la calidad del vino
  4. R: Introducción
  5. Entendiendo el modelo
  6. Predicciones

1. Introducción

Una predicción o pronóstico es una declaración sobre el futuro. Es una suposición, a veces basada en el conocimiento o la experiencia, aunque no siempre.

Variable dependiente = Constante + Pendiente*Variable independiente + Error:

350px-linear_regression-svg

es.wikipedia.org

La variable dependiente es algo que se quiere predecir o explicar. En un estudio del vino podría ser el precio medio por botella. La variable independiente es lo que se utiliza para explicar o predecir la variable dependiente. Continuando con el ejemplo anterior podría ser los años que ha pasado embotellado.

El término constante en la ecuación anterior es el punto de intersección con el eje Y; Por convención, Y se utiliza para representar la variable dependiente y X la variable independiente. La pendiente es el grado de inclinación de una recta, es la cantidad Y que cambia cuando X cambia por una cantidad determinada.

El término Error es muy importante por varias razones, una es que rara vez, si es que alguna vez, podemos predecir Y a partir de X exactamente. Y cuando ocurre, nos sugiere que Y y X pueden ser lo mismo o que tenemos un error en nuestros datos. El patrón de errores también nos da una medida sobre como de confiable es nuestro modelo y como poder  mejorarlo.

Cuando tenemos más de una variable independiente, el método lo llamaremos regresión múltiple, este método es el más utilizado actualmente ya que con una sola variable sólo veremos una parte reflejada del problema.

La idea básica es muy simple: trazar una línea a través de un diagrama de dispersión XY de tal manera que nuestros errores se reduzcan al mínimo.

2. Fórmula matemática

La relación entre la variable de respuesta y las variables predictoras se pueden expresar a través de la siguiente ecuación, con las que ya estamos familiarizados, ya que es la ecuación de una recta:

y = β0 + β1 x + ε

donde

  • β0 = el coeficiente de intersección, (corte con el eje y)
  • β1 = pendiente, coeficiente de regresión de la variable independiente
  • x = la variable independiente
  • ε = termino de error error

β0 y β1 son los coeficientes de regresión y denotan la pendiente de la recta y el corte con el eje Y.

La regresión lineal múltiple introduce un número mayor de variables independientes y se define como:

y = β0 + β1 x1 + β2x2 + … + βnxn + ε

Donde

  • xn = la enésima variable independiente
  • y = la variable independiente,
  • ε = termino de error error, también conocidos como residuos; este residuo se calcula restando a la variable dependiente actual el valor de la variable predicha (y),
  • β0 = el coeficiente de intersección, (corte con el eje y)
  • βn = coeficiente de regresión de la enésima variable independiente

-Residuos

Los residuos son las diferencias verticales entre los puntos reales del juego de datos y el modelo que trata de aproximarlos. Supongamos que disponemos de n pares de datos (x1  ,y1  ), (x2  ,y2  ), . . . , (xn  ,yn  ) y que aproximamos este juego de datos a través de un modelo lineal del estilo y = mx+b.

Para cada par de valores observados (xi  ,yi ) dispondremos de una predicción proporcionada por nuestro modelo. En esta circunstancia tomaremos como el residuo ri   la diferencia entre el valor real menos su estimación.

Residuos positivos nos indicarán que el modelo subestima el valor observado, mientras que residuos negativos nos indicarán que el modelo sobre estima el valor observado. Calcular los residuos en un modelo es importante porque nos mostrarán dónde el modelo encaja bien con los datos, y dónde el modelo es una representación pobre de los mismos.

-Método de mínimos cuadrados y multiplicación de matrices

Un método para abordar el análisis lineal, es el método de mínimos cuadrados, que minimiza la suma de los residuos. La diferencia entre el valor ajustado del modelo y el valor observado, es decir, el error entre los valores predecidos y los valores reales.

La fórmula para calcular los residuos es la siguiente:

r = y − ŷ = y − (mx  + b)

La forma que tenemos en matemáticas de acumular, tanto residuos positivos como residuos negativos, es considerar sus cuadrados, por este motivo la suma de todos los residuos que se producirán en nuestro modelo lo elevaremos al cuadrado para no tener valores negativos.

De modo que buscaremos valores que consigan que el residuo provocado por el modelo de regresión sea mínimo.

3. Ejemplo: Predecir la calidad del vino

El vino viene produciéndose de la misma forma desde hace cientos de años, pero siempre hay diferencias en el precio y en la calidad, de un año a otro que a veces son muy significativos.

Los vinos de la Rioja son muy conocidos y suelen ser mejores cuanto mayor tiempo tengan, por lo que tiene sentido almacenar vinos jóvenes hasta que alcanzan una determinada madurez y venderlos a un precio más alto.

El principal problema es que es difícil determinar la calidad del vino cuando es tan joven solo con probarlo, ya que el sabor cambiará de manera significativa con el tiempo hasta que se consuma realmente. Esta es la razón por la que los catadores de vino y los expertos enólogos son útiles. Prueban los vinos y luego predicen cuales serán los mejores en el futuro.

La pregunta que intentaremos responder en este ejemplo es: ¿Pueden las técnicas analíticas modelar este proceso mejor y hacer mejores predicciones?

Nos remontamos a Marzo de 1990 cuando el New York Times anunció que el profesor de economia de Priceton Orley Ashenfelter pudo predecir la calidad del vino sin probar una gota.

Las predicciones no tuvieron que ver con el aroma del vino, mirando las gotas en la copa, o probando el sabor; los resultados se obtuvieron de un modelo matemático utilizando el método de regresión lineal.

La variable dependiente que escogió para el modelo fue el precio del vino, y las variables independientes que utilizó fueron la edad del vino, e información meteorológica, en concreto, la temperatura promedio de la estación de crecimiento de la uva, la lluvia en la época de la cosecha y la lluvia en invierno.

Los resultado fueron los siguientes:multipanel-vino

 

 

Ashenfelter creía que sus predicciones eran más acertadas que las de Robert Parker, en ese momento uno de los mejores críticos del mundo del vino. En respuesta, Parker llamó a Ashenfelter para decirle que era un farsante absoluto, y añadió que “Era como un crítico de cine que no ha visto una película y se basa en los actores y el director para realizar la crítica”.

4- R: Regresión lineal

El siguiente enlace para ver el documento completo de R, esta publicado en Rpubs porque es más fácil subir Markdown que al blog.

Rpub: Ejemplo de Regresión Lineal

Los datasets se pueden descargar de la siguiente URL:

Dataset vino

Dataset vino Test

Los secciones que vienen a continuación se han generado en el documento indicado más arriba.

5- Entendiendo un modelo

En el ejercicio anterior hemos creado un modelo de regresión en R, utilizando la función summary(), podemos obtener los coeficientes que se han utilizado y otra información relevante. El resultado es el siguiente:

## 
## Call:
## lm(formula = Price ~ AGST + HarvestRain + WinterRain + Age + 
##     FrancePop, data = wine)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -0.48179 -0.24662 -0.00726  0.22012  0.51987 
## 
## Coefficients:
##               Estimate Std. Error t value Pr(>|t|)    
## (Intercept) -4.504e-01  1.019e+01  -0.044 0.965202    
## AGST         6.012e-01  1.030e-01   5.836 1.27e-05 ***
## HarvestRain -3.958e-03  8.751e-04  -4.523 0.000233 ***
## WinterRain   1.043e-03  5.310e-04   1.963 0.064416 .  
## Age          5.847e-04  7.900e-02   0.007 0.994172    
## FrancePop   -4.953e-05  1.667e-04  -0.297 0.769578    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.3019 on 19 degrees of freedom
## Multiple R-squared:  0.8294, Adjusted R-squared:  0.7845 
## F-statistic: 18.47 on 5 and 19 DF,  p-value: 1.044e-06

Las variables independientes están listadas a la izquierda. La columna estimación define los coeficientes para el corte con el eje Y (intercept) y para cada una de las variables dependientes. Las columnas restantes nos ayudan a determinar si una variable debería estar incluida en el modelo, o si el coeficiente es significativamente diferente de 0.

Un coeficiente de 0 significa que el valor de la variable independiente no modifica el valor de nuestro modelo para la variable dependiente. Si un coeficiente no es significativamente diferente de 0, entonces probablemente deberíamos eliminar la variable de nuestro modelo porque no esta ayudando a predecir correctamente.

La columna de error estándar nos da una medida de cuánto puede variar el coeficiente
del valor estimado.

El t value es el estimado menos el error estándar. Sera negativo si es el estimado es negativo y positivo si es el estimado lo es. Cuanto mayor sea el valor absoluto del valor t, mayor será la probabilidad del coeficiente de ser significativo. Por lo que queremos variables independientes con el mayor valor absoluto en esta columna.

¿Como averiguar con R si una columna es significativa o no? Esto es fácil, gracias a que en los sumarios anteriores la última columna está reservada para el esquema de códigos de estrella. Con ello podremos averiguar fácilmente que variable es apta para nuestro modelo.

  • Tres estrellas es el nivel más alto de significancia y corresponde con una probabilidad menor de 0.001.
  • Dos estrellas sigue siendo muy significante y corresponde a una probabilidad entre 0.001 y 0.01.
  • Una estrella sigue siendo significante y corresponde a una probabilidad de entre 0.01 y 0.05.
  • Un punto, significa que el coeficiente es casi significativo y se corresponde con una probabilidad entre 0.05 y 0.10.

Cuando nos preguntemos cual de las variables independientes del modelo son significativas, normalmente estas últimas no las incluiremos. Si no aparece ningún símbolo en esta columna interpretamos que la variable no es significativa para nuestro modelo.

Con lo que hemos visto, vamos a intentar mejorar nuestro modelo, eliminado primero la variable FrancePop ya que para nuestro modelo es insignificante. Los resultados obtenidos son los siguientes:

## 
## Call:
## lm(formula = Price ~ AGST + HarvestRain + WinterRain + Age, data = wine)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -0.45470 -0.24273  0.00752  0.19773  0.53637 
## 
## Coefficients:
##               Estimate Std. Error t value Pr(>|t|)    
## (Intercept) -3.4299802  1.7658975  -1.942 0.066311 .  
## AGST         0.6072093  0.0987022   6.152  5.2e-06 ***
## HarvestRain -0.0039715  0.0008538  -4.652 0.000154 ***
## WinterRain   0.0010755  0.0005073   2.120 0.046694 *  
## Age          0.0239308  0.0080969   2.956 0.007819 ** 
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.295 on 20 degrees of freedom
## Multiple R-squared:  0.8286, Adjusted R-squared:  0.7943 
## F-statistic: 24.17 on 4 and 20 DF,  p-value: 2.036e-07

Podemos observar que en este modelo hemos incrementado sensiblemente el valor del R2. Si observamos al conjunto de variables independientes y sus estrellas algo extraño ha ocurrido. Antes, la columna Age no era significativa en nuestro modelo pero ahora tiene dos estrellas.

Esto es debido a un concepto llamado multicolinearidad, y es que Age y FrancePop están altamente correlacionadas.

Correlación

La correlación mide la relación linean entre dos variables, y es un número entre -1 y +1. Una correlación de +1 significa una relación perfecta positiva y una de -1 significa que existe una relación perfecta negativa.

Entre los dos extremos existe la correlación 0, que significa que no existe ninguna relación lineal entre las dos variables. Cuando decimos que dos variables estan fuertemente correlacionadas estamos diciento que el valor absoluto de la correlación está cercano a 1.

El siguiente gráfico muestra la relación entre las dos variables del ejemplo anterior, para ver visualmente que existe un patrón. A medida que ha ido aumentando la población de Francia, los años que tiene el vino ha ido disminuyendo. Tiene lógica porque más gente demanda más vino.

Captura de pantalla de 2017-09-04 17-24-07

Si realizamos el cálculo con el comando cor() en R, el resultado es un correlación de 0.99, para tener el valor exacto. Se dice que un modelo tiene multicolinearidad cuando dos de sus variables independientes están fuertemente correladas.

Si existe correlación entre la variable dependiente y alguna de las variables independientes será bueno para la solución del problema, porque intentamos predecir su valor en función de la variable independiente.

Y entonces, ¿a partir de que valor dos variables se puede decir que estar fuertemente correladas e influye en los resultados del modelo negativamente? No hay una medida estándar, pero si es mayor a 0,7 ya podríamos hablar de que las dos variables está relacionadas.

6. Predicciones

Nuestro modelo de regresión, visto en el capítulo anterior, tiene una R2 de casi 0,83, lo que nos da un valor sobre la precisión del modelo creado a partir de unos datos. Es un valor muy próximo a 1, por lo que tenemos un modelo muy bueno para predecir los resultados.

También necesitamos un modelo que sea bueno prediciendo con nuevos datos, y no solo con los que se ha construido un modelo. En nuestro ejemplo los compradores de vino se benefician de ser capaces de predecir la calidad de un vino años antes de madurar.

Ellos conocen los valores de las variables independientes, edad y tiempo, pero desconocen cual será el precio al que se venderá.

Normalmente,  los datos con los que construimos el modelo, se llaman “Datos de entrenamiento”, y los datos nuevos son conocidos como “Datos de test”. Leamos con R, un conjunto de datos nuevos para realizar predicciones.

#Read new data
wineTest = read.csv("wine_test.csv")
# Make test set predictions
predictTest = predict(model4, newdata=wineTest)

#Result
## 6.768925 6.684910

Observamos que la predicción para el primer punto es 6.76 y para el segundo 6.68, si lo comparamos con el valor real, que son 6.95 y 6.5 vemos que nuestro modelo predice bastante bien. Podemos calcular el valor de R2 de nuestra predicción para comprobar que estamos en lo cierto:

# Compute R-squared
SSE = sum((wineTest$Price - predictTest)^2)
SST = sum((wineTest$Price - mean(wine$Price))^2)
1 - SSE/SST
## [1] 0.7944278

Esto ha sido todo amigos.

Un comentario

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión /  Cambiar )

Google photo

Estás comentando usando tu cuenta de Google. Cerrar sesión /  Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión /  Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión /  Cambiar )

Conectando a %s