Econometría II

Problemas teóricos

Bases del análisis de regresión

Resuelva la sigueinte serie de ejercicios para continuar con la discusión del Efecto Marginal y algunos puntos básicos del análisis de regresión:

[1] Sean \(y\), \(x_1\) y \(x_2\) variables aleatorias y una forma funcional de la esparanza condicional de la forma:

\[\begin{equation} E (y \; | \; x_1, x_2)= \beta_1 + \beta_2 x_1 + \beta_3 x_2^2 + \beta_4 x_1 x_2 \end{equation}\]

Al respecto, determine el Efecto Marginal de \(x_1\) y \(x_2\).

Respuesta: \[\begin{equation} EMg_x1= \frac{\partial E (y \; | \; x_1, x_2)}{\partial x_1} \end{equation}\]

\[\begin{equation} EMg_x1= (0) + \beta_2 + (0) + \beta_4 x_2 \end{equation}\]

\[\begin{equation} EMg_x2= \frac{\partial E (y \; | \; x_1, x_2)}{\partial x_2} \end{equation}\]

\[\begin{equation} EMg_x2= (0) + (0) + 2 \beta_3 x_2 + \beta_4 x_1 \end{equation}\]

2 Sean \(y\), \(x_1\) y \(D = \{0, 1\}\) variables aleatorias y una forma funcional de la esperanza condicional de la forma: \[\begin{equation} E (y \; | \; x_1, D )= e^{\beta_1 + \beta_2 x_1 + \gamma D} \end{equation}\]

Al respecto, determine el Efecto Marginal de \(x_1\) y \(D = \{0, 1\}\).

Respuesta: \[\begin{equation} EMg_x1= \frac{\partial E (y \; | \; x_1, D)}{\partial x_1} \end{equation}\]

\[\begin{equation} EMg_x1= \beta_2 e^{\beta_1 + \beta_2 x_1 + \gamma D} \end{equation}\]

\[\begin{equation} EMg_D\gamma D= {E (y \; | \; x_1, D = 1)} - {E (y \; | \; x_1, D = 0)} \end{equation}\]

\[\begin{equation} EMg_D= e^{\beta_1 + \beta_2 x_1 + \gamma (1)} - e^{\beta_1 + \beta_2 x_1 + \gamma (0)} \end{equation}\]

\[\begin{equation} ln(EMg_D)= \beta_1 + \beta_2 x_1 + \gamma (1) - \beta_1 + \beta_2 x_1 + \gamma (0) = \beta_1 + \beta_2 x_1 + \gamma \end{equation}\]

o

\[\begin{equation} ln(E (y \; | \; x_1, D))= \beta_1 + \beta_2 x_1 + \gamma (D) \end{equation}\]

= _2

3 Utilice el material expuesto en el curso para analizar y derterminar si las siguientes afirmaciones son FALSAS o VERDADERAS.

a) Cuando se realiza un proceso de estimación por el método de MCO, la suma de los errores resultantes siempre es igual a cero, es decir,

\[\begin{equation} \sum_{i=1}^n e_i = 0 \end{equation}\]

Respuesta: VERDADERO. En el método de MCO, la suma de los erroes siempre es igual a cero siempre y cuando dentro del modelo se incluya una constante en el proceso de estimación, en el caso contrario no será igual a cero. La presencia de una constante abre la posibilidad para que la recta de regresión estimada no tenga que iniciar desde el origen, por lo tanto haciendo posible encontrar la minimización de los errores dentro de la nube de puntos presente en el plano de la variable explicada y la variable a explicar.

Al buscar minimizar la suma de los errores dentro del modelo, siendo equivalente a la minimización de la suma de la diferencia entre la “\(y\)” actual y la “\(y\)” estimada al cuadrado, se encontrará que la suma de los errores será igual a cero, indicando que no hay información en los términos de error que se relacione con la información capturada por las variables explicativas.

b) Suponga que realiza una estimación por el método de mínimos cuadrados de la ecuación dada por \(y_i = \beta_2 x_{i2} + \beta_3 x_{i3}+...+\beta_k x_{ik} + \varepsilon_i\), para \(i = 1,2,...,N\). Asimismo, suponga que como resultado de su estimación encuentra que la estadística \(R^2\) es muy próxima al valor de 0.5, entonces ¿se puede decir que las variables dadas por \(x_{i2}, x_{i3}, ..., x_{ik}\) explican aproximadamente la mitad de la variabilidad de la variable \(y_i\)?

Respuesta: FALSO. La bondad del ajuste indica qué proporción dentro de la variación total de las observaciones se encuentra cubierta por la variabilidad explicada. Donde la variabilidad total de la variable es la suma de la diferencia entre “\(Y\)” actual y la “\(y\)” promedio al cuadrado, mientras que la variabilidad explicada es la suma de la diferencia entre “\(y\)” estimada y “\(y\)” promedio al cuadrado. Aquella parte de la variabilidad que no se encuentra explicada por nuestras variables se encuentra en la parte no explicada, es decir la suma del cuadrado de los errores obtenidos mediante el proceso de estimación. El problema aquí es que estamos en una ecuación de regresión sin constante, por lo que la medida \(R^2\) no sirve, no la podemos tomar en cuenta en este caso, por lo que no podemos decir que se explique en la mitad a la variable \(y_i\).

c) Suponga que estima una ecuación de salario dada por:

\[\begin{equation} salario_i = \beta_1 + \beta_2 educa_i + \beta_3 educa_i^2 + \beta_4 D Sexo_i + \varepsilon_i \end{equation}\]

Donde todas los estimadores $ , k = 1, 2, 3, 4$ son estadísticamente significativos; \(i = 1,2,...,N\); \(salario_i\) es el ingresos mesual por sueldos y salarios de una persona; \(educa_i\) es la educación de una persona en años, y \(DSexo_i\) es una variable dummy que toma el valor de 1 si el individuo es hombre y 0 en cualquier otro caso. Asuma que los resultados indican que: \(\hat{\beta_2} > 0\) y \(\hat{\beta_3} > 0\). Entonces, ¿podemos afirmar que existe evidencia estadística de la presencia de redimientos marginales decrecientes de la educación en los salarios?

Respuesta: Si \(\beta_2\) y \(\beta_3\) estimados son mayores a cero, implica que un incremento en los años de educación de la persona tendrán un efecto positivo en el salario, tomando a consideración que \(\beta_3\) es positivo y describe el efecto del cuadrado de los años de educación, se puede deducir que existen rendimientos marginales crecientes.

d) Asuma que estima una regresión de los salarios de las personas en una cierta industria y encuenta que sus resultados son:

\[\begin{equation} \hat{y_i} = \underset{(2.5)}{5.15} + \underset{(0.3)}{1.17} x_i \end{equation}\]

