miércoles, 23 de octubre de 2019

Data Science: Regresión Lineal

Vamos a ver cómo hacer una regresión lineal con Python:

Como siempre, primero vamos a poner un poco de teoría:










Error: Diferencia entre el valor real del dataset y su estimación obtenida.
Técnica de los mínimos cuadráticos: minimizar la suma de los errores al cuadrado sobre todos los puntos del data set.
Componente error: El componente de error debe ser una variable aleatoria con distribución normal. Si no tiene una distribución normal, es que el modelo que hemos tomado como lineal en realidad no es lineal.

SUMAS DE LOS CUADRADOS Y ESTADÍSTICO R CUADRADO

SSD (Suma de los cuadrados de las diferencias): Suma de todos los valores de: Desviación de un valor real observado con respecto al valor predicho por el modelo.
SST (Suma de los cuadrados totales): Suma de todos los valores de: Desviación de un valor real observado con respecto a la media de valores reales observados.
SSR (Suma de los cuadrados de la regresión): Suma de SSD y SST: Suma de todos los valores de: Desviación entre un valor predicho y el promedio de los valores reales.
En un modelo de predicción ideal, donde no hubiera errores de predicción, la SSD sería 0 (los valores predichos coinciden 100% con los valores reales observados), y por tanto SST sería igual a SSR.
SSR: Error explicado por el modelo.
SSD: Error no explicado por el modelo. Error aleatorio. Debe distribuirse de forma normal.
SST: Error total cometido.
Se cumple que: SST = SSR + SSD.
R2 (R cuadrado): SSR/SST. Su valor varía entre 0 y 1. Cuanto más cerca esté de 1, mejor será el modelo predictivo (menor será el error aleatorio SSD).


EL P VALOR Y EL ESTADÍSTICO T

Sirve para confirmar o descartar que realmente existe una relación lineal entre las dos variables.
Interesa que el p valor y el estadístico t sean lo más pequeños posible. Buscamos que sean inferiores al nivel de significatividad escogido. Si es así, podemos rechazar la hipótesis nula y confirmar que existe ralación lineal.


EL ESTADÍSTICO F DE FISHER

Sirven para confirmar o rechazar que exista relación lineal, pero para las relaciones lineales múltiples, es decir, para varias variables predictoras.
Igual que los anteriores, debe ser inferior que el nivel de significación escogido.



EL ERROR ESTÁNDAR RESIDUAL

Error de predicción que el modelo no es capaz de explicar por falta de información o más datos adicionales.
Cuanto menor sea, mejor es el modelo.
Si se divide entre la media de las puntuaciones observadas y se multiplica por 100, obtenemos el porcentaje de error de cada estimación.


Ahora vamos a ver la práctica.

Abrimos el Jupyter Notebook como siempre y creamos un nuevo notebook.

Cargamos las librerías y abrimos el fichero de las ventas/anuncios:


Podemos obtener directamente la fórmula de la regresión lineal entre ventas y anuncios de TV:


También podemos obtener los P valores de la regresión y compararlo con el nivel de significancia que nos hayamos marcado. También podemos obtener el factor R cuadrado y el R cuadrado ajustado:


También podemos obtener todos los parámetros para visualizarlos de un vistazo:


Y por supuesto podemos utilizar el modelo para predecir los valores que tendrían las ventas según los valores que tiene la columna de TV:


Utilizamos la columna recién creada de predicciones para compararla con la de TV real en un gráfico y comprobar si la línea de tendencia se ajusta al valor de la predicción:


Podemos calcular el error estándar residual a partir de la suma de los cuadrados de las diferencias.
También calculamos el error promedio (obtenemos un error promedio del 23%):


Por último, pintamos el histograma de cómo se distribuyen los errores respecto del modelo:


Como podemos ver, los errores se distribuyen con una distribución normal, lo que es buena señal.

Y eso es todo.

No hay comentarios:

Publicar un comentario