Skip to content

Instantly share code, notes, and snippets.

@duarteguilherme
Created November 19, 2014 20:35
Show Gist options
  • Save duarteguilherme/2c3df670cf9715ea54fb to your computer and use it in GitHub Desktop.
Save duarteguilherme/2c3df670cf9715ea54fb to your computer and use it in GitHub Desktop.
gnp_heavy_metal
#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