Indicadores de Pobreza, enfoque de lineas de pobreza.

Datos para ejemplo:

ingreso<-c(58,  79, 376, 403, 121, 284, 299, 385, 537, 545, 569, 577, 584, 723, 729,737,746)

Indicadores de la Familia Foster Greer & Thorbecke

Familia de indicadores FGT.

\[FGT_\alpha=\frac{1}{n}\sum_{i=1}^{q}(\frac{z-y_i}{z})^{\alpha}\] Donde: \(q\) es la cantidad de personas con una renta inferior al umbral de pobreza[\(z\)], \(y_i\) es la renta de las personas que están por debajo de \(z\), \(n\) es la cantidad total de personas con un nivel de ingresos & \(\alpha\) modifica el indicador de pobreza a obtener:
\(\alpha=0\), es decir a la tasa de recuento.
\(\alpha=1\), es decir a la brecha de pobreza.
\(\alpha=2\), es decir al indice de severidad de pobreza.

# Construcción de una función personalizada.
pobreza_FGT_alpha <- function(vector_ingreso, linea_pobreza,alpha=0) {
   PG_vector <-
    (linea_pobreza - vector_ingreso[vector_ingreso < linea_pobreza]) / linea_pobreza
  n <- length(vector_ingreso)
  FGT<- (1 / n) * sum(PG_vector ^ alpha)
  FGT
}

Tasa de Pobreza (Head Count):

\[FGT_0=\frac{1}{n}\sum_{i=1}^{q}(\frac{z-y_i}{z})^{0}\equiv H=\frac{q}{n}\] Donde: \(H\) es la tasa de pobreza, \(q\) es la cantidad de personas con una renta inferior al umbral de pobreza[\(z\)], & \(n\) es la cantidad total de personas con un nivel de ingresos.

#Tasa de recuento H:
pobreza_FGT_alpha(ingreso, linea_pobreza = 300,alpha = 0)
## [1] 0.2941176

También se puede obtener así:

#Recuento:H Head Count
pobreza_H <- function(vector_ingreso, linea_pobreza) {
  q <- length(vector_ingreso[vector_ingreso < linea_pobreza])
  n <- length(vector_ingreso)
  H <- q / n
  H_data <- list(q = q, n = n, H = H)
}
pobreza_H(ingreso, linea_pobreza = 300)$H
## [1] 0.2941176

Indice de Brecha de Pobreza (Poverty Gap) PG

\[PG=\frac{1}{n}\sum_{i=1}^{q}(\frac{z-y_i}{z})\] Donde: \(q\) es la cantidad de personas con una renta inferior al umbral de pobreza[\(z\)], \(y_i\) es la renta de las personas que están por debajo de \(z\), & \(n\) es la cantidad total de personas con un nivel de ingresos.

#Brecha de pobreza PG:
pobreza_FGT_alpha(ingreso, linea_pobreza = 300,alpha = 1)
## [1] 0.1292157

También se puede obtener así:

pobreza_PG <- function(vector_ingreso, linea_pobreza) {
  PG_vector <-
    (linea_pobreza - vector_ingreso[vector_ingreso < linea_pobreza]) / linea_pobreza
  n <- length(vector_ingreso)
  PG <- (1 / n) * sum(PG_vector)
  list(PG_vector = PG_vector, PG = PG)
}
pobreza_PG(ingreso, linea_pobreza = 300)$PG
## [1] 0.1292157

Indice de Severidad de la Pobreza FGT2

\[FGT_2=\frac{1}{n}\sum_{i=1}^{q}(\frac{z-y_i}{z})^2\] Donde: \(q\) es la cantidad de personas con una renta inferior al umbral de pobreza[\(z\)], \(y_i\) es la renta de las personas que están por debajo de \(z\), & \(n\) es la cantidad total de personas con un nivel de ingresos.

#Indice de severidad de pobreza FGT2:
pobreza_FGT_alpha(ingreso, linea_pobreza = 300,alpha = 2)
## [1] 0.09130915

