Packages

library(tidyverse)
## ── Attaching packages ─────────────────────────────────────── tidyverse 1.3.0 ──
## ✓ ggplot2 3.3.2     ✓ purrr   0.3.4
## ✓ tibble  3.0.3     ✓ dplyr   1.0.0
## ✓ tidyr   1.1.0     ✓ stringr 1.4.0
## ✓ readr   1.3.1     ✓ forcats 0.5.0
## ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
## x dplyr::filter() masks stats::filter()
## x dplyr::lag()    masks stats::lag()
library(wooldridge)
library(car)
## Loading required package: carData
## 
## Attaching package: 'car'
## The following object is masked from 'package:dplyr':
## 
##     recode
## The following object is masked from 'package:purrr':
## 
##     some

Econometría

Econometría, el uso de métodos estadísticos para estimar relaciones económicas, probar teórías económicas y evaluar e implementar políticas públicas y de negocios (Wooldridge,2018).

Modelo abstracción de la realidad. La econometría me sirve para poder de manera empírica probar modelos económicos.

Tipos de datos: * Corte transversal: un tiempo, varias variables, distintas observaciones + Ejemplo: el GPA de todos los alumnos de economía de la USFQ en el 2019, además de variables demográficoas

Regresión Lineal

La regresión lineal es un modelo matemático que usa funciones lineales para establecer relaciones entre una o más variables independientes y una variable dependiente.

##Regresión lineal simple Tengo una variable independiente y una variable dependiente. Busco la relación entre ambas variables. Siempre tiene un error.

\[y=\beta_0+\beta_1x_1+u_1\]

Pero con muestra solo puedo tener

\[\hat{y}=\hat{\beta_0}+\hat{\beta_1}x_1+u_1\]

Exploremos la base ceosal1 que contiene variables que explican el salario de los CEO.

ceosal1<-wooldridge::ceosal1
ceosal1<-as_tibble(ceosal1)
help(ceosal1)
ceosal1
## # A tibble: 209 x 12
##    salary pcsalary  sales   roe  pcroe   ros indus finance consprod utility
##     <int>    <int>  <dbl> <dbl>  <dbl> <int> <int>   <int>    <int>   <int>
##  1   1095       20 27595  14.1  106.     191     1       0        0       0
##  2   1001       32  9958  10.9  -30.6     13     1       0        0       0
##  3   1122        9  6126. 23.5  -16.3     14     1       0        0       0
##  4    578       -9 16246   5.90 -25.7    -21     1       0        0       0
##  5   1368        7 21783. 13.8   -3       56     1       0        0       0
##  6   1145        5  6021. 20      1       55     1       0        0       0
##  7   1078       10  2267. 16.4   -5.90    62     1       0        0       0
##  8   1094        7  2967. 16.3   -1.60    44     1       0        0       0
##  9   1237       16  4570. 10.5  -70.2     37     1       0        0       0
## 10    833        5  2830  26.3  -23.9     37     1       0        0       0
## # … with 199 more rows, and 2 more variables: lsalary <dbl>, lsales <dbl>

Pensemos que somos consultores de una firma. Nos dicen que determinemos el efecto del ROE (retorno sobre el capital) sobre los salarios del CEO.

Lo primero que hacemos es un gráfico de dispersión para ver correlación.

ggplot(ceosal1) + geom_point(aes(x=roe,y=salary)) + labs(title= "Salary vs ROE", xlab="Percentage", ylab="USD")

Podemos a simple vista ver que no aparentemente no hay relación. Sin embargo, para aclarar el panorama tomamos una correlación.

cor(ceosal1$salary,ceosal1$roe)
## [1] 0.1148417

Aparentemente hay una correlación positiva baja. Ahora usemos smooth sobre mi gráfico para tener una mejor idea.

ggplot(ceosal1) + geom_point(aes(x=roe,y=salary)) + geom_smooth(aes(x=roe,y=salary),method = "lm") + labs(title= "Salary vs ROE", xlab="Percentage", ylab="USD")
## `geom_smooth()` using formula 'y ~ x'

Ahora quiero saber exactamente cual es el efecto de aumentar en una unidad a ROE sobre mi salario. Ese tipo de preguntas las responde la regresión

r1<- ceosal1 %>% lm(salary~roe,data = .)
r1
## 
## Call:
## lm(formula = salary ~ roe, data = .)
## 
## Coefficients:
## (Intercept)          roe  
##       963.2         18.5

El tener un coeficiente de ROE de 18.5 implica que si existe un aumento porcentual del ROE de 1% o 1 unidad el salario aumenta en 18.5 dolarres. Por otro lado, un intercepto de 963.2 ímplica que el sueldo base de un CEo sin importar otros factores como el ROE es de 963.2.

