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

Que variáveis incluir na regressão? Ou, por que grande parte dos trabalhos aplicados está errada.


Suponha que você queira medir o efeito de X em Y (isto é, o quanto uma variação de X afeta Y – uma relação causal) e que você tenha mais duas variáveis que podem ser incluídas como controle, Z1 e Z2. Suponha ainda que você saiba que o modelo é linear, isto é, não há nenhuma incerteza com relação à especificação. Quais variáveis você incluiria no seu modelo?

Hoje, provavelmente você diria o seguinte: depende da significância! São Z1 e Z2 significantes? Se sim, eles devem ser incluídos.

Vejamos um exemplo de uma simulação. O código em R está ao final do post.

Vamos rodar as três regressões: uma só com X, outra incluindo Z1 e por fim uma com todos os controles. Os resultados foram os seguintes:

Equação 1: Y = -10 + 43X ***

Equação 2: Y = -7 + 13X * + 107Z1 ***

Equação 3: Y = -5 – 9X * + 46Z1 *** + 37Z2 ***

Pelos resultados, tanto Z1 quanto Z2 são significantes, então preferimos a equação 3. Concluímos que, na média, uma variação de 1 unidade de X reduz Y em 9 unidades. Certo?

***

Errado. O modelo ideal neste caso seria a equação 2. O efeito real de X sobre Y é de 10 (veja que valor estimado foi 13, bem próximo). O problema aqui é que a significância estatística não vai te responder sobre a pertinência de incluir ou não uma variável para estimar o efeito de X sobre Y. Infelizmente, não há almoço grátis. Como diz Judea Pearlsem saber a estrutura do problema, não é possível determinar quais variáveis devem ser incluídas. Agora pense. Como é a lógica de trabalho dos artigos aplicados hoje? *** A simulação A nossa simulação tem a seguinte estrutura  (U1 e U2 dizem respeito a duas variáveis não observadas, só observamos Y, X, Z1 e Z2): dagitty-model O código em R para gerar os resultados é:

gen_data <- function(N=200,s=2,beta1=10, beta2=100){
Z1 <- rnorm(N,0,s)
U2 <- rnorm(N,0,s) + Z1
U1 <- rnorm(N,0,s) + Z1
Z2 <- rnorm(N,0,s) + U2 + U1
X <- rnorm(N,0,s) + U1
Y <- rnorm(N,0,s) + beta1*X + beta2*U2
data.frame(Y,X,Z1,Z2)
}

set.seed(100)
data <- gen_data()
summary(lm(Y~X, data))
summary(lm(Y~X + Z1, data))
summary(lm(Y~X + Z1 + Z2, data))

Você pode brincar mais com o paradoxo de Simpson aqui; e o gráfico você pode fazer aqui.