Para el INEI (2022) señala que el método de medición de las Necesidades Básicas Insatisfechas (NBI) toma en consideración un conjunto de indicadores relacionados con características de los hogares en relación a necesidades básicas estructurales (Vivienda, educación, salud, infraestructura pública, etc.).

Este método presta atención fundamentalmente a la evolución de la pobreza estructural, y por tanto no es sensible a los cambios de la coyuntura económica y permite una visión específica de la situación de pobreza, considerando los aspectos sociales. A la vez, se define pobre por NBI a aquella población que reside en hogares con al menos una las siguientes necesidades básicas insatisfechas:

  • Hogares en viviendas con características físicas inadecuadas (NBI 1). Toma en cuenta el material predominante en las paredes y pisos, así como al tipo de vivienda.
  • Hogares en viviendas con hacinamiento (NBI 2). Se determina que hay hacinamiento cuando residen más de 3.4 personas por habitación.
  • Hogares en viviendas sin desagüe de ningún tipo (NBI 3). Porcentaje de vivienda sin desagüe de ningún tipo.
  • Hogares con niños que no asisten a la escuela (NBI 4). Hogares con presencia de al menos un niño de 6 a 12 años que no asiste a un centro educativo.
  • Hogares con alta dependencia económica (NBI 5). Porcentaje de la población en hogares con jefe con primaria incompleta (hasta segundo año) y (i) con 4 o más personas por ocupado, o (ii) sin ningún miembro ocupado.

\[\begin{equation} \begin{split} NBI & = NBI_1 = NBI_2 = NBI_3 = NBI_4 = NBI_5 \\ & = \textrm{% de población con al menos 1 necesidad básica insatisfecha} \end{split} \end{equation}\]

1 ENAHO 2021

A continuación se presenta la sumaria de la ENAHO 2021.

setwd("D:/Libros/Seminarios/Construccion indicadores economicos sociales R/3 Pobreza segun necesidades basicas insatisfechas/ENAHO 2021 Condiciones vida pobreza Caracteristicas vivienda hogar")
sumaria <- as.data.frame(sjlabelled::read_stata("enaho01-2021-100.dta"))
## p1171_03, p1172_03, p1173_03, p1174_01, p1174_02, p1174_03, p1174_05, p1174_11, p1174_12, p1174_13, p1174_14, d1174_01, d1174_02, d1174_05, d1174_11, d1174_12, d1174_13, d1174_14, i1174_01, i1174_02, i1174_05, i1174_11, i1174_12, i1174_13, i1174_14
head(sumaria)

1.1 Transformación de variables

1.1.1 Rural

Analiza los hogares rurales usando la variable estrato, ésta se lee como:

  • 1 De 500 000 a más habitantes
  • 2 De 100 000 a 499 999 habitantes
  • 3 De 50 000 a 99 999 habitantes
  • 4 De 20 000 a 49 999 habitantes
  • 5 De 2 000 a 19 999 habitantes
  • 6 De 500 a 1 999 habitantes
  • 7 Área de Empadronamiento Rural (AER) Compuesto
  • 8 Área de Empadronamiento Rural (AER) Simple
# Frecuencia de estrato
table(sumaria$estrato,useNA = c("ifany"))
## 
##    1    2    3    4    5    6    7    8 
## 7881 8419 3694 2885 5603 2696 8920 3426
# Reemplaza valores NA por 0
sumaria$estrato<-ifelse(is.na(sumaria$estrato),0,sumaria$estrato)

Con ayuda de esta variable se crea la variable rural. Aquí los estratos 6, 7 y 8 serán 1, todo lo demás 0, es decir, las primeras serán las zonas rurales, las demás serán urbanas.

# Crea variable rural
sumaria$rural <- ifelse(sumaria$estrato=="6" |
                           sumaria$estrato=="7" | 
                           sumaria$estrato=="8", 1, 0)
# Frecuencia
table(sumaria$rural)
## 
##     0     1 
## 28482 15042

Se agregan etiquetas para mayor claridad.

# Rural
sumaria$rural <- factor(sumaria$rural, 
                         labels = c("urbano", "rural"))
table(sumaria$rural)
## 
## urbano  rural 
##  28482  15042

1.1.2 Regiones

Crea las regiones con ayuda de la variable ubigeo, ésta es una clave con la que se identifica la ubicación geográfica de las comunidades, los primeros dos dígitos de la variable indican el departamento, los siguientes dos la provincia, y el último par el distrito.

