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/Trabajo/Desktop/RDATA" 

CARGAR BASES DE DATOS

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

#choose.files()
#datos2017 <- read_spss("C:\\Users\\Trabajo\\Desktop\\ENAPRES\\Seguridad - 596 - Modulo1239 - 2017\\CAP_600_URBANO_7.sav")
#datos2018 <- read_spss("C:\\Users\\Trabajo\\Desktop\\ENAPRES\\Seguridad - 626 - mod1374 - 2018\\CAP_600_URBANO_7.sav") 
#datos2019 <- read_spss("C:\\Users\\Trabajo\\Desktop\\ENAPRES\\Segurdad - 761-Modulo1679 - 2019\\CAP_600_URBANO_7.sav") 
#datos2020 <- read_spss("C:\\Users\\Trabajo\\Desktop\\ENAPRES\\Segurdad - 761-Modulo1679 - 2020\\CAP_600_URBANO_7.sav") 
#datos2021 <- read_spss("C:\\Users\\Trabajo\\Desktop\\ENAPRES\\Segurdad - 761-Modulo1679 - 2021\\CAP_600_URBANO_7.sav")

seguridad2022 <- read_spss("C:\\Users\\DINDES08\\Desktop\\ENAPRES\\2022\\seguridad-ciudadana-785-Modulo1731\\CAP_600_URBANO_7.sav")

identidad2022<- read_spss("C:\\Users\\DINDES08\\Desktop\\ENAPRES\\2022\\identidad-discapacidad-785-Modulo1729\\CAP_300_URBANO_RURAL_5.sav")
table(identidad2022$P300_6_1)
## < table of extent 0 >
identidad2022 <- subset(identidad2022, select=c("CONGLOMERADO","NSELV","TSELV","CCDD","CCPP","CCDI","VIVIENDA","HOGAR","P300_A","P300_C","P300Z","P319","P300Y_1","P300Y_2","P300Y_3","P300Y_4","P300Y_5","P300Y_6"))

FILTROS A LA BD

seguridad2022 <- seguridad2022 %>% 
  filter((P204 == 1 & P205 == 2) | (P204 == 2 & P206 == 1))
seguridad2022$referencial <- ifelse(seguridad2022$P201 != seguridad2022$P600_C, 1, 0)
seguridad2022 <- seguridad2022 %>% filter(referencial == 0)
table(seguridad2022$referencial, useNA = "alw")
## 
##     0  <NA> 
## 63705     0
#FILTROS A LA BD2 AREA URBANA Y EDAD 15 a 99 años
seguridad2022 <- seguridad2022 %>% filter(AREA==1 & RESFIN<3 & P208_A>=15 & P208_A<99)

UNION DE BD

PRIMERO HAY QUE CREAR UNA VARIABLE LLAVE ENTRE AMBAS BD, LLAMADA ID

seguridad2022$ID <- paste0(seguridad2022$CONGLOMERADO,seguridad2022$NSELV,seguridad2022$TSELV,seguridad2022$CCDD,seguridad2022$CCPP,seguridad2022$CCDI,seguridad2022$VIVIENDA,seguridad2022$HOGAR,seguridad2022$P600_A,seguridad2022$P600_C)

identidad2022$ID <- paste0(identidad2022$CONGLOMERADO,identidad2022$NSELV,identidad2022$TSELV,identidad2022$CCDD,identidad2022$CCPP,identidad2022$CCDI,identidad2022$VIVIENDA,identidad2022$HOGAR,identidad2022$P300_A,identidad2022$P300_C)
identidad2022 <- distinct(identidad2022, ID, .keep_all = TRUE)
table(duplicated(identidad2022$ID))
## 
##  FALSE 
## 141032
enapres <- left_join(seguridad2022,identidad2022, by=c("ID"))

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> 
##  29257  32967      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.x,enapres$CCPP.x,enapres$CCDI.x)
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 
##               2085               2429               1999               2322 
##           Ayacucho          Cajamarca             Callao              Cusco 
##               2459               1990               4031               2012 
##       Huancavelica            Huanuco                Ica              Junin 
##               1796               1971               2047               2158 
##        La Libertad         Lambayeque Lima Metropolitana        Lima Region 
##               2646               2552               5980               1625 
##             Loreto      Madre de Dios           Moquegua              Pasco 
##               2601               2037               1811               1856 
##              Piura               Puno         San Martín              Tacna 
##               2884               2232               3057               1764 
##             Tumbes            Ucayali               <NA> 
##               1776               2104                  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> 
##  28254  12581  21389      0

ÁREA URBANA/RURAL

ÁREA DE DEL DOMICILIO 1, EL INDICADOR SOLO CONTEMPLA AREA URBANA table(enapres$AREA)

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> 
##  4870  9805 14270 17388 15891     0

LENGUA MATERNA

table(enapres$P300Z)
## 
##     1     2     3     4     5     8     9    10    11    12    13    14 
##  8688  1372    30    33    67     8    43 51906    27    20     4     4
str(enapres$P300Z)
##  dbl+lbl [1:62224] 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, ...
##  @ label        : chr "¿CUÁL ES EL IDIOMA O LENGUA MATERNA QUE APRENDIÓ HABLAR EN SU NIÑEZ?"
##  @ format.spss  : chr "F11.0"
##  @ display_width: int 11
##  @ labels       : Named num [1:14] 1 2 3 4 5 6 7 8 9 10 ...
##   ..- attr(*, "names")= chr [1:14] " Quechua?" " Aimara?" " Ashaninka?" " Awajún  - Aguaruna?" ...
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 
##             10241             51906                47                 8 
##              <NA> 
##                22

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> 
## 60423  1801     0

ETNICIDAD

