Sesión 22 (B) — El caso nox y lnox: la parte propia, el VIF y el error estándar

Índice

Descripción de la práctica

La lección 13 dejó un caso sin explicar y la 14 lo explicó: en price ~ rooms + nox + lnox los dos \(t\) de la contaminación son pequeños y el \(F\) de excluirlas juntas vale \(28\). La explicación fue una longitud: la parte propia de nox, lo que queda de ella después de proyectarla sobre los demás regresores, mide \(2{,}86\), cuando el regresor en desviaciones mide \(26\). Esta práctica hace esa cuenta con Gretl, paso a paso, y comprueba que el error estándar de la tabla es \(\mathfrak s\) dividido por esa longitud.

La práctica es también la comprobación numérica del enunciado de la lección 12, \(\mathrm{ee}(\hat\beta_j)=\mathfrak s/\Vert\tilde{\boldsymbol x}_j\Vert_e\), que allí no se demostró.

Objetivos

  1. Obtener la parte propia de nox con la regresión auxiliar sobre rooms y lnox, y medir su longitud de dos maneras: como raíz de la \(\mathrm{SRC}\) auxiliar y como \(\Vert\boldsymbol x_j-\mu_{\boldsymbol x_j}\boldsymbol 1\Vert_e\sqrt{1-R_j^2}\) (las dos coinciden por Pitágoras en la regresión auxiliar: apéndice, sección 5.4 (html)).
  2. Comprobar que \(\mathfrak s/\Vert\tilde{\boldsymbol x}_j\Vert_e\) es el error estándar que imprime Gretl, con todos los decimales.
  3. Calcular el VIF a mano y con el comando vif, y leer su raíz como el factor por el que se ha multiplicado el error estándar.
  4. Repetir la cuenta sin lnox para ver de dónde sale el factor \(8{,}7\) de la lección 14.
  5. Leer los intervalos de confianza de nox con y sin lnox, y la correlación entre los dos estimadores.

Comandos nuevos de esta práctica. Casi todo se ha visto ya: open, ols y sus accesores $sigma, $stderr, $rsq, $ess, $coeff y $df (sesiones 11 a 18), critical (sesión 18) y $vcv (actividad 3 (html) de la práctica B de la sesión 20). Recuerde que los accesores se refieren siempre al último modelo estimado: por eso, en esta práctica, se guardan en escalares antes de estimar el siguiente. Lo nuevo:

vif
se escribe después de estimar un modelo con al menos dos regresores no constantes, y para cada regresor calcula \(1/(1-R_j^2)\), con \(R_j^2\) el de la regresión de ese regresor sobre los demás. En la ventana del modelo es Análisis -> Colinealidad.
$vcv[3,4]
$vcv es la matriz de varianzas y covarianzas de los coeficientes, y entre corchetes van la fila y la columna. Los coeficientes siguen el orden de la lista de regresores, así que [3,4] es la covarianza entre el tercero (nox) y el cuarto (lnox), y [3,3] la varianza del tercero.

Actividad 1 - El modelo y la regresión auxiliar

Abra hprice2 y estime price sobre rooms, nox y lnox. Anote \(\mathfrak s\) y el error estándar de nox. Después estime la regresión auxiliar: nox sobre la constante, rooms y lnox. Su \(\mathrm{SRC}\) es la longitud al cuadrado de la parte propia de nox, y su \(R^2\) es el \(R_j^2\) de la lección 14.

Dos regresiones seguidas. La primera es el modelo completo: guardamos en s la ``D.T. de la regresión'' de Gretl, \(\mathfrak s\) ($sigma), y en ee_nox el error estándar de nox. La segunda es la regresión auxiliar: nox como regresando sobre la constante, rooms y lnox. De ella guardamos el \(R^2\) y la raíz de su \(\mathrm{SRC}\) ($ess), que es la longitud de la parte propia de nox. Cinco printf imprimen el \(R^2\) auxiliar, la longitud de la parte propia (\(\sqrt{\mathrm{SRC}}\)), la longitud de nox en desviaciones, \(\sqrt{1-R^2}\) (el seno del ángulo) y el producto de esas dos últimas, que coincide con la parte propia.

o bien teclee en línea de comandos:

open hprice2.gdt --quiet
ols price const rooms nox lnox
scalar s = $sigma
scalar ee_nox = $stderr(nox)
Modelo 1: MCO, usando las observaciones 1-506
Variable dependiente: price

             coeficiente   Desv. típica   Estadístico t   valor p 
  ----------------------------------------------------------------
  const       -8566,88       9983,25         -0,8581      0,3912  
  rooms        8161,84        418,340        19,51        1,65e-63 ***
  nox           404,190      2198,85          0,1838      0,8542  
  lnox       -13262,2       12655,7          -1,048       0,2952  