# Filtro 1 y 2 (Primeros digitos de ubigeo para Departamento)
sumaria$sub12 <- substr(sumaria$ubigeo,1,2)

# Transformo en variable numerica
sumaria$sub12 <- as.numeric(sumaria$sub12)

# Base de datos con los 25 departamentos de Peru
regiones<- data.frame(id = c(1:25),
                      departamentos = c("Amazonas", "Ancash", "Apurimac", "Arequipa", "Ayacucho", "Cajamarca", "Callao", "Cusco", "Huancavelica", "Huanuco", "Ica", "Junin", "La Libertad", "Lambayeque", "Lima", "Loreto", "Madre De Dios", "Moquegua", "Pasco", "Piura", "Puno", "San Martin", "Tacna", "Tumbes", "Ucayali"))

# Match de las regiones con el filtro sub12
sumaria$region<- regiones$departamentos[match(sumaria$sub12,regiones$id)]
table(sumaria$region,useNA = c("ifany"))
## 
##      Amazonas        Ancash      Apurimac      Arequipa      Ayacucho 
##          1516          1748          1083          2060          1580 
##     Cajamarca        Callao         Cusco  Huancavelica       Huanuco 
##          1700          1347          1643          1301          1585 
##           Ica         Junin   La Libertad    Lambayeque          Lima 
##          1838          1827          1874          1638          6117 
##        Loreto Madre De Dios      Moquegua         Pasco         Piura 
##          1747           874          1310          1130          1877 
##          Puno    San Martin         Tacna        Tumbes       Ucayali 
##          1853          1626          1880          1006          1364

1.2 Necesidades Básicas Insatisfechas

1.2.1 NBI1

# Observar valores los nulos
table(sumaria$nbi1, useNA = c("ifany"))
## 
##     0     1  <NA> 
## 31730  2515  9279
# Reemplazar valores nulos con ceros
sumaria$nbi1 <- ifelse(is.na(sumaria$nbi1), 0, sumaria$nbi1)
table(sumaria$nbi1, useNA = c("ifany"))
## 
##     0     1     2 
##  9279 31730  2515
# Recodificar variable
sumaria$nbi1 <- ifelse(sumaria$nbi1=="0" | sumaria$nbi1=="1", 0, 1)
table(sumaria$nbi1)
## 
##     0     1 
## 41009  2515

1.2.2 NBI2

# Observar valores los nulos
table(sumaria$nbi2,useNA = c("ifany"))
## 
##     0     1  <NA> 
## 32843  1402  9279
# Reemplazar valores nulos con ceros
sumaria$nbi2<-ifelse(is.na(sumaria$nbi2),0,sumaria$nbi2)
table(sumaria$nbi2, useNA = c("ifany"))
## 
##     0     1     2 
##  9279 32843  1402
# Recodificar variable
sumaria$nbi2 <- ifelse(sumaria$nbi2 == "0" | sumaria$nbi2 == "1", 0, 1)
table(sumaria$nbi2)
## 
##     0     1 
## 42122  1402

1.2.3 NBI3

# Obsevar los nulos
table(sumaria$nbi3,useNA = c("ifany"))
## 
##     0     1  <NA> 
## 31678  2567  9279
# Reemplazar valores nulos con ceros
sumaria$nbi3<-ifelse(is.na(sumaria$nbi3),0,sumaria$nbi3)
table(sumaria$nbi3, useNA = c("ifany"))
## 
##     0     1     2 
##  9279 31678  2567
# Recodificar variable
sumaria$nbi3 <- ifelse(sumaria$nbi3 == "0" | sumaria$nbi3 == "1", 0, 1)
table(sumaria$nbi3)
## 
##     0     1 
## 40957  2567

1.2.4 NBI4

# Observar valores los nulos
table(sumaria$nbi4,useNA = c("ifany"))
## 
##     0     1  <NA> 
## 33996   249  9279
# Reemplazar valores nulos con ceros
sumaria$nbi4<-ifelse(is.na(sumaria$nbi4),0,sumaria$nbi4)
table(sumaria$nbi4, useNA = c("ifany"))
## 
##     0     1     2 
##  9279 33996   249
# Recodificar variable
sumaria$nbi4 <- ifelse(sumaria$nbi4 == "0" | sumaria$nbi4 == "1", 0, 1)
table(sumaria$nbi4)
## 
##     0     1 
## 43275   249

