miércoles, 4 de diciembre de 2024

Función "Recode" del paqute dplyr

Análisis de correspondencia textual con factominer
pacman::p_load(
  tidyverse,
  FactoMineR ,
  factoextra,
  tm
)

Preparo la data

df <- campo_social[, c(2:5, 7, 11:16, 25,27,28)] 

# inspecciono el marco creado
glimpse(df)
## Rows: 302
## Columns: 14
## $ plantas                  <fct> dos plantas, una planta, dos plantas, una pla~
## $ viviends                 <fct> una vivienda, una vivienda, una vivienda, una~
## $ hogars                   <fct> un hogar, un hogar, un hogar, un hogar, un ho~
## $ habitaciones             <fct> dos habitaciones, dos habitaciones, dos habit~
## $ ba_a_o                   <fct> un banio, un banio, un banio, un banio, un ba~
## $ paredes                  <fct> bloque o ladrillo sin frisar, bloque o ladril~
## $ techo                    <fct> bloque o ladrillo sin frisar, otro, otro, blo~
## $ piso                     <fct> marmol y similares, cemento, cemento, cemento~
## $ agua                     <fct> acueducto o tuberia, acueducto o tuberia, acu~
## $ aseo                     <fct> aseo urbano o camion, container o bajante, al~
## $ otros_serv               <fct> poceta conectada a pozo septico, poceta conec~
## $ situacion_laboral_actual <fct> otra, otra, otra, quehaceres del hogar, otra,~
## $ otro_tipo_de_ingresos    <fct> pension, cesta ticket, pension, otro, pension~
## $ ingreso_familiar         <fct> 2001 y mas, 2001 y mas, 800 - 2000, menos de ~

Elimino palabras funcionales de la variable “debilidads” y agrego la variable al marco

#agrego la variable "debilidades" desde el marco campo_social y
# elimino las palabras vacias

df %>% 
  mutate(debilidades = removeWords(as.character(campo_social$debilidads),
                                   stopwords("spanish"))) ->df
# inspecciono el marco
glimpse(df)
## Rows: 302
## Columns: 15
## $ plantas                  <fct> dos plantas, una planta, dos plantas, una pla~
## $ viviends                 <fct> una vivienda, una vivienda, una vivienda, una~
## $ hogars                   <fct> un hogar, un hogar, un hogar, un hogar, un ho~
## $ habitaciones             <fct> dos habitaciones, dos habitaciones, dos habit~
## $ ba_a_o                   <fct> un banio, un banio, un banio, un banio, un ba~
## $ paredes                  <fct> bloque o ladrillo sin frisar, bloque o ladril~
## $ techo                    <fct> bloque o ladrillo sin frisar, otro, otro, blo~
## $ piso                     <fct> marmol y similares, cemento, cemento, cemento~
## $ agua                     <fct> acueducto o tuberia, acueducto o tuberia, acu~
## $ aseo                     <fct> aseo urbano o camion, container o bajante, al~
## $ otros_serv               <fct> poceta conectada a pozo septico, poceta conec~
## $ situacion_laboral_actual <fct> otra, otra, otra, quehaceres del hogar, otra,~
## $ otro_tipo_de_ingresos    <fct> pension, cesta ticket, pension, otro, pension~
## $ ingreso_familiar         <fct> 2001 y mas, 2001 y mas, 800 - 2000, menos de ~
## $ debilidades              <chr> "agua", "agua", "vialiad", "servicio  agua ir~
# inspecciono las categorias de la variable "debilidades"
sort(table(df$debilidades), decreasing = TRUE)
## 
##                           inseguridad                                  agua 
##                                    55                                    42 
##                            transporte             vialidad  infraestructura 
##                                    28                                    19 
##                                basura                                  aseo 
##                                    18                                    15 
##                          delincuencia                             escaleras 
##                                    14                                     6 
##                                                                     cloacas 
##                                     5                                     4 
##                           falta  agua                     servicios basicos 
##                                     4                                     4 
##                          aguas negras                                calles 
##                                     3                                     3 
##                              desunion                                drogas 
##                                     3                                     3 
##                        servicio  agua                           agua escasa 
##                                     3                                     2 
##                         aguas blancas                              basurero 
##                                     2                                     2 
##                       consejo comunal                       desorganizacion 
##                                     2                                     2 
##                                   gas                   irregularidad  agua 
##                                     2                                     2 
##                                 ruido                             seguridad 
##                                     2                                     2 
##                         hacen mejoras                    informacion  fluye 
##                                     1                                     1 
##                            pasa  aseo                                  sabe 
##                                     1                                     1 
##                                acceso                        aguas servidas 
##                                     1                                     1 
##                        alcantarillado                        aseo irregular 
##                                     1                                     1 
##                           aseo urbano                    ausencia  consenso 
##                                     1                                     1 
##                   ausencia  escaleras                      calle incompleta 
##                                     1                                     1 
##                          calles malas                          calles rotas 
##                                     1                                     1 
##                            caminerias                             carretera 
##                                     1                                     1 
##               debilidades   servicios                         deficit  agua 
##                                     1                                     1 
##                 desacuerdo  comunidad                           desatencion 
##                                     1                                     1 
##                      desunion vecinal                         escases  agua 
##                                     1                                     1 
##                      falta  seguridad                      frecuencia  aseo 
##                                     1                                     1 
##                       infraestructura          inoperancia  consejo comunal 
##                                     1                                     1 
##                        junta  vecinos                    labor  autoridades 
##                                     1                                     1 
##                       mal   escaleras                         mas escaleras 
##                                     1                                     1 
##                   mejorar   escaleras                  organizacion vecinal 
##                                     1                                     1 
##               peleas  consejo comunal     problemas ambientales  transporte 
##                                     1                                     1 
##                  promesas incumplidas                   racionamiento  agua 
##                                     1                                     1 
##                   recoleccion  basura                     reforzar  escuela 
##                                     1                                     1 
##                     regularidad  agua        servicio  agua  aseo irregular 
##                                     1                                     1 
##              servicio  agua irregular                servicio  agua potable 
##                                     1                                     1 
##                        servicio  aseo                             servicios 
##                                     1                                     1 
##                        sistema  salud                     terreno inestable 
##                                     1                                     1 
##                            vandalismo                         venta  drogas 
##                                     1                                     1 
##                          via  trafico                               vialiad 
##                                     1                                     1 
##       vialidad  infraestructura  mal  vialidad  infraestructura  transporte 
##                                     1                                     1 
##     vialidad  infraestructura publica                                  vias 
##                                     1                                     1 
##                             violencia 
##                                     1

