(Acest articol a fost publicat pentru prima dată pe pacha.dev/blogși cu amabilitate a contribuit la R-bloggeri). (Puteți raporta problema legată de conținutul acestei pagini aici)
Doriți să vă distribuiți conținutul pe R-bloggeri? dați clic aici dacă aveți un blog, sau aici dacă nu aveți.
Dacă această postare vă este utilă, vă rog cu drag o donație minimă pe Buy Me a Coffee. Va fi folosit pentru a-mi continua eforturile Open Source.
Puteți să-mi trimiteți întrebări pentru blog folosind acest formular și să vă abonați pentru a primi un e-mail când apare o nouă postare.
El Índice de Gini este o măsură statistică care se utilizează pentru a cuantifica desigualtatea într-o distribuție, aplicată în mod obișnuit la distribuția ingresoului sau a richeității într-o populație. Este o măsură de concentrație care reflectă cum se distribuie resursele între persoanele dintr-o țară sau regiune.
Fue developed por el italiano Corrado Gini en 1912. El valor del Índice de Gini varía entre 0 y 1 (o 0% y 100%), donde 0 representa una igualdad perfecta (todos tienen el mismo ingreso) y 1 representa una desigualdad máxima (una sola persona tiene todo el ingreso y los demás no tienen nada).
Para entender esto un poco mejor, analizam la frase de Nicanor Parra: „Hay dos panes. Usted se come dos; yo, ninguno. Consumo promedio: un pan por persona”. Además del promedio de 1 pan por persona, prin definiție (y sin realiza calculs), el Índice de Gini în acest caz este 1 (desigualdad maximă), ya care una persona consume todo el pan.
El calcul del Índice de Gini se bazează în curba lui Lorenz, care reprezintă proporția acumulată din ingreso total primit prin procentajul acumulat de populație. El Índice de Gini se calculează ca zona dintre curba lui Lorenz și linia de egalitate perfectă, împărțită prin zona totală sub linia de egalitate perfectă.
Es decir, si el 1% mai pobre de la populație primește el 1% del ingreso total, el 2% más pobre recibe el 2% del ingreso total, și așa sucesivamente, se are un caz de igualdad perfecta cu o Índice de Gini de 0.
Acordul asupra datelor de la Comisia Económica pentru America Latina și el Caribe (CEPAL) din 2024, Chile are următoarea distribuție a intrărilor:
| 1 | 1.7 |
| 2 | 3.1 |
| 3 | 4.2 |
| 4 | 5.2 |
| 5 | 6.4 |
| 6 | 7.7 |
| 7 | 9.4 |
| 8 | 11.9 |
| 9 | 16.2 |
| 10 | 34.2 |
A partir de aceste date, se poate calcula Índice de Gini de Chile, care este aproximativ 0,44 (44%), indicând un nivel moderat de desigualdad în distribuția ingresoului.
Usando R, putem calcula Índice de Gini de la aceste date:
# Calculo sin usar librerías # Porcentaje acumulado de ingreso por decil ingreso <- c(1.7, 3.1, 4.2, 5.2, 6.4, 7.7, 9.4, 11.9, 16.2, 34.2) ingreso_acumulado <- cumsum(ingreso) # Población acumulada por decil poblacion_acumulada <- seq(0.1, 1, by = 0.1) # Convertir a proporciones acumuladas ingreso_prop_acum <- ingreso_acumulado / 100 # Agregar el punto inicial (0,0) para la curva de Lorenz x <- c(0, poblacion_acumulada) y <- c(0, ingreso_prop_acum) # Calculo del área bajo la curva de Lorenz usando regla del trapecio area_lorenz <- sum((x(-1) - x(-length(x))) * (y(-1) + y(-length(y))) / 2) # Calculo del Índice de Gini # Gini = (Área entre línea de igualdad y curva de Lorenz) / (Área total bajo línea de igualdad) # Área bajo línea de igualdad = 0.5, entonces: # Gini = (0.5 - area_lorenz) / 0.5 = 1 - 2 * area_lorenz indice_gini <- 1 - 2 * area_lorenz indice_gini
Folosind la libreria „ineq”:
if (!require(ineq)) { install.packages("ineq", repos = "https://cran.r-project.org") }
Loading required package: ineq
library(ineq) # Convertir datos acumulados a participación individual de cada decil participacion_individual <- c(ingreso_acumulado(1), diff(ingreso_acumulado)) # Calcular Gini usando la librería ineq Gini(participacion_individual)
Este comod grafic aceste date pentru vizualizarea curbei lui Lorenz și a zonelor implicate în calculul indicelui Gini:
library(ggplot2)
# Datos para la curva de Lorenz
lorenz_data <- data.frame(
Poblacion = c(0, poblacion_acumulada),
Ingreso = c(0, ingreso_prop_acum))
ggplot(lorenz_data, aes(x = Poblacion, y = Ingreso)) +
geom_line(color = "blue", linewidth = 1.2) +
geom_abline(slope = 1, intercept = 0, linewidth = 1.2, linetype = "dashed", color = "red") +
geom_ribbon(aes(ymin = Ingreso, ymax = Poblacion), fill = "lightblue", alpha = 0.5) +
geom_ribbon(aes(ymin = 0, ymax = Ingreso), fill = "lightgreen", alpha = 0.5) +
geom_text(aes(x = 0.6, y = 0.2), label = "B", color = "black", size = 8) +
geom_text(aes(x = 0.6, y = 0.5), label = "A", color = "black", size = 8) +
labs(title = "Curva de Lorenz",
x = "Proporción acumulada de la población",
y = "Proporción acumulada del ingreso") +
theme_minimal()
Warning in geom_text(aes(x = 0.6, y = 0.2), label = "B", color = "black", : All aesthetics have length 1, but the data has 11 rows. ℹ Please consider using `annotate()` or provide this layer with data containing a single row.
Warning in geom_text(aes(x = 0.6, y = 0.5), label = "A", color = "black", : All aesthetics have length 1, but the data has 11 rows. ℹ Please consider using `annotate()` or provide this layer with data containing a single row.

Si el area entre la linia de egalitate perfecta si la curva de Lorenz es A, si el zona sub la curva de Lorenz es B, atunci el Índice de Gini se calculeaza ca


În grafic, zona A este reprezentată în azul clar și zona B în verde clar.
Geometricamente, o societate foarte egală va avea o zonă A tendiendo a cero, în timp ce o societate foarte desigual va avea o zonă B tendiendo a cero.
Volviendo al exemplu de Nicanor Parra, pentru un promedio de un pan por persona se pot avea diferite distribuciones del pan cu el mismo promedio:
- Persona A vine 1 pan, Persona B vine 1 pan.
- Persona A are 2 panouri, Persona B are 0 panouri.
- Persona A are 0 panouri, Persona B are 2 panouri.
Para el caso 1, el Índice de Gini es 0 (igualdad perfecta). Para los casos 2 și 3, el Índice de Gini es 1 (desigualdad maximă), ya că o persoană consume todo el pan și la otra no consume nada.
El Índice de Gini este un stadístico care complementa alte măsuri ca media sau mediana, oferind o viziune mai completă a distribuției intrării într-o populație. Problema rezidă în care mulți tienden a interpretar el Índice de Gini ca o măsură absolută a justiției sociale, ceea ce este incorect. Este pur și simplu o unealtă pentru a înțelege distribuția ingresoului și nu a rezolvat probleme éticas sau morales.
Mai mult, el Índice de Gini nu captura toate dimensiunile desigualității, ca și mobilitatea socială sau diferențele în accesoriul sau calitatea serviciilor. Por lo tanto, este important să utilizeze împreună cu alte metrice și analiza pentru a obține o înțelegere mai completă a dezideratului într-o societate.
Veamos qué pasaría și hipotéticamente se expropia 10% de la riqueza al decil más rico și este se divide equitativamente între toți deciles. Cum afectaría esto al Índice de Gini?
ingreso2 <- ingreso
monto_expropiado <- ingreso2(10) * 0.1
ingreso2(10) <- ingreso2(10) * 0.9
ingreso2 <- ingreso2 + monto_expropiado / 10
ingreso_acumulado2 <- cumsum(ingreso2)
participacion_individual2 <- c(ingreso_acumulado2(1), diff(ingreso_acumulado2))
gini1 <- Gini(participacion_individual)
gini2 <- Gini(participacion_individual2)
c("Gini original" = gini1, "Gini hipotético" = gini2)
Gini original Gini hipotético
0.43660 0.40582
# Cambio porcentual en el Índice de Gini (gini2 - gini1) / gini1 * 100
De acuerdo al resultado, expropiar 10% del ingreso del decil más rico y dividerlo en partes iguales Índice de Gini în aproximativ un 7%, lo que indica o disminución în la desigualdad sin mayor informație cu privire la justo o injusto de la medida.
Vedem datele pentru America del Sur folosind datele Banco Mundial:
if (!require(wbstats)) { install.packages("wbstats", repos = "https://cran.r-project.org") }
library(wbstats)
# Obtener datos del Índice de Gini para América Latina
gini_data <- wb_data(indicator = "SI.POV.GINI", start_date = 2020, end_date = 2024)
# Filtrar datos para América del Sur y conservar el dato más reciente por país library(dplyr)
Attaching package: 'dplyr'
The following objects are masked from 'package:stats':
filter, lag
The following objects are masked from 'package:base':
intersect, setdiff, setequal, union
iso2 <- c("AR", "BO", "BR", "CL", "CO", "EC", "PE", "PR", "PY", "UY", "VE")
gini_data <- gini_data %>%
filter(iso2c %in% iso2 & !is.na(SI.POV.GINI)) %>%
group_by(iso2c) %>%
slice_max(order_by = date, n = 1) %>%
ungroup() %>%
mutate(SI.POV.GINI = round(SI.POV.GINI / 100, 3))
print(gini_data, n = 11)
# A tibble: 9 × 9 iso2c iso3c country date SI.POV.GINI unit obs_status footnote last_updated1 AR ARG Argentina 2024 0.424 Based o… 2025-10-07 2 BO BOL Bolivia 2023 0.421 Based o… 2025-10-07 3 BR BRA Brazil 2023 0.516 Based o… 2025-10-07 4 CL CHL Chile 2022 0.43 Based o… 2025-10-07 5 CO COL Colombia 2023 0.539 Based o… 2025-10-07 6 EC ECU Ecuador 2024 0.452 Based o… 2025-10-07 7 PE PER Peru 2024 0.401 Based o… 2025-10-07 8 PY PRY Paraguay 2024 0.442 Based o… 2025-10-07 9 UY URY Uruguay 2024 0.4 Based o… 2025-10-07
Vedem aceste date pe hartă folosind „d3po”:
if (!require(d3po)) { install.packages("d3po", repos = "https://pachadotdev.r-universe.dev") }
library(d3po)
dout <- map_ids(maps$south_america$continent) %>%
left_join(gini_data, by = c("id" = "iso2c"))
# dout %>%
# filter(!is.na(value))
my_gradient <- c("#7e2119", "#cf3a33", "#ec5938", "#ee874d", "#f6cc84")
d3po(dout, width = 800, height = 600) %>%
po_geomap(daes(group = id, size = SI.POV.GINI, color = my_gradient, gradient = T, tooltip = name),
map = maps$south_america$continent) %>%
po_labels(
title = "Coeficiente de Gini en América del Sur",
subtitle = "Fuente: Banco Mundial") %>%
po_tooltip("País: {name}
Valor: {SI.POV.GINI}")
A primera vista, se observă că Brasil este el país cu mayor desigualdad în America del Sur și că la desigualdad în Argentina și Chile sunt similare.
Comparați aceste date cu Índice de Dezvoltare Umană (IDH):
idh_data <- wb_data(indicator = "HD.HCI.OVRL", start_date = 2020, end_date = 2024) idh_data <- idh_data %>% filter(iso2c %in% iso2 & !is.na(HD.HCI.OVRL)) %>% group_by(iso2c) %>% slice_max(order_by = date, n = 1) %>% ungroup() %>% mutate(HD.HCI.OVRL = round(HD.HCI.OVRL, 3)) print(idh_data, n = 11)
# A tibble: 8 × 9 iso2c iso3c country date HD.HCI.OVRL unit obs_status footnote last_updated1 AR ARG Argentina 2020 0.602 2020-09-21 2 BR BRA Brazil 2020 0.551 2020-09-21 3 CL CHL Chile 2020 0.652 2020-09-21 4 CO COL Colombia 2020 0.604 2020-09-21 5 EC ECU Ecuador 2020 0.594 2020-09-21 6 PE PER Peru 2020 0.605 2020-09-21 7 PY PRY Paraguay 2020 0.528 2020-09-21 8 UY URY Uruguay 2020 0.599 2020-09-21
dout_idh <- map_ids(maps$south_america$continent) %>%
left_join(idh_data, by = c("id" = "iso2c"))
my_gradient <- c("#0b5394", "#3075b3", "#4583bb", "#6fa8dc", "#7fbce9")
d3po(dout_idh, width = 800, height = 600) %>%
po_geomap(daes(group = id, size = HD.HCI.OVRL, color = my_gradient, gradient = T, tooltip = name),
map = maps$south_america$continent) %>%
po_labels(
title = "Índice de Desarrollo Humano en América del Sur",
subtitle = "Fuente: Banco Mundial") %>%
po_tooltip("País: {name}
Valor: {HD.HCI.OVRL}")