También se puede obtener así:

pobreza_FGT2 <- function(vector_ingreso, linea_pobreza) {
  PG_vector <-
    (linea_pobreza - vector_ingreso[vector_ingreso < linea_pobreza]) / linea_pobreza
  n <- length(vector_ingreso)
  FGT2 <- (1 / n) * sum(PG_vector ^ 2)
  list(PG_vector = PG_vector, FGT2 = FGT2)
}
pobreza_FGT2(ingreso, linea_pobreza = 300)$FGT2
## [1] 0.09130915

Brecha de Media de ingresos I

\[I=\frac{z-\bar{y}}{z}\] Donde: \(z\) es el umbral de pobreza, \(\bar{y}\) es la renta media de las personas con un ingreso inferior a \(z\).

pobreza_I <- function(vector_ingreso, linea_pobreza) {
  ybar <- mean(vector_ingreso[vector_ingreso < linea_pobreza])
  I <- (linea_pobreza - ybar) / linea_pobreza
  I_data <- list(ybar = ybar, I = I)
}
pobreza_I(ingreso, linea_pobreza = 300)$I #prueba
## [1] 0.4393333

Mismos resultados usando libreria “ineq”

En la libreria ineq, el argumento parameter, de la función Foster, tiene una interpretación diferente a la del \(\alpha\), del indicador FTG general: \[FGT_\alpha=\frac{1}{n}\sum_{i=1}^{q}(\frac{z-y_i}{z})^{\alpha}\] parameter=1 equivale a \(\alpha=0\), es decir a la tasa de recuento.
parameter=2 equivale a \(\alpha=1\), es decir a la brecha de pobreza.
parameter=3 equivale a \(\alpha=2\), es decir al indice de severidad de pobreza.

Tasa de recuento H

library(ineq)
ineq::Foster(x = ingreso,k = 300,parameter = 1)
## [1] 0.2941176

Tasa de brecha de pobreza PG

library(ineq)
ineq::Foster(x = ingreso,k = 300,parameter = 2)
## [1] 0.1292157

Indice de severidad de pobreza FGT2

library(ineq)
ineq::Foster(x = ingreso,k = 300,parameter = 3)
## [1] 0.09130915

I

library(ineq)
ineq::Foster(x = ingreso,k = 300,parameter = 2) / ineq::Foster(x = ingreso,k = 300,parameter = 1) 
## [1] 0.4393333

Ejemplo con datos en formato tabular.

Datos y carga de librerias:

y <- c(100, 200, 300, 400)
n <- c(50, 25, 75, 25)
library(ineq)
library(purrr)

Cálculos:

H

#H
map2(y,n,.f = rep) %>% unlist() %>% 
  pobreza_FGT_alpha(linea_pobreza = 300,alpha = 0)
## [1] 0.4285714
map2(y,n,.f = rep) %>% unlist() %>% 
  Foster(k = 300,parameter = 1)
## [1] 0.4285714

PG

#PG
map2(y,n,.f = rep) %>% unlist() %>% 
  pobreza_FGT_alpha(linea_pobreza = 300,alpha = 1)
## [1] 0.2380952
map2(y,n,.f = rep) %>% unlist() %>% 
  Foster(k = 300,parameter = 2)
## [1] 0.2380952

FGT2

#FGT2
map2(y,n,.f = rep) %>% unlist() %>% 
  pobreza_FGT_alpha(linea_pobreza = 300,alpha = 2)
## [1] 0.1428571
#------------
map2(y,n,.f = rep) %>% unlist() %>% 
  Foster(k = 300,parameter = 3)
## [1] 0.1428571

Brecha de Media de ingresos I

#I
(map2(y,n,.f = rep) %>% unlist() %>% 
  pobreza_FGT_alpha(linea_pobreza = 300,alpha = 1))/(map2(y,n,.f = rep) %>% unlist() %>% 
  pobreza_FGT_alpha(linea_pobreza = 300,alpha = 0))
## [1] 0.5555556
#---------

