Regressão robusta, erro de medida e preços de imóveis


Um amigo estava tendo problemas ao analisar sua base de dados e pediu ajuda — ao olhar alguns gráficos o problema parecia claro: erro de medida. Resolvi revisitar um post antigo e falar um pouco mais sobre como poucas observações influentes podem afetar sua análise e como métodos robustos podem te dar uma dica se isso está acontecendo.

Voltemos, então, ao nosso exemplo de uma base de dados de venda de imóveis online:

arquivo <- url("https://dl.dropboxusercontent.com/u/44201187/dados/vendas.rds")
con <- gzcon(arquivo)
vendas <- readRDS(con)
close(con)

Suponha que você esteja interessado na relação entre preço e tamanho do imóvel. Basta um gráfico para perceber que a base contém alguns dados muito corrompidos:

with(vendas, plot(preco ~ m2))

unnamed-chunk-15-1

Mas, não são muitos pontos. Nossa base tem mais de 25 mil observações, será que apenas essas poucas observações corrompidas podem alterar tanto assim nossa análise? Sim. Se você rodar uma regressão simples, ficará desapontado:

summary(m1 <- lm(preco ~ m2, data = vendas))
##
## Call:
## lm(formula = preco ~ m2, data = vendas)
##
## Residuals:
##       Min        1Q    Median        3Q       Max
##  -6746423   -937172   -527498     99957 993612610
##
## Coefficients:
##                Estimate  Std. Error t value             Pr(>|t|)
## (Intercept) 1386226.833   18826.675  73.631 < 0.0000000000000002 ***
## m2               18.172       3.189   5.699         0.0000000121 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 9489000 on 254761 degrees of freedom
## Multiple R-squared:  0.0001275,  Adjusted R-squared:  0.0001235
## F-statistic: 32.48 on 1 and 254761 DF,  p-value: 0.00000001208

A regressão está sugerindo que cada metro quadrado extra no imóvel corresponde, em média, a um aumento de apenas 18 reais em seu preço! Como vimos no caso do post anterior, limpar um percentual bem pequeno da base é suficiente para estimar algo que faça sentido.

Mas, suponha que você não tenha noção de quais sejam os outliers da base e também que, por alguma razão, você não saiba que 18 reais o metro quadrado é um número completamente absurdo a priori. O que fazer? (Vale fazer um parêntese aqui – se você está analisando um problema em que você não tem o mínimo de conhecimento substantivo, não sabe julgar sequer se 18 é um número grande ou pequeno, plausível ou não, isso por si só é um sinal de alerta, mas prossigamos de qualquer forma!)

Um hábito que vale a pena você incluir no seu dia-a-dia é rodar regressões resistentes/robustas, que buscam levar em conta a possibilidade de uma grande parcela dos dados estar corrompida.

Vejamos o que ocorre no nosso exemplo de dados online:

library(robust)
summary(m2 <- lmRob(preco ~ m2, data = vendas))
##
## Call:
## lmRob(formula = preco ~ m2, data = vendas)
##
## Residuals:
##         Min          1Q      Median          3Q         Max
## -3683781389     -202332      -23119       64600   994411077
##
## Coefficients:
##               Estimate Std. Error t value            Pr(>|t|)
## (Intercept) -15926.247    589.410  -27.02 <0.0000000000000002 ***
## m2            9450.762      5.611 1684.32 <0.0000000000000002 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 171800 on 254761 degrees of freedom
## Multiple R-Squared: 0.4806
##
## Test for Bias:
##             statistic p-value
## M-estimate     502.61       0
## LS-estimate     86.91       0

Agora cada metro quadrado correponde a um aumento de R$9.450,00 no preço do imóvel! A mensagem aqui extrapola dados online, que são notórios por terem observações com erros de várias ordens de magnitude. Praticamente toda base de dados que você usa está sujeita a isso, mesmo de fontes oficiais. No post anterior vimos um exemplo em que pesquisadores não desconfiaram de uma queda de 36% (!!!) do PIB na Tanzânia.

Por fim, vale fazer a ressalva de sempre: entender o que está acontencedo nos seus dados — por que os valores são diferentes e a razão de existir de alguns outliers  — é fundamental. Dependendo do tipo de problema, os outliers podem não ser erros de medida, e você não quer simplesmente ignorar sua influência. Na verdade, há casos em que outliers podem ser a parte mais interessante da história.

Imóveis no DF: preços de venda estão caindo? 10 meses de coleta.


Considerando os 10 meses de coleta, caindo, em termos nominais, parece que não estão. Mas ficaram relativamente estáveis. E se considerarmos a inflação, os preços reais caíram (um pouco mais, ou um pouco menos, dependendo do índice de preços de sua escolha).

Até julho,  a mediana dos preços (por metro quadrado) dos apartamentos apresentava uma tendência de queda. Porém agora, ao final do ano, está voltando ao patamar anterior. Será que isso é uma mudança da tendência ou é apenas um efeito sazonal? Não sei ainda. Esse é um dos paradoxos de coletar dados online: apesar de termos milhões de observações rapidamente, ainda assim é preciso esperar algum (ou muito) tempo para inferir certas coisas.

No gráfico abaixo, atente-se para o fato de que as escalas do eixo y estão livres. As linhas são uma regressão local.

mediana_pm2

Olhando mais detidamente os apartamentos, podemos separar a série por alguns bairros. Asa Sul, Asa Norte, Lago Sul e Lago Norte tiveram a mediana relativamente estável ao longo do ano, o que significa uma redução em termos reais. O Noroeste estava com a mediana em queda livre, mas apresentou ligeira recuperação nestes últimos meses. E um verdadeiro outlier com relação à tendência parece ser o Park Sul, que saiu de R$9.200,00 para R$ 9.900,00 o metro quadrado.

