Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Prefcio
A linguagem R tem sido amplamente utilizada na pesquisa estatstica e, claro, na
economtrica. Uma de suas vantagens? Voc no precisa pagar licena porque o programa
um software livre. Nesta categoria esto tambm o JMulti, Gretl e o EasyReg (cujo mirror
brasileiro, agora, est no PPGOM/UFPel).
Este texto uma verso atualizada e bastante alterada de uma apostila anterior feita
para um minicurso de 20 horas no PPGOM/UFPel, salvo engano, em 2013 (repetido em
2014). Por que alterar a apostila? O principal motivo que logo aps finalizar a verso
anterior, tomei contato com a plataforma Rstudio que funciona sobre o R, mas com uma
visualizao mais confortvel (e com menos problemas para quem precisa, de vez em
quando, salvar muitos grficos...). Outros motivos? Stargazer, RMarkdown, etc1.
Os comentrios recebidos por ex-alunos e amigos ao longo do tempo convenceramme de que a melhor embora mais trabalhosa estratgia era a de optar por uma verso
fortemente alterada. O leitor que conheceu a apostila anterior notar que no terminei a
tarefa ainda, embora toda a apostila tenha sido revisada. Esta a verso provisria que ser
usada no minicurso do R a ser ministrado em breve, no PPGOM-UFPel. Dos autores da
verso anterior, o prof. Rodrigo Nobre Fernandez segue como co-autor (e com planos
imperialistas, pelo que pude perceber). Tambm est em meus planos a participao de
outros co-autores do PPGOM para uma verso mais organizada deste material.
Trs avisos importantes: (i) aos que nunca tiveram contato comigo: o material a
seguir pode parecer informal demais em muitas ocasies. A inteno que sua leitura seja
menos rdua e um pouco mais divertida em alguns momentos. O problema, claro, que
economistas no so muito bem conhecidos pela qualidade de suas piadas; (ii) as planilhas
para replicao de quase todos os exemplos desta apostila estaro disponveis em minha
pgina no PPGOM-UFPel e; (iii) este no um curso de programao em R.
Agradeo a Andr Carraro e Csar Tejada pela oportunidade de experimentar este
material com os alunos de Mestrado de Cincias Econmicas na UFPEL nas edies
anteriores deste minicurso. Agradeo tambm Elisangela Luzia Arajo pelo convite para
ministrar o minicurso na XXXI Semana do Economista na UEM (Universidade Estadual de
Maring) em 2016.
Comentrios podem ser enviados para o endereo cdshikida at gmail dot com.
[Nota de Claudio D. Shikida] Agradeo a Leonardo M. Monasterio por me apresentar ao R. Levei muito
tempo para entender que seria uma boa ideia seguir pelo menos este conselho dele (um pouco de
Econometria mostrava que o melhor seria no seguir seus conselhos mas, neste caso, parece que tivemos um
outlier). Meu primeiro contato mais formal com R foi facilitado pela profa. Edimeire A. Pinto. Ari Francisco de
Araujo Jr me fez tantas perguntas que fui obrigado a melhorar a verso inicial desta apostila (e ainda falta um
bocado...). Alunos nem sempre entendem, ao primeiro contato, a utilidade do R. O contato com o RStudio me
veio por meio dos meus ex-alunos e atualmente economistas - Raphael Molina e Lucas Farias. Boa parte
desta apostila deve muito aos comentrios, dicas e sugestes feitas por alunos do curso ministrado no
PPGOM/UFPel, na semana de 22 a 26 de Abril de 2013. Agradeo tambm ao Carlos Cinelli e ao Vitor Wilher
por terem sempre sido entusiastas do uso do R. O entusiasmo de muitos sempre um estmulo adicional.
3 Veja este endereo: https://github.com/petermeissner/wikipediatrend.
2
Confuso? Ao final deste minicurso voc dever estar pronto para comear uma
anlise como esta. Ah sim, vejamos como so as visualizaes.
Parecem correlacionadas? Tudo bem, podemos tentar dar uma olhada nisto.
https://xkcd.com/552/.
Voc, que comea a usar o R agora, tal como voc, que agora comea o mestrado em
Economia, ou se prepara para sua primeira prova, ou, claro, voc que est prestes a estimar
os primeiros modelos de sua dissertao, reflita sobre esta frase de uma forma positiva.
Vamos ao R!
Caso fosse, algum j estaria levantando a bandeira dos testes de raiz unitria, no sem alguma razo.
Morar em uma biblioteca poderia ser a soluo, no ?
7 Originalmente em: http://familyguy.wikia.com/wiki/The_Simpsons_Guy/Quotes.
5
6
Ao colar na janela do R que vimos acima (trata-se da janela console), voc notar que
ele j iniciar a execuo dos comandos. Repare a posio do cursor na figura abaixo. Na
ltima linha, o cursor encontra-se pronto para a execuo do comando de atualizao.
Vamos apertar a tecla Enter e a mgica comear.
10
11
As rotinas criadas por Ted Galili, autor do installr guiaro voc pelo processo de
instalao/atualizao do R. Como o minicurso feito em um laboratrio, precisamos dar
ateno atualizao do R. Voltemos pgina do github em que estvamos e vamos copiar
e colar outras linhas de comando.
Em seguida, ele perguntar se desejamos saber algo sobre a nova verso do R (caso
algum esteja afim de uma leitura tcnica, siga em frente. No o meu caso).
13
Um ponto importante, enquanto a rotina atua, notar algumas coisas. Primeiro, nos
comandos copiados, alguns deles continham o smbolo # no incio. O # no um
comando. Ele indica que o que vem sua direita no executvel. Usamos este smbolo
para fazermos anotaes. A prxima pergunta muito importante e voc dir Yes mesmo
que eu no explique o porqu.
14
15
16
Podemos fechar o R agora. Vamos ao RStudio. Aps sua instalao, podemos abri-lo
e a visualizao ser algo como a figura seguinte.
Acho que podemos assumir que daqui em diante no to difcil, no? Basta
escolher um repositrio CRAN e buscar o nome do pacote. Repare que voc tambm pode
obter o arquivo compactado, salv-lo no computador e, ento, usar a segunda opo acima,
Package Archive File.
18
bem provvel que voc j esteja no laboratrio e que seu R j tenha pacotes
instalados. Tudo o que voc precisa fazer pedir para verificar se h atualizaes dos
mesmos. O resto do processo simples.
A partir de algum momento em 2016, este link foi substitudo pelo da verso aberta do R oferecida pela
Microsoft: https://mran.microsoft.com/.
8
19
20
Acho que agora voc j comeou a ser notado. Entretanto, tal como na vida,
nenhuma garota quer saber de um cara que s sabe aritmtica ou recitar nmeros com
quatro casas decimais. Vejamos, ento, algo mais interessante.
21
Ok, ainda no muito. Vamos adaptar um exemplo de Heiss (2016) para uma base
de dados hipottica.
22
Ok, neste exemplo voc perdeu pontos com algumas garotas e ganhou com outras.
Repare que o R aceita vetores numricos e tambm de nomes. O uso das aspas
importante aqui. O RStudio til neste aspecto porque, bem, experimente escrever os
nomes dos times sem as aspas e executar o comando. Ah sim, mais alguns comandos com
este mesmo exemplo.
23
Ok. Voc j est experiente em vetores. Vejamos um pouco sobre matrizes. Note o
comando nrow que diz respeito ao nmero de linhas da matriz que estamos criando.
24
25
26
matriz se chame banana. Ento, o comando para invert-la ser: solve(banana). Ok, ajuda
rpida.
Uma das vantagens do R podermos criar uma lista de elementos de diferentes tipos.
Neste caso, criamos uma lista composta de dois objetos. O primeiro deles uma sequncia
de nmeros que se inicia em dois e termina em trs, gerados de forma discreta, com um
passo de distncia. O segundo a varivel oi que recebe a expresso io. Em seguida,
voc percebe que pode visualizar os nomes dos componentes e tambm que o smbolo $
serve para visualizar os itens do componente A da listinha.
Este tipo de objeto naturalmente nos leva a um dos mais usados em R que o data
frame. Embora lembre uma matriz, ele no uma matriz e pode acomodar objetos bem
diferentes ao mesmo tempo. Na tentativa de ganhar a ateno da garota (ou dos seus
amigos), voc tenta emplacar uma conversa sobre vendas semanais dos produtos v1 e
v2.
28
Poucos dados, no? Podemos tentar algo mais interessante. Que tal um pouco de
ao? Primeiro, vamos abrir uma planilha (japao.xlsx), copiar e colar os dados no R.
29
30
A partir da janela acima voc percebe que o + que aparece no script faz parte da
sintaxe do comando. No se trata do tradicional + que aparece na janela de resultados
(console) para indicar que a linha anterior continua. Cuidado com isso, heim? E o grfico
para impressionar a garota?
No ficou feio, ficou? A partir da, a conversa prossegue com uma discusso sobre o
crime, a natureza humana, os limites da Estatstica, as maravilhas da Econometria e, antes
que voc perceba, j estar sozinho, no bar, bbado, sem a garota por perto. Ou no.
31
Outra dica do R: estamos na janela de console, certo? O que voc visualiza a em cima
o comando que digitei, exceto por um detalhe: na terceira linha, na extrema esquerda, h
um sinal de +. Ele no foi digitado. que o R, ao encontrar a limitao da janela direita,
passa para a linha de baixo com o sinal + indicando que o que se segue continuao da
linha anterior e no um novo comando. Veja o mesmssimo comando na janela do script. Ele
to comprido que tive que passar para a linha de baixo em algum momento. A regra no
dividir a linha pelo menos at terminar o nome do arquivo, no caso, rationalslaves.csv. Aps
a vrgula, que deve permanecer na mesma linha, tudo bem.
32
Basicamente, o file.choose() permite que escolhamos o arquivo a ser lido por meio de
uma janela. A vantagem que no se precisa indicar o caminho do mesmo. A desvantagem
que se gasta mais tempo para se obter acesso ao arquivo10.
Voc poderia importar dados diretamente da internet sem necessidade de
transferncia para o computador primeiro. Por exemplo, os dados utilizados no famoso
estudo de Fair sobre casos extra-conjugais usado em vrios livros e est disponibilizado
em vrios endereos online como o do exemplo seguinte. Repare que o formato de dados
importado, no exemplo, o do Stata (extenso .dta).
33
Para salvar como data.frame basta aplicar o comando homnimo e eis o resultado.
Para conferir, uso dois comandos simples para ver o incio (head) e o final (tail) da
minha nova base de dados importada.
Existem muitos outros jeitos de se importar dados para o R. Voc pode, por exemplo,
programar e capturar dados da internet. Veja este exemplo para um conjunto de dados em
formato ASCII e extenso .txt que est na pgina de um professor e importado
diretamente para o R.
Para mais dicas sobre como importar arquivos, pesquise um pouco, ok? 11
11
34
Repare que no canto inferior direito obtivemos alguma ajuda. Digamos que voc no
conseguiu ajuda assim. Ento tente ??log (note que ele j apareceu na figura acima). Neste
caso, o R tenta uma busca mais ampla. No caso, encontrou referncias em alguns pacotes.
35
Outra forma de se pedir ajuda por meio do help.start(). Este comando abre seu
navegador padro diretamente na pgina do R (obviamente voc deve estar conectado...).
J que vamos trabalhar, pode ser interessante ganhar um pouco de memria
removendo alguns objetos. Digamos que eu queira remover o objeto vendasnovo criado h
algumas pginas. Posso escrever rem(vendasnovo) ou remove(vendasnovo) e obterei meu
resultado (no ser apresentada a imagem aqui: verifique voc mesmo que o objeto
desapacerer da listagem no canto superior direito).
36
Repare que, inicialmente usei o summary, mas voc pode obter mais estatsticas
usando o pacote pastecs. Ok, voc pode estar achando que estou inventando. Afinal, como
assim uma base de dados sobre casos extra-conjugais? Primeiramente, veja referncia
original do artigo no rodap13. Trata-se de um exemplo clssico de aplicao do modelo de
regresso Tobit14.
Quem j trabalhou com modelos macroeconomtricos em larga escala deve se lembrar do modelo de Fair
usado como exemplo no Eviews. Parte do que se segue adaptado de material que produzi para o blog do
falecido Nepom. Eis o endereo: https://nepom.wordpress.com/2015/05/23/a-economia-dos-casosextraconjugais-ou-monica-lewinsky-visita-o-nepom/.
13 http://people.stern.nyu.edu/wgreene/Lugano2013/Fair-ExtramaritalAffairs.pdf.
14 Caso voc tenha tido bons cursos de Econometria na graduao, saber do que falo. Caso contrrio,
veremos pelo menos como estimar um tobit mais adiante. Obviamente, no da minha conta se voc tem
casos extra-conjugais. Nenhum marido, esposa ou amante foi ferido ou morto (srio) durante a confeco
desta apostila. Bem, no que eu saiba.
12
37
Repare que temos 451 indivduos que no pularam a cerca no ano anterior, o que
corresponde a 75% das observaes desta varivel. Quer um histograma?
38
39
40
Eu no disse ainda, mas se voc pode explorar as opes da aba Plots. Para no
tomar mais nosso tempo (e espao), deixo este exerccio por sua conta e, com isto,
encerramos a parte bsica do R. A partir da prxima seo, passaremos s aplicaes com
anlise de regresso e tudo aquilo que voc esperava com ou sem casos extra-conjugais.
Podemos, como eu disse antes, trazer o grfico separadamente como imagem para
este documento. Ei-lo a seguir.
Quantas observaes temos para o consumption? Para saber esta informao, basta pedir o
length(consumption).
15
41
1000
2000
3000
4000
5000
6000
income
consumption
1950
1960
1970
1980
1990
2000
Time
A utilidade deste comando que ele nos informa os nomes dos componentes do
objeto em questo - no caso, cons_key facilitando manipulaes posteriores (por exemplo,
construindo testes de hiptese manualmente). Experimente, por exemplo, digitar:
cons_key$coefficients ou cons_key$residuals.
Seria interessante observar os resduos e proceder a outros testes de diagnsticos.
Faremos isso adiante. Antes, contudo, vamos estimar a funo consumo estimada sob a
hiptese de renda permanente (na qual a renda permanente esperada segue um ajuste de
Koyck).
Para esta estimao fizemos uso do comando dynlm. Isto porque sabido que
trabalhar com lags e leads no R uma beno e uma maldio. Beno, porque voc possui
43
formas diretas de criar lags e leads de variveis16. Algum poderia utilizar o comando lm da
seguinte forma17:
cons_rp1 <-lm(consumption~dpi + lag(consumption, -1)-1, na.action=NULL,
data=USMacroG)
O resultado ser, sim, distinto, para os comandos dynlm e lm, exceto no caso em que
a regresso no envolva defasagens. Para fins de comparao, veja a tabela abaixo, com
duas estimaes da funo consumo sob a hiptese da renda permanente.
44
Uma outra forma de obter um intercepto na funo consumo calcular a demanda para uma funo de
utilidade Cobb-Douglas que apresente um nvel mnimo de subsistncia. Para um mesmo perodo de tempo,
hbito ou subsistncia seriam racionalizaes similares para a funo consumo do tipo C = a + bY.
18
45
Este o famoso QQ. Por ele percebemos que os erros certamente no se encaixam em
uma distribuio normal (repare nos quantis mais altos).
poderes de jedi para distinguir entre 201, 203 e 204. O truque pedir um zoom do grfico.
Veja como ele fica.
19
48
Medidas de Influncia
Funo Consumo
Keynesiana
Renda Permanente
Hbito
Cuidado ao usar o RStudio. Para obter mais grficos na mesma janela, voc tem que ampliar o tamanho da
mesma em detrimento das demais. Ao fazer isto, em nosso exemplo, descobre-se que dois grficos adicionais
de diagnstico de resduos estavam ocultos.
20
49
Fica como exerccio para voc gerar os conjuntos correspondentes s outras funes
estimadas. Vejamos alguns outros testes de diagnsticos que no precisam de pacotes (j
esto no pacote bsico que carregado por default no R, o stats)21 (Breusch-Godfrey, LjungBox), o teste Breusch-Pagan e o RESET (carregados a partir do pacote lmtest).
Para o teste de autocorrelao, reporto Breusch-Godfrey e Ljung-Box. possvel tambm obter o DurbinWatson. Entretanto, para modelos ADL, o teste de Breusch-Godfrey parece ser recomendado (vide Gujarati &
Porter (2011)). O teste h de Durbin tambm poderia ser construdo manualmente a partir dos resultados
reportados.
21
50
Voc pode checar o restante das estatsticas com a tabela que constru abaixo.
Testes de Diagnstico - Vrios
Funo
Consumo
Keynesiana
Renda
Permanente
Hbito
Breusch
Pagan
(p-valor)
42.5195
(6.998e-11)
0.6182
(0.4317)
3.7984
(0.1497)
RESET
542.6619
(2.2e-16)
1.9413
(0.1651)
2.1295
(0.1461)
BreuschGodfrey
LjungBox
185.2714
176.2777
(2.2e-16)
(2.2e-16)
7.6098
7.4906
(0.005805) (0.006202)
7.5542
7.4044
(0.005987) (0.006507)
51
O teste de Durbin Watson o que voc quer, no? O pacote lmtest possui o comando dwtest(). Assim, o que
fiz foi: dwtest(cons_key), obtendo o valor reportado.
22
52
Legal, n?
Cook's distance
0.08
0.04
0.00
Diagnostic Plots
2004(1)
1994(4)
2003(4)
hat-values
0.06
0.02
2004(4)
2004(3)
2004(2)
50
100
150
200
Index
54
Segundo Bollen & Jackman (1990), pontos com distncias de Cook acima de 4/n (n = tamanho da amostra)
devem ser analisados com cautela. Agradeo a Ari Francisco de Araujo Jr por esta observao.
23
55
Ao invs de pedir o sumrio, desta vez usei o comando coeftest. Vemos que a base
monetria tem algum efeito, mas ele no existe para a primeira e nem para a terceira
defasagem. Assim, usamos o comando linearHypothesis do pacote car para testar a hiptese
de que os coeficientes da Base so igualmente iguais a zero. O teste nos diz que, em seu
conjunto, os coeficientes da Base no so nulos (com p-valor bem baixo).
Ser que a moeda no mesmo neutra? Bem, esta uma questo que exige mais do
que este exemplo consegue responder24.
56
57
58
Agora devemos regredir educao contra todas as variveis exgenas urban, gender,
ethnicity, unemp adicionando seus possveis instrumentos distance e score.
59
60
O que seria preciso para fazer a regresso? Praticamente nada. Eis os comandos que
utilizarei.
26
Acerca dos testes de exogeneidade neste contexto, ver, por exemplo, Stock & Watson (2010).
61
Repare que a varivel law aparece como lawyes e algo similar ocorre com os estados
dos EUA. Claro que o valor no da varivel law a categoria de referncia (e algum dos
estados cumpre esta funo de forma similar, claro). Podemos redefinir a referncia, por
exemplo, para a varivel law, simplesmente digitando o seguinte.
Uma viso parcial da sada da nova regresso nos mostra que tivemos sucesso aqui.
Podemos aproveitar para ilustrar outro ponto interessante do R: os termos nolineares. Digamos que haja motivos tericos para imaginar que a violncia seja impactada
negativamente pela renda mas que tambm existam efeitos de segunda ordem. Basta usar a
funo I().
62
Ser que este ltimo modelo est especificado corretamente? O teste RESET o
adequado para se fazer o teste. Vamos comparar este modelo - exemplo2- com o original
(exemplo). Para fazer isto, precisaremos do comando linearHypothesis do pacote car.
Outro uso da dummy na forma de termo de interao. Assim, suponha, apenas para
fins de ilustrao, que tenhamos motivos para imaginar que o coeficiente da varivel density
possa ser alterado conforme a lei assuma um de seus valores (vale lembrar que, no caso, 1
diz respeito ao fato de que a lei que permite o porte de armas est ativo no estado em
questo). Como fazer esta estimao?
No caso, vemos que o efeito de interao significativo o que significa que quando a
law varia, o coeficiente associado varivel density tambm varia (estados nos quais a lei
que permite o porte de armas no adotada, ou seja, law assume valor 0, so tais que o
impacto da densidade sobre a violncia so menores (aproximadamente: -.5 0.9 = -1.4).
Repare que este efeito de interao poderia no existir mas justamente isto que est sendo
testado.
Um exerccio interessante, contudo, considerar os efeitos de painel desta base de
dados. Sim, eu no disse nada, mas o que foi feito a em cima foi simplesmente aplicar um
mnimos quadrados ordinrios sobre um painel empilhado, mas voc no vai me dar um
tiro na testa por conta disto, certo?
64
em perodos de guerra, o coeficiente menor ainda (-0.33 + (-1.23)). Perceba que o comando
para criar o efeito de interao simples27.
Outro exemplo.
Veja tambm este exemplo, para uma varivel dummy categrica com trs categorias.
http://datascienceplus.com/assessing-significance-of-slopes-in-regression-models-with-interaction/
27
66
Repare que o comando tem tambm a opo de gerar o cdigo da tabela para LaTex.
A vignette do programa bastante til28 e o lamentvel que nem todos os pacotes do R so
compatveis com stargazer. Mesmo assim, ajuda a alegrar a vida do pesquisador, no ajuda?
= ( )1
Para calcularmos nosso parmetro usaremos a base de dados Icecream do pacote Ecdat.
Este pacote contm um diverso conjunto de dados para aplicaes em econometria. Nossa
primeira tarefa ser instalar este pacote ou carreg-lo com os seguintes comandos:
install.packages(Ecdat)
library(Ecdat)
data(Icecream)
28
https://cran.r-project.org/web/packages/stargazer/vignettes/stargazer.pdf.
67
Voc ver as dez primeiras observaes do nosso conjunto de dados. Nessa base de
dados temos 30 observaes para o consumo semanal de sorvete nos EUA entre maro de
1951 a novembro de 1953 nos EUA. As variveis so as seguintes:
Tendo nossos dados necessrio criar nosso vetor de constantes para podemos
utilizar na nossa regresso mltipla:
n=nrow(Icecream)
68
uns = rep(1,n)
O primeiro comando nos retorna quantas linhas a nossa base de dados possui, como
mencionamos previamente o tamanho de n igual a 30. O segundo comando cria o vetor
de constantes. Em seguida construiremos as nossas matrizes X e Y da seguinte forma:
X = cbind(uns,renda,preco,temperatura)
Y = cons
O comando cbind monta uma matriz com todos os nossos vetores coluna, que so as
variveis dependentes na nossa regresso mltipla. O prximo passo fazermos operaes
com essas matrizes. Para isso usaremos o seguinte:
solve(t(X)%*%X)
Aqui estamos fazendo a primeira parte do clculo do nosso . Na linguagem do R o
comando %*% indica a multiplicao de matrizes, t(X) a matriz transposta e solve calcula
a matriz inversa, deste modo temos X ' X 1 . Para facilitar nossas contas adicionaremos ao
comando acima o seguinte:
xlinhax = solve(t(X)%*%X)%*%t(X)
Por fim multiplicamos por Y:
beta.hat=xlinhax%*%Y
cov.b = sig.2*solve(t(X)%*%X)
Digite cov.b e veja o resultado no terminal:
Que tal compararmos nossos resultados com o da funo lm? Para isto devemos usar
o seguinte comando:
70
reg = lm(consumo~renda+temperatura+preco,data=Icecream)
Obtemos o resumo da regresso com o comando summary(reg):
Veja que acertamos na mosca! Desde aquela poca o consumo de sorvete dependia
positivamente da renda e da temperatura. Tambm observamos que o preo afeta
negativamente o consumo da delcia gelada, mas esta varivel no estatisticamente
significativa.
Adicionalmente, usaremos a matriz de White para termos erros padres robustos e
corrigirmos um possvel problema de heterocedasticidade:
1
1
V X ' X 2 X ' X X ' X
71
72
7. Modelos Microeconomtricos
7.1. Coca ou Pepsi? 29
O exemplo clssico de bens substitutos perfeitos est resumido no subttulo acima.
Em Hill, Griffiths & Lim (2011), cap.7, temos uma aplicao economtrica desta pergunta
por meio de modelos lineares generalizados (binomial, gaussiano ou Poisson). Os dados
so relativos a uma amostra de 1140 indivduos. A base contm o preo relativo entre uma
lata de Coca-Cola e uma de Pepsi-Cola, a existncia ou no (dummies) de anncios no ponto
de venda de um ou de outro e, finalmente, duas dummies indicando se o sujeito comprou
um ou outro refrigerante.
Vejamos o arquivo.
29
73
74
Da tabela, temos que 66% ((507 + 247) / (507+123+263+247) = 0.66 ) das observaes
so previstas corretamente. Hill, Griffiths & Lim (2011), em sua anlise dos dados, indicam
que os trs modelos linear, probit e logit tm desempenho semelhante no que diz
respeito previso. Por meio do pacote ROCR, pode-se obter algumas outras medidas de
previso. Portanto, sem entrar em mais detalhes, eis os comandos e os resultados gerados.
Ok, aqui eu creio que valeria a pena pensar em modelos de competio (duoplio) e gastos em propaganda.
Creio que uma discusso bem interessante para o usurio de R com vcio em questes econmicas.
30
75
Observe a ltima linha. Resumidamente, o primeiro grfico nos diz que o ponto de
corte um pouco maior que 0.5, sugerindo que a tabela das previses que apresentamos
acima (baseada no corte em 0.5) no uma medida adequada. O segundo grfico, por sua
vez, nos diz que o modelo tem bom desempenho. Segundo Kleiber & Zeileis (2008), o
desempenho melhor quanto mais a noroeste da reta de 45 graus est a curva. 31
Seguindo Hill, Griffiths & Lim (2011), pode-se fazer um teste de hipteses sobre o
efeito das propagandas dos dois refrigerantes. Por meio do pacote car, podemos fazer tal
teste. Eis os resultados.
31
Para detalhes sobre estas medidas, ver Kleiber & Zeileis (2008), seo 5.2.
76
Assim, a 10%, a hiptese nula rejeitada. Vale lembrar que, para testes de hipteses
em modelos GLM, Kleiber & Zeileis (2008) no recomendam o uso de erros-padro
robustos (sandwich), exceto em regresses do tipo Poisson. Para outros testes, o leitor
convidado a consultar Kleiber & Zeileis (2008) e a documentao do R.
Eis a regresso.
77
78
Repare que, nesta especificao, apenas a populao tem algum efeito diferente de
zero, e no-linear (a 10%). Uma questo interessante seria pensar tambm no modelo em
funo do PIB per capita, ao invs dos termos separados. A racionalizao, para nolinearidades, poderia ser similar a de uma curva de Engel. Eis os resultados.
Para detalhes sobre sua especificao, ver Kleiber & Zeileis (2008), cap.5. Para detalhes sobre o problema,
ver Fox & Weisberg (2011), seo 5.10.4. Basicamente, o problema diz respeito ao fato de que a varincia
amostral geralmente no igual mdia, como se supe quando a distribuio assumida a de Poisson.
32
79
80
A segunda opo reestimar nossa regresso Poisson com a matriz de varinciacovarincia ajustada por Huber-White.
Para maiores detalhes sobre outros modelos de contagem, ver Kleiber & Zeiles, cap.5, especialmente a
discusso sobre zero-inflated Poisson e Hurdle Models. Ambos so estimveis por meio do pacote pscl.
33
81
82
Nesta seo, ilustro o trabalho de alguns anos de experincia didtico-pedaggica na faculdade com o
grupo de alunos denominado Nepom (Ncleo de Estudos de Poltica Monetria). Juntamente com o ento
aluno Pedro H.C.G. SantAnna (campeo do Econometric Game em sua edio de 2013 e, atualmente, professor
da Vanderbilt University), comeamos a experincia do extinto Nepom no incio de 2008. O modelo
apresentado abaixo , basicamente, a verso ampliada, ao longo dos anos, por vrios outros alunos, do
modelo criado por Pedro (vale lembrar alguns nomes aqui. Primeiro, o criador do modelo, Pedro H.C. G.
SantAnna. Alm dele, correndo o risco de estar me esquecendo de alguns alunos: Luiz Andr B. Miranda,
Jssica Dutra, Lucas Farias Lima, Raphael Molina, Leonardo Oliveira e Thomaz Lino Amorim. Este exemplo ,
de certa forma, o produto de seu trabalho. Para maiores detalhes sobre o que foi o Nepom, ver
http://nepom.wordpress.com. Tenho c comigo um texto sobre esta experincia que nunca consigo terminar.
Caso eu desaparea da face da Terra nos prximos minutos, pode ser interessante deixar isto registrado.
34
83
84
As categorias so:
85
Probabilidade (%)
0.00
0.00
0.01
0.29
0.96
9.08
8.08
47.41
9.47
18.14
5.05
1.32
0.18
86
Uma vez que tenhamos as previses para os hiatos, possvel fazer a previso um
passo a frente e, assim, tentar verificar as probabilidades das aes do Copom nestes
cenrios. Obviamente, o modelo acima poderia ser modificado, por exemplo, em sua
categorizao, ou mesmo na especificao, j que, por exemplo, imagina-se que a deciso
do Copom sobre a taxa SELIC incorpore alguma varivel indicadora de desempenho futuro.
Este tipo de exerccio bem interessante, notadamente para voc que curte estudar
poltica monetria e discutir com colegas da faculdade, sejam eles economista ou no 35.
Obviamente, o modelo acima bem simples e sujeito a diversas crticas (como qualquer modelo
economtrico ou de concurso de Miss). Destaco, por exemplo, dois problemas sempre apontados por vrios
colegas: (a) a ausncia de uma varivel de expectativa forward looking e (b) a ausncia de algum termo capaz
de captar mudanas radicais na poltica monetria (como a politizao do Banco Central em detrimento do
sistema de metas).
36 Fernanda Faria, uma ex-aluna, decidiu explorar este tema e seu trabalho resultou em Shikida, Faria e Araujo
Jr (2014) (http://portalrevistas.ucb.br/index.php/EALR/article/view/5%20EALR%201). Esta seo baseia-se
neste artigo.
37 Para detalhes sobre a regresso beta, ver, por exemplo, Cribari-Neto & Zeileis (2009).
38 As dummies para Carajs e Tapajs foram adicionadas ao modelo para avaliar a influncia estatstica do
pertencimento do municpios regio que pleiteia tornar-se novo estado. Espera-se que coeficientes
estimados das dummies sejam positivos. Para Carajs a dummy foi denominada dum_car e para Tapajs
dum_tap.
35
87
Nesta parte do script voc vai se deparar com alguns ajustes prvios na base de dados. Para nos poupar
tempo, apresento apenas o resultado final.
39
88
Mas vale comentar alguns dos resultados. Vejamos as trs ltimas: dist_cap, dum_car,
dum_tap. A primeira a distncia do municpio capital do Par. O sinal positivo, embora
baixo, fortemente significativo, estatisticamente falando, o que indica um impacto
positivo na probabilidade de se votar pela emancipao do, ento, estado de Carajs.
As duas outras variveis so dummies para os municpios que estariam,
respectivamente, nos potenciais estados de Carajs e Tapajs. O efeito positivo verificado
em ambos os coeficientes, supondo que seja realmente digno de anlise (e que eventuais
ajustes do modelo no alterem este resultado) parece indicar uma espcie de efeito
solidrio entre as populaes envolvidas no processo de criao dos estados40.
Lembra, de certa forma, o famoso logrolling (ou comrcio de votos), exemplo clssico em livros-texto de
Public Choice.
40
89
Note que os dados so dirios e, claro, no existem valores para sbados e domingos.
Algum poderia querer usar o comando ts, mas o mesmo s funciona, como dito, para
intervalos regulares. A sada, neste caso, usar o formato zoo. Veja como a base pode ser
lida neste caso.
41
90
Pode-se marcar a planilha a partir da clula B5, copiar seu contedo e...
42
91
Repare que o primeiro comando cola a rea copiada da planilha a partir da rea de
transferncia (clipboard) para o R. O segundo comando serve apenas para uma conferncia
superficial. Note que o R no atribuiu s colunas qualquer propriedade associadas ao
tempo. Sabemos, contudo, da figura anterior, que as sries comeam em 1994. Vamos usar
apenas a srie da China.
92
Como sempre, bom visualizar o grfico de uma srie de dados. Em nosso caso,
temos o ndice da produo industrial brasileira (IBGE) (sem a aplicao prvia de qualquer
mtodo de dessazonalizao). Iniciamos com o grfico da mesma, em escala logaritmica.
Produo Industrial
No pacote bsico do R, stats, temos o comando stl que serve para decompor a srie
de tempo em componentes sazonais, tendncia e componente irregular. Vejamos como
nossa srie se apresenta em ambas as decomposies.
93
94
Um outro resumo da srie pode ser obtido pelo comando tsdisplay do pacote
forecast44.
Pode-se utilizar os comandos Acf( ) e Pacf( ) da biblioteca astsa. At a verso atual (3.2.5), os comandos acf( )
e pacf ( ) do pacote bsico stats apresentam o desconfortvel problema de visualizao de apresentar uma
correlao no ponto de defasagem zero...
44
95
Faremos uso do pacote forecast para estimar um SARIMA para a produo industrial.
O leitor poderia querer usar o comando arima, do pacote bsico do R, stats. Ocorre que este
comando gera problemas de interpretao na estimao do intercepto de alguns modelos.
Para maiores detalhes, ver Shumway & Stoffer (2011)45.
Desta forma, o comando que utilizaremos o sarima (lembre-se: do pacote forecast)46.
Eis o primeiro modelo, um SARIMA (2,1,1) x (2,0,2).
96
Eis uma forma alternativa de se obter o mesmo modelo. Usamos o pacote astsa e o
comando Arima (no confundir com o comando arima).
97
Repare que aproveitei para obter tambm as medidas de acurcia para a previso,
teis para fins de comparao entre modelos. Um detalhe: o comando accuracy do pacote
forecast, mas eu o apliquei ao SARIMA estimado pelo comando Arima do pacote astsa. Esta
flexibilidade bem til em alguns casos, no acha?
Voltando s medidas de acurcia, voc provavelmente j as viu mas caso no se
lembre, independentemente de sua escala de medida, a leitura trivial: modelos com
menores erros de previso, sob qualquer escala de medida escolhida, possuem maior
acurcia. Logo, em ME, RMSE, MAE, MPE, MAPE ou MASE, queremos sempre o menor
valor possvel, comparado correspondente medida do(s) modelo(s) concorrente(s).
Vamos estimar um outro modelo, que chamaremos de fit2, que ser um SARIMA
(3,1,0)x(1,0,1). Vamos us-lo para ilustrar o teste de Diebold-Mariano (e voc mesmo pode
checar as medidas de acurcia). No pacote forecast, este teste executado facilmente.
98
A hiptese nula a de que ambos os modelos tm a mesma acurcia preditiva. O pvalor indica uma forte evidncia de que esta hiptese no rejeitada. Em outras palavras, o
desempate dos modelos no ser obtido por este teste.
bem provvel que voc esteja se perguntando sobre um aspecto central do estudo
de sries de tempo na abordagem ARIMA: o nmero de diferenciaes de uma srie. Em
termos modernos, o procedimento envolve, geralmente, o recurso a algum teste de raiz
unitria.
Voltemos ao incio desta anlise. Tnhamos, basicamente, que apresentava um forte
carter sazonal e tambm uma tendncia. Isto significa que possvel que a srie possa ser
diferenciada em seu nvel e tambm em seu nvel sazonal. O pacote forecast nos fornece dois
comandos teis para uma anlise rpida acerca disto: ndiffs e nsdiffs.
O que os comandos nos dizem sobre a srie?
47
Outra opo usar os testes de raiz unitria da biblioteca urca. Veremos isso adiante.
99
ser testada por meio de testes de quebra estrutural. No faremos isto aqui, mas a prxima
seo d pistas sobre faz-lo48.
100
tendncia. Entretanto, para transform-la em srie de tempo basta fazer como na leitura de
dados como sries de tempo. Assim, por exemplo, uma tendncia como a srie trend pode
ser facilmente criada como se v a seguir.
trend<-seq(1:349)
Para transform-la em srie de tempo:
tendencia<-ts(trend, start=c(1985), freq=12)
Implementar uma regresso com estas variveis bem simples. Por exemplo,
fazendo uso do pacote dynlm, obtemos:
dynlm(Imp_US~Yen_Dolar+tendencia+SEASON))
O restante do trabalho trivial.
101
O resultado no to animador e, assim, vale a pena ter uma ideia visual do teste.
Para tanto, basta usar plot(consbr_keyn_ocus). O grfico mostra que no existem quebras (a(s)
mesma(s) ocorreria(m) se o processo da flutuao ultrapassasse(m) alguma das fronteiras
(inferior ou superior).
102
O segundo teste, o teste do sup F, abaixo ilustrado, mostra que deve existir uma
quebra estrutural na srie.
Como destacam Kleiber & Zeileis (2008), no existe um teste de quebra estrutural
superior a outro. Assim, o importante estudar o contexto histrico da srie. Como ltimo
exemplo, vamos aplicar o teste de quebras endgenas de Bai- Perron nesta regresso.
103
104
50
105
Shikida & Cortes (2013) buscaram explicar as quebras acima e voc pode consultar o
texto para mais detalhes sobre o Encilhamento e quebras estruturais. Quanto aos aspectos
economtricos, lembre-se que o trade-off, neste caso, sobre o critrio de quebra
relativamente o consenso dos historiadores. No h motivo para se escolher um sobre o
outro, mas uma combinao convexa de ambos uma boa forma de se comear uma anlise
economtrica (no caso, cliomtrica)51.
107
108
Tentei explicar a diferena entre os tipos de tendncias com uma interpretao macroeconmica aqui.
Mas veja tambm o pacote fUnitRoots.
109
A sada bem completa. Repare nas informaes abaixo das estatsticas da regresso.
Temos trs estatsticas, tau3 (-3.3775), phi2 (4.0215) e phi3 (5.7573) que podem ser
comparados com os valores crticos da tabela para 1, 5 ou 10%. Cada estatstica diz respeito
a uma modalidade do teste ADF no que diz respeito incluso de termos deterministas.
Em resumo, o que os resultados acima nos dizem so equivalentes tabela abaixo com a
observao de que tau3 equivale a .
Percebe-se que, em qualquer uma das trs especificaes possveis da equao
estimada (correspondente ao primeiro modelo da tabela abaixo), no rejeitamos a existncia
de raiz unitria a 1 ou a 5%. bom lembrar que, conforme Gujarati & Porter (2011), a
equao de teste pode ser desconsiderada se o coeficiente da varivel em nvel defasada for
positivo, pois isto implicaria em uma tendncia explosiva. Em nosso caso, o coeficiente
negativo (-0.1451), o que no nos causa problemas.
Pode-se proceder ao restante dos testes. O comando seria, para cada linha da tabela
anterior: ur.df(lpmg, type = c("drift"), lags = 10,selectlags = c("BIC")) geraria o modelo com
drift e, finalmente, ur.df(lpmg, type = c("none"), lags = 10,selectlags = c("BIC")) geraria a
ltima equao de teste.
Sumrio dos testes de Dickey-Fuller
110
Modelo
de
Teste
yt Tt 1yt 1 k y t k t
( - 1) = 0
( - 1) = = 0
( - 1) = = 2
=0
yt 1yt 1 k y t k t
yt 1yt 1 k y t k t
( - 1) = 0
( - 1) = = 0
( - 1) = 0
56
Outra opo seria usar o pacote forecast e o comando ndiffs como vimos anteriormente.
111
que apenas a srie de preos para Minas Gerais possui uma provvel quebra na 34
observao. Os comandos e resultados esto a seguir.
112
Note que a mesma aparece significativa a 5%. Podemos visualizar os grficos dos
testes. Como exemplo, apresento apenas o relativo a Minas Gerais.
113
O passo seguinte estimar o VECM com duas relaes de cointegrao. Optei por
seguir com as dummies sazonais (voc as ver como sd1, sd2, ..., sd11 na sada a seguir).
No teste do maior autovalor (mximo autovalor), a hiptese nula a de que existem r relaes de
cointegrao contra a alternativa de que existem r + 1. J no teste do trao, a hiptese nula a de que
existem no mximo r relaes de cointegrao e a alternativa a de que existem no mximo r + 1 relaes
de cointegrao.
57
115
Conforme destacado por Pfaff (2008), no caso do teste Jarque-Bera multivariado, o resultado dependente
da ordenao das variveis.
58
116
117
A sada parcial nos mostra um resultado distinto do anterior. Agora, a 1%, teramos
evidncia de quatro relaes de cointegrao.
O teste de exogeneidade fraca pode ser realizado por meio do pacote urca. Por
exemplo, testamos a seguir a exogeneidade fraca dos preos do RS. Inicialmente
fornecemos a matriz das velocidades de ajustamento:
118
119
varincia. No prosseguiremos com este exemplo porque seria necessrio conhecer melhor
o mercado de leite para que tivssemos anlises mais elaboradas. O leitor convidado a
aperfeioar esta anlise60.
Fazendo uso dos comandos Acf e Pacf (pacote forecast) obtemos os correlogramas das
mesmas.
Voc pode usar tambm o pacote tsDyn para anlises similares a estas. Outro pacote interessante, mas
apenas para o uso com duas variveis, ou seja, com o mecanismo de correo de erros de Engle- Granger o
egcm.
61 http://www.sidra.ibge.gov.br/bda/pecua/default.asp?z=t&o=24&i=P .
60
120
Series: ovo
0.6
0.4
-0.2
-0.2
0.0
0.2
Partial ACF
0.4
0.0
0.2
ACF
0.6
0.8
0.8
1.0
1.0
Series: ovo
1 2 3 4 5 6 7 8 9
11
13
15
17
19
1 2 3 4 5 6 7 8 9
Lag
11
13
15
17
19
Lag
Series: galinha
0.4
Partial ACF
-0.2
-0.2
0.0
0.0
0.2
0.4
0.2
ACF
0.6
0.6
0.8
0.8
1.0
1.0
Series: galinha
1 2 3 4 5 6 7 8 9
11
Lag
13
15
17
19
1 2 3 4 5 6 7 8 9
11
13
15
17
19
Lag
121
Diante disso, assumimos que o VAR em diferenas deve ter trs defasagens. Eis o
comando:
granger1<-VAR(dgranger, p=3,type="both")
Vejamos os resultados.
122
123
124
125
126
0.005
-0.005
0.000
diff.lovo.
0.005
0.000
-0.010 -0.005
diff.lgalinha.
0.010
0.015
10
xy$x
95 % Bootstrap CI, 100 runs
10
xy$x
95 % Bootstrap CI, 100 runs
Para a decomposio:
0.8
0.4
diff.lgalinha.
diff.lovo.
0.0
Percentage
10
Horizon
0.8
0.4
diff.lgalinha.
diff.lovo.
0.0
Percentage
10
Horizon
O leitor interessado pode obter mais informaes sobre VAR e VECM estruturais na
bibliografia indicada. Por enquanto, nosso maior interesse ainda o de saber se o ovo ou a
galinha o culpado disto tudo. Esperamos que estas notas tenham ajudado na soluo desta
e de outras questes.
127
128
uniao = dados.plm$union
reg = lwage~educ+black+hisp+exper+expersq+married+uniao
129
O comando summary nos mostra que temos 545 indivduos ao longo de 8 anos o que
nos d um total de 4360 observaes. Alm disso, percebemos que o fato de um indivduo
ser hispnico, em mdia no afeta seu salrio de acordo com este modelo. Adicionalmente
importante destacar as principais diferenas entre os modelos de dados em painel:
Modelos com efeitos fixos (EF): A estimao feita assumindo que a heterogeneidade
dos indivduos. Se capta na parte constante, que diferente de indivduo para indivduo,
captando as diferenas invariantes no tempo.
estimao
feita introduzindo a
130
131
132
wi = plm(reg,data=dados.plm,effect="individual",model="within")
re = plm(reg,data=dados.plm,effect="individual",model="random")
133
phtest(wi,re)
E o modo convencional:
phtest(reg.fe,reg.re)
Fazendo os dois testes, podemos concluir que o modelo de efeitos fixos o mais
adequado para nossa estimao. Apenas para apresentarmos o comando, vamos estimar
este modelo na forma de primeira diferena:
reg.fd = plm(reg,data=dados.plm,model="fd")
summary(reg.fd)
Eis os resultados:
pbsytest(reg,data=dados.plm)
135
Bibliografia Parcial
Adkins, L. Using gretl for Principles of Econometrics, 4th edition. (verso 1.041, 01/02/2013,
online).
Arai, M. (2004). A Brief Guide to R for Beginners in Econometrics. (online).
Bollen, K.A. & Jackman, R.W. (1990). Regression Diagnostics: an expository treatment of
outliers and influential cases. In: Fox, John; and Long, J. Scott (eds.); Modern Methods of Data
Analysis (pp. 257-91). Newbury Park, CA: Sage.
Calgeras, P. (1960) [1910] A Poltica Monetria do Brasil. Companhia Editora Nacional, Rio
de Janeiro.
Enders, W. (2004) Applied Econometric Time Series, Wiley & Sons, 2nd edition.
Epple, D. & McCallum, B.T. (2005) Simultaneous Equation Econometrics: The Missing
Example. Economics Inquiry, v. 44, n.2, pp.374-84.
Fox, J. & Weisberg, S. (2011) An R Companion to Applied Regression. SAGE, 2nd edition.
Gujarati, D.N. & Porter, D.C. (2011) Econometria Bsica. McGraw-Hill/Bookman, 5 edio.
Heiss, Florian (2016) Using R for Introductory Econometrics. Disponvel em
http://www.URfIE.net.
Hill, R.C.; Griffiths, W.E. & Lim, G.C. (2011) Principles of Econometrics, 4th edition. John
Wiley & Sons.
Hyndman, R.J.; Koehler, A.B.; Ord, J.K. & Snyder, R.D. (2008) Forecasting with Exponential
Smoothing. Springer-Verlag.
Johnston, J. (1991) Econometric Methods. McGraw-Hill.
Kleiber, C. & Zeileis, A. (2008) Applied Econometrics with R. Springer-Verlag.
Lundholm, M. (2011) Introduction to Rs time series facilities. (online).
Pfaff, B. (2008) Analysis of Integrated and Cointegrated Time Series with R. Springer-Verlag.
Shikida, C.D.; Araujo Jr, A.F. de & Figueiredo, E.A. (2011). Ovos, galinhas: revisitando um
dilema secular a partir de dados brasileiros. Boletim Economia e tecnologia, v. 26, p. 161-168.
Shikida, C.D. & Cortes, G.S. (2013) Early Financial Crises in an Infant Republic: An Empirical
Analysis of the Encilhamento in Brazil (1889-1906). Artigo apresentado no X Congresso da
Associao Brasileira de Pesquisadores em Histria Econmica.
136
Shikida, C.D.; Nogueira Jr., R.P. & Araujo Jr., A.F. de. (2011) Structural Breaks in Exchange
Rate Regimes in Brazil. Economics Bulletin, v.31, n.2, p.1748-1756.
Shikida, C.D.; Araujo Jr., A.F. de & Faria, Fernanda R. F. de. (s.d.) Plebiscito e Criao de
Novos Estados: o caso do Par. (mimeo)
Shumway, R.H. & Stoffer, D.S. (2011) Time Series Analysis and its Applications with R
Examples. Springer-Verlag, 3rd edition.
Stock, J.H. & Watson, M.W. (2010) Introduction to Econometrics. Addison-Wesley, 3rd edition.
Thurman, W.N. & Fisher, M.E. (1988) Chickens, Eggs, and Causality, or Which Came First?
American Journal of Agricultural Economics, v.70, n.2, May/88, pp. 237-8.
137