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 é muito bom, mas peca por ignorar DAGs. Se for para ler apenas um, escolha um desses dois. Pearl, Glymour & Jewell é uma versão light e curta a nível de graduação —acabou de ser lançada. Gostei, mas como o livro diz, é um primer. Pearl é mais denso e se você nunca viu DAG antes não comece por ele. Depois, entretanto, não deixe de ler.

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.