Donde \(y_i\) es el salario mensual en miles de pesos de las personas, y \(x_i\) es una variable dummy que toma el valor de 1 cuando el individuo i es hombre y 0 cuando es mujer. Entre paréntesis se indica los errores estándar de los estimadores (conocidos como término respectivo a \(\sigma^2 (X'X)^{-1}_{kk}\). Entonces, existe evidencia estadística y significativa para afirmar que la mejor estimación al salario de los hombres es 5.15 mil pesos y para las mujeres es de 6.31 mil pesos.

Respuesta: FALSO. Cuando la persona es hombre, su salario mensual en miles de pesos se centrará alrededor de 6.31 mil pesos y cuando la persona sea mujer su salario será de 5.15 mil pesos según los datos empleados de la determinada industria. Dado que el error estandar de 1.17 es 0.3, la oscilación de este valor es lo suficientemente pequeña para considerar una evidente brecha entre los salarios de los hombres y las mujeres para los datos empleados.

[4] Suponga que ha decidido estimar una regresión del logaritmo natural del salario en función de un conjunto de variables para un conjunto de individuos en una industria; de tal forma que obtiene los resultados mostrados en el Cuadro siguiente:

Variable Coeficiente Error Estandar Estadıstica t
Constante 4.216 0.078 54.051
Masculino 0.154 0.005 30.8
Primaria 0.224 0.018 12.444
Secundaria 0.833 0.063 13.222
Preparatoria 0.902 0.063 14.3175
Univesidad 0.550 0.065 8.462
ln(Experiencia) 0.907 0.040 22.535
Primaria×Masculino -0.97 0.781 -1.242
Secundaria×Masculino -0.67 0.002 -2-272
Preparatoria×Masculino -0.72 0.311 -2.317
Univesidad×Masculino -0.146 0.076 -1.9211
ln(Experiencia)×Masculino 0.041 0.008 4.891
\(R^2 = 0.6032\) \(F=89.69\) \(n = 1,000\) \(e'e = 415.37\)

En donde la variables son como se describe a continuación:

a) Masculino: es una variable binaria que toma el valor de 1 (uno) cuando el individuo es del sexo masculino y 0 (cero) en cualquier otro caso.

b) Primaria, Secundaria, Preparatoria y Universidad: son un conjunto de variables categóricas (Dummy) que indican el nivel máximo de estudios del individo, es decir, toman el valor de 1 si el individuo cumple con la categoria y cero si su nivel máximo de estudios es algún otro nivel. Por lo tanto hemos dejado fuera la dummy que indica nula educación.

c) Experiencia: es una variable que indica el número de añoos de experiencia del individuo.

Se le solicita:

a) Completar el Cuadro anterior, así como indicar la hipótesis nula y alternativa asociada. También deberá determinar cuales de las variables incluidas en la regresión resultan estadísticamente significativas.

Respuesta: La hipótesis nula es que \(\beta_1 = \beta_2 = \beta_3 = ... = \beta_11 = 0\), mientras que la hipótesis alternativa es que beta sea distinto a cero. En este caso, a partir del estadístico t, las variables estadísticamente significativas son Masculino, Primaria, Secundaria, Preparatoria, Universidad, \(ln(Experiencia)\), \(ln(Experiencia)XMasculino\), \(SecundariaXMasculino\), \(PreparatoriaXMasculino\).

b) Utilizando la informaciín de Cuadro anterior determine la hipótesis nula y alternativa para saber si el logarítmo natural de la experiencia es estadísticamente igual a 1. realice la prueba \(t\) asociada y concluya si se puede rechazar la hipótesis nula.

Respuesta: Se encuentra par a la variable considerada que:

Coeficiente Error estándar Estadístico \(t\)
ln(Experiencia) 0.907 0.040 22.535

Donde la cantidad de observaciones es 10000 y el número de parámetros estimados es 11

si el estadístico t es igual a la beta estimada menos la beta bajo el parámetro de hipótesis nula (0) dividido entre el error estándar de beta estimada. En el caso donde la beta asociada a la hipótesis nula se encuentra que el estadístico t es igual a 22.535, el cuál al ser mayor a 2 se considera estdísticamente significante e indica que el coeficiente de 0.907 tiene peso estadístico, rechazando la hipótesis nula.

Si se busca saber si el logaritmo natural de la experiencia es estadísticamente igual a 1, se puede remplazarel parámetro de la hipótesis nula de cero por uno, lo que da lugar a

(0.907 - 1) / 0.040 = -2.325. A un intervalo de 95% de confianza, el valor crítico puede situarse cercano a 1.96. Dado que en valores absolutos el estadístico es mayor al valor crítico, se rechaza la hipótesis nula (que el coeficiente sea igual 1) y se acepta la hipótesis alternativa.

c) Utilizando la información de Cuadro anterior determine y explique cuál es el Efecto Marginal de la variable Universidad.

Respuesta: Siendo una variable categórica dicotómica, cuando el individuo asiste a la universidad la variable toma el valor de uno y en caso contrario toma un valor de cero. Cuando el individuo asiste a la universidad, el salario será mayor en una porcentaje de 73.33% \(e^{0.55}-1 * 100 = 0.7332530179 * 100 = 73.33\)

[5] Un embotellador de bebidas gaseosas analiza las rutas de servicio de las máquinas expendedoras en su sistema de distribución. Le interesa predecir el tiempo necesario para que el representante de ruta atienda las máquinas expendedoras en una tienda. Esta actividad de servicio consiste en abastecer la máquina con productos embotellados, y algo de mantenimiento o limpieza. El ingeniero industrial responsable del estudio ha sugerido que las dos variables más importantes que afectan el tiempo de entrega, \(y\), son la cantidad de cajas de producto abastecido, \(x_1\), y la distancia caminada por el representante, \(x_2\). El ingeniero ha reunido una muestra aleatoria de algunas observaciones de tiempo de entrega.

Suponga que desea estimar la ecuación de regresión asumiendo una media condicional dada por:

\[\begin{equation} \mu_{y_i \; | \; x_{i1}, x_{i2}, x_{i3}} = \beta_1 + \beta_{2}x_{i2} + \beta_{3} x_{i3} \end{equation}\]

Derivado de la operación matricial de la muestra suponga que obtiene los siguientes resultados:

\[\begin{equation} \begin{bmatrix} \sum y^2_i & \sum y_i x_{i1} & \sum y_i x_{i2} & \sum y_i x_{i3} \\ \sum x_{i1} y_i & \sum x_{i1}^2 & \sum x_{i1} x_{i2} & \sum x_{i1} x_{i3} \\ \sum x_{i2} y_i & \sum x_{i2} y_{i1} & \sum x_{i2}^2 & \sum x_{i2} x_{i3} \\ \sum x_{i3} y_i & \sum x_{i3} y_{i1} & \sum x_{i3} y_{i2} & \sum x_{i3}^2 \end{bmatrix} = \begin{bmatrix} 18310.63 & 559.60 & 7375.44 & 324972.70 \\ 559.60 & 25.00 & 219.00 & 9932.00 \\ 7375.44 & 219.00 & 3055.00 & 129099.00 \\ 324972.69 & 9932.00 & 129099.00 & 6402888.00 \end{bmatrix} \end{equation}\]

Al respecto:

a) Determine los coeficientes \(\beta\) de regresión lineal

Respuesta: \[\begin{equation} \begin{bmatrix} 25.00 & 219.00 & 9932.00 \\ 219.00 & 3055.00 & 129099.00 \\ 9932.00 & 129099.00 & 6402888.00 \end{bmatrix} \end{equation}\] Obtenemos la matriz inversa y la multiplicamos por X´Y. \[\begin{equation} \begin{bmatrix} 0.113424881 & -0.004703565 & -8.11057E-05 \\ -0.004703565 & 0.002407313 & -4.12417E-05 \\ -8.11057E-05 & -4.12417E-05 & 1.11353E-06 \end{bmatrix} * \begin{bmatrix} 559.6 \\ 7375.44 \\ 324972.69 \end{bmatrix} \end{equation}\] Obtenemos los coeficientes \(\beta\) de la regresión.

\[\begin{equation} \beta_1 = 2.4246 \beta_2 = 1.7205 \beta_3 = 0.0123 \end{equation}\]

b) Determine el valor de la varianza estimada de los errores: \(\hat{\sigma}^2\)

Respuesta: \(\hat{\sigma}^2\) = Varianza Total - Varianza de la Regresión \(\hat{\sigma}^2 = 18310.63 - 18044.45\) \(\hat{\sigma}^2 = 266.1760\)

La varianza estimada de los errores es de 266.1760.

c) Pruebe la hipótesis nula de que \(\beta_2 = 0\) con un \(\alpha = 0.05\)

Respuesta: Ho = 0: no es significativa vs Ha ≠ 0: es significativa

Aportación de pruebas

\(t_alpha_5% = 1.96\) \(t = (\hat{\beta_2} - \beta_2)/SE(\hat{\beta_2})\) \(\beta_2 = 0\) \(t = (1.7205 - 0)/0.0491 = 35.0653\) \(t = 35.0653\)

