La curva de Kuznets

Branko Milanovic y Simon Kuznets son dos de los académicos más conocidos en los estudios sobre desigualdad. A cada uno de ellos se le conoce por identificar una determinada trayectoria de la desigualdad en un periodo de tiempo determinado:

  • El elefante de Milanovic: La diferencia en porcentaje de ganancia entre la distribución por nivel de ingresos en 2008 y 1988, tiene forma de elefante.
  • La curva de Kuznets A medida que la riqueza de un país crece con el proceso de industrialización, en una primera fase las desigualdades crecen y en una segunda fase decrecen, por lo que la relación entre crecimiento económico y desigualdades tiene forma de U invertida.

En esta práctica observaremos las trayectorias que describe Kuznets1. En primer lugar, cargaremos los paquetes que necesitamos.

#Recordad que los paquetes deben estar previamente instalados
library(readxl)
library(haven)
library(tidyr)
library(dplyr)
library(ggplot2)
library(wbstats)

La curva de Kuznets

Simon Kuznets formuló en 1955 la teoría que relaciona el progreso de un país y la desigualdad, esta tendría forma de U invertida. En una fase inicial de desarrollo económico, los países son pobres y hay pocas diferencias en el nivel de ingresos entre su población. La industrialización lleva a una segunda fase de desarrollo, en la que sólo una pequeña minoría puede sacar provecho de sus beneficios, por lo que las desigualdades crecerían en este segundo periodo. Con el progreso y el paso del tiempo llegaría a una tercera fase, en la que cada vez más personas podrían participar de los beneficios de la industrialización, de manera que las desigualdades se verían reducidas.

Estas son las conclusiones que sacó Kuznets a partir de observar la relación entre ingreso y desigualdades en Estados Unidos durante el período 1913-1948 en su obra Shares of Upper Income Groups in Income and Savings (Kuznets 1953). Su estudio ha sido replicado decenas de veces con resultados dispares. En este ejercicio intentaremos hacer una nueva réplica de la curva de Kuznets.

Ejercicio 1: En primer lugar, indaga sobre la obra de Kuznets a partir de los textos La Desigualdad entre Personas (Milanovic 2011) y El Capital del Siglo XXI (Piketty 2014) y responde a las siguientes preguntas:

  1. ¿Por qué la obra de Kuznets es revolucionaria desde un punto de vista empírico?
  2. Kuznets utiliza una fuente de información principal para elaborar su estudio. ¿De qué tipo de fuente se trata? Este tipo de fuente es incompleta para saber las desigualdades en la población. ¿Qué otra fuente necesitó? ¿Por qué?
  3. En la relación de causalidad que estudia Kuznets, ¿Cuál es la variable dependiente y cuál es la variable independiente?
  4. Describe brevemente qué es el índice de Gini.

Para replicar el estudio de Kuznets, necesitaremos estudiar la relación entre dos variables numéricas:

Datos de desigualdad

Una de las series temporales más largas que contiene información sobre el índice de Gini la encontramos en el All the Ginis Dataset del Banco Mundial.

Ejercicio 2: Accede a la página web All the Ginis Dataset y busca en la pestaña Data & Resources el documento que contiene la descripción de la base de datos:

  1. ¿De cuántas bases de datos diferentes han obtenido los índices de Gini para crear All the Ginis Dataset?
  2. ¿Cuántas observaciones Gini recoge en total la base de datos?
  3. ¿Cuál es el nombre de la variable que engloba todos los Gini de las otras bases de datos?
  4. Algunas variables que nos encontraremos en la base de datos llevan los prefijos Dhh, Dinc o Dgross. Estas variables pueden tomar el valor 1 o el valor 0. Explica el significado de estas variables a partir de la Digresión 1 de Desigualdad Global (Milanovic 2016: 26-31). ¿Por qué es relevante esta distinción?
  5. Supón que tenemos dos hipotéticos países que tienen el mismo Gini pero que uno tiene el valor 1 a la variable Dinc y el otro el valor 0. ¿Tendrían la misma desigualdad? Razona tu respuesta.
  6. ¿Cuál es la década donde tenemos más observaciones?
  7. ¿De qué región (según la nomenclatura utilizada) tenemos más observaciones en relación al número de países?

