Tag: R
Dissertação vs Tese
Em minha dissertação, o tema foi a emancipação de municípios em MG. Já, na tese, o foco foi em instituições e desenvolvimento econômico (com alguns capítulos focando na colonização portuguesa).
Olhando para mim mesmo em dois períodos, vejo…


Creio que há algo em comum aí, mas não encontrei ainda. ^_^
O mundo está ficando mais racional. E o Brasil? (Dica R do dia/Momento R do dia)
“Racional”, no sentido do autor deste texto. Ok, é só um post. Mas resolvi traduzir os termos (quase todos) e incluir um outro e ver se a busca no google por palavras-chave associadas a estas maluquices diminuiu ao longo do tempo.
Os resultados falam por si. Veja as imagens. Observo que: (a) o terraplanismo segue a mesma tendência de seu equivalente em inglês do post original e (b) os reptilianos, que não estavam no original, tiveram um curioso pico há alguns anos (a propósito, quem assistiu Iron Sky e sua continuação devem ter adorado a participação dos reptilianos no filme).
Diagnósticos de resíduos
Eis uma dica do R – e também de Econometria – para todos: interpretando alguns dos gráficos de diagnósticos de resíduos.
Busca de ovos (no google) e busca de galinhas (claro, também no google) e um resultado que mudará o seu jeito de pensar (ou vai te fazer nunca mais voltar a este blog)
O artigo clássico da literatura nacional sobre ovos e galinhas – na minha viesada opinião – é este. Obviamente, trata-se de uma questão muito importante para a vida das pessoas (sem falar que envolve milhares de empregos).
Bem, hoje eu voltei a usar o google trends para fins outros (malignos?) e encontrei este gráfico.
Claro que tive que fazer um teste de causalidade para ver se haveria uma “robustez” do teste de causalidade do artigo citado. Afinal, se ovos (não) Granger-causam galinhas (e vice-versa) com dados do mundo real (produção de ovos e galinhas poedeiras), porque não testar o caso dos impulsos psicológicos que motivam as buscas das palavras “ovos” e “galinhas”? Não foi Keynes quem disse que a função consumo tinha “bases psicológicas”? O Nobel de Economia não foi para um cara que trabalha com esta tal de “motivação psicológica”?
Não perdi tempo! Lá fui eu para o R e, bem, eis as variáveis: x = ovos e y = galinhas (o nome dos eixos, aqui, não tem função alguma, exceto a de tentar dar um ar de seriedade ao post). Um pouco de estimações e eis que posso anunciar o resultado (ao som da banda da praça): para a hipótese nula de que ovos não Granger-causam galinhas, obtive um F = 0.6972 com p-valor de 0.6527. Já para a hipótese de que galinhas não Granger-causam ovos, obtive um F = 2.4705 com p-valor de 0.0325. Traduzindo, a brincadeira gerou um resultado que aponta relativamente mais para a causalidade de ovos para galinhas do que o contrário.
Será este um resultado revolucionário que mudará sua percepção de mundo? Serei chamado (e pago com bitcoins) para palestrar sobre a filosofia, a economia, a diversidade e o bem-estar no Brasil em crise? Não creio. Mas pelo menos foi divertido brincar novamente com o pacote gtrendsR.
Google Trends e algumas buscas (Brasil)
Primeiramente, alguns nomes cogitados para a presidência.
Agora, dois novos personagens do cenário político.
O eterno mito de que Mises é mais procurado do que Marx.
Finalmente, alguns grupos que foram importantes no passado recente, mas cuja influência parece ter diminuído (em um dos casos, pelo menos) recentemente (será?).
Ok, são buscas no Google. Não são notícias. Não dá para inferir muito, nem sobre correlações (muito menos sobre causalidades). De qualquer forma, é divertido, não é?
Dica R do Dia – Gerenciando pedidos, estoques, etc
Eis um ótimo exemplo de como aprender R replicando exemplos (não fiz, mas as instruções são bem detalhadas). Mesmo que você não entenda tudo inicialmente, a repetição e a análise dos resultados acaba por fazer seu cérebro trabalhar.
p.s. é a primeira vez que vejo uma curva ROC utilizada em um exemplo aplicado. Serve de exemplo para sala de aula.
Momento R do Dia – Revisitando a mais longa série histórica do Brasil (na minha opinião)
Eis um antigo Momento R do Dia, revisitado.
dat<-read.table("C:/Users/cdshi_000/Documents/pila.csv", header=TRUE, sep=",", na.strings="NA", dec=".", strip.white=TRUE) str(dat) dat$date <- as.Date(as.character(dat$date)) library(ggplot2) library(ggthemes) p<-ggplot(dat, aes(date, pila)) + geom_line()+ ggtitle("Taxa de câmbio Pila/unidade monetária brasileira") p + theme_economist() + scale_colour_economist() + scale_y_continuous(position = "right")
O código acima nos dá…
Como está tabulada a série? Eis o cabeçalho e a primeira linha.
date pila
1 1500-04-22 1
Segui a dica importante de transformar a data que estava em formato de fator para data mesmo.
Legal, né?
Mini-Dica R do Dia (literalmente “do Dia”, como você verá)
Sempre tive muita raiva daquele momento em que o Excel (ou mesmo o LibreOffice/OpenOffice) promete(m) converter datas em dias de semana mas diz que “se você entrou com formato texto, podem ocorrer problemas”. Em outras palavras, nunca funciona 100% (o que, numa planilha, significa que não funciona…a não ser que você não se importe com 9 + 7 = 23 e 2 + 2 = 4…).
Ontem, com meus dados no formato dd/mm/yyyy já importados no R, descobri – após alguma pesquisa – que a solução disso é bem simples (aliás,o exemplo está aqui).
Eis aí mais um caso de flagrante – e absurdamente clara – vantagem do R sobre planilhas eletrônicas. Creio que numa futura revisão da apostila do R incluirei esta dica.
R atualizado
Tenho divulgado pouca coisa do R ultimamente, mas aqui está a última atualização do mesmo.
Dica R do Dia – Excel?
O que? Como? Confira aqui.
Dica R do dia – Banco Mundial
Estou excessivamente cansado hoje. A dica é esta.
Dica R do Dia – Instalação
Às vezes, raramente, eu diria, há problemas com a atualização do R e você perde sua biblioteca de pacotes (mesmo usando o installr, isso aconteceu recentemente comigo). Este blogueiro deu uma dica simples que pode ser interessante para se precaver.
Momento R do Dia – belo exercício para replicação (quebra estrutural e aquecimento global)
Outra Dica R do Dia – o paradoxo de Freedman
Dica R do Dia – Secretaria de Política Econômica facilitou sua vida no cálculo das elasticidades com dados divulgados por eles!!!
Título gigante, eu sei, mas é menor do que meu entusiasmo. Veja aqui.
Momento R do Dia – Replicando um exercício…com outra base de dados
Uma das maneiras mais simples de se aprender qualquer coisa – inclusive R – é ganhar confiança replicando um exemplo, ainda que você não tenha condições, no início, de entender todas as implicações do que está fazendo. Funciona bem com tudo na vida (ou você sabia andar de bicicleta antes de subir nela pela primeira vez?) e, claro, também no R.
Depois de replicar, claro, é legal mudar a base de dados e treinar novamente. Assim, após replicar o exemplo de cross-validation do BlogR, resolvi, como economista, fazer um exercício de, digamos, estática comparativa. Tudo o mais constante, mudei a base de dados. Mas o que vamos fazer? O que é cross-validation, ou melhor, o que é leave-one-out cross-validation? Citando o autor:
Leave-one-out is a type of cross validation whereby the following is done for each observation in the data:
- Run model on all other observations
- Use model to predict value for observation
This means that a model is fitted, and a predicted is made n times where n is the number of observations in your data.
Seu exemplo usa a (já) clássica base de dados do R, mtcars. Eu resolvi usar uma do pacote AER , a base OECDGrowth.
Um ponto importante é que a amostra precisa ser formatada para uso com os comandos do exemplo original. Veremos isso a seguir.
A regressão que vou replicar é uma equação de crescimento que Kleiber e Zeileis estimam na seção 4.4 de seu ótimo livro (obviamente, o Applied Econometrics with R), quando discutem resistant regressions. Trata-se desta equação:
solow_lm <- lm(log(gdp85/gdp60) ~ log(gdp60) + log(invest) + log(popgrowth + .05), data = OECDGrowth)
Vejamos o que fiz.
Primeiro criei as variáveis já em logaritmos para evitar possíveis problemas com o uso de fórmulas dentro das funções utilizadas no exemplo (por via das dúvidas, prefiro me precaver). Eis o código.
library(AER) data("OECDGrowth") # vamos criar a base das variaveis usadas na solow_lm solow_lm <<- lm(log(gdp85/gdp60) ~ log(gdp60) + + log(invest) + log(popgrowth + .05), data = OECDGrowth) gdp85<-OECDGrowth$gdp85 gdp60<-OECDGrowth$gdp60 invest<-OECDGrowth$invest popgrowth<-OECDGrowth$popgrowth lgdp85_60<-log(gdp85/gdp60) lgdp60<-log(gdp60) linves<-log(invest) lpopgrowthplus005<-log(popgrowth+0.05) data1<-data.frame(lgdp85_60,lgdp60,linvest,lpopgrowthplus005)
Pronto para a replicação? É bom ler o código original com atenção. Ao fazer isso, descobre-se facilmente que é preciso alterar o nome da base de dados original – e o da variável dependente – para não ter surpresas desagradáveis. O trecho do código abaixo pode ser comparado com o original citado lá no início deste pequeno texto.
library(pipelearner) pl <- pipelearner(data1, lm, lgdp85_60 ~ .) pl <- learn_cvpairs(pl, k = nrow(data1)) pl <- learn(pl) # ou pl <- pipelearner(data1, lm, lgdp85_60 ~ .) %>% learn_cvpairs(k = nrow(data1)) %>% learn()
O que está acontecendo? Não é esta a minha preocupação, neste estágio do exercício (como disse no início do texto). Mas você pode descobrir um pouco mais aqui. Basicamente, estamos usando um algoritmo de machine learning na regressão de crescimento original.
Os passos seguintes não necessitam alterações. Para não ficar tão igual, vou traduzir os elementos textuais do gráfico (ok, eu sei que é preguiça).
library(tidyverse) # Extrai os valores observados e previstos da variavel dependente para cada observação pl <- pl %>% mutate(true = map2_dbl(test, target, ~as.data.frame(.x)[[.y]]), predicted = map2_dbl(fit, test, predict)) # Resumo dos resultados results <- pl %>% summarise( sse = sum((predicted - true)^2), sst = sum(true^2) ) %>% mutate(r_squared = 1 - sse / sst) results pl %>% ggplot(aes(true, predicted)) + geom_point(size = 2) + geom_abline(intercept = 0, slope = 1, linetype = 2) + theme_minimal() + labs(x = "Valor observado", y = "Valor previsto") + ggtitle("Valores Observados contra previstos baseados\n em leave-one-one cross validation")
Agora, vejamos o gráfico.
Comparando com o gráfico do autor para seu exercício em mtcars confesso que não consigo dizer se há alguma superioridade no ajuste. Isto é bastante razoável, dado que o R² obtido por ele (0.95) não é tão distante do que o obtido aqui (0.94).
Ok, concluímos o nosso objetivo de refazer os passos do exercício original com outra base de dados. Vale ressaltar que o pipelearner tem funções mais interessantes e talvez você queira estudar outros exemplos criados pelo autor do pacote (aliás, caso você queira realmente entender o que foi feito aqui, é bom dar uma olhada lá). Aliás, após o sucesso de um exercício como este, a gente ganha confiança para, justamente, seguir em busca de maior compreensão, não é?
Até a próxima.
Ouça o profeta
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.
Febre amarela?
Mais um pouco de diversão…
Políticos e políticas: com Bolsa e sem Bolsa
Mais um pouco da brincadeira do R, agora comparando as buscas no Google Trend por alguns termos/pessoas famosas…com e sem Bolsonaro.
Brincando com o Google Trends: Menos Mises?
O Cinelli me avisou que o gtrendsR voltou a funcionar direitinho (não me perguntem, por favor). Aí resolvi brincar com alguns economistas falecidos e…
Divertido, não? Depois faço algo mais interessante.
R e os Refugiados
Dica R do dia – pontos influentes
Rapidinha esta dica, mas legal. Vale uma aprofundada depois, em bons livros.