//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 +u\), mil observações. Eu vou adicionar um erro ao x - chame essa nova variável de \(\tilde{x}\) e fazer uma regressão y em \(\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]
}

Vamos ver a distribuição dos coeficientes:

cofs_df <- data.frame(cofs = cofs)

ggplot(cofs_df,aes(cofs)) + geom_histogram()
## `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:

\[\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 \(\tilde{x}_i\) é zero. Substitua \(y_i\) pelo modelo verdadeiro:

\[\hat{\beta} = \frac{\sum_{i=1}^N \tilde{x}_i (x_i + \varepsilon_i)}{\sum_{i=1}^N \tilde{x}_i^2}\]

\[\hat{\beta} = \frac{\sum_{i=1}^N (x_i + u_i) (x_i + \varepsilon_i)}{\sum_{i=1}^N \tilde{x}_i^2}\]

\[\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 \(\tilde{x}_i\) e em cima a variância de de \(x_i\). E como \(\tilde{x}_i = x_i + u_i\) portanto \(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(\tilde{x}_i)= 2\) e \(Var(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 \(x\), 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()
## `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.