Un punto muy importante es la escala de medición de las variables. Esto afecta a la interpretación. Por ejemplo: * Si salario esta en miles de dolares no en dolares se debe multiplicar al intercepto y al roe por 100 para tener la misma interpretación * Si roe esta en proporción es decir va desde 0 a 1. Se debe dividir por 100 al coeficiente para tener la misma interpretación. * Si no se hace estas transformaciones nuestra interpretación inicial estará errada. Si ROE está en proporción tendria la interpretación de que su coeficiente digamos 1850.1 sería el impacto en un aumento del roe de 0 a 100.

Ahora veamos más resultados de la regresión en R, cómo la siginificancia de los coeficientes y el \(R^2\), usando la función summary()

summary(r1)
## 
## Call:
## lm(formula = salary ~ roe, data = .)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -1160.2  -526.0  -254.0   138.8 13499.9 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)    
## (Intercept)   963.19     213.24   4.517 1.05e-05 ***
## roe            18.50      11.12   1.663   0.0978 .  
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 1367 on 207 degrees of freedom
## Multiple R-squared:  0.01319,    Adjusted R-squared:  0.008421 
## F-statistic: 2.767 on 1 and 207 DF,  p-value: 0.09777

Podemos acceder a los componentes individuales del summary usando el operador $. Dado que summary(r1) es un objeto tipo lista, es decir guarda varios objetos dentro de si.

r1_s<-summary(r1)
r1_s$coefficients #Coeficientes
##              Estimate Std. Error  t value     Pr(>|t|)
## (Intercept) 963.19134  213.24026 4.516930 1.053352e-05
## roe          18.50119   11.12325 1.663289 9.776775e-02
r1_s$sigma #Estimación de la varianza del error 
## [1] 1366.555
r1_res<-r1$residuals #Residuales
rq_fitted<- r1$fitted.values #Valores predichos/fitted

De igual manera podemos obtener ciertos gráficos utiles graficando r1. Para esto usamos plot(r1). Estos son gráficos de residuales que nos ayudan a diagnosticar si nuestro modelo es bueno. Cada coeficiente tiene su distribución T, así que puedo ver significancia.

plot(r1)

¿Qué representan estos gráficos?

Muchas veces nos interesa obtener elasticidades o semielasticidades. Esto quiere decir que de variables totales buscaremos encontrar como afecta el cambio porcentual de una sobre el cambio porcentual de la otra.

r1.1<-ceosal1 %>% lm(salary~sales,data = .)
r1.1
## 
## Call:
## lm(formula = salary ~ sales, data = .)
## 
## Coefficients:
## (Intercept)        sales  
##   1.174e+03    1.547e-02
r1.2<- ceosal1 %>% lm(log(salary)~log(sales),data = .)
r1.2
## 
## Call:
## lm(formula = log(salary) ~ log(sales), data = .)
## 
## Coefficients:
## (Intercept)   log(sales)  
##      4.8220       0.2567
r1.3<- ceosal1 %>% lm(salary~log(sales),data = .)
r1.3
## 
## Call:
## lm(formula = salary ~ log(sales), data = .)
## 
## Coefficients:
## (Intercept)   log(sales)  
##      -898.9        262.9
r1.4<- ceosal1 %>% lm(log(salary)~sales,data = .)
r1.4
## 
## Call:
## lm(formula = log(salary) ~ sales, data = .)
## 
## Coefficients:
## (Intercept)        sales  
##   6.847e+00    1.498e-05

Un cuadro para recordar: Muchas veces no existe una relación lineal entre x y y. Tomemos el siguiente ejemplo.

x<-seq(1:20)
y<-x^2
df<-tibble(x,y)
ggplot(df)+geom_point(aes(x,y))

Muchas veces esto no es aparente a primera vista. Por lo cual se tiende a ejecutar puramente modelo lineal.

r1.2.1<-lm(y~x)
summary(r1.2.1)
## 
## Call:
## lm(formula = y ~ x)
## 
## Residuals:
##    Min     1Q Median     3Q    Max 
##    -33    -27     -8     23     57 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)    
## (Intercept)  -77.000     14.507  -5.308 4.79e-05 ***
## x             21.000      1.211  17.340 1.11e-12 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 31.23 on 18 degrees of freedom
## Multiple R-squared:  0.9435, Adjusted R-squared:  0.9404 
## F-statistic: 300.7 on 1 and 18 DF,  p-value: 1.114e-12

Tenemos coeficientes, sin emabrgo, no son significativos. Esto es por la relación cuadrada de los mismos. Podemos verla usando plot.

plot(lm(y~x))

En este caso podemos realizar la regresión contra \(x^2\) de la siguiente manera.