Regla de decisión Si |tc| < t\(t_alpha_5%\) = 1.96 se acepta Ho, por lo tanto, no es significativa Si |tc| > \(t_alpha_5%\) = 1.96 se rechaza Ho, por lo tanto, es significativa

d) Pruebe la hipótesis nula de que \(\beta_3 = 0\) con un \(\alpha = 0.05\)

Respuesta: Ho = 0: no es significativa vs Ha ≠ 0: es significativa

Aportación de pruebas

\(t_{\alpha 5\%} = 1.96\) \(t = (\hat{\beta_3} - \beta_3)/SE(\hat{\beta_3})\) \(\beta_3 = 0\) \(t = (0.0123 - 0)/0.0172 = 0.7147\) \(t = 0.7147\)

Regla de decisión Si |tc| < t\(t_{\alpha 5\%}\) = 1.96 se acepta Ho, por lo tanto, no es significativa Si |tc| > \(t_{\alpha 5\%}\) = 1.96 se rechaza Ho, por lo tanto, es significativa

e) Escriba una conclusión de las dos pruebas de hipótesis planteadas

Respuesta: Con base en las pruebas realizadas anteriormente, se puede concluir que el parámetro \(\beta_2\) (cantidad de cajas) es significativo al 95% de confianza y que el parámetro \(\beta_3\) (distancia caminada) no es significativo al 95% de confianza.

f) Determine el valor del \(R^2\) asociado al caso

Respuesta: \(R^2 = \beta X´ M^o X \hat\beta / Y´ M^o Y\) \(R^2\) = Varianza de la regresión / Varianza Total \(R^2 = 18044.45/18310.63\) \(R^2 = 0.9855\)

El \(R^2\) es de 0.9855, esto quiere decir que el 98.55 de la variabilidad en el tiempo de entrega es explicado por la cantidad de cajas y la distancia caminada.

Tópicos intermedios del análisis de regresión

En esta sección platearemos un caso típico del método de Variables Instrumentales. Para lo cual le pedimos seguir la discusión y realizar las actividades que se le piden. Consideremos un modelo de equilibrio de mercado (la discusión original se encuentra en el trabajo de Working (1927). What do statistical demand curves show?. Quaterly Journal of Economics, 41 pp. 212 - 235). Supongamos que tenemos el siguiente modelo de demanda o modelo en su forma estructural:

\[\begin{align} q^d &= \alpha_0 + \alpha_1 p_i + u_i \nonumber \\ q^s &= \beta_0 + \beta_1 p_i + v_i \end{align}\]

Donde \(q^d\) es la cantidad demandada para el bien en cuestión, \(q^s\) es la cantidad ofertada, \(p_i\) es el precio de dicho bien. Los términos de error \(u_i\) y \(v_i\) representan otros factores observables que afectan o desplazan a la cantidad ofertada y a la cantidad demandada. Podemos asumir que dichos elementos \(u_i\) y \(v_i\) son factores no observables. De esta forma \(E[u_i] =0\) y \(E[v_i] =0\). Adicionalmente, suponga que que la \(Cov[u_i, v_i]=0\) y que \(q^d = q^s = q\), de tal forma que el mercado estaría en equilibrio, por lo que tenemos:

\[\begin{align} q &= \alpha_0 + \alpha_1 p_i + u_i \nonumber \\ q &= \beta_0 + \beta_1 p_i + v_i \end{align}\]

Ambas ecuaciones tienen problemas de endogeneidad, ya que el precio \(p_i\) es endógeno en cada una de las ecuaciones, ya que se determina simúltaneamente.

Utilizando las ecuaciones anteriores obtenga la ecuación de demanda:

\[\begin{align} q_i = \frac{\alpha_1 \beta_0 - \alpha_0 \beta_1 }{\alpha_1 - \beta_1} &+ \frac{\alpha_1 v_i -\beta_1 u_i}{\alpha_1 - \beta_1} \\ p_i = \frac{\beta_0 - \alpha_0}{\alpha_1 - \beta_1} &+ \frac{v_i - u_i}{\alpha_1 - \beta_1} \end{align}\]

De esta forma hemos obtenido dos expresiones, ecuación de demanda, y la ecuación de oferta, que representan la solución para el sistema de ecuaciones. No obstante, se puede apreciar que cada una de las variables tiene influencia del término de error de cada una de las ecuaciones, por lo que NO se pueden separar enteramente y se sule decir que tenemos un problema de endogeneidad.

A partir de la ecuación última, determine la covarianza entre \(p_i\) y cada uno de los factores de cambio de la demanda (\(u_i\)) y de la oferta (\(v_i\)). Muestre que es igual a:

\[\begin{align} Cov(p_i, u_i) &= - \frac{Var (u_i)}{\alpha_1 - \beta_1} \\ Cov(p_i, v_i) &= \frac{Var (v_i)}{\alpha_1 - \beta_1} \end{align}\]

De esta forma, el precio está correlacionado positivamente con los factores que modifican la demanda y negativamente con los factores que modifican la oferta, ello en razón de que la pendiente de la demanda es negativa (\(\alpha_1 < 0\)) y la de la oferta es positiva (\(\beta1 > 0\)). En este caso, decimos que el problema de endogenidad se origina por el proceso de equilibrio en el mercado. La razón de la endogeniedad referida es que de la curva de demanda o de la curva de oferta no es posible inferir si los cambios en el nivel de precios o en las cantidades en el mercado son por causa de desplazamientos de la curva de oferta o de la curva de demanda. Esto significa que sólo es posible estimar la curva de oferta o de demanda si es posible observar alguno de los factores que determina a la demanda o la oferta. Supongamos que el efecto del termino de error en la cantidad ofertada, \(v_i\), puede ser dividido en: los fatores observables que están asociados a la demanda \(x_i\) y un factor no observable \(\zeta\) que no está correlacionado con \(x_i\). Es decir, que tenemos una formulación de la ecuación de oferta similar a:

\[\begin{equation} q_i = \beta_0 + \beta_1 p_i + \beta_2 x_i + \zeta_i \end{equation}\]

De esta forma podemos decir que existe una posibilidad de que se elimine la endogeidad, esto es, que se pueda instrumentar mediante el uso de variables asociadas a la demanda (\(x_i\)). Lo anterio, para efecto de separar del término de error la información que puede ser endogena al sistema, tal y como se muestra en la ecuación (1.9). La Figura siguiente ilustra esta discusión para cada uno de los casos: de la demanda y de la oferta. Esta discusión es una aplicación del Método de Variables Instrumentales (IV). Para el cual requerimos un regresor que es endogeno y que requerimos sea instrumentado. Al instrumento se le denomina variable instrumental. En este caso, es la variable \(x_i\) quién sera nuestra variable instrumental. Retomemos nuestro sistema de ecuaciones de demanda y oferta. Si realizamos el mismo procedimiento de solución del sistema de ecuaciones pero considerando a la ecuación anterior Dicho lo anterior, muestre que obtendríamos un sistema que quedará como sigue:

\[\begin{align} p_i &= \frac{\beta_0 - \alpha_0}{\alpha_1 - \beta_1} + \frac{\beta_2}{\alpha_1 - \beta_1}+ \frac{\zeta_i - u_i}{\alpha_1 - \beta_1 } \\ q_i &= \frac{\alpha_1 \beta_0 - \alpha_0 \beta_1 }{\alpha_1 - \beta_1 } + \frac{\alpha_1 \beta_2}{\alpha_1 - \beta_1 } + \frac{\alpha_1 \zeta_i - \beta_1 u_i}{\alpha_1 - \beta_1 } \end{align}\]

En este punto, si fue posible instrumentar correctamente la variable endogena, muestre que deberá pasar que \(Cov(x_i, \zeta_i) = 0\). Es decir, es esperado que no exista información endogena. Así aseguraríamos que \(Cov(x_i, u_i) = 0\).

