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 e ‘atenuação’ dos efeitos estimados


Andrew Gelman publicou um pequeno comentário na Science sobre erro de medida e “atenuação dos efeitos estimados”. O argumento é o seguinte: no modelo clássico de erro de medida, na média suas estimativas são puxadas para baixo. Suponha, então, que você tenha feito um experimento com amostra pequena, com erro de medida, mas ainda assim você tenha encontrado um efeito estimado “significante”. Ora, é tentador argumentar o seguinte: tanto a amostra pequena quanto o erro de medida estão “jogando contra” meu efeito estimado, então é provável que o efeito real seja ainda maior do que o que eu estimei. Parece lógico, não?

Parece, mas não é. E, infelizmente, esse raciocínio ainda engana muitos pesquisadores. Na verdade, em um contexto de efeitos reais pequenos junto com amostras pequenas, é mais provável que aquelas estimativas estatisticamente significantes estejam superestimando o efeito real. O problema aqui é que o ruído das amostras pequenas em conjunto com o viés de seleção de estimativas estatisticamente significantes predomina. Vejamos isso na prática com uma simples simulação.

No código abaixo eu simulo mil estudos com um tamanho amostral fixo (n = 10, n = 20, n = 50, n = 500 e n = 1000). Desses mil estudos, eu seleciono apenas aqueles que são estatisticamente “significantes” e coloco no gráfico o valor estimado do estudo. O valor real do efeito é 0.1, que está representado pela linha vermelha. Vejam que, para amostras até de tamanho 100, todas as estimativas “significantes” da simulação estão superestimando o efeito real. Apenas quando a amostra é grande o suficiente que o efeito atenuante do erro de medida se faz prevalecer, revertendo o resultado.

plot of chunk cars

E se você comparar as estimativas com e sem erro de medida, como faz Gelman, também vai verificar que com amostras pequenas dificilmente uma é sempre maior do que a outra.


Código para simulação:

rm(list = ls())
set.seed(10)
ns = c(10, 20, 50, 100, 500, 1000)
oldpar <- par(mfrow = c(2,3))
for (n in ns) {
  b = 0.1
  x <- rnorm(n)
  y <- b*x 

  coefs <- replicate(1000, {
    xs <- x + rnorm(n)
    ys <- y + rnorm(n)
    coef(summary(lm(ys ~ xs)))[2,]
  })

  coefs <- t(coefs)
  plot(coefs[coefs[,3] > 2, 1], ylim = c(min(c(b, coefs[,1])), max(coefs[,1])),
       xlab = "Significant Experiments", ylab = "'Significant' Estimates",
       main = paste("Sample size =", n), pch = 20)
  abline(h = b, col = "red", lty = 2)
}
par(oldpar)

O que tenho estudado — Causalidade


Para o blog não passar novembro em branco — o que tenho estudado e algumas referências.

Em causalidade acredito que essas sejam as referências básicas:

Morgan & Winship;
Imbens & Rubin;
Pearl, Glymour & Jewell;
Pearl.

Esses livros são muito mais do que suficiente para você começar no assunto. O mais amigável e completo para iniciantes é Morgan & Winship. Imbens & Rubin também é  bom, mas peca por ignorar DAGs. Se for para ler apenas um, escolha Morgan & Winship. Pearl, Glymour & Jewell é uma versão light e curta a nível de graduação —acabou de ser lançada.  Pearl é mais denso e se você nunca viu um DAG antes não comece por ele, comece por Pearl, Glymour & Jewell. Depois que tiver dominado DAGs, entretanto, não deixe de voltar para o livro seminal de Pearl.

Já tinha batido no livro do Wooldridge uma vez por não tratar mais claramente dos problemas de specification searches e multiple testing, que na prática é o que é feito no dia-a-dia do econometrista. Agora vale a pena bater de novo por conta da causalidade (mas é claro que esse problema não é só do Wooldridge, uso ele apenas como um exemplo em geral). Faz algum tempo que estou convencido de que é uma péssima prática ensinar estatística para cientistas sociais sem prover algum framework adequado para se falar de causalidade — e quando falo de framework adequado, não digo tricks para identificar efeitos causais como variáveis instrumentais ou regression discontinuity designs. Falo de um ferramental para ajudar o pesquisador a pensar rigorosamente e claramente sobre o assunto.

Depois vou tentar falar um pouco sobre o que tenho estudado em algoritmos, estatística computacional, pesquisa amostral e probabilidade nesse último trimestre.

Inferência causal e Big Data: Sackler Big Data Colloquium


Uma série de palestras interessantes do Sackler Big Data Colloquium:

 

Hal Varian: Causal Inference, Econometrics, and Big Data

***

Leo Bottou: Causal Reasoning and Learning Systems

***

David Madigan: Honest Inference From Observational Database Studies

***

Susan Athey: Estimating Heterogeneous Treatment Effects Using Machine Learning in Observational Studies

Prêmios para pesquisas abertas, transparentes e reproduzíveis!


A Berkeley Initiative for Transparency in the Social Sciences (BITSS) anunciou ontem a criação dos prêmios Leamer-Rosenthal por uma ciência social aberta (The Leamer-Rosenthal Prizes for Open Social Science).