1.2.5 NBI5

# Observar valores los nulos
table(sumaria$nbi5, useNA = c("ifany"))
## 
##     0     1  <NA> 
## 34048   197  9279
# Reemplazar valores nulos con ceros
sumaria$nbi5<-ifelse(is.na(sumaria$nbi5), 0, sumaria$nbi5)
table(sumaria$nbi5, useNA = c("ifany"))
## 
##     0     1     2 
##  9279 34048   197
# Recodificar variable
sumaria$nbi5 <- ifelse(sumaria$nbi5 == "0" | sumaria$nbi5 == "1", 0, 1)
table(sumaria$nbi5)
## 
##     0     1 
## 43327   197

1.3 Pobreza por NBI a nivel hogar

Se construye el indicador de pobreza NBI, de tal forma que cuente todos los 1 en cada uno de los NBI.

sumaria$pobrezaNBI <- ifelse(sumaria$nbi1 == "1" | 
                                sumaria$nbi2=="1" | 
                                sumaria$nbi3=="1"| 
                                sumaria$nbi4=="1" | 
                                sumaria$nbi5 == "1", 1, 0)

Se agregan etiquetas para mayor claridad.

sumaria$pobrezaNBI <- factor(sumaria$pobrezaNBI, labels = c("no NBI", "NBI"))

# Frecuencia
table(sumaria$pobrezaNBI)
## 
## no NBI    NBI 
##  37678   5846

Diseña el factor de expansión por hogar.

attach(sumaria)

# Factor de expansion
facpob <- factor07

Construye el diseño de muestra.

# Diseño muestral
diseno <- svydesign(id=~conglome, strata=~estrato, weight=~facpob, data=sumaria, nest=TRUE)

1.3.1 A nivel nacional

Se calcula la incidencia de la pobreza por NBI por hogares.

# Incidencia
pmonetaria <- svymean(~pobrezaNBI, diseno, deff=TRUE) 
resultados <- c(pmonetaria)
resultados 
## pobrezaNBIno NBI    pobrezaNBINBI 
##        0.8884513        0.1115487

En 2021 el 11.15% de los hogares peruanos a nivel nacional sufrían de algún tipo de pobreza de necesidades básicas dado que, carecían de al menos una de sus elementos, por lo tanto, de por cada 100 hogares, 11 de ellos tienen al menos una de sus necesidades básicas insatisfechas.

1.3.2 A nivel zona

tabla <- svyby(~pobrezaNBI, ~rural, diseno, svymean, deff = FALSE, na.rm = TRUE)
tabla
# Exporta el resultado
# write.csv(tabla,"tabla_resumen.csv")

En 2021 el 20.93% de los hogares rurales padecía algún tipo de pobreza de necesidades básicas, mientras que sólo el 8.5% de los hogares urbanos presentaban éste problema.

1.3.3 A nivel departamento

tabla <- svyby(~pobrezaNBI, ~region, diseno, svymean, deff = FALSE, na.rm = TRUE)

# Frecuencia
tabla
# Departamento mas pobre
tabla[tabla$pobrezaNBINBI == max(tabla$pobrezaNBINBI), ]
# Departamento menos pobre
tabla[tabla$pobrezaNBINBI == min(tabla$pobrezaNBINBI), ]
# Exporta el resultado
# write.csv(tabla,"tabla_resumen.csv")

En 2021, a nivel departamental, Loreto presentaba un 43.40% de pobreza de necesidades básicas, siendo el departamento más pobre en este rubro, es decir, que de cada 100 hogares, 43 presentaba por lo menos una necesidad básica insatisfecha, mientras que Tacna sólo presentaba un pobreza de 4.99%, siendo el departamento menos vulnerable.

1.4 Pobreza por NBI a nivel poblacional

Para hacer este calculo se usa el factor poblacional. Inicio guardando las variables más relevantes.

JHb <- select(sumaria, aÑo, conglome, vivienda, hogar, pobrezaNBI, region, rural, estrato, factor07, nbi1, nbi2, nbi3, nbi4, nbi5)
head(JHb)

El factor poblacional debe ser multiplicado por la variable mieperho que es el número de personas en el hogar y se encuentra en la base de datos de Sumaria.