r1.2.2<-lm(y~I(x^2))
summary(r1.2.2)
## Warning in summary.lm(r1.2.2): essentially perfect fit: summary may be
## unreliable
## 
## Call:
## lm(formula = y ~ I(x^2))
## 
## Residuals:
##        Min         1Q     Median         3Q        Max 
## -3.208e-14 -7.678e-15 -6.268e-15 -1.625e-15  1.060e-13 
## 
## Coefficients:
##              Estimate Std. Error   t value Pr(>|t|)    
## (Intercept) 2.542e-14  9.392e-15 2.707e+00   0.0144 *  
## I(x^2)      1.000e+00  4.941e-17 2.024e+16   <2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 2.754e-14 on 18 degrees of freedom
## Multiple R-squared:      1,  Adjusted R-squared:      1 
## F-statistic: 4.097e+32 on 1 and 18 DF,  p-value: < 2.2e-16

Obtengamos los gráficos de residuales.

plot(r1.2.2)

Se ha arreglado el problema de linealidad.

Regresión múltiple

Ya sabemos analizar la forma más básica de regresión ahora pongamos más variables a la ecuación. Una regresión con más de una variable es una regresión múltiple. Añadamos las variables, sales y ros.

r2<-ceosal1 %>% lm(salary~sales+roe+ros,data=.)
r2
## 
## Call:
## lm(formula = salary ~ sales + roe + ros, data = .)
## 
## Coefficients:
## (Intercept)        sales          roe          ros  
##   864.11752      0.01548     22.00331     -1.10519

De igual manera podemos obtener la información completa usando summary().

summary(r2)
## 
## Call:
## lm(formula = salary ~ sales + roe + ros, data = .)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -1495.0  -486.5  -242.8    98.9 13516.4 
## 
## Coefficients:
##               Estimate Std. Error t value Pr(>|t|)    
## (Intercept) 864.117516 228.399737   3.783 0.000203 ***
## sales         0.015482   0.008954   1.729 0.085291 .  
## roe          22.003312  11.516554   1.911 0.057454 .  
## ros          -1.105191   1.450240  -0.762 0.446892    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 1360 on 205 degrees of freedom
## Multiple R-squared:  0.03191,    Adjusted R-squared:  0.01775 
## F-statistic: 2.253 on 3 and 205 DF,  p-value: 0.08337

De igual manera podemos obtener los mismos gráficos usando plot(r2)

summary(r2)
## 
## Call:
## lm(formula = salary ~ sales + roe + ros, data = .)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -1495.0  -486.5  -242.8    98.9 13516.4 
## 
## Coefficients:
##               Estimate Std. Error t value Pr(>|t|)    
## (Intercept) 864.117516 228.399737   3.783 0.000203 ***
## sales         0.015482   0.008954   1.729 0.085291 .  
## roe          22.003312  11.516554   1.911 0.057454 .  
## ros          -1.105191   1.450240  -0.762 0.446892    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 1360 on 205 degrees of freedom
## Multiple R-squared:  0.03191,    Adjusted R-squared:  0.01775 
## F-statistic: 2.253 on 3 and 205 DF,  p-value: 0.08337

Lo más importnate en econometría es el famoso Teorema de Gauss Markov o supuestos de regresión lineal. Estos son los siguientes.

  1. Lineal en los parametros: \[y=\beta_0+\beta_1x_1+\beta_2x_2+...+\beta_kx_k+u\]

  2. Muestreo Aleatorio

  3. No hay colinealidad perfecta:

La correlación entre las variables independientes no debe ser perfecta o muy cercana a 1 o -1.

  1. Media condicional cero: \[ E(u|x_1,x_2,...,x_k)=0\] En promedio el error no debe estar relacionado con las variables independientes.

  2. Homocedasticidad \[Var(u|x_1,x_2,...,x_k)=0\]

  3. Distirbución normal de los errores de la forma \(N~(0,\sigma)\)

La varianza del error debe ser constante dado el valor de cualquier variable explicativa.

Los supuestos 1 al 4 garantiza insesgadez, que es el hecho de que mi estimador muestral sea igual a mi poblacional en promedio. El supuesto cinco garantiza la varianza mínima.

El tener todos los supuestos me da estimadores BLUE

B est

L inear

U nbiased

E stimator

Es decir son los mejores estimadores posibles.

Sin embargo, en la realidad es casi imposible que se cumplan todos. el objetivo de un econometrista es asegurar que se cumplan.

Linearidad y Homocedasticidad Con los gráficos de residuales.

Multicolinealidad

USar VFI para su diagnóstico. VFI más de 10 multicolinealidad.

vif(r2)
##    sales      roe      ros 
## 1.019232 1.082145 1.099182

¿Cómo arreglarlos?

Más complciado e implica técnicas más avanzas. Para cursos futuros…