Dúvidas no R ou Python? Vá ao StackOverflow em Português!


O famoso site de programação StackOverflow (SO) ganhou uma versão tupiniquim.

O SO é um excelente site de perguntas e respostas. Seu diferencial é ser direto: as perguntas têm que ser bem definidas e as  respostas têm de resolver diretamente o problema. Quer saber, por exemplo, como agregar uma base de dados no R? Pergunte lá e surgirão várias respostas diferentes de como se fazer isso.

Ainda há poucos usuários ativos no R do SO em português. Mas estamos fazendo um esforço para popular o site com perguntas e respostas. Você pode fazer perguntas sobre problemas que está enfrentando atualmente ou, inclusive, registrar perguntas e respostas que você já sabe, como, por exemplo, aqui (gráfico em 3d), aqui (barplot) ou aqui (contar ocorrências em um vetor) - alguém certamente passará pela mesma dificuldade e a solução que você encontrou para o problema pode ser útil. Ou, ainda, outro usuário pode ter uma solução mais interessante do que a que você propôs. De uma olhada nas perguntas que já foram feitas sobre R aqui.

Se você usa  R (Python), cadaste-se no StackOverflow em Português e ajude o site a crescer! Podemos torná-lo um ótimo ambiente para a comunidade brasileira de R, tal como é hoje o SO em inglês.

Debate sobre desonestidade – Agora, ao vivo, no Youtube.


Peter Singer, Paul Bloom e Dan Ariely irão discutir agora, ao vivo, suas pesquisas sobre desonestidade, moralidade e ética.

Mapas de roubos em Brasília?


Recentemente conheci um site com uma iniciativa bem bacana chamado Onde Fui Roubado. Lá qualquer pessoa pode reportar um crime especificando local, hora, objetos roubados e inclusive fornecer um relato. Há mais de 16 mil registros para várias cidades do país, e resolvi fazer um webscraping para ver como são estes dados.

Especificamente para Brasília, infelizmente, existem apenas cerca de 200 registros. A maioria na Asa Sul, Asa Norte e Sudoeste, com mais de 100. A ideia aqui será montar um mapa de calor, ou de densidade, dos roubos no Plano Piloto.

Temos, entretanto, dois problemas que valem ser ressaltados: (i) a amostra é pequena; e, (ii) possivelmente viesada. Isto é, como o site ainda não parece ser muito conhecido, não necessariamente o público que está informando é representativo da população do local. Ainda assim, tendo em mente essas ressalvas, vamos brincar um pouco com a visualização dos dados!

Primeiro, vejamos um mapa com todos os casos – note que, quanto mais vermelho, maior a concentração de roubos reportados na região. A maior parte dos registros foram na Asa Sul e Asa Norte. Na Asa Norte, em especial, a região próxima à UnB tem destaque. Lembre que talvez isto seja decorrência, por exemplo, de pessoas mais jovens conhecerem o site e reportarem mais casos.

crimes_geral

 

Vamos dividir agora o mapa por horário do roubo, entre manhã, tarde, noite e madrugada. A maior parte dos roubos registrados ocorreu durante a noite, com focos na Asa Norte e início da Asa Sul.

hora

 

Vejamos, ainda, uma divisão por dias da semana. De maneira consistente com os mapas anteriores, aparece um foco nas sextas, na região próxima à UnB.

semana

Poderíamos fazer um mapa cruzando dias da semana e hora, mas temos poucos dados para isso. A ideia aqui é mostrar como podem ser poderosas essas visualizações! Se a Secretaria de Segurança Pública liberar os microdados dos BO’s (se alguém tiver estes dados, por favor, entre em contato), seria possível montar mapas bem acurados. E imagine cruzá-los com as informações de imóveis - poderíamos medir o impacto da criminalidade nos preços imobiliários.

Por fim, reforço a divulgação do Onde Fui Roubado, é uma iniciativa louvável!

***

A quem interessar, seguem os códigos para a construção dos mapas. Os dados podem ser baixados aqui.


library(ggmap)
library(dplyr)

### carrega dados
dados <- readRDS("roubo2.rds")

### Pega mapa de Brasília
q<-qmap("estadio mane garrincha, Brasilia", zoom=13, color="bw")

### transformando data em POSIXlt e extraindo hora

dados$hora <- as.POSIXlt(dados$data)$hour

### selecionando a base de dados do plano piloto, criando semanas e horários
bsb <- filter(na.omit(dados), cidade=="Brasília/DF",
lon > -47.95218, lon < -47.84232,
lat > -15.83679, lat < -15.73107)%.%
mutate(semana = weekdays(data),
hora = cut(hora,
breaks=c(-1,6,12,18,25),
labels=c("Madrugada", "Manhã", "Tarde", "Noite")))

### reordenando os dias da semana
bsb$semana <- factor(bsb$semana, levels = c("segunda-feira", "terça-feira",
"quarta-feira", "quinta-feira",
"sexta-feira", "sábado", "domingo"))

### estrutura básica do gráfico
map <- q + stat_density2d(
aes(x = lon, y = lat, fill = ..level.., alpha = ..level..),
size = 2, bins = 4, data = bsb,
geom = "polygon")

### mapa geral
map + scale_fill_gradient(low = "black", high = "red", guide=FALSE)+
scale_alpha(guide=FALSE)

### mapa por dia da semana
map+scale_fill_gradient(low = "black", high = "red", guide=FALSE)+
facet_wrap(~ semana)+scale_alpha(guide=FALSE)

### mapa por horário
map+scale_fill_gradient(low = "black", high = "red", guide=FALSE)+
facet_wrap(~ hora) + scale_alpha(guide=FALSE)

 

Quanto mais tempo sem alugar, maior a variação do preço do aluguel? E mais um mapa.


Hoje, com 30 dias de coleta e mais de 60.000 observações de preços de aluguéis de Brasília, resolvi explorar um pouco os dados.

Será que, como nos diz a intuição, quanto mais tempo o imóvel passou ofertado, maiores as reduções observadas do preço do aluguel?  

Vejamos com o gráfico abaixo.

No eixo x temos quantos dias o imóvel ficou ofertado durante os 30 dias de coleta e, no eixo y, a soma da variação percentual do valor do aluguel no período:

variacao

Parece que os preços de oferta são relativamente rígidos, mas depois de 20 dias sem alugar começam a ceder. Vejamos se o padrão se mantém e como isso se comporta mais para frente!

PS: como muitos imóveis podem estar no mesmo ponto – por exemplo, a maioria tem variação zero no preço – o gráfico pode dar a impressão de que há poucas observações com poucos dias de anúncio. Na verdade há muitos pontos ali, o problema é que eles estão um em cima do outro, o que chamamos de overplotting. Uma outra forma de visualizar a distribuição tentando suavizar o overplotting é com um pouco de jitter (desvios aleatórios na posição dos pontos), você pode ver o mesmo gráfico com jitter aqui. Outra coisa que vale a pena ser novamente ressaltada é que o gráfico não é uma série temporal! Ele relaciona a quantidade de dias que um anúncio ficou no ar com a variação percentual do preço deste anúncio.

***

Resolvi também testar outra forma de visualização espacial dos dados. No mapa abaixo, quanto mais vermelho, mais caro o aluguel e, quanto maior a bola, maior o apartamento (em metros quadrados). Os dados são de hoje.

mapa_aluguel