Unos días atrás escribí el articulo Destapando Promedios que básicamente lo que hacía era abrir un valor promedio en factores utilizando arboles, por favor leer el articulo antes de seguir.
En ese análisis de ejemplo yo cree el dataset y por ende sabia exactamente donde estaba el cambio, el cual estaba en la columna causa, solo en el caso colectividad, pero dado que el árbol no se abría en esta dimension, quedaba solo un «indicio sobre donde buscar».
Como este mundo del Data Science es una mezcla entre obsesión y creatividad, estuve dándole vueltas y vueltas al como hacer que todos los factores aparecieran hasta que di con el clavo en usar una regresión lineal.
La metodología es la misma, lo que cambia es que el beta corresponde a la nota promedio y el promedio de cada variable predictora la tasa.
Lo primero que hacemos es cargar los dataset el cual se ve del siguiente modo:
library(tidyverse)
library(broom)
library(caret)
data1 = readRDS('dataset1.rds')
data2 = readRDS('dataset2.rds')
> head(data1)
id causa genero region nota
1 1 equipo hombre norte 6
2 2 saldo mujer norte 8
3 3 facturacion hombre norte 2
4 4 saldo mujer centro 6
5 5 conectividad mujer centro 9
6 6 conectividad hombre centro 4
Luego dumificamos las variables de modo que las categorías queden con redundancia:
encoder <- dummyVars( ~ nota + causa + genero + region, data1)
dataset1 <- predict(encoder, data1)
dataset2 <- predict(encoder, data2)
Y corremos un modelo para cada periodo y usamos tidy de broom para formatear los parámetros de la regresión como data.frame: (nótese que tidy elimino los parámetros que no se pudieron estimar por dependencia lineal, en el fondo es por que son un contraste y el estimate es 0, eso lo necesitaremos más adelante).
Nótese que el promedio de la columna estimate por la columna porción, dan el promedio, por ende podemos decir que tenemos el promedio descompuesto en factores:
Lo anterior es debido a que la suma de los cuadrados residuales en una regresión lineal suman 0.
Ahora usamos el mismo truco del articulo anterior en que calculamos el cambio en el beta y el cambio en la muestra y con ello determinamos los aportes:
Por ende podemos decir que tenemos el promedio descompuesto y al igual que en el resultado anterior, si vemos cuando cambio el promedio por la nota y por la muestra, obtenemos el siguiente resultado:
Resultado simular al articulo anterior.
Por otro lado, volviendo a la tabla de aportes, podemos ver que una disminución de 41% en la cantidad de hombres encuestados causo un aumento de 0.42 en la nota, lo que anula la disminución de 0.27 puntos causada por la peor evaluación de los casos de conectividad.
Por ultimo este modelo parece superior al de los arboles, pero para realizar regresiones lineales, se necesitan cierto supuestos que no se necesitan para los arboles, por ende, hay que ser un poco mas cuidadoso.
Espero que les sirva y estaré viendo los comentarios a ver si hay algo que quieran que aborde.
Saludos!