Created
November 19, 2014 20:35
-
-
Save duarteguilherme/2c3df670cf9715ea54fb to your computer and use it in GitHub Desktop.
gnp_heavy_metal
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#Este post foi inspirado pelo mapa postado no perfil da "International Association for Political Science Students", que mostrava o número de bandas de metal por cada 100.000 habitantes por país. [Confira aqui.](https://www.facebook.com/IAPSS/photos/a.153193376080.144801.65123606080/10152913814401081/?type=1&theater) | |
#Eu, que sou um grande fã do estilo, adorei a ideia. A partir disso, resolvi desdobrar os resultados: será que haveria uma associação entre a proporção de bandas de metal e desenvolvimento econômico? Aparentemente pelo gráfico sim. Será que existe? | |
#Como não possuímos o banco de dados, vamos utilizar o R para coleta-los do mesmo site (http://www.metal-archives.com/browse/country) de onde o mapa foi tirado: | |
library(rvest) # para o scraping | |
library(dplyr) # para data-frames | |
library(countrycode) # para transformar o banco com os países | |
library(stringr) | |
library(RSelenium) | |
library(ggplot2) | |
## Agora a gente define todas as páginas que teremos de explorar em relaçao aos países | |
paginas_paises <- html("http://www.metal-archives.com/browse/country") %>% | |
html_nodes(".countryCol a") %>% | |
function(x) return(c(html_attr(x, "href"), html_text(x))) | |
paginas_paises <- cbind(paginas_paises[1:140], paginas_paises[141:280]) | |
#RSelenium::checkForServer() | |
#RSelenium::startServer() | |
#remDr <- remoteDriver(remoteServerAddr = "localhost" | |
# , port = 4444 | |
# , browserName = "firefox" | |
# ) # Abre selenium | |
#remDr$open() | |
###lsof -i :4444 | |
### Cria função que baixa as entradas de cada | |
#retorna_entries <- function(x) { | |
# remDr$getCurrentUrl() | |
# | |
# remDr$navigate(x) | |
# Sys.sleep(5) | |
# webElem <- remDr$findElement(using = 'css selector', "#bandListCountry_info") | |
# entrada <- webElem$getElementText()[[1]] | |
# entrada <- str_split(entrada," ") | |
# entrada <- entrada[[1]] | |
# return(entrada[length(entrada)-1]) | |
#} | |
# entries <- sapply(paginas_paises[,1], retorna_entries) | |
# entries <- as.numeric(gsub(",", "", entries)) | |
# dados <- data.frame(cbind(paginas_paises, entries), stringsAsFactors=FALSE) | |
# dados$entries <- as.numeric(dados$entries) | |
# colnames(dados) <- c("links", "countries", "entries") | |
#dados <- mutate(dados, c_code3=countrycode(dados$countries, origin="country.name", destination# # ="iso3c")) | |
# dados <- filter(dados, !is.na(c_code3)) # Excluir apenas Curaçao e International | |
# gdppercapita <- read.csv("Bandas de Metal x PIB Per Capita/gdppercapita.csv", stringsAsFactors# =FALSE) | |
# db_new <- merge(dados, gdppercapita, by="c_code3") | |
# db_new <- db_new %>% | |
# select(-(links)) %>% | |
# filter(!is.na(gdppercapita)) %>% #Excluindo NAs | |
# mutate(lgdp=log(gdppercapita), bands_prop=entries/population) | |
# write.csv(db_new, "bandas.csv") | |
db_new <- read.csv("bandas.csv" | |
) | |
db_noutliers <- db_new %>% | |
filter(bands_prop < 4.009e-05) | |
results <- lm(bands_prop ~ lgdp, data = db_noutliers) | |
summary(results) | |
coef(lm(bands_prop ~ lgdp, data = db_noutliers)) | |
qplot(lgdp,bands_prop, data=db_noutliers, label=c_code3, geom=c("point","text")) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment