//styles, look here: https://cdnjs.com/libraries/highlight.js/9.12.0

April 12, 2020

1640 palavras 8 mins

Mas e a indústria?

Dia desses li coisas tristes. A narrativa era de que alguns setores são por alguma propriedade vinda dos céus (alguns dirão ah mas e a complexidade… e eu direi que são eles os que invejam os físicos) mais “importantes” que outros e que, de fato, o processo de desenvolvimento econômico é sim substituir participação de setores menos complexos por outros mais complexos. A magia, o pulo do gato, o estopim de um ciclo virtuoso de crescimento estaria em produzir menos soja e mais massa proteica, menos ferro e mais carros, menos bananas e mais microchips… Qualquer semelhança com as viúvas do regime militar não é coincidência.

Este blogueiro discorda e gostaria de mostrar (i) como R (e mais geralmente, programação) facilitam nossa vida e (ii) que composição setorial não é lá grandes coisas. Decidi usar a 10-Sector Database com dados de emprego e produto a nível de setor em vários países e a Penn World Tables para calcular o câmbio real. A 10-Sector tem um formato bem esquisito. Você recebe um dataset em que cada linha é uma combinação de ano-país-variável, em que as variáveis podem ser algumas medidas de valor adicionado ou população empregada no setor. Ela entrega 11 colunas, 10 representando setores e uma o agregado.

O leitor rapidamente percebe que são dados com uma estrutura um tanto quanto curiosa, nem um pouco tidy em que cada coluna é uma variável e cada linha uma observação. Tomeremos o cuidado de colocar os dados neste formato. Vamos antes inspecionar a documentação, contida na primeira planilha do arquivo de excel em que a base é disponibilizada.

knitr::opts_chunk$set(message = FALSE, warning = FALSE, dpi = 320)

library(dplyr)
library(purrr)
library(ggplot2)
library(tidyr)
library(rlang)
library(rio)
library(magrittr)
library(knitr)
library(pwt9)
  

rio::import("https://www.rug.nl/ggdc/docs/10sd_jan15_2014.xlsx",
            sheet = 1) %>%
  as_tibble() %>%
  head(n = nrow(.)) %>%
  kable() # inspecionando a documenta??o
Overview of the GGDC 10 Sector Database …2
Economic activities distinguished 1. Agriculture, hunting, forestry and fishing (AtB);
(ISIC rev. 3.1 code): 2. Mining and quarrying (C);
NA 3. Manufacturing (D);
NA 4. Electricity, gas and water supply (E);
NA 5. Construction (F);
NA 6. Wholesale and retail trade, hotels and restaurants (GtH);
NA 7. Transport, storage, and communication (I);
NA 8. Finance, insurance, real estate and business services (JtK);
NA 9. Government services (LtN);
NA 10. Community, social and personal services (OtP)
NA NA
Variables included: Persons engaged (in thousands);
NA Gross value added at current national prices (in millions);
NA Gross value added at constant 2005 national prices (in millions);
NA NA
Countries included: Sub-Saharan Africa:
NA Botswana, Ethiopia, Ghana, Kenya, Malawi, Mauritius, Nigeria, Senegal, South Africa, Tanzania, and Zambia
NA Middle East and North Africa:
NA Egypt, Morocco
NA Asia:
NA China, Hong Kong (China), India, Indonesia, Japan, Korea (Rep. of), Malaysia, Philippines, Singapore, Taiwan, Thailand
NA Latin America:
NA Argentina, Bolivia, Brazil, Chile, Colombia, Costa Rica, Mexico, Peru, Venezuela
NA North America:
NA United States of America
NA Europe:
NA West Germany, Denmark, Spain, France, United Kingdom, Italy, the Netherlands, and Sweden
NA NA
Time period: 1950 – 2013
Notes: starting date of time series varies across variables and countries depending on data availability. NA

Beleza, sabemos agora que a variável de Valor Adicionado a Preços Constantes de 2005 está na moeda local e que a variável com nível de emprego está em milhares. Estamos interessados nelas.

(tenSector <- rio::import("https://www.rug.nl/ggdc/docs/10sd_jan15_2014.xlsx", sheet = 2) %>%
  as_tibble() %>%
  filter(Variable == "VA_Q05" | Variable == "EMP") %>% # mant?m n?vel de emprego e valor adicionado 
  select(-`Region code`) %>% # redundante e com nome n?o-regular, melhor tirar
  gather("Sector", "Measure", -Country, -Region, -Year, -Variable) %>% # traz colunas de setores para linhas
  spread("Variable", "Measure") %>% # joga as vari?veis para colunas
  mutate(EMP = EMP * 1000,
         VA_Q05 = VA_Q05 * 1000000,
         Sector = abbreviate(Sector, minlength = 7)) %>% # aplica a escala
  rename(VA = VA_Q05)) # apenas deixando o nome mais limpo