Ahora que ya tenemos una orientación general sobre los datos que tenemos que tratar, ya podemos descargar la base de datos y limpiarla de variables que no nos interesen y de datos perdidos. En el siguiente código hemos realizado las siguientes operaciones: hemos descargado la base de datos, hemos seleccionado algunas de las variables y hemos eliminado todos los NA. El resultado es el marco de datos ginis, donde podemos observar sus primeras filas en la siguiente Tabla 1.

download.file("https://development-data-hub-s3-public.s3.amazonaws.com/ddhfiles/94536/allginis_2013.xls",
              "allginis.xls")
ginis <- read_xls("allginis.xls", sheet = 2) %>%
  select(country:year, Giniall) %>% #seleccionamos algunas variables
  filter(!is.na(Giniall)) #eliminamos datos perdidos
Table 1: All Ginis Dataset
countrycontcodregionyearGiniall
AlbaniaALBEastern Europe199728.6
AlbaniaALBEastern Europe200229.4
AlbaniaALBEastern Europe200431.1
AlbaniaALBEastern Europe200531.7
AlbaniaALBEastern Europe200830.4
AlgeriaDZAAfrica198838.8
AlgeriaDZAAfrica199534.6
AngolaAGOAfrica199540.2
AngolaAGOAfrica200058.1
ArgentinaARGLatin America197434.5

Un vistazo rápido al marco de datos con head(gini, 10) o glimpse(gini) nos permite comprobar que tenemos muy pocos casos de algunos países. Ya sólo al principio de la lista vemos que tenemos datos de Albania en sólo cinco años, por dos de Argelia y dos de Angola. Ya de entrada, sabemos que será difícil observar la evolución de la desigualdad en algunos países si tenemos tan pocos puntos en el tiempo.

Si utilizamos range(gini$year) vemos que tenemos datos desde 1950 hasta 2012, aunque no tenemos la misma cantidad de observaciones de todos los países. Podemos investigar de varios años tenemos registro en cada país con count(). Esta función nos hace un recuento de casos por cada variable categórica que indicamos. Siempre que ponemos al final de un código %>% View() podemos ver los resultados en una ventana nueva con formato de hoja de cálculo. En la Tabla 2 observamos los resultados.

ginis %>%
  count(country, sort = TRUE) %>% #pedimos un recuento y que nos ordene los resultados
  head(30) %>% View() #pedimos las primeras 30 observaciones y visualizar la tabla en una ventana aparte
Table 2: Recuento de observaciones
countryn
United States62
United Kingdom50
Bulgaria42
India42
Brazil36
Taiwan, China34
Italy33
Poland33
China32
Japan31
Costa Rica30
Mexico30
Argentina28
Venezuela, Rep28
Denmark27
Iran,IslamicRep.27
Netherlands27
Colombia26
Sweden26
Canada25
Germany25
Hungary25
Chile24
Honduras23
Norway23
Peru23
Pakistan22
El Salvador21
Panama21
Spain21

Ejercicio 3: Como podéis comprobar, tenemos más datos de algunos países que de otros. Por algún motivo, entonces, desde 1950 hasta 2012 muchos datos están perdidos.

  1. ¿Sabrías decir qué características tienen en común, en general, los países de los que tenemos más datos? ¿Y los países de los que tenemos menos datos? Pon algunos ejemplos de acuerdo con los resultados que has obtenido en la Tabla 2.
  2. Con el siguiente código hemos pedido el año más antiguo (min()) y el año reciente (max()) de los que tenemos datos en cada país, así como el recuento de casos (n()). Seleccionar un país que tenga menos de 25 casos y, a partir de los datos generados por el código, intenta explicar desde un punto de vista histórico por qué este país concreto tiene más/menos datos en relación a otros países .
ginis %>%
  group_by(country) %>%
  summarize(min = min(year),
            max = max(year),
            n = n()) %>%
  arrange(desc(n))

Datos de desarrollo

