Unas capturas de teoría:
Ahora vamos a hacer nosotros una regresión lineal con variables categóricas.
Importamos las librerías y abrimos el dataset de los gastos:
En éste dataset podemos ver que hay dos variables categóricas: sexo (con dos valores posibles) y tipo de ciudad (con tres valores posibles).
Vamos a construir un modelo de regresión lineal para predecir la columna de gastos totales en función de algunas variables del dataset, con el sexo y la ciudad entre ellas.
Como hemos visto en la teoría, primero debemos sustituir las variables categóricas por variables dummies:
Hemos creado dataframes a partir de esas variables con una columna por cada valor, y el valor 0 si no se pertenece a esa categoría y el valor 1 si sí se pertenece.
Ahora creamos una lista con todos los nombres de columnas del dataframe:
Que utilizaremos para unir al dataframe original las columnas de los dataframes dummies creados:
Como se puede ver, hemos integrado correctamente las columnas dummies en nuestro dataframe.
Ahora simplemente construimos el modelo de regresión lineal teniendo en cuenta esas variables:
Y obtenemos los parámetros del modelo:
Como podemos ver, el estadístico R cuadrado nos aparece muy bajo, por lo que quizás haya que añadir otra variable más al modelo. Probamos a añadir la variable Records y volvemos a construir el modelo:
Calculamos el R cuadrado:
Esta vez obtenemos un R cuadrado de 0.91, lo que tiene mucha mejor pinta. Con estos datos podemos construir la función general del modelo:
Ahora, utilizando la fórmula del modelo obtenido, hacemos una predicción a mano de las ventas totales (más adelante veremos que la predicción se puede hacer de forma automática):
Una vez obtenida la predicción, procedemos, como siempre, a calcular los distintos errores cometidos:
Y ya tendríamos construido el modelo con unos errores aceptables.
Como nota adicional, comentar que éste modelo global puede dividirse en 6 modelos (uno por cada combinación de valores de las variables categóricas) más simples:
Y por supuesto comentar que la predicción también se puede calcular automáticamente:
Enmascarando variables categóricas redundantes
Como aparece en la teoría, es posible eliminar, de cada variable categórica, uno de sus valores, ya que, al ser mutuamente excluyentes, se puede utilizar uno de los valores de cada variable como el valor "por defecto".
Por ejemplo, podemos interpretar la variable sexo con una sola columna, mujer, asumiendo que un 0 en mujer implica que es hombre.
Con las ciudades se puede hacer lo mismo, utilizando las columnas 2 y 3, eliminando la 1, asumiendo que tener un valor de 0 tando en la ciudad 2 como en la 3 implica que se es de la ciudad 1 por defecto.
De este modo, podemos simplificar el modelo predictivo simplemente eliminando un valor de cada variable categórica. Simplemente el modelo predictivo asumirá un valor de 0 para los betas de las variables eliminadas.
Vamos a volver a hacer el modelo pero aplicando esta lógica.
Primero volvemos a crear los dataframes dummies, pero eliminando la primera columna de cada variable:
Volvemos a unir los dataframes dummies al dataframe general:
Volvemos a construir el modelo de regresión lineal, esta vez con menos variables, ya que hemos eliminado dos:
Obtenemos los valores de los coeficientes, que podemos comprobar que cambian:
Obtenemos el R cuadrado, que podemos comprobar que es exactamente el mismo que en el anterior modelo:
¿Qué quiere decir lo que acabamos de hacer? El estadístico R cuadrado es igual que en el modelo anterior porque el nuevo modelo tiene exactamente la misma capacidad predictiva.
Sin embargo, los coeficientes del modelo cambian porque "compensan" la ausencia de los dos valores eliminados. El alfa y las betas de las variables categóricas son las que cambian con respecto al modelo anterior. Podemos ver a continuación los valores de los coeficientes beta del modelo de antes y el de después. Comprobaremos que son "compensados":
Y eso es todo.
No hay comentarios:
Publicar un comentario