Clusterización
Gastos e ingresos de los hogares mexicanos
Objetivo
Se desea agrupar los hogares mexicanos según sus ingresos y sus gastos, para determinar caracteristicas especificas sobre sus ingresos y gastos que puedan determinar que pertenezcan a determinado grupo. Por ejemplo se podria esperar agrupar a los hogares de manera que quiza podamos obtener los tipos de niveles socio-economicos que se pueden observar en México. Es decir, los grupos que obtengamos después de aplicar el algoritmo de clusterización serán pueden estar clasificados por que tanto gastan o que tanto perciben, por ejemplo podriamor inferir que las personas agrupadas en un cluster con un ingreso superior a los $60,000 son personas que pertenecen a una clase media-alta.
Los algoritmos utilizados para clusterización serán k-medias y clusterización jerarquica.
Los datos utilizados para este análisis seran los obtenidos en la Encuesta Nacional de Ingresos y Gastos de los Hogares 2018 la cúal esta formada por variables referentes a los ingresos en diversos aspectos de un hogar, al igul que los gastos los cuales se dividenen diferentes tipos de gasto.
Preprocesamiento de los datos
Los datos con los cuales se va a trabajar, tienen variables desglosadas que nos interesan por lo que agruparemos por tipo de ingreso y tipo de gasto.
Se trabajaran con variables como: Ingreso por algun negocio, ingresos por prestaciones del trabajo, ingresos por programas del gobierno, gastos de alimentacion, gastos de vivienda, gastos para vestir, gastos en salud, gastos en transporte, gastos en objetos personales y gastos en deudas adquiridas. Estas fueron algunas de las variables que se identificaron podrian ser agruoadas pues referian a algun ingreso/ gasto especifico
enigh <- as.data.frame(read.csv("hogares.csv",
fileEncoding = "UTF-8-BOM"))
enigh$ing_neg <-rowSums(enigh[ , 33:47])
enigh$ing_pest <-rowSums(enigh[ , 28:32])
enigh$ing_program <-rowSums(enigh[ , 48:56])
enigh$gast_alim <-rowSums(enigh[ , 58:74])
enigh$gast_vest<-rowSums(enigh[ , 76:78])
enigh$gast_viv <-rowSums(enigh[ , 79:87])
enigh$gast_salud <-rowSums(enigh[ , 88:91])
enigh$gast_transp <-rowSums(enigh[ , 92:98])
enigh$gast_personal <-rowSums(enigh[ , 104:108])
enigh$gast_deudas <-rowSums(enigh[ , 111:125])num <- seq(length(enigh$foliohog))
id <- paste("Hog0",num)
id_hog <- gsub(pattern = "\\s",
replacement = "",
x = id)
enigh %<>%
select(ing_cor,ingtrab, trabajo, sueldos, gasto_mon, percep_tot,smg,
ing_neg,ing_program, gast_alim, gast_vest, gast_viv, gast_deudas, gast_personal,
gast_salud, gast_transp)
rownames(enigh) <- id_hogSe les dará un identificador a cada hogar para poder visualizar de mejor manera los grupos realizados.
Obteniendo una vista de los datos con los que trabajaremos:
| ing_cor | ingtrab | trabajo | sueldos | gasto_mon | percep_tot | smg | ing_neg | |
|---|---|---|---|---|---|---|---|---|
| Hog01 | 76403,7 | 53114,7 | 53114,7 | 53114,7 | 18551,5 | 0,0 | 7952,4 | 11289,0 |
| Hog02 | 42987,7 | 15235,1 | 0,0 | 0,0 | 55471,0 | 6073,1 | 7952,4 | 46507,1 |
| Hog03 | 580697,7 | 141885,2 | 141885,2 | 133770,5 | 103106,9 | 3857,1 | 7952,4 | 450320,7 |
| Hog04 | 46252,7 | 0,0 | 0,0 | 0,0 | 19340,1 | 1380,5 | 7952,4 | 34252,7 |
| Hog05 | 53837,1 | 43229,5 | 8852,5 | 8852,5 | 13605,0 | 0,0 | 7952,4 | 103238,7 |
| Hog06 | 237742,5 | 129836,0 | 129836,0 | 95901,6 | 33627,7 | 1928,6 | 7952,4 | 89906,5 |
| ing_program | gast_alim | gast_vest | gast_viv | gast_deudas | gast_personal | gast_salud | gast_transp | |
|---|---|---|---|---|---|---|---|---|
| Hog01 | 23289,0 | 14541,1 | 0,0 | 8868,0 | 0,0 | 198,0 | 0,0 | 22800,0 |
| Hog02 | 27752,7 | 50448,0 | 802,1 | 5814,3 | 24240,3 | 9351,2 | 2698,0 | 15407,1 |
| Hog03 | 409304,3 | 100439,4 | 4030,4 | 15586,5 | 166152,2 | 23040,0 | 57717,4 | 25581,4 |
| Hog04 | 46252,7 | 8678,5 | 195,6 | 13944,0 | 1380,6 | 2130,5 | 645,6 | 19350,0 |
| Hog05 | 10607,6 | 19529,8 | 0,0 | 7200,0 | 0,0 | 3667,3 | 113,5 | 600,0 |
| Hog06 | 107906,5 | 0,0 | 0,0 | 16966,0 | 31436,8 | 10218,0 | 0,0 | 45921,4 |
Posteriormente se escalaran los datos para una mejor manipulación.
Agrupamiento por K-medias
Realizando el algoritmo de k- medias con diferentes métodos pudimos observar que existe un dato atipico, es decir, recordemos que teoricamente este algoritmo con la norma euclideana es sencible a los datos atipicos lo cual se ha podido confirmar debido a que despues de 6 grupos para realizar clusterización por k medias obtenemos un solo grupo para este dato, es decir, no hay ningún otro hogar que se acerque lo suficiente al hogar atipico como para poder obtener un grupo aunque sea reducido de este tipo de hogar. Por lo que nustro algoritmo nos un número de clusters mayos a 6 no es capaz de agrupar a dicho hogar y obtenemos que el hogar atipico es un centroide con él como unico elemento del grupo.
## Warning: Quick-TRANSfer stage steps exceeded maximum (= 3732350)
Los resultados con diferentes métodos son muy similares, por lo tanto, nos concentraremos en visualizar el dato atipico con mayor profundidad.
| ing_cor | ingtrab | trabajo | sueldos | gasto_mon | percep_tot | smg | ing_neg | ing_program | gast_alim | gast_vest | gast_viv | gast_deudas | gast_personal | gast_salud | gast_transp | grupo | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Hog034120 | 883913.7 | 208839.8 | 208839.8 | 208839.8 | 530879.9 | 16917816 | 7952.4 | 1252688 | 85847.38 | 158926.6 | 191347.7 | 21502.7 | 16917816 | 207933.7 | 0 | 175999.5 | 1 |
La información de este dato nos muestra que tienen ingresos y gastos bastante elevados, fuera de lo normal entre los otros hogares, pues tienen un ingreso corriente de $ 883,913.66 un monto más elevado al monto promedio de todos los hogares el cúal es de $46,043.88 tomemos encuenta que este promedio considera nuestro valor atipico por lo que podemos pensar que el promedio de ingreso correiente asi como el de el resto de las variables es mucho menor que el que reflejamos. Podemos observar que a pesar que es un dato atipico no es el dato de ingreso corriente mayor por ejemplo en ingreso corriente el máximo es $ 4,501,830
A pesar de esto podemos pensar que estos datos del hogar atipico pueden no ser un error y puede que se haya obtenido información de un hogar de un nivel socioeconomico alto por lo que al no ser un número ilogico se decide conservarlo para el analisis y realizar 5 grupos mediante el algoritmo de k-mean para poder incluirlo en el grupo que por ahora podemos pensar que es el del nivel socio-economico más alto.
k-mean ingresos
Hagamos un analisis por separado, tomando solo los ingresos notemos que tenemos dos datos que se separan pero se agrupan bien.
Observando los datos más lejanos
| ing_cor | trabajo | ingtrab | sueldos | percep_tot | smg | ing_neg | ing_program | |
|---|---|---|---|---|---|---|---|---|
| Hog07834 | 4501830 | 0 | 0 | 0 | 0 | 7952.4 | 4490217 | 4501830 |
| ing_cor | trabajo | ingtrab | sueldos | percep_tot | smg | ing_neg | ing_program | |
|---|---|---|---|---|---|---|---|---|
| Hog043214 | 2937172 | 1398566 | 1841189 | 959016.4 | 79587.8 | 7952.4 | 2634590 | 0 |
k- means gastos
| gasto_mon | ingtrab | trabajo | gast_viv | gast_deudas | gast_personal | gast_salud | gast_transp | |
|---|---|---|---|---|---|---|---|---|
| Hog04321 | 51620.7 | 34703.77 | 34703.77 | 20396.04 | 792.36 | 7927.28 | 489.1 | 37887.99 |
| gasto_mon | ingtrab | trabajo | gast_viv | gast_deudas | gast_personal | gast_salud | gast_transp | |
|---|---|---|---|---|---|---|---|---|
| Hog043214 | 634600 | 1841189 | 1398566 | 391800 | 4200899 | 110178.3 | 5869.54 | 115800 |
Podemos agrupar los gastos y vemos que tomando 6 grupos obtenemos
Caracteristicas de los clusters
Podemos ver con ayuda de la media de las variables en cada grupo las caracteristicas de cada uno, podemos ver que el grupo 3 se distingue bastante aunque los demas grupos puede que no sean tan relevantes al estar tan separados por lo que probaremos con menos grupos.
En este grafico se puede ver mejora al momento de diferenciar los cluster y por lo especificado anteriormente sobre los datos atipicos, nos es posible identificarlos mediante el grupo mayor(el grupo 1) Por lo tanto podemos diferenciarlos entre los que tiene altos gastos asi como altos ingresos, como personas de un nivel socioeconomico mayor, entonces encontramos que podemos clasificar a los hogares en tres niveles socio econommicos.
Clusterización jerarquica
Por motivos de eficiencia de maquina y complejidad del algoritmo, tomaremos una muestra para realizar el analisis de clusterización jerarquica, con la cual supondremos la muestra significativa para poder agrupar a los hogares en estudio.
Podemos observar que este tipo de clusterización nos sugiere clasificar a los hogares de México en 2 grupos, pues el dendrograma que utilizamos nos ayuda a encontrar el número de clusters que el algoritmo esta calculando.
Con clusterización jerarquica podriamos realizar los grupos socioeconommisoa de nivel alto y nivel bajo. Aunque en realidad podemos pensar que logicamente las primeras agrupaciones que realizamos nos podrian servir más, utilizando un mayor número de clusters que poquitos como este algoritmo sugiere.
Por último veamos el comportamiento de los gastos e ingresos con 3 grupos.
Se pudo suponer que los gastos de los hogares pogria ser proporcional a los ingresos que generan cada uno de ellos,, pero con ayuda de esta clusterización podemos concluir que no es del todo correcto pues los hogares que tienen mayores ingresos en promedio no necesariamente son los que tienen mayores gastos. Las observaciones realizadas con la media de las variables nos ayudan a llegar a esta conjetura, sin embargo, para poder confirmar esta teoría podriamos hacer uso de otras metricas para encontrar una afirmación completamente correcta. Pues derivado de aqui podemos implicar muchos analisis relacionados a la salud finaciera de los hogares mexicanos, pues al concluir que los gastos estan completamente desequilibrados con los ingresos de los hogares en ciertos niveles socioeconomicos se pueden abrir campañas de educación financiera para que en los hogares mexicanos no haya más deuda de la que pueden pagar por ejemplo.