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.

Erro de medida, preços de imóveis e growth regressions.


Em post passado falamos de erro de medida com o cartoon do Calvin. Hoje, enquanto mexia numa base de dados de imóveis de Brasília para passar algumas consultas para um amigo,  pensei em voltar no assunto. Dados de oferta de imóveis podem fornecer uma ilustração simples e fácil do problema.

Preços declarados online variam desde 1 centavo até R$ 950 milhões. Tamanhos declarados online vão desde 0.01 metro quadrado até 880 mil metros quadrados. Em outras palavras, o erro de medida pode ser grande. E, neste caso,  felizmente, isso é fácil de perceber, pois todos nós temos alguma noção do que são valores razoáveis. Não existe apartamento de 0.01 metro quadrado.

Como isso afeta modelos usuais, tais como uma regressão linear?

Resumidamente: bastam alguns pontos extremos para atrapalhar muito. A regressão linear é extremamente sensível a outliers e erros de observação. 

Para ilustrar, façamos a regressão de preços de venda de apartamento contra a metragem do imóvel, nos dados brutos, sem qualquer tratamento. Temos 13.200 observações. A equação resultante foi:

preço = 1.770.902,90  + 2,68 m2

Isto é, segundo a estimativa, cada metro quadrado a mais no imóvel aumentaria seu preço, em média, em R$ 2,68. Não é preciso ser um especialista da área para ver que resultado é patentemente absurdo.

E o que acontece com a estimativa se limparmos a base de dados? Tirando apenas 200 observações das 13.200 (1,5% dos dados), obtemos a seguinte equação:

preço = -45.500,44 + 9.989,81 * m2

Agora, cada metro quadrado a mais está associado a um aumento de R$9.989,81 nos preços, em média – de acordo com o senso comum (infelizmente) para a cidade de Brasília. Ou seja, com a regressão sem tratamento dos dados, você subestimaria o efeito em nada menos do que 3 mil e 700 vezes.

***

O caso anterior é fácil de identificar, mas no dia a dia nem sempre isso ocorre. E é comum tomar dados oficiais por seu valor de face.

Quer um exemplo?

A Penn World Tables, na versão 6.1, publicou uma queda de 36% no PIB da Tanzânia em 1988. Isso levou Durlauf e outros autores a colocarem em seu texto, Growth Econometrics, o “caso” da Tanzânia como um dos top 10 de queda do produto (vide tabela 8). Entretanto, na versão 7.1 da Penn Tables,  os dados mostram um crescimento de 8% para Tanzânia, para o mesmo ano! Se um dado como esse já pode ser muito enganoso apenas como estatística descritiva,  imagine o efeito em growth regressions com regressões lineares e variáveis instrumentais.

PS1: o legal é que o próprio texto do Durlauf tem uma seção bacana sobre erro de medida!

PS2: Sobre dados de PIB da África,  livro recente do Jerven, Poor Numbers, discute muitos desses problemas.