Ceteris paribus, en promerio, un año más de educación aumenta en 5.98% el salario.
El coeficiente de \(R^2\) adjustada nos dice que la variable educ en el modelo planteado lograr explicar el 0.0964% de la variación en lwage.
La constante nos dice que si la educación fuera cero, nuestro ingreso sería…
Ceteris paribus, en promedio, un punto más en el IQ aumenta en .58% el salario.
Cuando el IQ aumenta en una Desviación estándar, el ingreso promedio aumenta en:
iq <- .0058631
sd.err <- .0009979
print(iq*sd.err)
## [1] 5.850787e-06
Matemáticamente, se demuestra con el sesgo. Si el estimador es insesgado, \(plim(\hat{\beta_{1}}) = \beta_{1}\). Pero cuando el estimador es insesgado: \[plim(\hat{\beta_{1}}) = \beta_{1} + \frac{cov(x_{i}, A_{i})}{var(x_{i})}\]
Esto implica que, si hay un elemento \(A_{i}\) que está correlacionado con \(x\_{i}\), el sesgo se hace más grande. De forma que, el estimador crece/disminuye dependiendo de si su relación con \(A_{i}\) es positiva/negativa. Es decir, se sesga hacia arriba o hacia abajo. En este caso, el IQ está relacionado positivamente con educ, por lo que al agregar la variable le quita ese sesgo al estimador.
Rs1 <- 16.1377042/165.656283
ARs1 <- 1 - ( (1-Rs1) * ( (935-1) / (935-2-1) ) )
print(ARs1)
## [1] 0.09547992
Rs2 <- 26.4478349/126.811916
ARs2 <- 1 - ( (1-Rs2) * ( (722-1) / (722-8-1) ) )
print(ARs2)
## [1] 0.1996794
Como \(R_{2}^2 > R_{1}^2\), entonces el modelo 2 es mejor describiendo la variación en \(logwage\) que el modelo 1.
En esta nueva regresión, el coeficiente de educ aumenta de .0391199 a .449289. Claramente, al agregar todas las otras variables la estimación de educ estaba sesgada hacia abajo, pero con este ejercicio no podemos saber con claridad si la inclusión de exper estaba sesgando hacia arriba o hacia abajo educ. Si quisieramos saberlo, tendríamos que quitar las demás variables y agregar exper para ver cómo su sola inclusión modifica el estimador. Teóricamente, la experiencia aumenta el salario y el coeficiente de educ estaría sesgado hacia arriba si no añadimos la variable.
Pueden ser distintos factores, uno de ellos es que la educación de los padres abona al desarrollo integral de sus hijos. De forma que, a mayor educación de los padres, sus oportunidades de tener un mejor salario son altas. Entonces, pueden brindarle mejores oportunidades a sus hijos (tanto en educación, como económicas) y así ellos pueden tener un mejor salario.
Teóricamente, la relación entre educación de los padres y la educación del individuo es positiva. Matemáticamente se podría demostrar mediante la covarianza entre las dos variables. Si la covarianza entre éstas es positiva, entonces, al incrementar los años de educación de los padres, también incrementa el de los hijos.
Los supuestos clásicos del MLR son:
Parametros lineales, tal que las betas de la regresión son lineales / constantes. \[ y = \beta_{0} + \beta_{1}x_{1} + \beta_{2}x_{2} + \beta_{k}x_{k} + u \]
Muestreo aleatorio, tal que los datos son una muestra aleatoria de la misma población. \(\langle (x_{i,1},\dots,x_{i,k}, y_{i}) \colon i = 1,2,\dots,k \rangle\)
No perfect collinearity. In the sample (and therefore in the population), none of the independent variables is constant, and there are no exact linear relationships among the independent variables.
Si una variable es una combinación linear de la otra, se dice que el modelo sufre de colinearidad perfecta y no puede ser estimada por el método OLS.
\[E(u_{1} \mid x_{i,1}, x_{i,2}, \dots, x_{i,k}) = 0\]
#Clear the environment
rm(list = ls())
#Lets create some variables!
set.seed(1234567)
#good practice for when working with random vars (reproducibility)
x <- rnorm(1000) #it creates 1000 random obs
y <- matrix(
(5000 + 100*x) + rnorm(1000 * 500, mean=0, sd=1), ncol = 500
) #Y = bo + b1x + u
y <- data.frame(y)
# this loop renames i column names of Y matrix
for (i in 1:ncol(y)){
colnames(y)[i] <- paste0("y",i)
}
# Run 500 regressions!
betas <- 1:500
#create an empty object with 500 entries to be filled with the B1s
for(i in 1:ncol(y)) {
# This loop runs 500 regressions Yi on X for i = 1 to 500
betas[i] <- summary(lm(y[,i]~x))$coefficients[2,1]
#extracts the coefficient beta 1 from the matrix of results provided by R
}
mean(betas)
## [1] 100.0009
hist(betas, main = "Histogram of Beta 1", xlab = "Beta 1", col = "cadetblue2")
sd(betas)
## [1] 0.03091896
a.1 Con 100 observaciones
##
## Call:
## lm(formula = y ~ x)
##
## Residuals:
## Min 1Q Median 3Q Max
## -22.0363 -7.2955 -0.3878 7.1238 30.5951
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 19.854 1.026 19.342 <2e-16 ***
## x 1.167 1.073 1.088 0.279
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 10.23 on 98 degrees of freedom
## Multiple R-squared: 0.01193, Adjusted R-squared: 0.001853
## F-statistic: 1.184 on 1 and 98 DF, p-value: 0.2793
a.2 Con 10,000 observaciones
##
## Call:
## lm(formula = y ~ x)
##
## Residuals:
## Min 1Q Median 3Q Max
## -26.9734 -7.4786 0.1363 7.5747 26.2401
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 19.0349 0.1053 180.74 <2e-16 ***
## x 2.0107 0.1060 18.97 <2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 10.53 on 9998 degrees of freedom
## Multiple R-squared: 0.03475, Adjusted R-squared: 0.03465
## F-statistic: 359.9 on 1 and 9998 DF, p-value: < 2.2e-16
a.3 Con 100,000 observaciones
##
## Call:
## lm(formula = y ~ x)
##
## Residuals:
## Min 1Q Median 3Q Max
## -29.8544 -7.1409 0.7237 6.9014 26.3892
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 18.12992 0.03371 537.79 <2e-16 ***
## x 1.99528 0.03362 59.36 <2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 10.66 on 99998 degrees of freedom
## Multiple R-squared: 0.03403, Adjusted R-squared: 0.03402
## F-statistic: 3523 on 1 and 99998 DF, p-value: < 2.2e-16
La fórmula del error estándar es \(SD(\beta) = \frac{\sigma}{\sqrt{n}}\). Por tanto, cuando $n $ el término de abajo de la fórmula se hace muy grande y el error estándar tiende a cero.
El Error estandar de x con 100 observaciones es:
set.seed(1234567)
x <- rnorm(100) #100 random obs
resid <- rnorm(100, mean=0, sd=10) #random error
y <- (20 + 2*x + resid)
model <- lm (y ~ x)
summary(model)$coefficients[2,2]
## [1] 1.072738
Aumentando la varianza de x indirectamente en la generación de datos podemos incrementar la desviación estandar a 100. El error estandar de la regresion ahora es:
set.seed(1234567)
x <- rnorm(100, sd=100) #100 random obs
resid <- rnorm(100, mean=0, sd=10) #random error
y <- (20 + 2*x + resid)
model <- lm (y ~ x)
summary(model)#$coefficients[2,2]
##
## Call:
## lm(formula = y ~ x)
##
## Residuals:
## Min 1Q Median 3Q Max
## -22.0363 -7.2955 -0.3878 7.1238 30.5951
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 19.85426 1.02650 19.34 <2e-16 ***
## x 1.99167 0.01073 185.66 <2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 10.23 on 98 degrees of freedom
## Multiple R-squared: 0.9972, Adjusted R-squared: 0.9971
## F-statistic: 3.447e+04 on 1 and 98 DF, p-value: < 2.2e-16
set.seed(1234567)
x <- rnorm(100, sd=100) #100 random obs
resid <- rnorm(100, mean=20, sd=10) #random error
y <- (20 + 2*x + resid)
model <- lm (y ~ x)
summary(model)$coefficients[1,1]
## [1] 39.85426
Tras la modificación \(\beta_{1}\) no cambia, por lo que el modificar la media del error no modifica el sesgo de \(\beta_{1}\).
#Clear the environment
rm(list = ls())
repet <- 1000
n <- 1000
beta <- NULL
set.seed(1234567)
for (i in 1:repet){
## MRL2. Datos aleatorios ##
x1 <- rnorm(n, mean=50, sd=10)
x2 <- (rnorm(n, mean=5, sd=30)+.1*x1)
# tiene relación con x1
## MRL3. No se cumple, porque x2 es combinación lineal de x1##
## MRL4. Variables no relacionadas con el error##
u <- (rnorm(n, mean=0, sd=1))
## MLR1. Parametros lineales ##
y = 2 + 2*x1 + 10*x2 + u
# we define y, so that beta1=2 and beta2=10.
beta[i] <- lm(y~x1)$coef[2]
}
hist(beta, main="suit yourself, n=1000", xlim = c(0,8) )
abline(v = mean(beta), col="red", lwd=3, lty=2 )
abline(v = 2, col="blue", lwd=3, lty=2)
mod <- lm(x1 ~ x2)
summary(mod)
##
## Call:
## lm(formula = x1 ~ x2)
##
## Residuals:
## Min 1Q Median 3Q Max
## -25.531 -6.821 -0.058 6.637 37.054
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 50.287670 0.328577 153.047 <2e-16 ***
## x2 0.006342 0.010536 0.602 0.547
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 9.818 on 998 degrees of freedom
## Multiple R-squared: 0.000363, Adjusted R-squared: -0.0006387
## F-statistic: 0.3624 on 1 and 998 DF, p-value: 0.5473
Para mostrar si es consistente ?
# De la siguiente asignación debemos quitar la parte donde relacionamos x2 con x1.
x2 <- (rnorm(n, mean=5, sd=30)+.1*x1)
# De forma que quede así:
x2 <- (rnorm(n, mean=5, sd=30))
Se adjunta en foto.
library(wooldridge)
data("bwght")
# ?bwght
bwModel <- lm(bwght ~ cigs+ log(cigprice) + motheduc, data = bwght)
summary(bwModel)
##
## Call:
## lm(formula = bwght ~ cigs + log(cigprice) + motheduc, data = bwght)
##
## Residuals:
## Min 1Q Median 3Q Max
## -96.099 -11.875 0.901 13.050 150.716
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 57.42201 33.11784 1.734 0.0832 .
## cigs -0.49010 0.09258 -5.294 1.39e-07 ***
## log(cigprice) 11.99962 6.81891 1.760 0.0787 .
## motheduc 0.30047 0.23330 1.288 0.1980
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 20.11 on 1383 degrees of freedom
## (1 observation deleted due to missingness)
## Multiple R-squared: 0.02638, Adjusted R-squared: 0.02427
## F-statistic: 12.49 on 3 and 1383 DF, p-value: 4.621e-08
exp(4.23)
## [1] 68.71723
Por otro lado, ceteris paribus, por cada cigarro más que fume la madre durante el embarazo, el peso promedio del bebé disminuirá .49010 onzas.
library(wooldridge)
data("bwght")
# ?bwght
bwModellog <- lm(lbwght ~ cigs+ log(cigprice) + motheduc, data = bwght)
summary(bwModellog)
##
## Call:
## lm(formula = lbwght ~ cigs + log(cigprice) + motheduc, data = bwght)
##
## Residuals:
## Min 1Q Median 3Q Max
## -1.62808 -0.09041 0.02392 0.12213 0.82830
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 4.2322286 0.3107951 13.617 < 2e-16 ***
## cigs -0.0042843 0.0008688 -4.931 9.17e-07 ***
## log(cigprice) 0.1033211 0.0639923 1.615 0.107
## motheduc 0.0026107 0.0021894 1.192 0.233
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.1887 on 1383 degrees of freedom
## (1 observation deleted due to missingness)
## Multiple R-squared: 0.02289, Adjusted R-squared: 0.02077
## F-statistic: 10.8 on 3 and 1383 DF, p-value: 5.141e-07
Se adjunta en foto.