Media de la vble. dep.  22511,51   D.T. de la vble. dep.   9208,856
Suma de cuad. residuos  1,99e+10   D.T. de la regresión    6290,373
R-cuadrado              0,536175   R-cuadrado corregido    0,533404
F(3, 502)               193,4352   Valor p (de F)          2,36e-83
Log-verosimilitud      -5141,843   Criterio de Akaike      10291,69
Criterio de Schwarz     10308,59   Crit. de Hannan-Quinn   10298,32

Sin considerar la constante, el valor p más alto fue el de la variable 3 (nox)
ols nox const rooms lnox
scalar R2aux = $rsq
scalar longPropia = sqrt($ess)
printf "\nR2 de la regresion auxiliar        = %.4f\n", R2aux
printf "||parte propia de nox||  = sqrt(SRC) = %.4f\n", longPropia
printf "||nox en desviaciones||  = %.4f\n", sqrt(sum((nox - mean(nox))^2))
printf "sqrt(1 - R2aux)          = %.4f   (= seno del angulo)\n", sqrt(1 - R2aux)
printf "producto                 = %.4f\n", sqrt(sum((nox - mean(nox))^2))*sqrt(1 - R2aux)
Modelo 2: MCO, usando las observaciones 1-506
Variable dependiente: nox

            coeficiente   Desv. típica  Estadístico t   valor p 
  --------------------------------------------------------------
  const     -4,13352       0,0837444      -49,36       5,93e-195 ***
  rooms      0,000568365   0,00848297       0,06700    0,9466   
  lnox       5,71719       0,0295918      193,2        0,0000    ***

Media de la vble. dep.  5,549783   D.T. de la vble. dep.   1,158395
Suma de cuad. residuos  8,183946   D.T. de la regresión    0,127555
R-cuadrado              0,987923   R-cuadrado corregido    0,987875
F(2, 503)               20573,26   Valor p (de F)          0,000000
Log-verosimilitud       325,4808   Criterio de Akaike     -644,9615
Criterio de Schwarz    -632,2819   Crit. de Hannan-Quinn  -639,9886


R2 de la regresion auxiliar        = 0,9879
||parte propia de nox||  = sqrt(SRC) = 2,8608
||nox en desviaciones||  = 26,0317
sqrt(1 - R2aux)          = 0,1099   (= seno del angulo)
producto                 = 2,8608

Lo que debe observar

La regresión auxiliar tiene un \(R^2\) de \(0{,}9879\): rooms y lnox reproducen el \(98{,}8\%\) de la variación de nox, casi todo por cuenta de lnox (mire los dos \(t\)). La parte propia mide \(2{,}861\), y las dos maneras de calcularla coinciden: raíz de la \(\mathrm{SRC}\) auxiliar, o longitud en desviaciones por \(\sqrt{1-R_j^2}=0{,}110\), que es el seno del ángulo entre nox y el subespacio de los otros dos regresores, unos \(6^\circ\).

Actividad 2 - El error estándar, reconstruido

Divida \(\mathfrak s\) entre la longitud de la parte propia y compare con la columna ``Desv. típica'' de la tabla (el error estándar). Calcule también el VIF y descomponga el error estándar en los dos factores de la lección 14.

Cinco printf con los escalares guardados: \(\mathfrak s\) del modelo completo; \(\mathfrak s\) entre la longitud de la parte propia; el error estándar que imprimió Gretl; el VIF con su raíz, calculados a partir del \(R^2\) auxiliar; y la descomposición de la lección 14, \(\mathfrak s\) entre la longitud de nox en desviaciones (el error estándar ``como si estuviera solo'') multiplicado por \(\sqrt{\mathrm{VIF}}\).

en línea de comandos:

printf "s del modelo completo               = %.4f\n", s
printf "s / ||parte propia de nox||         = %.4f\n", s/longPropia
printf "error estandar de nox segun Gretl   = %.4f\n", ee_nox
printf "VIF = 1/(1 - R2aux)                 = %.3f      sqrt(VIF) = %.3f\n", 1/(1-R2aux), 1/sqrt(1-R2aux)
printf "s / ||nox en desviaciones||         = %.3f      x sqrt(VIF) = %.3f\n", s/sqrt(sum((nox - mean(nox))^2)), s/sqrt(sum((nox - mean(nox))^2))/sqrt(1-R2aux)
s del modelo completo               = 6290,3733
s / ||parte propia de nox||         = 2198,8472
error estandar de nox segun Gretl   = 2198,8472
VIF = 1/(1 - R2aux)                 = 82,802      sqrt(VIF) = 9,100
s / ||nox en desviaciones||         = 241,643      x sqrt(VIF) = 2198,847

