MODELADO DE BASE DATO

PAQUETES ESTADÍSTICOS

library(openxlsx) 
library(rmarkdown) 
library(tidyverse) 
library(haven) 
library(foreign) 
library(survey) 

GENERAMOS UNA RUTA PARA GUARDAR NUESTROS DATOS

Una ruta hacia una carpeta donde almacenaremos los excel que se elaborarán posteriormente, que contarán con dataset de información construida.

ruta <- "C:\\Users\\DINDES08\\Desktop\\Senaju Data\\SenData" 

CARGAR BASES DE DATOS

La base de identidad 2020 la variable discapacidad tiene la denominación ‘p300_6_1’ para el 2022 ‘p300y_1’. Respecto al 2020 la variable es p300c, en 2022 es p300z.

choose.files()
## character(0)
identidad2022<- read_spss("C:\\Users\\Trabajo\\Desktop\\ENAPRES\\Identidad-785-modulo1729-2022\\CAP_300_URBANO_RURAL_5.sav")
enapres <- identidad2022

ELABORACION DE VARIABLES PARA DESAGREGACIONES

VARIABLES TRANSVERSALES

Aquellas variables que nos sirven para realizar las desagregaciones posteriores.

SEXO

enapres <- enapres %>% mutate(sexo = ifelse(P207==1,"Hombre",ifelse(P207==2,"Mujer",0)))
table(enapres$sexo, useNA = "alw")
## 
## Hombre  Mujer   <NA> 
##  69301  71744      0

DEPARTAMENTOS

NO TENEMOS UBIGEO PERO SÍ TENEMOS LOS CÓDIGOS DE DEPARTAMENTO, PROVINCIA Y DISTRITO, EL UBIGEO ES LA COMBINACIÓN DE ESTOS ELEMENTOS

enapres$ubigeo <- paste0(enapres$CCDD,enapres$CCPP,enapres$CCDI)
enapres$ubigeonum <- as.numeric(enapres$ubigeo)

enapres <- enapres %>%
  mutate(regiones2 = 
           ifelse(ubigeonum >= 010101 & ubigeonum <= 010707, "Amazonas", 
           ifelse(ubigeonum >= 020101 & ubigeonum <= 022008, "Ancash",
           ifelse(ubigeonum >= 030101 & ubigeonum <= 030714, "Apurimac",
           ifelse(ubigeonum >= 040101 & ubigeonum <= 040811, "Arequipa",
           ifelse(ubigeonum >= 050101 & ubigeonum <= 051108, "Ayacucho",
           ifelse(ubigeonum >= 060101 & ubigeonum <= 061311, "Cajamarca",
           ifelse(ubigeonum >= 070101 & ubigeonum <= 070107, "Callao",
           ifelse(ubigeonum >= 080101 & ubigeonum <= 081307, "Cusco",
           ifelse(ubigeonum >= 090101 & ubigeonum <= 090723, "Huancavelica",
           ifelse(ubigeonum >= 100101 & ubigeonum <= 101108, "Huanuco",
           ifelse(ubigeonum >= 110101 & ubigeonum <= 110508, "Ica",
           ifelse(ubigeonum >= 120101 & ubigeonum <= 120909, "Junin",
           ifelse(ubigeonum >= 130101 & ubigeonum <= 131203, "La Libertad",
           ifelse(ubigeonum >= 140101 & ubigeonum <= 140312, "Lambayeque",
           ifelse(ubigeonum >= 150101 & ubigeonum <= 150143, "Lima Metropolitana",
           ifelse(ubigeonum >= 150201 & ubigeonum <= 151033, "Lima Region",
           ifelse(ubigeonum >= 160101 & ubigeonum <= 160804, "Loreto",
           ifelse(ubigeonum >= 170101 & ubigeonum <= 170303, "Madre de Dios",
           ifelse(ubigeonum >= 180101 & ubigeonum <= 180303, "Moquegua",
           ifelse(ubigeonum >= 190101 & ubigeonum <= 190308, "Pasco",
           ifelse(ubigeonum >= 200101 & ubigeonum <= 200806, "Piura",
           ifelse(ubigeonum >= 210101 & ubigeonum <= 211307, "Puno",
           ifelse(ubigeonum >= 220101 & ubigeonum <= 221005, "San Martín",
           ifelse(ubigeonum >= 230101 & ubigeonum <= 230408, "Tacna",
           ifelse(ubigeonum >= 240101 & ubigeonum <= 240304, "Tumbes",
           ifelse(ubigeonum >= 250101 & ubigeonum <= 250401, "Ucayali",NA)))))))))))))))))))))))))))

