Dica R do Dia – Penn World Tables 9.x

O prof. Zeileis tem feito ótimos pacotes para o R. O último é o que contém os dados da última versão da Penn World Tables (ele tem também pacotes para as versões anteriores). Claro, deve-se ter muito cuidado com esta base de dados.

Ela já foi mais simples. Hoje, está longe de ter seu uso feito sem um bocado de restrições. Leia, por exemplo, a documentação que se encontra aqui.

Penn World Tables, versão 8

Eis um artigo muito legal sobre o problema de mensuração de dados internacionais. Sim, estamos falando da Penn World Tables. Aí vai o resumo.

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.
Abstract

We describe the theory and practice of real GDP comparisons across countries and over time. Version 8 of the Penn World Table expands on previous versions in three respects. First, in addition to comparisons of living standards using components of real GDP on the expenditure side, we provide a measure of productive capacity, called real GDP on the output side. Second, growth rates are benchmarked to multiple years of cross-country price data so they are less sensitive to new benchmark data. Third, data on capital stocks and productivity are (re)introduced. Applications including the Balassa-Samuelson effect and development accounting are discussed. (JEL C43, C82, E01, E23, I31, O47)

Repare que os usuários do R têm um recurso ótimo neste caso: o pacote pwt8 que é uma atualização do pwt. Ambos são do grande Achim Zeileis, figura conhecida no meio da econometria em R. Já mostrei alguns exemplos, neste blog (pesquise!) de usos da pwt8. Mas é legal ter o artigo aí em cima do lado do computador quando for passar da brincadeira para algo mais sério. O exemplo do efeito Balassa-Samuelson é muito bacana e até pensei em reproduzí-lo aqui, mas acho que já está bom por hoje.

Momento R do Dia – Um resumo de várias regressões (MQO)

Ok, esta é rápida. Usei os dados da Penn World Tables 8.1 (o pacote é o pwt8) e estimei funções consumo keynesianas simples para todos os países da base. Mas eu queria visualizar três destes países de forma fácil: Brasil, Argentina e Venezuela cujos códigos são, respectivamente, BRA, ARG e VEN.

Então, após carregar o pacote memisc, usei o comando mtable. Eis como funciona.

library(memisc)
mtable123 <- mtable("BRA"=models$BRA,"ARG"=models$ARG,"VEN"=models$VEN,
                    summary.stats=c("sigma","R-squared","F","p","N"))
mtable123

A saída:

blog_exemplo

Legal, não? Você só precisa ter suas regressões prontas. O R nos dá várias possibilidades de formatação de tabelas mas, infelizmente, não há um único comando que faça isto para todos os tipos de modelos. O leitor pode explorar pacotes como stargazertexreg ou este aí, que é o Memisc.

Bom, depois eu volto com mais dicas ou momentos R do dia.

Penn World Tables no R

Eu sei que algumas pessoas já sabem que na barra lateral à direita tem uma seção chamada “Bases de Dados” e que, lá no meio, tem a Penn World Tables. Mas existem meios de se obter os mesmos dados, talvez com alguma defasagem, no R.

Por exemplo, o pacote pwt8 acaba de ser atualizado e nele temos os dados da versão 8.1 da famosa base. Só de curiosidade, eu calculei a média da propensão média a consumir de alguns países ao longo dos anos e, não menos curiosamente, alguns valores são maiores do que a unidade.

pmec_pwt8

Acho que tem algo na forma como os dados são calculados, mas qualquer sugestão é bem-vinda. A propósito, a PMEC média do Brasil para o período 1950-2011 é 0.65 (e a PMgC é 0.60, com uma função consumo keynesiana de livro-texto).

Momento R do Dia – Penn World Tables 8.0 e a Propensão Média a Consumir de cada país

Fazia tempo, heim? Mas hoje um aluno me perguntou sobre algo que falei no início do semestre (é…alguém não prestou atenção…): consumo. Mais especificamente, sobre a propensão média a consumir.

Eu acredito que o bom aluno não tem apenas que perguntar, mas também pesquisar e pensar nas implicações do que pergunta. Para ajudar, vou fazer um cálculo simples e rápido que ilustra dois pacotes do R, um que apenas tem a base de dados (“pwt8”) e o outro que aplica uma função para calcular a propensão média a consumir média para cada país.

