Estava discutindo com o @Brandizzi no twitter sobre o artigo de Lisboa e Latif, e uma questão que surgiu foi se de fato os gastos do governo no Brasil são realmente ineficientes. Essa é obviamente uma questão complexa e difícil de ser avaliada. Mas para não ficarmos sem nem uma referência para o debate, fiz uma série de gráficos a partir de dados de um trabalho de alguns economistas. Como os dados estavam em PDF, eu tive que entrar com os dados no R, e só depois fazer os gráficos. Eu não li o trabalho em detalhe para avaliar criticamente a metodologia utilizada para produzir os indicadores de qualidade dos gastos. No presente momento, só quero dar um pontapé inicial no debate.
O primeiro gráfico mostra três indicadores: eficiência do gasto com administração, capital humano e saúde, em alguns países emergentes selecionados. Clique na figura para dar zoom. E os dados são do período 1999-2003.
O segundo gráfico apresenta apenas os indicadores para saúde, onde o Brasil esta mais bem posicionado.
O terceiro gráfico apresenta os indicadores de saúde num mapa do mundo, que tem uma visualização mais bonita.
Abaixo, o código em R, para quem quiser reproduzir os gráficos.
### qualidade do gasto do governo ## afonso et al ## https://www.repository.utl.pt/bitstream/10400.5/2131/1/ecbwp581.pdf ## loading libraries require(ggplot2) require(ggmap) require(reshape2) require(maps) require(Cairo) ## setting path setwd("D:\\2013\\Blog") ## getting data pse <- data.frame( country=c("Brazil", "Bulgaria", "Chile", "Cyprus", "Czech Republic", "Estonia", "Greece", "Hungary", "Ireland", "Korea", "Latvia", "Lithuania", "Malta", "Mauritius", "Mexico", "Poland", "Portugal", "Romania", "Singapore", "Slovak Republic", " Slovenia", "South Africa", "Thailand", "Turkey"), admin=c(.78, .79, 1.53, NA, .76, 1.09, .97, .83, 1.36, 1.4, .82, .83, .92, 1.21, 1.18, .89, .92, .69, 2.09, .82, .91, .93, 1.58, .96), humanCapi = c(.81, 1.49, 1.04, .92, 1.31, .83, 1.32, 1.12, 1.18, 1.31, .79, .88, .99, 1.04, .72, .98, .71, 1.53, NA, 1.23, NA, .54, .86, .99), health = c(1.15, 1, 1.7, 1.66, .66, .91, .83, .75, .84, 1.72, 1.14, .9, .68, 1.91, 1.52, .97, .66, 1.03, 2.90, .77, .68, .89, 1.68, .98) ) ## melting data.frame ## necessary to use geom_bar with position = dodge pseM <- melt(pse, id.vars=c("country"), measure.vars=c("admin", "humanCapi", "health"), variable.name="indicator") ## creating average score of government efficiency ## used to order data to improve visualization ## beter than order data by letter pseM$scoreMedio <- ave(pseM$value, pseM$country, FUN = function(x) mean(x, na.rm=T)) # ordering data pseM$country <- reorder (pseM$country, pseM$scoreMedio) # only health data pseM1 <- subset(pseM, indicator == "health") #ordering by health indicator pseM1$country <- reorder( pseM1$country, pseM1$value) # first plot p1 <- ggplot(data=pseM) + geom_bar(aes(x=country, fill=indicator, weight=value), position="dodge") + coord_flip() + theme( panel.background = element_rect(fill = "transparent",colour = NA), # or theme_blank() panel.grid.minor = element_blank(), panel.grid.major = element_blank(), plot.background = element_rect(fill = "transparent",colour = NA) ) # saving ## using cairo to avoid aliasing problems ggsave(p1, file="barplot_qualidade_gasto_gov_.png", h = 9/3, w = 16/3, type = "cairo-png") # second graphic p2 <- ggplot(data=pseM1) + geom_bar(aes(x=country, weight=value), fill="#FF9999") + coord_flip() + theme( panel.background = element_rect(fill = "transparent",colour = NA), # or theme_blank() panel.grid.minor = element_blank(), panel.grid.major = element_blank(), plot.background = element_rect(fill = "transparent",colour = NA) ) # saving... ggsave(p2, file="barplot_qualidade_gasto_gov_saude.png", h = 9/3, w = 16/3, type = "cairo-png") ## maps ## getting world map world = map_data("world") ## merging with data of health world1 <- merge (world, pseM1, by.x="region", by.y="country", all.x=T, all.y=F) # necessary to reorder. If not, map will not be plotted corrected world1 <- world1[order(world1$order),] m0 <- ggplot(data=world1) # empty map (only borders) m1 <- m0 + geom_path(aes(x=long, y=lat.x, group=group), color='gray') + coord_equal() # fill with health expenditure data m2 <- m1 + geom_polygon(aes(x=long, y=lat.x, group=group, fill=value)) # inverse order (to have visible borders) m0 <- ggplot(data=world1) m1 <- m0 + geom_polygon(aes(x=long, y=lat.x, group=group, fill=value)) + coord_equal() m2 <- m1 + geom_path(aes(x=long, y=lat.x, group=group), color='grey', size=.1) m2 ggsave(m2, file="mapa_qualidade_gasto_gov_saude.png", units="cm", h = 10, w = 20, type = "cairo-png", dpi=150)
sério … o primeiro gráfico é terrível … faz um line graph please? O mapa é bonito (quais não são?) mas esconde os dados num mar de cinza.