## # A tibble: 27,885 x 6
##    Country Region         Year Sector       EMP            VA
##    <chr>   <chr>         <dbl> <chr>      <dbl>         <dbl>
##  1 ARG     Latin America  1950 Agrcltr 1799565.  16178508000.
##  2 ARG     Latin America  1950 Cm,saps  410892.   7017988589.
##  3 ARG     Latin America  1950 Cnstrct  314106.   9170823891.
##  4 ARG     Latin America  1950 Fireabs  203838.   6359568994.
##  5 ARG     Latin America  1950 Gvrnmns  824921.  23892830458.
##  6 ARG     Latin America  1950 Mnfctrn 1603249.  40415974714.
##  7 ARG     Latin America  1950 Mining    32719.   1993128433.
##  8 ARG     Latin America  1950 SmosGDP 6543872. 137555524612.
##  9 ARG     Latin America  1950 Trd,rah  889967.  24402991371.
## 10 ARG     Latin America  1950 Trn,sac  425352.   7549840286.
## # … with 27,875 more rows

Já tratamos a variável com nível de emprego, agora vamos pegar a taxa de câmbio real da Penn World Table, que vem no pacote pwt9. Note também que temos dados que deveriam ser a nível de país-ano-setor, mas um dos setores aqui é o total, o PIB. Vamos tira-lo das linhas e dedicar colunas para isso, assim teremos dados consistentes.

data("pwt9.1")

# TODO adicionar explicativas

(pwt <- pwt9.1 %>%
  filter(year == 2005) %>% 
  select(isocode, pl_gdpo, xr) %>% # queremos país, nível de preços e taxa de câmbio 
  as_tibble() %>%
  filter(pl_gdpo > 0) %>% # removendo dados duvidosos
  rename(Country = isocode) %>%
  mutate(PPP = pl_gdpo * xr) %>% # obtendo o PPP 
  select(-pl_gdpo, -xr)) # temos um par país-câmbio real em 2005
## # A tibble: 182 x 2
##    Country     PPP
##    <fct>     <dbl>
##  1 ABW       1.01 
##  2 AGO      42.8  
##  3 AIA       1.85 
##  4 ALB      44.3  
##  5 ARE       1.56 
##  6 ARG       1.19 
##  7 ARM     149.   
##  8 ATG       2.54 
##  9 AUS       1.20 
## 10 AUT       0.798
## # … with 172 more rows
(dados <- left_join(tenSector, pwt) %>%
  filter(Sector != "SmosGDP") %>% # retirando o agregado
  mutate(VA = VA/PPP) %>% 
  select(-PPP) %>%
  group_by(Year, Country) %>%
  mutate(totVA = sum(VA, na.rm = TRUE),
         totEMP = sum(EMP, na.rm = TRUE),
         VAperCapitaAgg = totVA / totEMP) %>% # valor adicionado per capita AGREGADO
  ungroup() %>%
  mutate(empShare = EMP / totEMP,
         vaShare = VA / totVA,
         VAperCapita = VA / EMP, # VA per capita do setor
         perCapitaShare = empShare*VAperCapita / VAperCapitaAgg) # partilha no VA per capita agregado do setor
)  
## # A tibble: 25,350 x 13
##    Country Region  Year Sector    EMP      VA   totVA totEMP VAperCapitaAgg
##    <chr>   <chr>  <dbl> <chr>   <dbl>   <dbl>   <dbl>  <dbl>          <dbl>
##  1 ARG     Latin…  1950 Agrcl… 1.80e6 1.36e10 1.15e11 6.54e6         17640.
##  2 ARG     Latin…  1950 Cm,sa… 4.11e5 5.89e 9 1.15e11 6.54e6         17640.
##  3 ARG     Latin…  1950 Cnstr… 3.14e5 7.70e 9 1.15e11 6.54e6         17640.
##  4 ARG     Latin…  1950 Firea… 2.04e5 5.34e 9 1.15e11 6.54e6         17640.
##  5 ARG     Latin…  1950 Gvrnm… 8.25e5 2.00e10 1.15e11 6.54e6         17640.
##  6 ARG     Latin…  1950 Mnfct… 1.60e6 3.39e10 1.15e11 6.54e6         17640.
##  7 ARG     Latin…  1950 Mining 3.27e4 1.67e 9 1.15e11 6.54e6         17640.
##  8 ARG     Latin…  1950 Trd,r… 8.90e5 2.05e10 1.15e11 6.54e6         17640.
##  9 ARG     Latin…  1950 Trn,s… 4.25e5 6.34e 9 1.15e11 6.54e6         17640.
## 10 ARG     Latin…  1950 Utili… 3.93e4 4.82e 8 1.15e11 6.54e6         17640.
## # … with 25,340 more rows, and 4 more variables: empShare <dbl>, vaShare <dbl>,
## #   VAperCapita <dbl>, perCapitaShare <dbl>