table(enapres$P319)
## 
##     1     2     3     4     5     6     7     8 
## 12718  2013   391    33  5746  3591 31404  6306
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 
##                                                              2013 
##                                                            Blanco 
##                                                              3591 
##                                                           Mestizo 
##                                                             31404 
##                                  Nativo o indigena de la Amazonia 
##                                                               391 
## Negro/moreno/zambo/mulato/pueblo afroperuano \no afrodescendiente 
##                                                              5746 
##                                                              Otro 
##                                                              6306 
##        Perteneciente o parte de otro pueblo indigena u originario 
##                                                                33 
##                                                           Quechua 
##                                                             12718 
##                                                              <NA> 
##                                                                22

VARIABLES INDICADOR

HECHOS DELICTIVOS EN LOS ÚLTIMOS 12 MESES

enapres <- enapres %>%
  mutate(atentado = ifelse(P601_1 == 1 | P601_2 == 1 | P601_3A == 1 | P601_3B == 1 | P601_4A == 1 | P601_4B == 1 | P601_5A == 1 |
                             P601_5B == 1 | P601_6A == 1 | P601_6B == 1 | P601_7 == 1 | P601_8 == 1 | P601_9 == 1 | P601_10 == 1 |
                             P601_11 == 1 | P601_12 == 1 | P601_13 == 1 | P601_14 == 1 | P601_15 == 1, 1, 0))
table(enapres$atentado, useNA = "alw")
## 
##     0     1  <NA> 
## 49316 12908     0

VARIABLE JUVENTUD

enapres <- enapres %>% mutate(juventud = ifelse(P208_A>=15 & P208_A<=29,"jovenes","otrasedades"))
table(enapres$juventud, useNA = "alw")
## 
##     jovenes otrasedades        <NA> 
##       19555       42669           0

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.x, strata=~CCDD.x,
                     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

# Calcular promedio, coeficiente de variación e intervalos de confianza
tabla0 <- svyby(~atentado, ~juventud, encuesta, svymean, deff=F, na.rm=T)
ic0 <- confint(tabla0)
cv0 <- matrix(cv(tabla0), nrow = length(cv(tabla0)), ncol = 1, dimnames = list(names(cv(tabla0)), "Coef. Var."))
datos0<-bind_cols(tabla0, cv0, ic0)
datos0

DESAGREGACION SEGÚN SEXO

tabla1 <- svyby(~atentado, ~juventud+sexo, encuesta, svymean, deff=F, na.rm=T)
ic1 <- confint(tabla1)
cv1 <- matrix(cv(tabla1), nrow = length(cv(tabla1)), ncol = 1, dimnames = list(names(cv(tabla1)), "Coef. Var."))
datos1<-bind_cols(tabla1, cv1, ic1)
datos1

DESAGREGACIÓN SEGUN REGIÓN NATURAL (COSTA, SIERRA, SELVA)

tabla3 <- svyby(~atentado, ~juventud+regnat, encuesta, svymean, deff=F, na.rm=T)
ic3 <- confint(tabla3)
cv3 <- matrix(cv(tabla3), nrow = length(cv(tabla3)), ncol = 1, dimnames = list(names(cv(tabla3)), "Coef. Var."))
datos3<-bind_cols(tabla3, cv3, ic3)
datos3

DESAGREGACIÓN SEGÚN DEPARTAMENTOS

tabla4 <- svyby(~atentado, ~juventud+regiones2, encuesta, svymean, deff=F, na.rm=T)
ic4 <- confint(tabla4)
cv4 <- matrix(cv(tabla4), nrow = length(cv(tabla4)), ncol = 1, dimnames = list(names(cv(tabla4)), "Coef. Var."))
datos4<-bind_cols(tabla4, cv4, ic4)
datos4

DESAGREGACIÓN SEGUN CONDICIÓN DE POBREZA

tabla5 <- svyby(~atentado, ~juventud+pobreza3, encuesta, svymean, deff=F, na.rm=T)
ic5 <- confint(tabla5)
cv5 <- matrix(cv(tabla5), nrow = length(cv(tabla5)), ncol = 1, dimnames = list(names(cv(tabla5)), "Coef. Var."))
datos5<-bind_cols(tabla5, cv5, ic5)
datos5

DESAGREGACIÓN SEGUN DISCAPACIDAD

tabla6 <- svyby(~atentado, ~juventud+discapacidad1, encuesta, svymean, deff=F, na.rm=T)
ic6 <- confint(tabla6)
cv6 <- matrix(cv(tabla6), nrow = length(cv(tabla6)), ncol = 1, dimnames = list(names(cv(tabla6)), "Coef. Var."))
datos6<-bind_cols(tabla6, cv6, ic6)
datos6

DESAGREGACIÓN SEGÚN ETNICIDAD

tabla7 <- svyby(~atentado, ~juventud+defiet2, encuesta, svymean, deff=F, na.rm=T)
ic7 <- confint(tabla7)
cv7 <- matrix(cv(tabla7), nrow = length(cv(tabla7)), ncol = 1, dimnames = list(names(cv(tabla7)), "Coef. Var."))
datos7<-bind_cols(tabla7, cv7, ic7)
datos7

DESAGREGACIÓN SEGÚN LENGUA MATERNA

tabla8 <- svyby(~atentado, ~juventud+lengua, encuesta, svymean, deff=F, na.rm=T)
ic8 <- confint(tabla8)
cv8 <- matrix(cv(tabla8), nrow = length(cv(tabla8)), ncol = 1, dimnames = list(names(cv(tabla8)), "Coef. Var."))
datos8<-bind_cols(tabla8, cv8, ic8)
datos8

GENERAR ARCHIVO EXCEL

generar_archivo_excel2("DINDES-13-CRIM-01-PNJ.xlsx", list(datos0,datos4))