Os prêmios tomam os nomes de Edward Leamer – de quem já falamos aqui no blog – e Robert Rosenthal. Ambos trataram de problemas sérios na pesquisa acadêmica como a tendência de publicar/buscar “resultados significantes” – muitas vezes genuinamente confundindo sua função  – ou a tendência de ignorar a sensibilidade das próprias estimativas.  Edward Leamer, em particular, trata extensivamente de uma prática bastante comum entre pesquisadores: a de experimentar vários modelos diferentes, até encontrar um que “pareça publicável”, para depois apresentar apenas aquele resultado como se fosse o único modelo testado.

Serão distribuídos de 6 a 8 prêmios de 10.000 a 15.000 dólares para pesquisadores em ciências sociais (como Economia, Psicologia e Ciências Políticas) que tenham feito trabalhos de transparência exemplar, ferramentas para melhorar o rigor das ciências sociais, ou para professores que tenham causado impacto no ensino e difusão de boas práticas de pesquisa.

Mais especificamente sobre as pesquisas, serão premiadas aquelas que busquem, entre outro pontos: (i) apresentar pré-registro,  cálculo de poder do teste e do tamanho amostral (ainda é raro); (iii) ter os dados e o código para replicação disponíveis e bem documentados (lembrem do caso Reinhart-Rogoff); (iv) disponibilizar os materiais originais – como os questionários de pesquisa – para escrutínio público (lembrem do caso Stapel); (v) apresentação adequada e detalhada dos métodos e resultados.

Ou seja, esta é uma iniciativa que busca premiar bons processos! Acredito que tenha vindo em boa hora, juntando-se a diversas outras críticas sistemáticas que têm sido feitas ao atual estado dos métodos quantitativos nas ciências sociais aplicadas.

O prazo para inscrição é até 13 de setembro. Para você que está fazendo uma pesquisa aberta, reproduzível e cuidadosa, eis uma boa chance de ser reconhecido sem ter que se submeter à busca por temas de manchete de jornal.

Quando confiar nas suas previsões?


Quando você deve confiar em suas previsões? Como um amigo meu já disse, a resposta para essa questão é fácil: nunca (ou quase nunca).

Mas, brincadeiras à parte, para este post fazer sentido, vou reformular a pergunta: quando você deve desconfiar ainda mais das previsões do seu modelo?

Há várias situações em que isso ocorre, ilustremos aqui uma delas.

***

Imagine que você tenha as seguintes observações de x e y.

unnamed-chunk-1-1

 

Para modelar os dados acima, vamos usar uma técnica de machine learning chamada Suport Vector Machine com um núcleo radial. Se você nunca ouviu falar disso, você pode pensar na técnica, basicamente, como uma forma genérica de aproximar funções.

Será que nosso modelo vai fazer um bom trabalho?

unnamed-chunk-3-1

 

Pelo gráfico, é fácil ver que nossa aproximação ficou bem ajustada! Para ser mais exato, temos um R2 de 0.992 estimado por cross validation (que é uma estimativa do ajuste fora da amostra – e é isso o que importa, você não quer saber o quão bem você fez overfitting dos dados!).

Agora suponha que tenhamos algumas observações novas, isto é, observações nunca vistas antes. Só que essas observações novas serão de dois “tipos”, que aqui criativamente chamaremos de tipo 1 e tipo 2. Enquanto a primeira está dentro de um intervalo de x que observamos ao “treinar” nosso modelo, a segunda está em intervalos muito diferentes.

unnamed-chunk-4-1

Qual tipo de observação você acha que teremos mais dificuldades de prever, a de tipo 1 ou tipo 2? Você já deve ter percebido onde queremos chegar.

Vejamos, portanto, como nosso modelo se sai agora:

unnamed-chunk-5-1

Note que nas observações “similares” (tipo 1) o modelo foi excelente, mas nas observações “diferentes” (tipo 2) nós erramos – e erramos muito. Este é um problema de extrapolação.

Neste caso, unidimensional, foi fácil perceber que uma parte dos dados que gostaríamos de prever era bastante diferente dos dados que usamos para modelar. Mas, na vida real, essa distinção pode se tornar bastante difícil. Uma complicação simples é termos mais variáveis. Imagine um caso com mais de 20 variáveis explicativas – note que já não seria trivial determinar se novas observações são similares ou não às observadas!

Quer aprofundar mais um pouco no assunto? Há uma discussão legal no livro do Max Kuhn, que já mencionamos aqui no blog.

Competições de análise de dados: BoE e Kaggle


Quer mostrar suas habilidades de visualização de dados ou previsão? Seguem dois links:

Uma competição de visualização do Bank of England. Na verdade, a primeira competição deste tipo que o BoE lança. O prazo final é primeiro de maio. A final da competição ocorrerá em Londres e o BoE não pagará passagens para os finalistas (mas, se eu fosse você, tentaria chegar na final antes de decidir se isso será um problema). O prêmio é de 5.000 libras (mais de R$ 20.0000).

– Um site sobre o qual sempre quis falar mais detalhadamente por aqui, mas ainda não tive tempo, é o Kaggle. Resumidamente,  o Kaggle é um site de competições de modelagem preditiva em que as empresas colocam os problemas que gostariam de  solucionar (juntamente com um prêmio) e analistas de todo o mundo competem para produzir os melhores modelos. Atualmente há dois grandes prêmios sendo disputados:

  1. US$ 100.000,00 para quem criar o melhor modelo preditivo para sinais de retinopatia diabética com imagens do olho.
  2. US$ 30.000,00 para quem criar o melhor modelo preditivo para faturamento de restaurantes.

Além de outros prêmios de menor montante. Não somente isso, participantes do Kaggle que conseguem boas classificações também conseguem, em geral, bons empregos na área.

 

 

 

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.