Explico: a base de dados tem 127 países e cada qual tem variáveis para o período 1950-2011. Nem todas as variáveis estão, entretanto, registradas, para todos os países. Assim, por exemplo, a propensão média a consumir que calculo para o Brasil a seguir é a média das propensões médias deste período (uma propensão média “média” a consumir, por assim dizer). Já para Angola, que não tem os dados para todo o período, eu também calculo esta mesma variável, mas excluindo os períodos em que não há valores para uma, outra ou ambas as variáveis.

O código abaixo possui as explicações mais ou menos detalhadas.

# como sempre...você só instala uma vez. Ou seja, depois não precisa mais destas duas linhas de
# comando. O pacote plyr tem o famoso conjunto de comandos "apply" (lapply, sapply, etc).

install.packages("pwt8")
install.packages("plyr")

# carregamos o pacote, carregamos a base de dados do pacote.
library(pwt8)
data("pwt8.0")
names(pwt8.0)
# como exemplo, eis o pib per capita calculado para todos os anos, todos os países
pwt8.0$cap <- pwt8.0$rgdpe / pwt8.0$pop

# agora calculo a propensao media a conumir. Primeiro, calculamos o consumo, pela multiplicacao
# da participação do consumo sobre o PIB vezes o PIB. Veja a documentação de pwt8 para ver
# a definição de csh_c e cgdpe. Note que, na primeira linha, gero o consumo e, em seguida,
# na segunda linha, a Propensão Média a Consumir (C/Y) para cada ano. 

pwt8.0$cons<-(pwt8.0$csh_c)*pwt8.0$cgdpe
pwt8.0$pmec<-pwt8.0$cons / pwt8.0$cgdpe

# agora vamos criar um data.frame com a base e vamos chamá-la de "dta.
# Para ter uma idéia, usamos "head" para ver as primeiras linhas do arquivo.

dta <- data.frame(pwt8.0)
head(dta)

# tudo parece ok. Repare que, como indexei "cons" e "pmec" pela pwt8.0 lá em cima, agora elas
# fazem parte da base de dados pwt8.0 que, nestes comandos acima, transformei em uma estrutura
# de data.frame (não precisava, mas é útil fazê-lo para outras coisas...).
# Agora carregamos os comandos de plyr

library(plyr)

# vamos usar "ddply" (leia a documentação do pacote ou veja as dicas mais adiante no post)
# repare que o comando utiliza a base "dta", organiza por código de país ("isocode"),
# pede um sumário, por país da variável "pmec_media" que é a media das pmec calculadas
# anteriormente, ignorando os anos em que houve algum dado faltante ("na.rm=TRUE"). 

ddply(dta, ~ isocode, summarize, pmec_media = mean(pmec, na.rm=TRUE))

Agora, vejamos o resultado. Para ver mais detalhes, veja a documentação de pwt8 e plyr. Outras dicas são esta e esta.