Com dados em mãos podemos plotar verdadeiras cenas de horror. Atenção, cenas fortes seguirão. Leitores viúvas do regime militar podem ficar abalados:

dados %>%
  filter(Country %in% c("BRA", "KOR"), Sector == "Mnfctrn") %>%
  ggplot(aes(x = Year, y = empShare, color = Country)) +
  geom_line(size = 1.2) +
  labs(x = "Ano",
       y = "% da for?a de trabalho na Manufatura",
       color = "Pa?s") +
  scale_y_continuous(labels = scales::percent) +
  theme_minimal()

Piadinhas à parte, vamos fazer um experimento? Tomar a Coréia do Sul de 2005 (limitações de dados da base, eu queria ter algo detalhado assim mais recente), manter a produtividade de cada setor igual, mas deixar a distribuição do trabalho igual à do Brasil, um país menos industrializado. O que acontece com a renda per capita?

Primeiro eu vou abstrair a operação em uma função:

contrafactual <- function(.data, country1, country2, year = 2005, type) {
  
  country1 <- .data %>%
  filter(Country == country1, Year == year) %>%
  select(Year, empShare, Sector, VAperCapita) %>%
  rename(empShare1 = empShare,
         VAperCapita1 = VAperCapita)
  
  country2 <- .data %>%
  filter(Country == country2, Year == year) %>%
  select(Year, Sector,  VAperCapitaAgg, VAperCapita, empShare) %>%
  left_join(country1)

  if(type == "structure") {
    
  country2 %>%
  group_by(VAperCapitaAgg) %>%
  summarise(contrafactual = sum(VAperCapita*empShare1, na.rm = TRUE)) %>%
      mutate(type = "Structure",
             var = contrafactual - VAperCapitaAgg,
             varPerc = var/VAperCapitaAgg) %>%
      return()
    
  } else {
    
  country2 %>%
  group_by(VAperCapitaAgg) %>%
  summarise(contrafactual = sum(VAperCapita1*empShare, na.rm = TRUE)) %>%
      mutate(type = "Productivity",
             var = contrafactual - VAperCapitaAgg,
             varPerc = var/VAperCapitaAgg) %>%
      return()
    
  }
  
}

Agora vemos os dois cenários. O primeiro, em que a Coréia do Sul mantém sua produtividade em cada setor, mas vira uma economia menos industrializada. O segundo, em que mantém sua estrutura produtiva atual, mas ganha em cada setor a produtividade brasileira naquele setor.

bind_rows(contrafactual(dados, "BRA", "KOR", type = "structure"),
          contrafactual(dados, "BRA", "KOR", type = "productivity"))
## # A tibble: 2 x 5
##   VAperCapitaAgg contrafactual type             var varPerc
##            <dbl>         <dbl> <chr>          <dbl>   <dbl>
## 1         44329.        35861. Structure     -8468.  -0.191
## 2         44329.        13553. Productivity -30776.  -0.694

Note que desindustrializar tomou um custo em termos de valor adicionado de um trabalhador médio, mas nada perto da destruição que foi adquirir a produtividade brasileira em todos os setores. E se invertermos o exercício?

bind_rows(contrafactual(dados, "KOR", "BRA", type = "structure"),
          contrafactual(dados, "KOR", "BRA", type = "productivity"))
## # A tibble: 2 x 5
##   VAperCapitaAgg contrafactual type            var varPerc
##            <dbl>         <dbl> <chr>         <dbl>   <dbl>
## 1         13864.        13553. Structure     -311. -0.0224
## 2         13864.        35861. Productivity 21997.  1.59

Manter a produtividade em cada setor como está, porém industrializar rapidamente leva a uma queda pequena no valor adicionado per capita. Agora, manter a estrutura produtiva exatamente como está, porém adquirindo a produtividade coreana em cada setor, nosso valor adicionado médio sobe ~\(158 \,\%\).