Lo que debe observar

\(6290{,}37/2{,}8608=2198{,}85\), el error estándar de la tabla con cuatro decimales. El enunciado de la lección 12 se cumple sobre datos reales. Y la descomposición: \(241{,}6\) es el error estándar que nox tendría si no compartiera nada con los demás regresores, \(\mathfrak s\) entre su longitud completa en desviaciones; multiplicado por \(\sqrt{\mathrm{VIF}}=9{,}10\) da los \(2198{,}85\). El VIF es \(82{,}8\): la varianza se ha multiplicado por \(83\), el error estándar por \(9\).

Actividad 3 - El comando vif

Vuelva al modelo completo. En la ventana del modelo, el menú Análisis -> Colinealidad calcula los factores de inflación de todos los regresores.

Hay que volver a estimar el modelo completo (con --quiet, para no repetir la tabla), porque vif actúa sobre el último modelo estimado y el último fue la regresión auxiliar.

o bien teclee en línea de comandos:

ols price const rooms nox lnox --quiet
vif
Factores de inflación de varianza (VIF)
Mínimo valor posible = 1.0
Valores mayores que 10.0 pueden indicar un problema de colinealidad

       rooms    1,103
         nox   82,802
        lnox   82,922

VIF(j) = 1/(1 - R(j)^2), donde R(j) es el coeficiente de correlación múltiple
entre la variable j y las demás variables independientes

Lo que debe observar

Gretl devuelve el \(82{,}8\) de la Actividad 2 para nox, \(82{,}9\) para lnox y \(1{,}1\) para rooms: las dos medidas de contaminación comparten casi toda su variación y ninguna comparte casi nada con rooms. La nota al pie de la salida define el VIF como \(1/(1-R_j^2)\) con el \(R_j^2\) de la regresión auxiliar, que es lo que usted acaba de calcular, y da la regla del \(10\). Léala como lo que es, una convención: \(10\) significa error estándar multiplicado por \(3{,}2\).

Actividad 4 - La misma cuenta sin lnox

Estime price ~ rooms + nox y repita: parte propia de nox sobre rooms, \(\mathfrak s\) dividido por ella, VIF.

La misma secuencia con el modelo sin lnox: la estimación, con su tabla y un printf que la resume (coeficiente, error estándar y \(t\) de nox, y \(\mathfrak s\)); \(\mathfrak s\) guardado en s_sin; la regresión auxiliar de nox sobre rooms (ahora un solo regresor), con dos printf: la longitud de la parte propia, el \(R^2\) auxiliar y el VIF, y el cociente \(\mathfrak s\) entre esa longitud; y vif tras volver a estimar el modelo de precios.

en línea de comandos:

ols price const rooms nox
printf "price ~ rooms + nox:   coef(nox) = %.2f   ee(nox) = %.2f   t = %.2f   s = %.2f\n", $coeff(nox), $stderr(nox), $coeff(nox)/$stderr(nox), $sigma
scalar s_sin = $sigma
ols nox const rooms --quiet
printf "parte propia de nox sobre rooms:  ||.|| = %.3f    R2aux = %.4f    VIF = %.3f\n", sqrt($ess), $rsq, 1/(1-$rsq)
printf "s / ||parte propia|| = %.2f\n", s_sin/sqrt($ess)
ols price const rooms nox --quiet
vif
Modelo 3: MCO, usando las observaciones 1-506
Variable dependiente: price

             coeficiente   Desv. típica   Estadístico t   valor p 
  ----------------------------------------------------------------
  const       -18423,4       3346,66         -5,505       5,89e-08 ***
  rooms         8178,56       418,076        19,56        8,62e-64 ***
  nox          -1884,68       253,573        -7,432       4,62e-13 ***

Media de la vble. dep.  22511,51   D.T. de la vble. dep.   9208,856
Suma de cuad. residuos  1,99e+10   D.T. de la regresión    6290,987
R-cuadrado              0,535161   R-cuadrado corregido    0,533312
F(2, 503)               289,5472   Valor p (de F)          2,12e-84
Log-verosimilitud      -5142,396   Criterio de Akaike      10290,79
Criterio de Schwarz     10303,47   Crit. de Hannan-Quinn   10295,77