Hay que hacer alguna limpiezas y recodificar variables. Por ejemplo “agua”, “servicio agua”, “aguas escasa”, “aguas blancas”, “irregularidad agua”, etc., parecen dar cuenta de un mismo fenómeno. Estas categorías podrían reagruparse, por ejemplo, como “agua”. Es necesario reflexionar al tomar esta decisión. No es lo mismo que alguien exprese “falta agua” o “no llega el agua” a que diga “irregularidad…”. En el primer caso la opinión parece expresar la carencia del servicio de agua. En el segundo, el problema parece ser la frecuencia en el suministro del agua.

Otra limpieza que se debe hacer es reescribir las categorías que han sido mal tipeadas o que presenten errores ortográficos. Un ejemplo para el procedimiento de recodificación:

# una de las muchas formas posibles de recodificar 
# categorías de variables en R
df %>% mutate(debilidades=recode(debilidades,
                                 'aguas negras'='cloacas')) -> df

La sugerencia es, luego de hacer la inspección de las categorías, tomar reflexionar sobre aquellas que pueden y deben agruparse. Adicionalmente, se puede tomar también la decisión de crear la categoría “otros” para las frecuencias muy bajas. Tener en cuenta que si esa categoría “otros” resulta ser mucho más frecuentes que el resto, entonces se ha creado un problema. En ese caso puede ser útil crear varias categorías que comiencen con “otros”. Por ejemplo: “otros infraestructura”, “otros serv. bas”.

Empleo la función textual() de factoMineR

# aplico la funcion textual
texto <-textual(df, num.text=15, contingence.by = 1)
 