table(enapres$regiones2, useNA = "alw")
## 
##           Amazonas             Ancash           Apurimac           Arequipa 
##               5764               5478               4773               4863 
##           Ayacucho          Cajamarca             Callao              Cusco 
##               5906               5517               6293               5065 
##       Huancavelica            Huanuco                Ica              Junin 
##               4684               5240               5125               5122 
##        La Libertad         Lambayeque Lima Metropolitana        Lima Region 
##               6050               5681               9236               3945 
##             Loreto      Madre de Dios           Moquegua              Pasco 
##               7254               4885               3771               4687 
##              Piura               Puno         San Martín              Tacna 
##               6589               4945               6275               3767 
##             Tumbes            Ucayali               <NA> 
##               4063               6067                  0

REGIONES NATURALES

enapres$REGIONNATU <- as.factor(enapres$REGIONNATU)
enapres <- enapres %>%
  mutate(regnat = ifelse(REGIONNATU=="1","Costa", ifelse(REGIONNATU=="2","Sierra", ifelse(REGIONNATU=="3","Selva",0))))
table(enapres$regnat, useNA = "alw")
## 
##  Costa  Selva Sierra   <NA> 
##  52598  34438  54009      0

CONDICIÓN DE POBREZA

enapres <- enapres %>%
  mutate(pobreza3 = ifelse(ESTRATO==1,"NSE A", 
                           ifelse(ESTRATO==2, "NSE B", 
                                  ifelse(ESTRATO==3, "NSE C", 
                                         ifelse(ESTRATO==4, "NSE D", 
                                                ifelse(ESTRATO==5, "NSE E",0))))))
table(enapres$pobreza3, useNA = "alw")
## 
## NSE A NSE B NSE C NSE D NSE E  <NA> 
##  7120 13838 20334 25785 24219 49749

LENGUA MATERNA

enapres <- enapres %>% mutate(lengua = case_when(
  P300Z == 1 ~ "Andino/Amazónico",
  P300Z == 2 ~ "Andino/Amazónico",
  P300Z == 3 ~ "Andino/Amazónico",
  P300Z == 4 ~ "Andino/Amazónico",
  P300Z == 5 ~ "Andino/Amazónico",
  P300Z == 6 ~ "Andino/Amazónico",
  P300Z == 7 ~ "Andino/Amazónico", 
  P300Z == 8 ~ "Andino/Amazónico",
  P300Z == 9 ~ "Andino/Amazónico",
  P300Z == 10 ~ "Castellano",
  P300Z == 11 ~ "lengua extranjera",
  P300Z == 12 ~ "lengua extranjera",
  P300Z == 13 ~ "Otro",
  P300Z == 14 ~ "Otro",
  TRUE ~ NA
))
enapres$lengua <- as.factor(enapres$lengua)
table(enapres$lengua, useNA = "alw")
## 
##  Andino/Amazónico        Castellano lengua extranjera              Otro 
##             24936            102116               126               234 
##              <NA> 
##             13633

DISCAPACIDAD

#endes <- endes %>% 
  #mutate(discapacidad = ifelse(QD333_1==1 | QD333_2 ==1 | QD333_3==1 | #QD333_4==1 | QD333_5==1 | QD333_6==1,1,0))

enapres <- enapres %>% 
  mutate(discapacidad1 = case_when(
    P300Y_1 == 1 ~ 1,
    P300Y_2== 1 ~ 1,
    P300Y_3 == 1 ~ 1,
    P300Y_4 == 1 ~ 1,
    P300Y_5 == 1 ~ 1,
    P300Y_6 == 1 ~ 1,
    is.na(P300Y_1) ~ 0,
    is.na(P300Y_2) ~ 0,
    is.na(P300Y_3) ~ 0,
    is.na(P300Y_4) ~ 0,
    is.na(P300Y_5) ~ 0,
    is.na(P300Y_6) ~ 0,
    TRUE ~ 0
  ))

table(enapres$discapacidad1, useNA = "alw")
## 
##      0      1   <NA> 
## 136222   4823      0

ETNICIDAD