Tal como hizo Kuznets en su estudio, utilizaremos el PIB per cápita como medida de desarrollo económico. Aunque el PIB per cápita ha tenido y está teniendo cada vez más críticas como medida de desarrollo (Stiglitz, Sen, and Fitoussi 2010), también es cierto que sigue siendo una medida sencilla, fiable, disponible y bastante aceptada por académicos y decisores públicos.

Para obtener los datos del PIB per cápita, utilizaremos el paquete wbstats que nos proporciona datos del Banco Mundial. Con la función wbsearch() buscamos indicadores que contengan las palabras GDP, cápita y ppp. Vemos que obtenemos cinco resultados.

wb_search("gdp.*capita.*ppp")
## # A tibble: 4 x 3
##   indicator_id    indicator                indicator_desc                       
##   <chr>           <chr>                    <chr>                                
## 1 6.0.GDPpc_cons… GDP per capita, PPP (co… GDP per capita based on purchasing p…
## 2 NY.GDP.PCAP.PP… GDP per capita, PPP (cu… This indicator provides per capita v…
## 3 NY.GDP.PCAP.PP… GDP per capita, PPP (co… GDP per capita based on purchasing p…
## 4 NY.GDP.PCAP.PP… GDP per capita, PPP ann… Annual percentage growth rate of GDP…

Nos interesan los datos de PIB per cápita a precios constantes, pero como puede observarse en el resultado tenemos tres variables que parece que nos ofrezcan exactamente lo mismo. Como no estamos seguros de qué variable escoger, descargaremos los cinco resultados y los compararemos entre ellos para tener más clara nuestra elección. En el siguiente código hacemos los siguientes procedimientos:

  • Guardamos los códigos de los indicadores al objeto gdpcap. Teclead el nombre del nuevo objeto para comprobar que efectivamente contiene los códigos de los indicadores.
  • Con la función wb() descargamos el marco de datos que llamaremos income. Dentro de la función especificamos el nombre del vector donde hemos guardado los indicadores.
  • A continuación separamos (spread()) los indicadores para que cada variable esté en una columna diferente y pedimos un sumario.

Os saldrá un mensaje de error, que nos descarta automáticamente una variable, y nos creará el archivo con una variable menos de las que habíamos pedido.

gdpcap <- wb_search("gdp.*capita.*ppp") %>% pull(indicator_id)
income <- wb_data(indicator = gdpcap, return_wide = F) %>%
  mutate(date = as.numeric(date)) %>%
  as_tibble()
income %>%
  pivot_wider(names_from = indicator_id, values_from = value) %>%
  summary()
##   indicator            iso2c              iso3c             country         
##  Length:29606       Length:29606       Length:29606       Length:29606      
##  Class :character   Class :character   Class :character   Class :character  
##  Mode  :character   Mode  :character   Mode  :character   Mode  :character  
##                                                                             
##                                                                             
##                                                                             
##                                                                             
##       date          unit            obs_status          footnote        
##  Min.   :1960   Length:29606       Length:29606       Length:29606      
##  1st Qu.:1975   Class :character   Class :character   Class :character  
##  Median :1990   Mode  :character   Mode  :character   Mode  :character  
##  Mean   :1990                                                           
##  3rd Qu.:2005                                                           
##  Max.   :2020                                                           
##                                                                         
##   last_updated        6.0.GDPpc_constant NY.GDP.PCAP.PP.CD  NY.GDP.PCAP.PP.KD 
##  Min.   :2013-02-22   Min.   : 3475      Min.   :   285.6   Min.   :   436.7  
##  1st Qu.:2021-07-21   1st Qu.: 6451      1st Qu.:  2723.4   1st Qu.:  3496.6  
##  Median :2021-07-21   Median : 9254      Median :  7707.2   Median : 10201.3  
##  Mean   :2020-09-09   Mean   : 9909      Mean   : 14950.4   Mean   : 17877.8  
##  3rd Qu.:2021-07-21   3rd Qu.:12900      3rd Qu.: 20266.7   3rd Qu.: 25759.3  
##  Max.   :2021-07-21   Max.   :21980      Max.   :154095.2   Max.   :162915.8  
##                       NA's   :29366      NA's   :24004      NA's   :23917     
##  NY.GDP.PCAP.PP.KD.ZG
##  Min.   :-50.290     
##  1st Qu.: -1.453     
##  Median :  1.504     
##  Mean   :  1.405     
##  3rd Qu.:  4.037     
##  Max.   : 92.586     
##  NA's   :27433