# inspecciono lo que se ha creado
texto
## $cont.table
##              acceso agua aguas alcantarillado ambientales aseo ausencia
## dos plantas       0   22     0              0           0    7        1
## tres plantas      0    7     0              0           0    1        0
## una planta        1   31     3              1           1   13        1
##              autoridades basicos basura basurero blancas calle calles
## dos plantas            0       1      5        1       0     0      1
## tres plantas           1       0      3        0       0     0      0
## una planta             0       3     11        1       2     1      4
##              caminerias carretera cloacas comunal comunidad consejo consenso
## dos plantas           0         0       3       1         0       1        0
## tres plantas          0         0       1       0         0       0        0
## una planta            1         1       3       3         1       3        1
##              debilidades deficit delincuencia desacuerdo desatencion
## dos plantas            0       0            2          0           0
## tres plantas           0       1            0          0           0
## una planta             1       0           12          1           1
##              desorganizacion desunion drogas escaleras escasa escases escuela
## dos plantas                0        1      1         4      0       1       0
## tres plantas               0        0      1         0      0       0       0
## una planta                 2        3      2         6      2       0       1
##              falta fluye frecuencia gas hacen incompleta incumplidas inestable
## dos plantas      3     0          0   1     0          0           1         0
## tres plantas     0     0          0   1     0          0           0         0
## una planta       2     1          1   0     1          1           0         1
##              informacion infraestructura inoperancia inseguridad irregular
## dos plantas            0               7           0          22         0
## tres plantas           0               1           0           6         0
## una planta             1              15           1          27         3
##              irregularidad junta labor mal malas mas mejorar mejoras
## dos plantas              1     0     0   1     1   0       1       0
## tres plantas             0     0     1   0     0   0       0       0
## una planta               1     1     0   1     0   1       0       1
##              organizacion pasa peleas potable problemas promesas publica
## dos plantas             1    1      0       1         0        1       1
## tres plantas            0    0      0       0         0        0       0
## una planta              0    0      1       0         1        0       0
##              racionamiento recoleccion reforzar regularidad rotas ruido sabe
## dos plantas              1           0        0           1     0     0    1
## tres plantas             0           0        0           0     0     0    0
## una planta               0           1        1           0     1     2    0
##              salud seguridad servicio servicios servidas sistema terreno
## dos plantas      1         2        3         1        0       1       0
## tres plantas     0         0        2         0        0       0       0
## una planta       0         1        2         5        1       0       1
##              trafico transporte urbano vandalismo vecinal vecinos venta via
## dos plantas        0          6      1          0       1       0     0   0
## tres plantas       1          2      0          0       0       0     0   1
## una planta         0         22      0          1       1       1     1   0
##              vialiad vialidad vias violencia
## dos plantas        1        6    1         0
## tres plantas       0        1    0         1
## una planta         0       15    0         0
## 
## $nb.words
##                 words nb.list
## agua               60      60
## inseguridad        55      55
## transporte         30      30
## infraestructura    23      23
## vialidad           22      22
## aseo               21      21
## basura             19      19
## delincuencia       14      14
## escaleras          10      10
## servicio            7       7
## cloacas             7       7
## servicios           6       6
## falta               5       5
## calles              5       5
## drogas              4       4
## desunion            4       4
## consejo             4       4
## comunal             4       4
## basicos             4       4
## seguridad           3       3
## irregular           3       3
## aguas               3       3
## vecinal             2       2
## ruido               2       2
## mal                 2       2
## irregularidad       2       2
## gas                 2       2
## escasa              2       2
## desorganizacion     2       2
## blancas             2       2
## basurero            2       2
## ausencia            2       2
## violencia           1       1
## vias                1       1
## vialiad             1       1
## via                 1       1
## venta               1       1
## vecinos             1       1
## vandalismo          1       1
## urbano              1       1
## trafico             1       1
## terreno             1       1
## sistema             1       1
## servidas            1       1
## salud               1       1
## sabe                1       1
## rotas               1       1
## regularidad         1       1
## reforzar            1       1
## recoleccion         1       1
## racionamiento       1       1
## publica             1       1
## promesas            1       1
## problemas           1       1
## potable             1       1
## peleas              1       1
## pasa                1       1
## organizacion        1       1
## mejoras             1       1
## mejorar             1       1
## mas                 1       1
## malas               1       1
## labor               1       1
## junta               1       1
## inoperancia         1       1
## informacion         1       1
## inestable           1       1
## incumplidas         1       1
## incompleta          1       1
## hacen               1       1
## frecuencia          1       1
## fluye               1       1
## escuela             1       1
## escases             1       1
## desatencion         1       1
## desacuerdo          1       1
## deficit             1       1
## debilidades         1       1
## consenso            1       1
## comunidad           1       1
## carretera           1       1
## caminerias          1       1
## calle               1       1
## autoridades         1       1
## ambientales         1       1
## alcantarillado      1       1
## acceso              1       1

Para el análisis de correspondencia me interesa la porción cont.table. Hago ahora el análisis de correspondencia.

# poner cuidado como accedo a cont.table.

df_ca_plantas <- CA(texto$cont.table)

Si quiero que se haga el análisis con más de una variable (posiblemente no es una buena idea porque se producirá mucha “aglomeración”):

texto2 <-textual(df, num.text=15, contingence.by = list(c(1,2)))
# poner cuidado como accedo a cont.table
df_ca_dos <- CA(texto2$cont.table)