setwd("D:/Libros/Seminarios/Construccion indicadores economicos sociales R/3 Pobreza segun necesidades basicas insatisfechas/ENAHO 2021 Condiciones vida pobreza Sumaria")
sumaria1 <- as.data.frame(sjlabelled::read_stata("sumaria-2021.dta"))
head(sumaria1)

Se vuelven a seleccionar las variables más importantes de esta nueva base de datos.

JHE <- select(sumaria1, aÑo, conglome, vivienda, hogar, mieperho)
head(JHE)

Junta las dos bases de datos

BaseFinal <- merge(JHb, JHE, 
                   by.x = c("conglome", "vivienda", "hogar"),
                   by.y = c("conglome", "vivienda", "hogar"), 
                   all.x = TRUE)
head(BaseFinal)

Se buscan valores nulos, de haberlos, se sustituyen por 0.

attach(BaseFinal)

# Observar valores los nulos
table(BaseFinal$mieperho, useNA = c("ifany"))
## 
##    1    2    3    4    5    6    7    8    9   10   11   12   13   14   15 <NA> 
## 5445 7297 6862 6882 4243 1982  817  384  180   79   41   19   11    2    1 9279
# Reemplazar valores nulos con ceros
BaseFinal$mieperho<-ifelse(is.na(BaseFinal$mieperho), 0, BaseFinal$mieperho)
table(BaseFinal$mieperho, useNA = c("ifany"))
## 
##    0    1    2    3    4    5    6    7    8    9   10   11   12   13   14   15 
## 9279 5445 7297 6862 6882 4243 1982  817  384  180   79   41   19   11    2    1
# Observar valores los nulos
table(BaseFinal$aÑo.y, useNA = c("ifany"))
## 
##  2021  <NA> 
## 34245  9279
# Reemplazar valores nulos con ceros
BaseFinal$aÑo.y <- ifelse(is.na(BaseFinal$aÑo.y), 2021, BaseFinal$aÑo.y)
table(BaseFinal$aÑo.y, useNA = c("ifany"))
## 
##  2021 
## 43524

Se multiplica el factor de expansión por el número de miembros en el hogar.

facpob <- factor07 * BaseFinal$mieperho

Construye el diseño de la muestra.

diseno <- svydesign(id=~conglome, strata=~estrato, weight=~facpob, data=BaseFinal, nest=TRUE)

1.4.1 A nivel nacional

Se calcula la incidencia de la pobreza por NBI a nivel poblacional.

# Incidencia
pmonetaria <- svymean(~pobrezaNBI, diseno, deff = TRUE) 
resultados <- c(pmonetaria)
resultados
## pobrezaNBIno NBI    pobrezaNBINBI 
##        0.8375312        0.1624688

En 2021, a nivel nacional, el 16.24% de la población peruana sufria al menos una necesidad básica insatisfecha, es decir, que de 100 peruanos, 16 de ellos tienen alguna necesidad básica insatisfecha. Este dato coincide con la información presentada en el portal del INEI, dentro de su cuadro resumen Población con al menos una necesidad básica insatisfecha, según departamento.

1.4.2 A nivel zona

tabla <- svyby(~pobrezaNBI, ~rural, diseno, svymean, deff = FALSE, na.rm = TRUE)
tabla
# Exporta el resultado
# write.csv(tabla,"tabla_resumen.csv")

En 2021 el 28.65% de la población rural padecía algún tipo de pobreza de necesidades básicas, mientras que sólo el 13.07% de los hogares urbanos presentaban éste problema.

1.4.3 A nivel departamento

tabla <- svyby(~pobrezaNBI, ~region, diseno, svymean, deff = FALSE, na.rm = TRUE)

# Frecuencia
tabla
# Departamento mas pobre
tabla[tabla$pobrezaNBINBI == max(tabla$pobrezaNBINBI), ]
# Departamento menos pobre
tabla[tabla$pobrezaNBINBI == min(tabla$pobrezaNBINBI), ]
# Exporta el resultado
# write.csv(tabla,"tabla_resumen.csv")

En 2021, a nivel departamental, el 43.46% de la población de Loreto presentaba por lo menos una necesidad básica vulnerada, siendo la población más grandemente afectada por esta situación. Sin embargo, en Tacna, solo el 6.21% de la población presentaba este problema, siendo la población menos vulnerable de Perú. Estos dato coinciden con la información presentada en el portal del INEI, dentro de su cuadro resumen Población con al menos una necesidad básica insatisfecha, según departamento.