Ejercicio 4: Investigad el marco de datos income con las funciones head() y glimpse(), así como las estadísticas descriptivas de los indicadores por separado que hemos obtenido con summary().

  1. ¿Cuál es el indicador que nos ha eliminado? ¿Qué información contenía?
  2. Si os fijáis, en el marco de datos original income no tenemos las variables del PIB per cápita separadas, cada una en una columna diferente. Todas nos han venido agrupadas en una columna que hemos tenido que separar para tener cada variable en una columna diferente. ¿Cuál es el nombre la variable que contenía el código de los indicadores que hemos tenido que separar?
  3. Tenemos dos variables con códigos de países. ¿Cuáles son?
  4. ¿Por qué es preferible utilizar datos a precios constantes en lugar de precios corrientes a la hora de estudiar el desarrollo económico?
  5. ¿Cuántas datos perdidos (NA) tiene cada variable?
  6. Teniendo en cuenta toda esta información, ¿Con qué variable te quedarías de las cuatro que tenemos disponibles? Indica el código del indicador y justifica la respuesta.
  7. Con lo aprendido en este ejercicio, utiliza el siguiente código para buscar en la base de datos del Banco Mundial con wbsearch () y encuentra un indicador que te resulte interesante. Describe el marco de datos resultante con las funciones head(), glimpse() y summary().
wbsearch("?????????") #escoge los términos a buscar e identifica el código del indicador que te interese
# limita la búsqueda tanto como necestites con .* entre palabras: "palabra1.*palabra2.*palabra3"
prueba <- wb(indicator = "????????") %>% #introduce el código del indicador
  as_tibble()
head(prueba)
glimpse(prueba)
summary(prueba)

La curva

Hasta ahora, en esta actividad nos hemos dedicado a recoger los datos que necesitábamos para crear la curva de Kuznets. En el primer apartado hemos obtenido los datos de desigualdad y en el segundo apartado hemos recogido datos de desarrollo. Con esto ya podemos crear una curva de Kuznets:

  • a nivel mundial, que nos explique qué relación han mantenido desarrollo y desigualdad con todos los datos que tenemos disponibles.
  • en un país, que nos explique la relación entre desarrollo y desigualdad en un caso concreto.

Por eso tendremos que unir los dos marcos de datos creados anteriormente en el nuevo marco de datos incgini, que vemos en la Tabla 3.

incgini <- income %>%
  filter(indicator_id == "NY.GDP.PCAP.PP.KD") %>%
  transmute(iso3c, year = date, gdpcap = value) %>%
  inner_join(ginis, by = c("iso3c" = "contcod", "year"))
Table 3: Desarrollo y desigualdad mundial (1950-2012)
iso3cyeargdpcapcountryregionGiniall
ALB20089912.577AlbaniaEastern Europe30.4
ALB20058040.879AlbaniaEastern Europe31.7
ALB20047580.629AlbaniaEastern Europe31.1
ALB20026754.536AlbaniaEastern Europe29.4
ALB19974400.578AlbaniaEastern Europe28.6
DZA19957935.179AlgeriaAfrica34.6
DZA1988NAAlgeriaAfrica38.8
AGO20004727.966AngolaAfrica58.1
AGO19954139.641AngolaAfrica40.2
ARG201224118.868ArgentinaLatin America42.6

Ejercicio 5: Responde a las siguientes preguntas utilizando las funciones que se indican sobre si el objeto a explorar en cada caso es el marco de datos incgini o bien una variable concreta del marco de datos (incgini$nombre_variable):

  1. ¿Cuántas observaciones tenemos en este nuevo marco de datos? glimpse() o dim()
  2. ¿Cuántas observaciones tenemos para cada región? table()
  3. ¿Cuántos países diferentes tenemos? n_distinct()
  4. ¿Cuál es el año máximo y mínimo? range()
  5. ¿Cuál es el PIB per cápita máximo y mínimo? range()
  6. ¿Cuál es la observación con mayor PIB per cápita? ¿Y con menor? Deberás aplicar min() y max() a la función siguiente:
incgini[which(incgini$gdpcap == ???(incgini$gdpcap)),]

En el ejercicio anterior nos hemos dado cuenta de que el marco de datos incgini tiene pocas observaciones en relación a los marcos de datos de origen. Esto se debe, principalmente, porque en algunos casos teníamos información del desarrollo del país pero no de su desigualdad y en otros casos teníamos información de la desigualdad del país pero no de su desarrollo. Esto nos ha reducido drásticamente las observaciones cuando hemos agrupado los datos.

No obstante, podemos intentar crear la curva de Kuznets con los datos disponibles con un diagrama de dispersión que encontraremos en la Figura 1.

  • Ubicaremos gdpcap al eje de las x.
  • giniall al eje de las y.
  • Además, aprovecharemos la columna region para señalar la región en el color de los puntos.
  • La curva la crearemos mediante geom_smooth().
  • Aplicaremos la escala logarítmica en el eje de las x para representar mejor los valores de la distribución (tiene una asimetría negativa) y para representar mejor la diferencia en los efectos que tiene una unidad adicional en términos de PIB per cápita en los valores bajos y los valores altos de la distribución.
incgini %>%
  ggplot(aes(x = gdpcap, y = Giniall)) + #ejes x e y
  geom_point(aes(col = region), alpha = .5) + #los puntos
  geom_smooth(se = FALSE) + #la curva
  scale_x_log10() + #escala logarítmica
  theme_light() +
  theme(legend.position = "bottom",
        legend.title = element_blank())
Relación entre desarrollo y desigualdad mundial (1990-2012)

Figure 1: Relación entre desarrollo y desigualdad mundial (1990-2012)

La curva de Kuznets se distingue muy tímidamente en el gráfico. Parece que las desigualdades alcanzan su pico a los 10.000 dólares per cápita y a partir de entonces se reducen conforme el desarrollo aumenta.

Ejercicio 6: Observa la Figura 1 y responde a las siguientes preguntas:

  1. Teniendo en cuenta los criterios de causalidad, ¿Por qué dirías que hemos ubicado gdpcap al eje de las x y giniall al eje de las y?
  2. Interpreta el escala logarítmica del eje de las x. ¿Qué significa 1e+03, 1e+04 y 1e+05? Intenta encontrar la lógica asociada y explícala.
  3. Parece que hay un patrón muy claro de las desigualdades por región geográfica. Explica, por cada región, donde están ubicadas la mayoría de las observaciones según los dos ejes del gráfico.
  4. Añade la siguiente línea de código entre la primera y la segunda línea del código que hemos utilizado para crear el gráfico. Elige una región y reproduce el gráfico de nuevo. Comenta el gráfico. ¿Se observa la curva de Kuznets en la región elegida?
filter(region = "???????") %>%
  1. ¿Cómo mejorarías la validez de la relación? Piensa en algún indicador más válido que el PIB per cápita (bien sea un indicador dentro de la familia del PIB u otro tipo de indicador).

Caso de estudio

Para hacer el ejercicio final utilizaremos otra fuente de información muy utilizada en estudios de desarrollo económico: las Penn World Tables v9.1 (PWT) (Feenstra, Inklaar, and Timmer 2015), que contiene una serie temporal más larga que la que hemos utilizado hasta ahora del Banco Mundial. Esto nos permitirá tener datos anteriores a 1990 en algunos países.

En el siguiente código descargamos el archivo de la web de PWT y unimos los datos con los del marco de datos ginis para crear el marco de datos pwtgini. Aplicad el código que hemos utilizado en el Ejercicio 3 para ver el año mínimo, el año máximo y el número de observaciones para cada país. Encontraréis el resultado en la Tabla 4.

download.file("https://www.rug.nl/ggdc/docs/pwt91.dta",
              "pwt91.dta")