## # A tibble: 3 x 2
##       x     y
##   <dbl> <dbl>
## 1  4.65  3.40
## 2  6.28  4.79
## 3  7.69  6.36

## # A tibble: 3 x 2
##       x     y
##   <dbl> <dbl>
## 1  7.41  6.00
## 2  8.66  4.67
## 3  9.88  3.58

Respuesta: Primero, vamos a obtener las ecuaciones de demanda, por lo que vamos a igualar las expresiones siguientes y vamos a despejar \(p_i\):

\[ \alpha_0 + \alpha_1 p_i + u_i = \beta_0 + \beta_1 p_i + v_i \]

Ya que igualamos las expresiones, pasamos todas aquellas que tienen un factor \(p_i\) de un solo lado, tal que:

\[ \beta_1 p_i - a_1 p_i = \beta_0 - \alpha_0 + v_i - u_i \] Factorizamos \(p_i\):

\[ p_i (\beta_i - \alpha_i) = \beta_0 - \alpha_0 + v_i - u_i \]

Y despejamos \(p_i\):

\[\begin{equation} p_i = \frac{\beta_0 - \alpha_0}{\alpha_1 - \beta_1} + \frac{v_i - u_i}{\alpha_1 - \beta_1} \end{equation}\]

Ahora que conocemos el precio de equilibrio, vamos a reemplazarlo en las ecuaciones de oferta y demanda, despejamos \(q_i\) en ambas y las igualamos a 0, tal que:

\[\begin{align} 0 &= \alpha_0 + \alpha_1 \frac{\beta_0 - \alpha_0}{\alpha_1 - \beta_1} &+ \frac{v_i - u_i}{\alpha_1 - \beta_1} + u_i - q \nonumber \\ 0 &= \beta_0 + \beta_1 \frac{\beta_0 - \alpha_0}{\alpha_1 - \beta_1} &+ \frac{v_i - u_i}{\alpha_1 - \beta_1} + v_i - q \end{align}\]

Ahora, igualamos las expresiones, tal que:

\[\begin{equation} \alpha_0 + \alpha_1 \frac{\beta_0 - \alpha_0}{\alpha_1 - \beta_1} + \frac{v_i - u_i}{\alpha_1 - \beta_1} + u_i - q = \beta_0 + \beta_1 \frac{\beta_0 - \alpha_0}{\alpha_1 - \beta_1} + \frac{v_i - u_i}{\alpha_1 - \beta_1} + v_i - q \end{equation}\]

Y simplemente despejamos \(q_i\), lo que necesariamente nos conducirá a lo siguiente:

\[\begin{equation} q_i = \frac{\alpha_1 \beta_0 - \alpha_0 \beta_1 }{\alpha_1 - \beta_1} + \frac{\alpha_1 v_i -\beta_1 u_i}{\alpha_1 - \beta_1} \end{equation}\]

Prácticas de Python - Jupyter Notebook

Regresión Lineal MCO

Resolver la práctica de Python ubicado en la carpeta llamada Parte 1. La práctica está relacionada con la réplica que Christensen & Greene (1976) hicieron al trabajo de Nerlove (1963).

Respuesta: Para ello primero vamos a cargar el paquete siguiente:

library(reticulate)

Ahora ya podemos implementar chunks de python, por lo que cargamos las librerías necesarias para el ejercicio:

# Cargamos paquetes de python
import pyreadstat
import pandas as pd
import matplotlib.pyplot as plt
import numpy as np
import statsmodels.api as sm
from statsmodels.formula.api import ols
from IPython.display import Image
import warnings
warnings.filterwarnings('ignore')

En este caso tenemos que cargar una base de datos para el ejercicio, por lo que lo haremos de la siguiente manera:

dtafile = '/Users/jorge/Desktop/Universidad/Semestre 8 (último)/Econometria 2/Tarea examen 1/cgreene76.dta'

Ahora, convertimos el objeto a data frame para poder trabajar con el de mejor manera, lo cual haremos haciendo los siguiente:

dataframe, meta = pyreadstat.read_dta(dtafile)

Finalmente, visualizamos los primeros 6 datos de la siguiente manera:

dataframe.head(6).round(2)
##    firmid  costs  output   plabor   pkap  pfuel  labshr  kapshr
## 0     1.0   0.21     8.0  6869.47  64.94  18.00    0.33    0.42
## 1    20.0   0.49    14.0  5438.89  86.11  34.15    0.30    0.46
## 2    17.0   0.62    50.0  9204.24  90.47  32.07    0.30    0.10
## 3    14.0   0.76    65.0  8971.89  41.24  28.54    0.28    0.13
## 4    28.0   0.64    67.0  6696.50  58.26  25.40    0.24    0.37
## 5    22.0   1.15    90.0  7189.67  79.10  21.50    0.29    0.21

Vamos a crear una tabla para visualizar mejor los datos, tal que:

DT::datatable(py$dataframe[1:5])

Ahora, vamos a considerar la siguiente función de costos y, respectivamente, vamos a transformar variables para poder replicar la función final. La función de costos es:

\[ln(C) = \alpha_0 + \alpha_Y ln(Y) + \frac{1}{2} \gamma_{YY} (ln(Y))^2 + \sum_k \alpha_k ln(P_{k}) + \frac{1}{2} \sum_{k} \sum_{j} \gamma_{kj} ln(P_k) ln(P_j) + \sum_k \gamma_{Yk} ln(Y) ln(P_k) + \varepsilon_i\]

De la ecuación anterior sabemos que \(\gamma_{kj} = \gamma_{jk}\), \(C\) es el costo total, \(Y\) el producto, los factores \(P_k\) y \(P_j\) son los precios, mientras que $k,j = $ el precio del combustible, capital y trabajo.

Ahora, vamos a crear las variables necesarias a partir de las que ya tenemos, tal que:

dataframe['lntotcost'] = np.log(dataframe['costs'])
dataframe['lnoutput'] = np.log(dataframe['output'])
dataframe['lnplabor'] = np.log(dataframe['plabor'])
dataframe['lnpkap'] = np.log(dataframe['pkap'])
dataframe['lnpfuel'] = np.log(dataframe['pfuel'])
dataframe['Loutput_2'] = (((dataframe['lnoutput'])**2)/2)
dataframe['Lplabor_2'] = (((dataframe['lnplabor'])**2)/2)
dataframe['Lpkap_2'] = (((dataframe['lnpkap'])**2)/2)
dataframe['Lpfuel_2'] = (((dataframe['lnpfuel'])**2)/2)
dataframe['LoutputLplabor'] = ((dataframe['lnoutput'])*(dataframe['lnplabor']))
dataframe['LoutputLpkap'] = ((dataframe['lnoutput'])*(dataframe['lnpkap']))
dataframe['LoutputLpfuel'] = ((dataframe['lnoutput'])*(dataframe['lnpfuel']))
dataframe['LplaborLpkap'] = ((dataframe['lnplabor'])*(dataframe['lnpkap'])/2)
dataframe['LplaborLpfuel'] = ((dataframe['lnplabor'])*(dataframe['lnpfuel'])/2)
dataframe['LpkapLpfuel'] = ((dataframe['lnpkap'])*(dataframe['lnpfuel'])/2)
dataframe['One'] = 1

Ya que tenemos nuestras respectivas variables transformadas, visualizamos los datos en la tabla, tal que:

dataframe.head(5).round(2)
##    firmid  costs  output  ...  LplaborLpfuel  LpkapLpfuel  One
## 0     1.0   0.21     8.0  ...          12.77         6.03    1
## 1    20.0   0.49    14.0  ...          15.18         7.87    1
## 2    17.0   0.62    50.0  ...          15.83         7.81    1
## 3    14.0   0.76    65.0  ...          15.25         6.23    1
## 4    28.0   0.64    67.0  ...          14.25         6.57    1
## 
## [5 rows x 24 columns]