enapres <- enapres %>%
  mutate(defiet2 = case_when(
    P319 == 1 ~ "Quechua",
    P319 == 2 ~ "Aimara",
    P319 == 3 ~ "Nativo o indigena de la Amazonia",
    P319 == 4 ~ "Perteneciente o parte de otro pueblo indigena u originario",
    P319 == 5 ~ "Negro/moreno/zambo/mulato/pueblo afroperuano 
o afrodescendiente",
    P319 == 6 ~ "Blanco",
    P319 == 7 ~ "Mestizo",
    P319 == 8 ~ "Otro",
    TRUE ~ NA_character_
  ))
enapres$defiet2 <- as.factor(enapres$defiet2)
table(enapres$defiet2, useNA = "alw")
## 
##                                                            Aimara 
##                                                              3409 
##                                                            Blanco 
##                                                              5942 
##                                                           Mestizo 
##                                                             42867 
##                                  Nativo o indigena de la Amazonia 
##                                                              2363 
## Negro/moreno/zambo/mulato/pueblo afroperuano \no afrodescendiente 
##                                                             10357 
##                                                              Otro 
##                                                             11418 
##        Perteneciente o parte de otro pueblo indigena u originario 
##                                                               102 
##                                                           Quechua 
##                                                             23343 
##                                                              <NA> 
##                                                             41244

MÁXIMO NIVEL EDUCATIVO ALCANZADO

table(enapres$P301B, useNA = "alw")
## 
##     1     2     3     4     5     6     7     8     9    10    11    12  <NA> 
##  8603  6491 26135 14295 19685 24766   126  4072  8282  5936  7448  1573 13633
enapres <- enapres %>% 
  mutate(alcanzado = ifelse(P301B==4 | P301B==5, "primaria completa",  
                            ifelse(P301B==6 | P301B==8 | P301B==10, "secundaria completa",  
                                   ifelse(P301B==9, "superior no universitaria completa",  
                                          ifelse(P301B==11,"Superior universitaria completa",  
                                                 ifelse(P301B==12, "postgrado", 
                                                        ifelse(P301B==1 | P301B==2 | P301B==3, "primaria incompleta o menos", NA))))))) 

enapres$alcanzado <- as.factor(enapres$alcanzado) 

table(enapres$alcanzado, useNA = "alw") 
## 
##                          postgrado                  primaria completa 
##                               1573                              33980 
##        primaria incompleta o menos                secundaria completa 
##                              41229                              34774 
## superior no universitaria completa    Superior universitaria completa 
##                               8282                               7448 
##                               <NA> 
##                              13759

VARIABLES INDICADOR

VARIABLE ORIENTACION SEXUAL

Hay que darle las etiquetas pertinentes y convertirlo a factor

enapres <- enapres %>% mutate(osexual = case_when(P322==1 ~ "Heterosexual",
                                                  P322==2 ~ "Homosexual(gay o lesbiana",
                                                  P322==3 ~ "Bisexual",
                                                  P322==4 ~ "Pansexual",
                                                  P322==5 ~ "Asexual",
                                                  P322==6 ~ "Otra",
                                                  P322==7 ~ "Ninguna",
                                                  P322==8 ~ "No responde/No contesta",
                                                  TRUE ~ NA_character_))
enapres$osexual <- as.factor(enapres$osexual)
table(enapres$osexual, useNA = "alw")
## 
##                   Asexual                  Bisexual              Heterosexual 
##                      2420                      1205                     64750 
## Homosexual(gay o lesbiana                   Ninguna   No responde/No contesta 
##                       396                     14570                      5780 
##                      Otra                 Pansexual                      <NA> 
##                       229                       343                     51352
enapres <- enapres %>% mutate(osexual2 = case_when(P322==1 ~ "Heterosexual",
                                                  P322==2 ~ "No heterosexual",
                                                  P322==3 ~ "No heterosexual",
                                                  P322==4 ~ "No heterosexual",
                                                  P322==5 ~ "No heterosexual",
                                                  P322==6 ~ "No heterosexual",
                                                  P322==7 ~ "Ninguna",
                                                  P322==8 ~ "No responde/No contesta",
                                                  TRUE ~ NA_character_))
enapres$osexual2<-as.factor(enapres$osexual2)
table(enapres$osexual2,useNA = "alw")
## 
##            Heterosexual                 Ninguna         No heterosexual 
##                   64750                   14570                    4593 
## No responde/No contesta                    <NA> 
##                    5780                   51352

VARIABLE IDENTIDAD DE GÉNERO

