R: Key Concept 9.1: Internal and External Validity, (STOCK & WATSON, p. 331)
R: Key Concept 9:2: Internal and External Validity, (STOCK & WATSON, p. 335)
As simulações a seguir foram feitas com base em “Introduction to Econometrics with R” (HANCK et al, 2020). Estimaremos dois modelos de regressão 1000 vezes cada um e depois obteremos a média dos coeficientes. Compararemos esses valores com os parâmetros da população. Em cada caso, identifique qual é a ameaça à validade interna nos dois modelos.
Nesta simulação a função de regressão real da população é:
\[Y_i = X_i^2\]
Se estimarmos a regressão abaixo encontraremos o beta_0 da população? Compare o beta_0 com o da população, que é igual a 0.
\[Y_1 = \hat\beta_0 + \hat\beta_1X_1 + u_i\]
Podemos encontrar o mesmo beta_0 por coincidência, então, estimaremos a regressão 1000 vezes e depois comparemos a médias dos beta_0 estimados com o beta_0 da população. Por que estamos estimando a regressão 1000 vezes ao invés de apenas uma vez?
Características dos dados simulados:
n = 100 X ∼ U[-5,5]: distribuição uniforme que varia entre -5 e 5 * u ~ N(0, 1).
#definindo o seed
set.seed(42)
#defina o numero de iteracoes
N <- 1000
#crie um vetor dos beta_hats
beta_0 <- c()
#estimando os 1000 beta_hats
##loop: pedindo para rodar o modelo N(1k) vezes
for (i in 1:N) {
#simulando os dados
X <- runif(100, -5, 5)
Y <- X^2 + rnorm(100)
#estimando a regressao linear
ms_mod <- lm(Y ~X)
#salvando as estimativas
beta_0[i] <- ms_mod$coefficients[1]
}
#obtendo a media dos beta_0 estimados
mean(beta_0)
## [1] 8.30133
# esse valor eh igual a o?
mean(beta_0) == 0
## [1] FALSE
A função de regressão real da população é:
\[Y_i = \beta_0 + \beta_1X_1 + u_i\] Os parâmetros da regressão são:
\[E(Y_i|X_i) = 75 + 0.5X\] Quais são os valores do beta_0 e beta_1 da população?
Estimaremos a função de regressão abaixo, compare com a da população e discuta o que estamos mensurando errado. O beta_1 será igual ao da população?
\[Y_i = \beta_0 + \beta_1(X_i - \tilde X_1) + u_i\]
\[Y_i = \beta_0 + \beta_1\tilde X_1 + u_i\]
Instruções:
\[Y_i = \beta_0 + \beta_1X_i + u_i\]
Salve os coeficientes como beta_0 e beta_1;
Obtenha a média dos coeficientes e compare com o da população.
# instalando o pacote
install.packages("mvtnorm")
# definindo o seed
set.seed(42)
# carregando o pacote mvtnorm
library(mvtnorm)
# definindo o numero de iteracoes
N <- 1000
# vetor de beta_1
beta_1 <- c()
# definindo o loop
for (i in 1:N) {
# simulando o dataset e os nomes das colunas
d <- data.frame(rmvnorm(1000, c(50, 100), sigma = cbind(c(10, 5), c(5, 10))))
colnames(d) <- c("X", "Y")
# adicionando o erro a mensuracao de x
d[,1] <- d[,1] + rnorm(100,0,sqrt(10))
# estimando a regressao linear simples
ms_mod <- lm(Y ~ X, data = d)
# salvando o beta_1
beta_1[i] <- ms_mod$coefficients[2]
}
# obtendo a media dos beta_1 estimados
mean(beta_1)
## [1] 0.2526042
# a media dos betas_1 eh igual a 0.5
mean(beta_1) == 0.5
## [1] FALSE
Hanck, C., Arnold, M., Gerber, A., & Schmelzer, M. (2019). Introduction to Econometrics with R. Obtenido de https://www. econometrics-with-r. org/ITER. pdf.