Y podemos pasar a estimar la ecuación de regresión, definiendo a las variables \(X\) y \(Y\), tal que:

# Variable dependiente
Y = dataframe["lntotcost"]

# Variables independientes
X = dataframe[["One","lnoutput", "lnplabor", "lnpfuel", 
"lnpkap","Loutput_2","Lplabor_2" ,"Lpkap_2" ,"Lpfuel_2","LoutputLplabor",
"LoutputLpkap","LoutputLpfuel","LplaborLpkap","LplaborLpfuel",
"LpkapLpfuel"]]

Y, creando la función de regresión, tal que:

est = sm.OLS(Y,X)
est2 = est.fit()
print(est2.summary())
##                             OLS Regression Results                            
## ==============================================================================
## Dep. Variable:              lntotcost   R-squared:                       0.993
## Model:                            OLS   Adj. R-squared:                  0.992
## Method:                 Least Squares   F-statistic:                     819.2
## Date:                Tue, 13 Apr 2021   Prob (F-statistic):           1.81e-83
## Time:                        21:20:33   Log-Likelihood:                 66.215
## No. Observations:                  99   AIC:                            -102.4
## Df Residuals:                      84   BIC:                            -63.50
## Df Model:                          14                                         
## Covariance Type:            nonrobust                                         
## ==================================================================================
##                      coef    std err          t      P>|t|      [0.025      0.975]
## ----------------------------------------------------------------------------------
## One              -82.7169     56.190     -1.472      0.145    -194.457      29.023
## lnoutput          -0.3827      0.535     -0.715      0.476      -1.447       0.681
## lnplabor          12.6821     10.780      1.176      0.243      -8.755      34.119
## lnpfuel           -3.0493      4.042     -0.754      0.453     -11.088       4.989
## lnpkap            13.6614      9.002      1.518      0.133      -4.240      31.563
## Loutput_2          0.0617      0.008      7.892      0.000       0.046       0.077
## Lplabor_2         -0.7617      1.093     -0.697      0.488      -2.934       1.411
## Lpkap_2            0.6820      0.817      0.835      0.406      -0.943       2.307
## Lpfuel_2          -0.0194      0.217     -0.090      0.929      -0.450       0.411
## LoutputLplabor     0.0969      0.052      1.856      0.067      -0.007       0.201
## LoutputLpkap      -0.0871      0.058     -1.494      0.139      -0.203       0.029
## LoutputLpfuel      0.0837      0.038      2.197      0.031       0.008       0.160
## LplaborLpkap      -3.5161      1.782     -1.973      0.052      -7.059       0.027
## LplaborLpfuel      0.6871      0.790      0.870      0.387      -0.883       2.257
## LpkapLpfuel       -0.0051      0.905     -0.006      0.996      -1.805       1.795
## ==============================================================================
## Omnibus:                        3.692   Durbin-Watson:                   1.692
## Prob(Omnibus):                  0.158   Jarque-Bera (JB):                3.729
## Skew:                          -0.178   Prob(JB):                        0.155
## Kurtosis:                       3.881   Cond. No.                     4.60e+05
## ==============================================================================
## 
## Notes:
## [1] Standard Errors assume that the covariance matrix of the errors is correctly specified.
## [2] The condition number is large, 4.6e+05. This might indicate that there are
## strong multicollinearity or other numerical problems.

Ahora, ¿qué podemos inferir de la regresión anterior y los resultados obtenidos? Podemos notar varias cosas, vamos a enlistarlas:

[1]: La \(R^2\) es bastante elevada, llegando casi a la unidad, sin embargo, tenemos variables con un P-value muy superior a 0.05, lo que implica que tenemos una fuerte evidencia de multicolinealidad (variables muy parecidas entre ellas), la cual no nos dejaría ver el efecto individual de cada una de las variables.

Ahora, vamos a probar algunas hipótesis y las vamos a interpretar de acuerdo con el trabajo de de acuerdo con el trabajo de Christensen y Greene (1976). Para lo anterior, vamos a establecer la ecuación de regresión dados los coeficientes anteriores, por lo que tendríamos lo siguiente:

formula = 'lntotcost ~  One + lnoutput + lnplabor + lnpfuel + lnpkap + Loutput_2 + Lplabor_2 + Lpkap_2 + Lpfuel_2 + LoutputLplabor + LoutputLpkap + LoutputLpfuel + LplaborLpkap + LplaborLpfuel + LpkapLpfuel'
results = ols(formula, dataframe).fit()

Ahora, la primer hipótesis de todas es la siguiente:

\[H_0: \sum_k \alpha_k = 1\] Creamos un objeto con la hipótesis en cuestión y contrastamos la hipótesis:

# Creamos el objeto
Hip_1 = 'lnplabor + lnpfuel + lnpkap = 1'

# Contrastamos la hipótesis
print(results.t_test(Hip_1))
##                              Test for Constraints                             
## ==============================================================================
##                  coef    std err          t      P>|t|      [0.025      0.975]
## ------------------------------------------------------------------------------
## c0            23.2943     15.337      1.454      0.150      -7.205      53.793
## ==============================================================================

Lo anterior nos dice que no debemos rechazar la hipótesis nula que planteamos anteriormente, ya que el P-value es superior a 0.05.

La siguiente hipótesis es:

\[H_0: \sum_k \gamma_{Yk} = 0\] Vamos a contrastarla de la siguiente manera:

# Creamos el objeto
Hip_2 = 'LoutputLplabor + LoutputLpkap + LoutputLpfuel = 0'

# Contrastamos la hipótesis
print(results.t_test(Hip_2))
##                              Test for Constraints                             
## ==============================================================================
##                  coef    std err          t      P>|t|      [0.025      0.975]
## ------------------------------------------------------------------------------
## c0             0.0935      0.081      1.151      0.253      -0.068       0.255
## ==============================================================================

Lo anterior nos dice que no debemos rechazar la hipótesis nula que planteamos anteriormente, ya que el P-value es superior a 0.05.

La última hipótesis es la siguiente:

\[H_0: \sum_{k} \gamma_{kj} = \sum_{j} \gamma_{kj} = \sum_{k} \sum_{j} \gamma_{kj} = 0\]

Vamos a contrastarla de la siguiente manera:

# Creamos el objeto
hip_3 = 'Lplabor_2 + Lpkap_2 + Lpfuel_2 + LplaborLpkap + LplaborLpfuel + LpkapLpfuel = 0'

# Contrastamos la hipótesis
print(results.t_test(hip_3))
##                              Test for Constraints                             
## ==============================================================================
##                  coef    std err          t      P>|t|      [0.025      0.975]
## ------------------------------------------------------------------------------
## c0            -2.9332      2.197     -1.335      0.185      -7.301       1.435
## ==============================================================================

Lo anterior nos dice que no debemos rechazar la hipótesis nula que planteamos anteriormente, ya que el P-value es superior a 0.05.

Dado lo anterior, vamos a estimar una nueva ecuación de regresión con la forma translog, tal que:

\[ln(C) = \alpha_0 + \alpha_Y ln(Y) + \frac{1}{2} \gamma_{YY} (ln(Y))^2 + \sum_k \alpha_k ln(P_{k}) + \frac{1}{2} \sum_k \sum_j \gamma_{kj} ln(P_k) ln(P_j) + \sum_k \gamma_{Yk} ln(Y) ln(P_k) + \varepsilon_i\]

Para ello vamos a definir las matrices de las variables \(X\) y \(Y\), teniendo lo siguiente:

# Creamos los data frames
Y = dataframe["lntotcost"]
X = dataframe[["One", "lnoutput", "lnpfuel", "kapshr", "labshr"]]