enapres <- enapres %>% mutate(igenero=case_when(P323==1 ~ "Mujer",
                                                P323==2 ~ "Hombre",
                                                P323==3 ~ "Mujer trans/Transfemina",
                                                P323==4 ~ "Hombre trans/Trans masculino",
                                                P323==5 ~ "Otra",
                                                P323==6 ~ "Ninguna",
                                                P323==7 ~ "No responde/No contesta",))
enapres$igenero <- as.factor(enapres$igenero)
table(enapres$igenero, useNA = "alw")
## 
##                       Hombre Hombre trans/Trans masculino 
##                        39932                          131 
##                        Mujer      Mujer trans/Transfemina 
##                        43798                          214 
##                      Ninguna      No responde/No contesta 
##                         3383                         2102 
##                         Otra                         <NA> 
##                          133                        51352

VARIABLE JUVENTUD

enapres <- enapres %>% mutate(juventud = ifelse(P208_A>=18 & P208_A<=29,"jovenes",NA))
table(enapres$juventud, useNA = "alw")
## 
## jovenes    <NA> 
##   23830  117215

PONDERACIÓN DE DATOS, DATASETS Y TRASLADO A EXCEL

DISEÑO MUESTRAL Y FUNCION EXPORTAR A EXCEL

EN ESTE CASO SE COLOCA NEST = TRUE YA QUE NO SON MUESTRAS ANIDADAS (PENDIENTE INDAGAR ESTO) EN LA BD 2017 SE USA EL “FACTORANUAL” EN LOS DEMÁS (2018,19,20 Y 21) “FACTOR”

# Diseño muestral para la ponderación de valores
encuesta = svydesign(data=enapres, id=~CONGLOMERADO, strata=~CCDD,
                     weights=~FACTOR, nest = TRUE)

# Función para generar un archivo excel con todas las desagregaciones en pestañas
generar_archivo_excel2 <- function(nombre_archivo, datos) {
  workbook <- createWorkbook()
  
  for (i in seq_along(datos)) {
    addWorksheet(workbook, sheetName = paste("Datos", i-1, sep = ""))
    writeData(workbook, sheet = paste("Datos", i-1, sep = ""), x = datos[[i]], colNames = TRUE)
  }
  
  saveWorkbook(workbook, nombre_archivo)
}

DESAGREGACIÓN NACIONAL ORIENTACIÓN SEXUAL

# Calcular promedio, coeficiente de variación e intervalos de confianza
tabla0 <- svyby(~osexual2, ~juventud, encuesta, svymean, deff=F, na.rm=T)
cv0 <- cv(tabla0)
ic0 <- confint(tabla0)
tabla0
generar_archivo_excel2("datos3.xlsx", list(tabla0,cv0,ic0))

DESAGREGACION DEPARTAMENTAL ORIENTACION SEXUAL

tabla1 <- svyby(~osexual2, ~juventud+regiones2, encuesta, svymean, deff=F, na.rm=T)
ic1 <- confint(tabla1)
cv1 <- cv(tabla1)
tabla1
generar_archivo_excel2("datos5.xlsx", list(tabla1,cv1))

DESAGREGACIÓN ORIENTACION SEXUAL EN NO HETEROSEXUALES

tabla2 <- svyby(~osexual, ~juventud+osexual2, encuesta, svymean, deff=F, na.rm=T)
ic2 <- confint(tabla2)
cv2 <- cv(tabla2)
tabla2
generar_archivo_excel2("datos6.xlsx", list(tabla2,cv2))

DESAGREGACIÓN ORIENTACION SEXUAL SEGUN NIVEL EDUCATIVO ALCANZADO

tabla3 <- svyby(~alcanzado, ~juventud, encuesta, svymean, deff=F, na.rm=T)
ic3 <- confint(tabla3)
cv3 <- cv(tabla3)
tabla3
generar_archivo_excel2("datos9.xlsx", list(tabla3,cv3))

DESAGREGACIÓN SEGUN CONDICIÓN DE POBREZA

tabla4 <- svyby(~pobreza3, ~juventud, encuesta, svymean, deff=F, na.rm=T)
ic4 <- confint(tabla4)
cv4 <- cv(tabla4)
tabla4
generar_archivo_excel2("datos101.xlsx", list(tabla4,cv4))

DESAGREGACIÓN SEGUN IDENTIDAD DE GENERO

tabla6 <- svyby(~igenero, ~juventud, encuesta, svymean, deff=F, na.rm=T)
ic6 <- confint(tabla6)
cv6 <- cv(tabla6)
tabla6
generar_archivo_excel2("datos11.xlsx", list(tabla6,cv6))