price ~ rooms + nox:   coef(nox) = -1884,68   ee(nox) = 253,57   t = -7,43   s = 6290,99
parte propia de nox sobre rooms:  ||.|| = 24,809    R2aux = 0,0917    VIF = 1,101
s / ||parte propia|| = 253,57

Factores de inflación de varianza (VIF)
Mínimo valor posible = 1.0
Valores mayores que 10.0 pueden indicar un problema de colinealidad

       rooms    1,101
         nox    1,101

VIF(j) = 1/(1 - R(j)^2), donde R(j) es el coeficiente de correlación múltiple
entre la variable j y las demás variables independientes

Lo que debe observar

Sin lnox, la parte propia de nox mide \(24{,}81\), casi toda su longitud en desviaciones (\(26{,}03\)), porque rooms comparte poco con ella: \(\mathrm{VIF}=1{,}1\). El error estándar es \(253{,}57\), y \(6290{,}99/24{,}809=253{,}57\) de nuevo. Entre los dos modelos, \(\mathfrak s\) casi no cambia (\(6291{,}0\) frente a \(6290{,}4\)) y el número de observaciones es el mismo. Lo único que ha cambiado es la longitud propia de nox: de \(24{,}81\) a \(2{,}86\), un factor \(8{,}7\), y el error estándar sube en ese factor, de \(253{,}6\) a \(2198{,}9\).

Actividad 5 - Los intervalos y la correlación entre estimadores

Construya el intervalo al \(95\%\) de nox en los dos modelos, el de lnox en el completo, y lea en la matriz de varianzas de los estimadores (Análisis -> Matriz de covarianzas de los coeficientes) la correlación entre \(\hat\beta_{\text{nox}}\) y \(\hat\beta_{\text{lnox}}\).

Con el modelo completo estimado, critical(t, $df, 0.025) da el valor crítico de la \(t\) con los grados de libertad del modelo (sesión 18), y cada intervalo es el coeficiente más y menos tc por su error estándar: primero el de nox y el de lnox en el modelo completo. En el printf, %% imprime un signo de tanto por ciento (un % solo abriría un hueco). La correlación entre los dos estimadores es su covarianza dividida por la raíz del producto de sus varianzas, las tres leídas en $vcv. Las dos últimas líneas vuelven a estimar el modelo sin lnox e imprimen el intervalo de nox en ese modelo, con el mismo tc.

en línea de comandos:

ols price const rooms nox lnox --quiet
scalar tc = critical(t, $df, 0.025)
printf "IC 95%% de nox  con lnox en el modelo: [%.1f ; %.1f]\n", $coeff(nox) - tc*$stderr(nox), $coeff(nox) + tc*$stderr(nox)
printf "IC 95%% de lnox con nox  en el modelo: [%.1f ; %.1f]\n", $coeff(lnox) - tc*$stderr(lnox), $coeff(lnox) + tc*$stderr(lnox)
printf "correlacion entre los dos estimadores: %.4f\n", $vcv[3,4]/sqrt($vcv[3,3]*$vcv[4,4])
ols price const rooms nox --quiet
printf "IC 95%% de nox  sin lnox: [%.1f ; %.1f]\n", $coeff(nox) - tc*$stderr(nox), $coeff(nox) + tc*$stderr(nox)
IC 95% de nox  con lnox en el modelo: [-3915,9 ; 4724,3]
IC 95% de lnox con nox  en el modelo: [-38126,8 ; 11602,3]
correlacion entre los dos estimadores: -0,9933
IC 95% de nox  sin lnox: [-2382,9 ; -1386,5]

Lo que debe observar

Con lnox en el modelo, el intervalo de nox va de \(-3\,900\) a \(+4\,700\) dólares por unidad de contaminación: los datos no determinan ni el signo. Sin lnox, de \(-2\,400\) a \(-1\,400\): un coeficiente negativo medido con precisión. Y la correlación entre los dos estimadores es \(-0{,}993\): es la nube de la práctica A (actividad 2 (html)) con datos reales. Los coeficientes \(404\) y \(-13\,262\) de la tabla son un reparto casi arbitrario de un efecto que, tomado en conjunto, es el de siempre; con otra muestra de viviendas, el reparto sería otro y el ajuste casi el mismo.