# Visualizamos los datos
Y.head(6).round(2)
## 0   -1.55
## 1   -0.72
## 2   -0.48
## 3   -0.27
## 4   -0.45
## 5    0.14
## Name: lntotcost, dtype: float64
X.head(6).round(2)
##    One  lnoutput  lnpfuel  kapshr  labshr
## 0    1      2.08     2.89    0.42    0.33
## 1    1      2.64     3.53    0.46    0.30
## 2    1      3.91     3.47    0.10    0.30
## 3    1      4.17     3.35    0.13    0.28
## 4    1      4.20     3.23    0.37    0.24
## 5    1      4.50     3.07    0.21    0.29

Ahora ya podemos estimar la nueva ecuación de regresión, tal que:

Reg_1 = sm.OLS(Y,X)
Reg_2 = Reg_1.fit()
print(Reg_2.summary())
##                             OLS Regression Results                            
## ==============================================================================
## Dep. Variable:              lntotcost   R-squared:                       0.991
## Model:                            OLS   Adj. R-squared:                  0.991
## Method:                 Least Squares   F-statistic:                     2652.
## Date:                Tue, 13 Apr 2021   Prob (F-statistic):           1.07e-95
## Time:                        21:20:33   Log-Likelihood:                 56.861
## No. Observations:                  99   AIC:                            -103.7
## Df Residuals:                      94   BIC:                            -90.75
## Df Model:                           4                                         
## Covariance Type:            nonrobust                                         
## ==============================================================================
##                  coef    std err          t      P>|t|      [0.025      0.975]
## ------------------------------------------------------------------------------
## One           -8.7531      0.301    -29.058      0.000      -9.351      -8.155
## lnoutput       0.9071      0.011     83.299      0.000       0.885       0.929
## lnpfuel        1.0319      0.062     16.580      0.000       0.908       1.155
## kapshr         1.7164      0.282      6.077      0.000       1.156       2.277
## labshr         3.1853      0.314     10.153      0.000       2.562       3.808
## ==============================================================================
## Omnibus:                       27.945   Durbin-Watson:                   1.477
## Prob(Omnibus):                  0.000   Jarque-Bera (JB):               61.232
## Skew:                           1.050   Prob(JB):                     5.05e-14
## Kurtosis:                       6.230   Cond. No.                         268.
## ==============================================================================
## 
## Notes:
## [1] Standard Errors assume that the covariance matrix of the errors is correctly specified.

Esta nueva regresión si tenemos coeficientes significativos, por lo que si podemos considerarlos a todos como estimadores para la variable dependiente.

Por último, vamos a estimar el costo total y el costo medio, para poder graficarlos despues, lo cual haremos de la siguiente manera:

# Calculamos los valores estimados
cost_tot = Reg_2.predict(X)

# Calculamos el antilogaritmo
Y = np.exp(cost_tot)
# Colocamos en el Data Frame:
dataframe['cost_tot'] = Y
#Se determina el valor del costo medio estimado y del costo medio observado
dataframe['avgcost_e'] = dataframe["cost_tot"]/dataframe["output"]
dataframe['avgcost'] = dataframe["costs"]/dataframe["output"]
dataframe.head(5)
##    firmid   costs  output       plabor  ...  One  cost_tot  avgcost_e   avgcost
## 0     1.0  0.2130     8.0  6869.470215  ...    1  0.120555   0.015069  0.026625
## 1    20.0  0.4887    14.0  5438.890137  ...    1  0.376207   0.026872  0.034907
## 2    17.0  0.6159    50.0  9204.240234  ...    1  0.598198   0.011964  0.012318
## 3    14.0  0.7606    65.0  8971.889648  ...    1  0.673117   0.010356  0.011702
## 4    28.0  0.6363    67.0  6696.500000  ...    1  0.826049   0.012329  0.009497
## 
## [5 rows x 27 columns]

Y, finalmente, podemos graficar los datos de la siguiente manera:

# Cargamos los datos en un chunk de R
datos_reg <- py$dataframe

# Graficamos 
datos_reg %>% 
  e_charts(output) %>% 
  e_scatter(avgcost, name = "Costo medio", symbol_size = 4) %>% 
  e_scatter(avgcost_e, name = "Costo medio estimado", symbol_size = 4) %>% 
  e_theme("chalk") %>% 
  e_tooltip(trigger = "axis") %>% 
  e_toolbox_feature(
    feature = "saveAsImage",
    title = "Save as image"
  ) %>% 
  e_title("Costos medios", "Estimado vs observado") 

Al comparar los valores observados con los estimados, podemos observar que tenemos una gran similitud entre ambos, ya que tenemos un modelo bastante exacto.

Regresión por el método de Variables Instrumentales

Resolver la práctica de Python ubicado en la carpeta llamada Parte 2. La práctica está relacionada con la implementación de una prueba de Haussman.

El propósito de este ejercicio es identificar endogeneidad en nuestro modelo, para ello utilizaremos la prueba de Hausman.

EJERCICIO 1

Para comenzar con el ejercicio, primero vamos a revisar la correlación entre la variable "índice de protección contra la expropiación (\(avexpr_i\)) y los errores (\(u_i\)).

Esta prueba tiene el objetivo de identificar la existencia de endogenidad. Para ello proponemos la siguiente estructura de pruebas de hipótesis: \[\begin{eqnarray*} H_0 &:& Cov(avexpr_i, u_i) = 0 \text{ no hay endogeneidad} \\ H_1 &:& Cov(avexpr_i, u_i) \neq 0 \text{ endogeneidad} \end{eqnarray*}\]

Comenzamos cargando los datos respectivos, tal que:

# Importación de los datos
Haussman_4 = pd.read_stata("/Users/jorge/Desktop/Universidad/Semestre 8 (último)/Econometria 2/Tarea examen 1/maketable4.dta")

Ahora, visualizamos los datos:

DT::datatable(py$Haussman_4)

Añadimos una constante a nuestros datos y eliminamos los NA, tal que:

# Añadimos la constante
Haussman_4['const']= 1

# Quitamos los NA
Haussman_4 = Haussman_4.dropna()

Volvemos a visualizar los datos, tal que:

DT::datatable(py$Haussman_4)

Ya que tenemos lista la base, podemos comenzar a trabajar con ella. Primero vamos a correr una regresión entre índice de protección contra la expropiación (\(avexpr\)) y el instrumento tasa de mortalidad de los colonizadores (\(logem4\)). Para ello vamos a definir a las variables dependiente \(Y\) e independientes \(X_j\), tal que:

# Definimos a las variables
Y = Haussman_4['avexpr']
X = Haussman_4[['const','logem4']]

# Calculamos la regresión
reg_1 = sm.OLS(endog = Y,
              exog = X,
              missing='drop').fit()
print(reg_1.summary())
##                             OLS Regression Results                            
## ==============================================================================
## Dep. Variable:                 avexpr   R-squared:                       0.287
## Model:                            OLS   Adj. R-squared:                  0.275
## Method:                 Least Squares   F-statistic:                     23.78
## Date:                Tue, 13 Apr 2021   Prob (F-statistic):           8.53e-06
## Time:                        21:20:34   Log-Likelihood:                -100.29
## No. Observations:                  61   AIC:                             204.6
## Df Residuals:                      59   BIC:                             208.8
## Df Model:                           1                                         
## Covariance Type:            nonrobust                                         
## ==============================================================================
##                  coef    std err          t      P>|t|      [0.025      0.975]
## ------------------------------------------------------------------------------
## const          9.4558      0.625     15.132      0.000       8.205      10.706
## logem4        -0.6287      0.129     -4.876      0.000      -0.887      -0.371
## ==============================================================================
## Omnibus:                        0.042   Durbin-Watson:                   1.850
## Prob(Omnibus):                  0.979   Jarque-Bera (JB):                0.134
## Skew:                           0.058   Prob(JB):                        0.935
## Kurtosis:                       2.803   Cond. No.                         19.3
## ==============================================================================
## 
## Notes:
## [1] Standard Errors assume that the covariance matrix of the errors is correctly specified.