pwt <- read_dta("pwt91.dta") %>%
  mutate(gdpcap = rgdpo / pop) %>% #dividimos el PIB entre la población para obtener el PIB per cápita
  select(countrycode, year, gdpcap) %>%
  filter(!is.na(gdpcap))

pwtgini <- pwt %>%
  inner_join(ginis, by = c("countrycode" = "contcod", "year"))
Table 4: Intervalo de años y número de observaciones de las Penn World Tables
countryminmaxn
United States1950201162
United Kingdom1961201050
India1951200942
Bulgaria1970200837
Brazil1960201136
Taiwan, China1964200834
Italy1967201033
Poland1976200933
China1953200732
Japan1962200831
Costa Rica1961201030
Mexico1950201030
Argentina1974201228
Venezuela, Rep1962201128
Denmark1963200827
Iran,IslamicRep.1969200827
Netherlands1962200827
Colombia1964201126
Sweden1963200826
Canada1965200825
Germany1950200825
Chile1968201124
Honduras1968201123
Hungary1972200823
Norway1962200823
Peru1961201123
Pakistan1963200822
El Salvador1965201021
Panama1969201221
Spain1965201021

El país del que disponemos más observaciones es Estados Unidos. En la Figura 2 hemos filtrado los datos por el país en cuestión y hemos pedido un diagrama de líneas (geom_path()) que nos muestra el recorrido que ha seguido, año tras año, la relación entre PIB per cápita y el índice de Gini. Según los datos que podemos aportar observamos que las desigualdades en Estados Unidos no se han reducido conforme ha ido avanzando el desarrollo económico del país, sino que han aumentado. Estas conclusiones distan mucho de los datos observados por Kuznets en el periodo 1913-1948, que originaron la teoría conocida como la curva de Kuznets.

pwtgini %>%
  filter(country == "United States") %>%
  ggplot(aes(x = gdpcap, y = Giniall)) +
  geom_path(alpha = 0.2, size = 2, lineend = "round", aes(col = year), show.legend = FALSE) +
  geom_text(aes(label = year), size = 3, check_overlap = TRUE,
            position = position_jitter(width=0.5,height=0.5),
            data = filter(pwtgini, country == "United States", year %in% seq(1950, 2010, 5))) +
  labs(title = "Evolución del índice de Gini en los Estados Unidos según el PIB per càpita (1950-2011)",
       x = "PIB per capita", y = "Índice de Gini") +
  theme_bw()
Ejercicio final: los Estados Unidos

Figure 2: Ejercicio final: los Estados Unidos

EJERCICIO FINAL: A partir del código que hemos utilizado para crear la Figura 2, elabora un gráfico con otro país que tenga un mínimo de 20 observaciones.

  1. Cambia la transparencia (alpha puede variar entre 0 y 1) y el espesor (size debe ser superior a 0) de la línea.
  2. Cambiar el tamaño del texto (size debe ser superior a 0).
  3. Cambia el título del gráfico.
  4. Comenta el gráfico: ¿De qué años tenemos datos? ¿Qué trayectoria se dibuja? ¿Hay cambios repentinos? ¿Quedaría validada la teoría de Kuznets en el caso del país que has elegido?

Referencias

Feenstra, Robert C., Robert Inklaar, and Marcel P. Timmer. 2015. The Next Generation of the Penn World Table.” American Economic Review 105 (10): 3150–82. www.ggdc.net/pwt.
Kuznets, Simon. 1953. Shares of Upper Income Groups in Income and Savings. New York: NBER.
Milanovic, Branko. 2011. The Haves and the Have-Nots: A Brief and Idiosyncratic History of Global Inequality. New York: Basic Books.
———. 2016. Global Inequality: A New Approach for the Age of. Globalization. Cambridge, MA: Harvard University Press.
Piketty, Thomas. 2014. Capital in the Twenty-First Century. Cambridge, MA: Harvard University Press.
Stiglitz, Joseph E., Amartya Sen, and Jean-Paul Fitoussi. 2010. Mismeasuring our lives: why GDP doesn’t add up: the report. New York: New Press.

  1. Esta actividad está elaborada con propósitos estrictamente docentes. Las operaciones que se realizan no pretenden tener validez desde un punto de vista académico↩︎

Previous
Next