Preguntas de interpretación para la clase

  1. En la Actividad 1, el \(t\) de rooms en la regresión auxiliar es \(0{,}07\). ¿Qué dice eso sobre la parte propia de nox, y por qué el VIF de rooms en el modelo de precios es \(1{,}1\) y no \(1\)?
  2. La descomposición de la Actividad 2 escribe el error estándar como \(241{,}6\cdot9{,}10\). ¿Cuál de los dos factores cambia si se duplican las observaciones manteniendo la misma correlación entre nox y lnox, y cómo?
  3. Un compañero dice: ``el VIF de nox es \(82\), así que hay que quitar nox del modelo''. ¿Qué habría que preguntarle antes de aceptar la recomendación?
  4. Los intervalos de nox con y sin lnox tienen centros muy distintos, \(404\) frente a \(-1\,885\), aunque el segundo está contenido en el primero. ¿Cuál de los dos estima ``el efecto de la contaminación''? ¿Miden lo mismo?
  5. Con la correlación \(-0{,}993\) entre los dos estimadores, ¿qué combinación de \(\beta_{\text{nox}}\) y \(\beta_{\text{lnox}}\) estaría bien medida? Diga cómo la contrastaría.

Para profundizar

  • Lección 14 (lección 14), ``Cuánto se acorta: el factor de inflación de la varianza'' y ``El caso nox y lnox con números''.
  • Lección 12 (lección 12), el enunciado del error estándar con \(k\) regresores.
  • Wooldridge, J. M. (2020). Introductory Econometrics, cap. 3, sección 3.4, ecuación de \(\mathrm{Var}(\hat\beta_j)\) y discusión del VIF.
  • Manual de Gretl: comando vif; accesores $sigma, $stderr y $vcv.

Código completo de la práctica

Enlace al guión: S22-Prct-B-hprice2-vif.inp

Respuestas

  1. El \(t\) de rooms en la auxiliar. Que, una vez está lnox, rooms apenas añade nada a la reproducción de nox: la parte propia de nox es, en la práctica, lo que nox no comparte con lnox. El VIF de rooms es \(1{,}1\) y no \(1\) porque rooms sí comparte algo con la pareja nox y lnox (barrios más contaminados tienen viviendas algo distintas): su \(R_j^2\) es \(0{,}09\). Es un VIF pequeño, y su raíz, \(1{,}05\), dice que el error estándar de rooms apenas se ha inflado.
  2. Duplicar las observaciones. El primer factor: \(\mathfrak s\) apenas cambia y la longitud de nox en desviaciones se multiplica por \(\sqrt2\), así que \(241{,}6\) pasa a unos \(171\). El segundo, \(\sqrt{\mathrm{VIF}}\), depende solo del ángulo, y con la misma correlación no se mueve. El error estándar baja a \(2198{,}9/\sqrt2\approx1\,555\): mejor, pero sigue siendo nueve veces el que nox tendría sola. La lección 14 lo dijo: más datos alargan las partes propias sin cambiar el VIF.
  3. ``Hay que quitar nox''. Para qué se quiere el coeficiente. Si la pregunta es el efecto de la contaminación sobre el precio, nox y lnox son la misma contaminación en dos escalas y quedarse con una es razonable: la lección 13 mostró que los dos modelos con una sola medida ajustan igual de bien, y no hay ninguna razón para preferir quitar nox a quitar lnox. Si la pregunta fuera distinguir un efecto lineal de uno logarítmico, estos datos no lo permiten, y quitar una de las dos no resuelve la pregunta: la esconde. El VIF mide un coste; no dicta el remedio.
  4. Qué mide cada intervalo. Cosas distintas. Sin lnox, \(\beta_{\text{nox}}\) es el efecto de la contaminación con rooms fijo, y el intervalo lo estima con precisión. Con lnox, \(\beta_{\text{nox}}\) es el efecto de nox manteniendo fijo su propio logaritmo, que en la muestra casi no ocurre: la parte propia mide \(2{,}86\). El segundo coeficiente responde a una pregunta que los datos apenas contienen, y su intervalo lo refleja. Ninguno de los dos está mal; el segundo está mal leído si se toma por el primero.
  5. La combinación bien medida. La que corresponde a mover nox y lnox juntas, como van en los datos: en torno a la media de nox, \(\bar x\approx5{,}55\), un aumento de una unidad de nox aumenta lnox en aproximadamente \(1/5{,}55=0{,}18\), así que la combinación \(\beta_{\text{nox}}+0{,}18\,\beta_{\text{lnox}}\) es la que la muestra puede estimar; con \(404\) y \(-13\,262\) da unos \(-1\,985\), cerca del \(-1\,885\) del modelo sin lnox. Se contrasta con restrict escribiendo b[nox] + 0.18*b[lnox] = c para el valor \(c\) que se quiera, o pidiendo su intervalo con la matriz de varianzas: la varianza de la combinación es \(a^\top Va\) con \(a=(0,0,1,0{,}18)\).

Autor: Marcos Bujosa

Created: 2026-10-12 lun 00:55