¿Qué nos está diciendo la regresión? Encontramos un coeficiente negativo en la tasa de mortalidad de los colonizadores respecto a la calidad institucional, ¿por qué es así? Podríamos decir que los colonizadores se dirigian a lugares donde la calidad institucional era mayor, lo que implicaba que su calidad de vida subia y, por ende, bajaban sus tasas de mortalidad. Sería ilógico pensar que los colonizadores fueran a lugares donde tuvieran mayores probabilidades de morir.

Ahora bien, en temas estadísticos encontramos coeficientes significativos y ninguna evidencia de autocorrelación de primer orden.

Para la siguiente parte del ejercicio vamos a obtener los residuales de la regresión e introducirlos en nuestro data frame, tal que:

# Creamos la variable con los residuales
Haussman_4['resid'] = reg_1.resid

# Incluimos los valores calculados de la variable dependiente
Haussman_4['pred_avexpr']=reg_1.predict()
Haussman_4.head().round(2)
##    shortnam  africa  lat_abst  rich4  ...  baseco  const  resid  pred_avexpr
## 1       AGO     1.0      0.14    0.0  ...     1.0      1  -0.55         5.91
## 3       ARG     0.0      0.38    0.0  ...     1.0      1  -0.41         6.79
## 5       AUS     0.0      0.30    1.0  ...     1.0      1   1.21         8.11
## 11      BFA     1.0      0.14    0.0  ...     1.0      1  -1.46         5.91
## 12      BGD     0.0      0.27    0.0  ...     1.0      1  -1.64         6.77
## 
## [5 rows x 13 columns]

Ahora, podemos volver a plantear la regresión incluyendo los residuales, además de cambiar a la variable dependiente, la cual nos dará la siguiente expresión:

\[ logpgp95_i = \beta_0 + \beta_1 avexpr_i + \alpha \hat{u}_i + u_i \]

# Defina variables X y Y:

X = Haussman_4[['const', 'avexpr', 'resid']]

Y = Haussman_4['logpgp95']

# Ejecutemos regresión
reg_2 = sm.OLS(endog = Y,
              exog = X,
              missing='drop').fit()

#Imprimimos resultados
print(reg_2.summary())
##                             OLS Regression Results                            
## ==============================================================================
## Dep. Variable:               logpgp95   R-squared:                       0.735
## Model:                            OLS   Adj. R-squared:                  0.726
## Method:                 Least Squares   F-statistic:                     80.63
## Date:                Tue, 13 Apr 2021   Prob (F-statistic):           1.78e-17
## Time:                        21:20:34   Log-Likelihood:                -46.795
## No. Observations:                  61   AIC:                             99.59
## Df Residuals:                      58   BIC:                             105.9
## Df Model:                           2                                         
## Covariance Type:            nonrobust                                         
## ==============================================================================
##                  coef    std err          t      P>|t|      [0.025      0.975]
## ------------------------------------------------------------------------------
## const          1.7800      0.565      3.152      0.003       0.650       2.910
## avexpr         0.9682      0.086     11.252      0.000       0.796       1.140
## resid         -0.6467      0.102     -6.345      0.000      -0.851      -0.443
## ==============================================================================
## Omnibus:                       10.550   Durbin-Watson:                   2.015
## Prob(Omnibus):                  0.005   Jarque-Bera (JB):               10.939
## Skew:                          -0.810   Prob(JB):                      0.00421
## Kurtosis:                       4.297   Cond. No.                         57.0
## ==============================================================================
## 
## Notes:
## [1] Standard Errors assume that the covariance matrix of the errors is correctly specified.

Ahora, procedemos a graficar los datos avexpr y resid, de la siguiente manera:

# Cargamos los datos en un chunk de R
base_h <- py$Haussman_4

# Graficamos
base_h %>% 
  e_charts(avexpr) %>% 
  e_scatter(resid, name = "Residuales de la regresión", symbol_size = 8) %>% 
  e_color("#b84848") %>% 
  e_theme("chalk") %>% 
  e_tooltip(trigger = "axis") %>% 
  e_toolbox_feature(
    feature = "saveAsImage",
    title = "Save as image"
  ) %>% 
  e_title("Correlación", "Índice de protección a expropiación y residuales") 

Es bastante claro que existe una cierta correlación entre las variables, lo que ya nos podría estar indicando que encontraremos endogeneidad, aunque para comprobarlo haremos una matriz de correlación a continuación.

Vamos a asumir la siguiente hipótesis:

\[\begin{eqnarray*} H_0 &:& Cov(avexpr_i, u_i) = 0 \text{ no hay endogeneidad} \\ H_1 &:& Cov(avexpr_i, u_i) \neq 0 \text{ endogeneidad} \end{eqnarray*}\]

Ahora, vamos a hacer una matriz de correlación, de la siguiente manera:

Haussman_4.corr(method='pearson').round(2)
##              africa  lat_abst  rich4  avexpr  ...  baseco  const  resid  pred_avexpr
## africa         1.00     -0.23  -0.23   -0.37  ...     NaN    NaN  -0.03        -0.64
## lat_abst      -0.23      1.00   0.55    0.37  ...     NaN    NaN   0.14         0.48
## rich4         -0.23      0.55   1.00    0.57  ...     NaN    NaN   0.38         0.47
## avexpr        -0.37      0.37   0.57    1.00  ...     NaN    NaN   0.84         0.54
## logpgp95      -0.60      0.44   0.49    0.74  ...     NaN    NaN   0.40         0.76
## logem4         0.64     -0.48  -0.47   -0.54  ...     NaN    NaN  -0.00        -1.00
## asia          -0.33     -0.08  -0.10    0.21  ...     NaN    NaN   0.06         0.30
## loghjypl      -0.67      0.50   0.49    0.70  ...     NaN    NaN   0.32         0.80
## baseco          NaN       NaN    NaN     NaN  ...     NaN    NaN    NaN          NaN
## const           NaN       NaN    NaN     NaN  ...     NaN    NaN    NaN          NaN
## resid         -0.03      0.14   0.38    0.84  ...     NaN    NaN   1.00         0.00
## pred_avexpr   -0.64      0.48   0.47    0.54  ...     NaN    NaN   0.00         1.00
## 
## [12 rows x 12 columns]

¿Qué encontramos en avexpr y resid? De hecho encontramos que la correlación es de 0.84, casi llegando a la unidad, lo que implica que debemos rechazar la hipótesis nula y suponer que si existe endogeneidad en el modelo.

Curiosamente, encontramos que los valores predecidos de la regresión no tienen una relación con los residuales, lo que implica que al incluirlos en la regresión entonces ya no tenemos un caso de endogeneidad.

Hay que entender un poco mejor la situación aquí, ya que la prueba de Haussman nos estaría diciendo que se encontraron variables endógenas dentro del modelo, es decir, variables independientes que son explicadas a su vez por otras variables independientes. Esto genera problemas, ya que se está suponiendo que no existe correlación entre la variable dependiente y los residuales.

Vamos a corregir el problema por medio de variables instrumentales, por lo que tendremos la siguiente expresión:

\[ logpgp95_i = \sigma_0 + \sigma_1 \hat{avexpr}_i + v_i \]

Para corregir el problema, haremos lo siguiente:

# Definimos a las variables endógena y exógenas

X = Haussman_4[['const','pred_avexpr']]

Y = Haussman_4[['logpgp95']]

# Calculamos la regresión nuevamente
reg_3 = sm.OLS(endog = Y,
              exog = X,
              missing='drop').fit()