isocode pmec_media
1 AGO 0.2698527
2 ALB 0.5749997
3 ARG 0.7098281
4 ARM 0.7371243
5 ATG 0.5383594
6 AUS 0.5989834
7 AUT 0.6242973
8 AZE 0.4728226
9 BDI 0.8484496
10 BEL 0.5939900
11 BEN 0.6626455
12 BFA 0.7358716
13 BGD 0.8368961
14 BGR 0.5891358
15 BHR 0.5313741
16 BHS 0.6305308
17 BIH 0.8930009
18 BLR 0.5099687
19 BLZ 0.7110097
20 BMU 0.9430771
21 BOL 0.6384951
22 BRA 0.6557681
23 BRB 0.9176295
24 BRN 0.1783046
25 BTN 0.4300709
26 BWA 0.5208991
27 CAF 0.6800754
28 CAN 0.6121375
29 CHE 0.5868197
30 CHL 0.6855206
31 CHN 0.5494199
32 CIV 0.7488742
33 CMR 0.7527335
34 COD 0.6749305
35 COG 0.4382671
36 COL 0.7529843
37 COM 0.5984154
38 CPV 0.6978079
39 CRI 0.8358405
40 CYP 0.5574062
41 CZE 0.5002645
42 DEU 0.5809886
43 DJI 0.6269397
44 DMA 0.6015103
45 DNK 0.5624745
46 DOM 0.7318125
47 ECU 0.6132193
48 EGY 0.6695550
49 ESP 0.6522298
50 EST 0.5297069
51 ETH 0.7811232
52 FIN 0.5024147
53 FJI 0.6368589
54 FRA 0.5974393
55 GAB 0.4527526
56 GBR 0.6328932
57 GEO 0.7129032
58 GHA 0.7278015
59 GIN 0.7263120
60 GMB 0.8160562
61 GNB 0.8856748
62 GNQ 0.4649407
63 GRC 0.6865936
64 GRD 0.7845137
65 GTM 0.8610200
66 HKG 0.5691085
67 HND 0.7746579
68 HRV 0.5953630
69 HUN 0.5360931
70 IDN 0.5866937
71 IND 0.7005359
72 IRL 0.6487952
73 IRN 0.4866217
74 IRQ 0.3241603
75 ISL 0.5204941
76 ISR 0.5020997
77 ITA 0.5891751
78 JAM 0.7392437
79 JOR 0.7085971
80 JPN 0.5370400
81 KAZ 0.5876354
82 KEN 0.8001836
83 KGZ 0.6266033
84 KHM 0.8267202
85 KNA 0.6442140
86 KOR 0.5968393
87 KWT 0.2970611
88 LAO 0.5390379
89 LBN 0.8995980
90 LBR 0.8636384
91 LCA 0.8534209
92 LKA 0.6632201
93 LSO 1.2219911
94 LTU 0.6099957
95 LUX 0.5703499
96 LVA 0.5631248
97 MAC 0.3930121
98 MAR 0.6934141
99 MDA 0.7019827
100 MDG 0.8074133
101 MDV 0.1832236
102 MEX 0.7255086
103 MKD 0.7062246
104 MLI 0.7376391
105 MLT 1.3556602
106 MNE 0.5621934
107 MNG 0.5627013
108 MOZ 0.9719093
109 MRT 0.6465644
110 MUS 0.7040063
111 MWI 0.7647157
112 MYS 0.5356852
113 NAM 0.6724800
114 NER 0.5999834
115 NGA 0.6010883
116 NLD 0.5312290
117 NOR 0.4914107
118 NPL 0.7126890
119 NZL 0.6175504
120 OMN 0.3364292
121 PAK 0.7486567
122 PAN 0.6806284
123 PER 0.7052688
124 PHL 0.6864944
125 POL 0.5937320
126 PRT 0.6926333
127 PRY 0.6934128
128 QAT 0.2613939
129 ROU 0.5638809
130 RUS 0.4876037
131 RWA 0.7233076
132 SAU 0.3245511
133 SDN 0.9571723
134 SEN 0.7633639
135 SGP 0.4474048
136 SLE 0.8428216
137 SLV 1.2248291
138 SRB 0.6809770
139 STP 1.1072268
140 SUR 0.6335978
141 SVK 0.5602101
142 SVN 0.5883688
143 SWE 0.5505727
144 SWZ 0.7613371
145 SYR 0.6650626
146 TCD 0.2787636
147 TGO 0.7384517
148 THA 0.5818592
149 TJK 0.5880398
150 TKM 0.3464478
151 TTO 0.6275485
152 TUN 0.6485752
153 TUR 0.6332986
154 TWN 0.5346673
155 TZA 0.4372538
156 UGA 0.6687535
157 UKR 0.5639214
158 URY 0.7252260
159 USA 0.6825835
160 UZB 0.3869788
161 VCT 0.7430303
162 VEN 0.4057366
163 VNM 0.7126157
164 YEM 0.6690849
165 ZAF 0.6422902
166 ZMB 0.7610378
167 ZWE 0.6292824

Bonito, heim? Repare que um ou dois países deveriam ter seus dados analisados com cautela e não é difícil entender o porquê.

Para fins didáticos, vamos olhar a produtividade do trabalho…

samuel_pessoa_em_imagens

Caso você não tenha entendido nada, eis aqui o artigo do Samuel Pessôa. Minha intenção foi apenas dar uma olhadela nos dados de produtividade. Fica como auxílio para quem leciona.