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.

Anúncios

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

  1. Pingback: useR! 2014 | Análise Real

  2. Pingback: Causalidade e Paradoxo de Simpson: debate acalorado entre Judea Pearl x Andrew Gelman. | Análise Real

  3. Pingback: Retrospectiva: posts mais lidos de 2014 | Análise Real

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s