# Visualizamos los resultados
print(reg_3.summary())
##                             OLS Regression Results                            
## ==============================================================================
## Dep. Variable:               logpgp95   R-squared:                       0.577
## Model:                            OLS   Adj. R-squared:                  0.570
## Method:                 Least Squares   F-statistic:                     80.64
## Date:                Tue, 13 Apr 2021   Prob (F-statistic):           1.23e-12
## Time:                        21:20:35   Log-Likelihood:                -61.079
## No. Observations:                  61   AIC:                             126.2
## Df Residuals:                      59   BIC:                             130.4
## Df Model:                           1                                         
## Covariance Type:            nonrobust                                         
## ===============================================================================
##                   coef    std err          t      P>|t|      [0.025      0.975]
## -------------------------------------------------------------------------------
## const           1.7800      0.708      2.516      0.015       0.364       3.196
## pred_avexpr     0.9682      0.108      8.980      0.000       0.752       1.184
## ==============================================================================
## Omnibus:                        2.113   Durbin-Watson:                   1.798
## Prob(Omnibus):                  0.348   Jarque-Bera (JB):                1.753
## Skew:                          -0.270   Prob(JB):                        0.416
## Kurtosis:                       2.369   Cond. No.                         55.4
## ==============================================================================
## 
## Notes:
## [1] Standard Errors assume that the covariance matrix of the errors is correctly specified.

Y en este caso ya no tenemos un problema de endogeneidad.

EJERCICIO 2

  • El parámetro \(\beta\) puede ser calculado con álgebra matricial y el paquete numpy

  • La ecuacón lineal que queremos estimar es: $ y = X+ u $

  • Para resolver la ecuación para el parámetro $ $, minimizamos la suma del cuadrado de los residuales. \(\underset{\hat{\beta}}{\min} \hat{u}'\hat{u}\)

  • Rearreglando la primera ecuación y substituyendo en la segunda ecuación podemo escribir:\(\underset{\hat{\beta}}{\min} \ (Y - X\hat{\beta})' (Y - X\hat{\beta})\)

  • Resolviendo este problema de optimización obtenemos la solución para los coeficientes $ $ \[ \hat{\beta} = (X'X)^{-1}X'y \]

  • Utilizando la información ya descrita, calcule $ $ del modelo 1 utilizando numpy - Sus resultados deberían ser los mismos que los resultados obtenidos en la clase de la semana pasada al correr:

    X1 = [‘const’, ‘avexpr’]

    reg1 = sm.OLS(df2[‘logpgp95’], df2[X1], missing=‘drop’).fit()}

Vamos a cargar la base de datos maketable1 y eliminar los valores nulos, tal que:

Haussman_1 = pd.read_stata('/Users/jorge/Desktop/Universidad/Semestre 8 (último)/Econometria 2/Tarea examen 1/maketable1.dta')

# Borre los NA's
Haussman_1 = Haussman_1.dropna(subset = ['logpgp95', 'avexpr','cons1','cons90','democ00a','cons00a','extmort4','logem4','baseco'])
Haussman_1.head(6).round(2)
##    shortnam  euro1900  excolony  avexpr  ...    extmort4  logem4  loghjypl  baseco
## 1       AGO       8.0       1.0    5.36  ...  280.000000    5.63     -3.41     1.0
## 3       ARG      60.0       1.0    6.39  ...   68.900002    4.23     -0.87     1.0
## 5       AUS      98.0       1.0    9.32  ...    8.550000    2.15     -0.17     1.0
## 11      BFA       0.0       1.0    4.45  ...  280.000000    5.63     -3.54     1.0
## 12      BGD       0.0       1.0    5.14  ...   71.410004    4.27     -2.06     1.0
## 19      BOL      30.0       1.0    5.64  ...   71.000000    4.26     -1.97     1.0
## 
## [6 rows x 13 columns]

Vamos a crear una tabla rápida en un chunk de R para mejorar la visualización de los datos, de la siguiente manera:

DT::datatable(py$Haussman_1[1:5])

Añadimos una constante a la base, tal que:

Haussman_1['const'] = 1
Haussman_1.head(6).round(2)
##    shortnam  euro1900  excolony  avexpr  ...  logem4  loghjypl  baseco  const
## 1       AGO       8.0       1.0    5.36  ...    5.63     -3.41     1.0      1
## 3       ARG      60.0       1.0    6.39  ...    4.23     -0.87     1.0      1
## 5       AUS      98.0       1.0    9.32  ...    2.15     -0.17     1.0      1
## 11      BFA       0.0       1.0    4.45  ...    5.63     -3.54     1.0      1
## 12      BGD       0.0       1.0    5.14  ...    4.27     -2.06     1.0      1
## 19      BOL      30.0       1.0    5.64  ...    4.26     -1.97     1.0      1
## 
## [6 rows x 14 columns]

Ahora, vamos a definir a las variables endógena y exógenas, de la siguiente manera:

Y = np.asarray(Haussman_1['logpgp95'])

X = np.asarray(Haussman_1[['const','avexpr']])

Ya que tenemos nuestras variables, procedemos a calcular \(\hat{\beta}\) de la siguiente manera:

β_hat = np.linalg.solve(X.T @ X, X.T @ Y)

Y, finalmente, imprimimos los resultados obtenidos para \(\hat{\beta_0}\) y \(\hat{\beta_1}\), de la siguiente manera:

print(f'β_0 = {β_hat[0]:.2}')
## β_0 = 4.8
print(f'β_1 = {β_hat[1]:.2}')
## β_1 = 0.5

Vamos a comparar dichos valores con los obtenidos mediante una regresión por MCO. Vamos a calcular la regresión a continuación:

# Definimos a las variables endógena y exógenas
Y = Haussman_1['logpgp95']
X = Haussman_1[['const','avexpr']]

#Se corre la regresión
regreg = sm.OLS(endog = Y, exog = X, missing='drop').fit()
print(regreg.summary())
##                             OLS Regression Results                            
## ==============================================================================
## Dep. Variable:               logpgp95   R-squared:                       0.550
## Model:                            OLS   Adj. R-squared:                  0.542
## Method:                 Least Squares   F-statistic:                     69.64
## Date:                Tue, 13 Apr 2021   Prob (F-statistic):           1.84e-11
## Time:                        21:20:35   Log-Likelihood:                -59.597
## No. Observations:                  59   AIC:                             123.2
## Df Residuals:                      57   BIC:                             127.3
## Df Model:                           1                                         
## Covariance Type:            nonrobust                                         
## ==============================================================================
##                  coef    std err          t      P>|t|      [0.025      0.975]
## ------------------------------------------------------------------------------
## const          4.7901      0.397     12.078      0.000       3.996       5.584
## avexpr         0.4967      0.060      8.345      0.000       0.378       0.616
## ==============================================================================
## Omnibus:                        7.571   Durbin-Watson:                   1.969
## Prob(Omnibus):                  0.023   Jarque-Bera (JB):                6.946
## Skew:                          -0.817   Prob(JB):                       0.0310
## Kurtosis:                       3.397   Cond. No.                         30.7
## ==============================================================================
## 
## Notes:
## [1] Standard Errors assume that the covariance matrix of the errors is correctly specified.

Como podemos observar, la similitud en ambos resultados obtenidos es muy grande, lo que nos estaría diciendoq que tenemos un buen modelo en general, además de tener coeficientes significativos. Aún podemos hacer algo más, podríamos graficar las variables en un chunk de R para poder ver de mejor manera la relación entre estas. Vamos a hacerlo a continuación:

# Creamos un objeto con los datos
Hauss <- py$Haussman_1

# Graficamos
Hauss %>% 
  e_charts(x = logpgp95) %>% 
  e_scatter(avexpr, name = "Var exógena", symbol_size = 4) %>% 
  e_lm(avexpr ~ logpgp95, name = "Modelo") %>% 
  e_title(
    text = "Regresión",
    subtext = "Visualizando los datos"
  ) %>% 
  e_theme("chalk") %>% 
  e_tooltip(trigger = "axis") %>% 
  e_toolbox_feature(
    feature = "saveAsImage",
    title = "Save as image"
  )
Econometría II
Ejercicios teóricos y prácticos