//styles, look here: https://cdnjs.com/libraries/highlight.js/9.12.0

April 24, 2020

437 palavras 3 mins

Viés de Atenuação

Esse é um desses posts curtos e simples, mas legalzinho. Surgiu de uma conversa minha com o Pedro e alguns de vocês já devem saber. É bem simples: suponha que você acha que na sua regressão x afeta y. O catch: você observa x com um erro, que é independente de x e do erro da regressão. A sua regressão vai sofrer com viés de atenuação. O parâmetro estimado vai ficar mais pŕoximo de zero, independente se ele é positivo ou negativo.

Como de praxe, começamos com uma simulação. Vou fazer uma regressão besta. A variável y vai ser y=x+uy = x +u, mil observações. Eu vou adicionar um erro ao x - chame essa nova variável de x~\tilde{x} e fazer uma regressão y em x~\tilde{x}.

cofs <- rep(NA,2000)

for(i in 1:2000){
  x <- rnorm(1000)
  y <- x + rnorm(1000)
  x_til <- x+ rnorm(100)
  reg <- lm(y ~ x_til)
  cofs[i] <- coef(reg)[2]
}
R
R

Vamos ver a distribuição dos coeficientes:

cofs_df <- data.frame(cofs = cofs)

ggplot(cofs_df,aes(cofs)) + geom_histogram()
R
R
## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.

A moda está em 0.5. Por que? Bom, considere o estimador que estamos usando:

β^=i=1Nx~iyii=1Nx~i2\hat{\beta} = \frac{\sum_{i=1}^N \tilde{x}_i y_i}{\sum_{i=1}^N \tilde{x}_i^2}

Note que a média de x~i\tilde{x}_i é zero. Substitua yiy_i pelo modelo verdadeiro:

β^=i=1Nx~i(xi+εi)i=1Nx~i2\hat{\beta} = \frac{\sum_{i=1}^N \tilde{x}_i (x_i + \varepsilon_i)}{\sum_{i=1}^N \tilde{x}_i^2}

β^=i=1N(xi+ui)(xi+εi)i=1Nx~i2\hat{\beta} = \frac{\sum_{i=1}^N (x_i + u_i) (x_i + \varepsilon_i)}{\sum_{i=1}^N \tilde{x}_i^2}

β^=i=1Nxi2i=1Nx~i2\hat{\beta} = \frac{\sum_{i=1}^N x^2_i}{\sum_{i=1}^N \tilde{x}_i^2}

Agora, veja que embaixo temos basicamente a variância de x~i\tilde{x}_i e em cima a variância de de xix_i. E como x~i=xi+ui\tilde{x}_i = x_i + u_i portanto Var(x~i)=Var(xi)+Var(ui)>Var(xi)Var(\tilde{x}_i) = Var(x_i) + Var(u_i) > Var(x_i). Então, o coeficiente está abaixo de 1. Veja que podemos trabalhar com o caso geral que ao invés de 1 temos β\beta. Veja que como eu coloquei tudo a normal padrão, Var(x~i)=2Var(\tilde{x}_i)= 2 e Var(xi)=1Var(x_i) = 1, então a conta acima dá 1/2.

Curiosamente tem uma solução super simples: variáveis instrumentais. Você pode usar qualquer variável relacionada a xx, até outra copia com erros, desde que não seja a mesma variável. Eu vou criar uma variável nova, z, para servir como instrumento:

cofs <- rep(NA,2000)

for(i in 1:2000){
  x <- rnorm(1000)
  y <- x + rnorm(1000)
  x_til <- x + rnorm(1000)
  z <- x + rnorm(1000)
  reg <- ivreg(y ~x_til|z)
  cofs[i] <- coef(reg)[2]
}

cofs_iv_df <- data.frame(cofs = cofs)

ggplot(cofs_iv_df,aes(cofs)) + geom_histogram()
R
R
## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.

Esse é um uso bem legal de IV. Quem quiser referências: Eu imagino que quase todo livro de econometria básica deve ter isso. O Stock & Watson e Wooldridge muito provavelmente tem. O livro do Hayashi tem.