mediana_pm2_bairro

Agora que a série está crescendo, começaremos a ver mais coisas interessantes.

Mapa de Imóveis de Vitória – Venda


Seguindo a retomada da análise dos dados de webscraping de  imóveis, resolvi colocar no ar também as informações de venda de apartamentos em Vitória – ES.

A oferta online fica em torno de apenas mil anúncios diários, sendo que muitos são anúncios duplicados com bairros diferentes, mas próximos (por exemplo, Barro Vermelho e Praia do Canto). Isto torna a limpeza dos dados um pouco mais difícil.

A oferta concentra-se em Jardim Camburi, Praia do Canto, Jardim da Penha e Mata da Praia. Algo que chama a atenção é a grande diferença do preço por metro quadrado de bairros tão próximos. Segue, abaixo, tabela com as medianas do Preço, Preço por M2, somente M2 e quantidade ofertada.

tableVix

Clique na imagem abaixo para acessar o mapa com a possível geolocalização dos anúncios. Lembrando que isto é um protótipo, pois este não é objetivo principal destes dados.

Se o mapa não aparecer na sua tela, provavelmente o seu navegador bloqueou a execução do javaScript. Procure por um cadeado ou escudo no navegador (canto superior direito ou esquerdo, geralmente) e autorize o carregamento do site.
vix

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

Mapa de aluguel em Brasília (Plano Piloto)


Em post anterior fizemos uma breve análise dos dados de aluguel no plano piloto.

Agora, que tal navegar por todos imóveis em um mapa da cidade, vendo a localização, tamanho, número de quartos e valor do aluguel? Clique aqui ou na mapa abaixo para navegar.

Atenção,  ainda é um protótipo!

Se o mapa não aparecer na sua tela, provavelmente o seu navegador bloqueou a execução do javaScript. Procure por um cadeado no navegador (canto superior direito ou esquerdo, geralmente) e autorize o carregamento do site.

Captura de Tela 2014-02-23 às 21.13.59

PS: agora já estamos coletando diariamente e automaticamente preços online de imóveis dos principais sites e das principais capitais do país. Ainda estamos testando métodos de análise e visualização.

Valores de aluguel em Brasília (plano piloto)


Está pesquisando apartamento para alugar em Brasília?  Um pouco de web scrapingmanipulação e visualização de dados com os valores (de oferta) dos aluguéis de 1.030 imóveis (Asa Sul, Asa Norte e Sudoeste) do site wimoveis pode ajudar a responder algumas perguntas interessantes.

A primeira delas: qual o bairro mais caro para se alugar, hoje, no plano piloto? Esta é uma pergunta que, veremos, depende do ponto de vista. Veja a tabela abaixo (versão ampliada aqui). M2 quer dizer metro quadrado e pm2 preço por metro quadrado.

Captura de Tela 2014-01-30 às 00.08.44

Na média e mediana – em conformidade com a impressão pessoal de muitos – a Asa Sul é o bairro mais caro para se alugar dos três. Entretanto, note que isso ocorre porque há mais apartamentos maiores para aluguel na Asa Sul, e não porque o valor por metro quadrado é mais caro. Na verdade, o valor por metro quadrado, na média, é maior na Asa Norte e, na mediana, maior no Sudoeste.

Podemos agora decompor a tabela acima não somente por bairro, mas por bairro e número de quartos (versão ampliada aqui) . Na média, o bairro mais barato/caro para morar não é o mesmo a depender de quantos cômodos você quer no apartamento. E, uma curiosidade: na amostra, a média do tamanho dos apartamentos da Asa Norte, em todos os grupos de números de quartos, é menor do que a média do tamanho da Asa Sul.

tabela_wi_2014_01_24

Uma última forma de visualizar as diferenças de preços pode ser com um gráfico de densidade (versão ampliada aqui):

teste

Veja que o pico do Sudoeste (em verde) é em valores mais altos do que na Asa Norte e na Asa Sul. Entretanto, a Asa Sul tem a “cauda” mais pesada em valores próximos a R$ 5.000.

Uma outra pergunta que podemos tentar responder é a seguinte: dos anúncios que temos hoje, na média, os preços daqueles atualizados em 2014 são maiores do que aqueles cuja última atualização foi feita em dezembro de 2013? Pelo quadro abaixo (versão ampliada aqui), infelizmente, sim, e por mais ou menos RS$100,00.

Captura de Tela 2014-01-30 às 00.24.58

E como é a concentração da oferta dos anúncios por corretora? A distribuição de anúncios por imobiliária é homogênea? 

Aparentemente, não. Veja o gráfico abaixo (versão ampliada aqui).

corretoras

Enquanto algumas imobiliárias têm 30 a 40 apartamentos listados, muitas outras têm apenas 1 ou 5.

Isso quer dizer que os anúncios são concentrados? Não necessariamente. Note que apesar de a distribuição de anúncios não ser homogênea, a concorrência é bem grande, e usando como exemplo o índice de Herfindahl–Hirschman chegamos a um valor de 0.013, comumente considerado indicador de alta competitividade.

Há mais que poderíamos ver sobre aluguel. Mas deixemos para depois.  No próximo (em algum próximo) post veremos os dados de valor de venda!

PS: iremos acompanhar regularmente esses preços. E não somente para Brasília. Uma área específica do blog será criada para isso.