(map2(y,n,.f = rep) %>% unlist() %>% 
  Foster(k = 300,parameter = 2)) /  (map2(y,n,.f = rep) %>% unlist() %>% 
  Foster(k = 300,parameter = 1))
## [1] 0.5555556

Ejemplo con una base de datos:

Se conoce la información de ingresos por municipio y zona rural & urbana para “Lovercraft Country”, se le solicita que:

Calcule los indicadores de FGT, si el umbral de pobreza \(z\) es:

a) 300 u.m., y presente los resultados totales por municipio.

b) 350 u.m., y presente los resultados totales por municipio y por zona.

importante: la información se encuentra disponible en el archivo “info_FGT.xlsx”, zona, indica si la persona es de zona rural o urbana, ingreso es la renta en unidades monetarias para cada hogar (un hogar por fila del dataframe), municipio indica si el hogar es del municipio “A”, “B” ó “C”, & num_hogares contiene la cantidad de hogares que perciben el mismo nivel de ingresos indicado en ingreso

library(readxl)
library(dplyr)
info_FGT <- read_excel("G:/info_FGT.xlsx")
glimpse(info_FGT)
## Rows: 45
## Columns: 4
## $ zona        <chr> "Rural", "Rural", "Rural", "Rural", "Urbano", "Urbano", "U~
## $ ingreso     <dbl> 58, 79, 376, 403, 121, 284, 299, 385, 537, 545, 569, 577, ~
## $ municipio   <chr> "A", "A", "A", "A", "A", "A", "A", "A", "A", "A", "A", "A"~
## $ num_hogares <dbl> 55, 25, 60, 104, 22, 65, 18, 76, 23, 124, 97, 11, 28, 10, ~

Literal a)

library(dplyr)
library(kableExtra)
library(purrr)
z <- 300

info_FGT %>%
  group_by(municipio) %>%
  summarise(
    H = pobreza_H(map2(ingreso, num_hogares, .f = rep) %>% unlist(), linea_pobreza = z)$H,
    I = pobreza_I(map2(ingreso, num_hogares, .f = rep) %>% unlist(), linea_pobreza = z)$I,
    PG = pobreza_PG(map2(ingreso, num_hogares, .f = rep) %>% unlist(), linea_pobreza = z)$PG,
    FGT2 = pobreza_FGT2(map2(ingreso, num_hogares, .f = rep) %>% unlist(), linea_pobreza = z)$FGT2
  ) %>% kable(caption = "Indicadores familia FGT", digits = 4) %>%
  kable_classic()
Indicadores familia FGT
municipio H I PG FGT2
A 0.1867 0.4294 0.0802 0.0579
B 0.5721 0.3152 0.1803 0.0760
C 0.4013 0.2645 0.1061 0.0396

Literal b)

library(dplyr)
library(purrr)
library(ineq)
z<-350
info_FGT %>%
  group_by(municipio,zona) %>%
  summarise(
    H = Foster(map2(ingreso,num_hogares,.f = rep) %>% unlist(),
               k = z,parameter = 1),
    I = pobreza_I(map2(ingreso,num_hogares,.f = rep) %>% unlist(), linea_pobreza = z)$I,
    PG = Foster(map2(ingreso,num_hogares,.f = rep) %>% unlist(),
                k = z,parameter = 2),
    FGT2 = Foster(map2(ingreso,num_hogares,.f = rep) %>% unlist(),
                  k=z,parameter = 3)
  ) %>% kable(caption = "Indicadores familia FGT",digits = 4) %>% 
  kable_classic()
Indicadores familia FGT
municipio zona H I PG FGT2
A Rural 0.3279 0.8155 0.2674 0.2183
A Urbano 0.1406 0.2788 0.0392 0.0162
B Rural 0.3871 0.5945 0.2301 0.1375
B Urbano 0.7500 0.3230 0.2422 0.0868
C Rural 0.1311 0.4297 0.0563 0.0280
C Urbano 1.0000 0.3113 0.3113 0.1239