Sesión 14 (B) — Del R² al R² ajustado: coeficientes parciales en hprice2

Índice

Descripción de la práctica

Retomamos hprice2, ya usado en la práctica de regresión simple con datos reales, y damos el paso a la regresión múltiple: primero con dos regresores (rooms y nox a la vez), y después con un tercero (stratio, la proporción alumnos/profesor de cada zona). El hilo conductor es doble: por un lado, observar cómo cambia el coeficiente de rooms al pasar del modelo simple al múltiple (efecto parcial, lección 10); por otro, comprobar con datos reales una propiedad algebraica de MCO anunciada en la lección 8 —el \(R^2\) nunca disminuye al añadir un regresor— y ver por qué esto exige corregirlo con el \(R^2\) ajustado (\(\bar R^2\)), que sí puede bajar.

Objetivo

  1. Estimar un modelo con dos regresores no constantes (rooms, nox) y comparar sus coeficientes con los de las regresiones simples ya conocidas.
  2. Ampliar el modelo con un tercer regresor (stratio) e interpretar su signo.
  3. Verificar con datos reales que \(R^2\) nunca disminuye al añadir regresores, sea cual sea su aporte real.
  4. Calcular \(\bar R^2\) ``a mano'' y contrastarlo con el que reporta Gretl, entendiendo por qué \(\bar R^2\) sí puede bajar.
  5. Practicar, una vez más, la lectura ceteris paribus de los coeficientes sin caer en lenguaje causal.

Actividad 1 - Reapertura de hprice2 y etiquetas

en línea de comandos:

open hprice2.gdt --quiet
setinfo price   -d "Precio mediano de la vivienda ($)" -n "Precio ($)"
setinfo rooms   -d "Número medio de habitaciones" -n "Habitaciones"
setinfo nox     -d "Concentración de óxidos de nitrógeno" -n "Contaminación (NOx)"
setinfo stratio -d "Ratio alumnos/profesor en la zona" -n "Ratio alumnos/profesor"

summary price rooms nox stratio

Recuerde de la práctica anterior que rooms y nox ya se usaron por separado en dos regresiones simples: retomamos aquí esos mismos coeficientes como punto de comparación.

Actividad 2 - Dos regresores no constantes a la vez: price~rooms+nox

Estimamos el modelo con ambos regresores a la vez, y recordamos (reestimándolas aquí mismo, para tener los números a mano) las dos regresiones simples correspondientes.

Antes de mirar el resultado: ¿espera que el coeficiente de rooms sea muy distinto en la regresión simple y en la múltiple? ¿Y el de nox?

en línea de comandos:

ols price const rooms
ols price const nox
ols price const rooms nox
corr rooms nox

Lo que debe observar: compare \(\hat\beta_{\text{rooms}}\) en price~rooms frente a price~rooms+nox, y \(\hat\beta_{\text{nox}}\) en price~nox frente a price~rooms+nox.

Modelo 1: MCO, usando las observaciones 1-506
Variable dependiente: price

             coeficiente   Desv. típica   Estadístico t   valor p 
  ----------------------------------------------------------------
  const       -34796,2       2651,53         -13,12       4,74e-34 ***
  rooms         9119,55       419,339         21,75       1,87e-74 ***

Media de la vble. dep.  22511,51   D.T. de la vble. dep.   9208,856
Suma de cuad. residuos  2,21e+10   D.T. de la regresión    6620,865
R-cuadrado              0,484110   R-cuadrado corregido    0,483086
F(1, 504)               472,9521   Valor p (de F)          1,87e-74
Log-verosimilitud      -5168,759   Criterio de Akaike      10341,52
Criterio de Schwarz     10349,97   Crit. de Hannan-Quinn   10344,83


Modelo 2: MCO, usando las observaciones 1-506
Variable dependiente: price

             coeficiente   Desv. típica   Estadístico t   valor p 
  ----------------------------------------------------------------
  const       41307,8        1816,18          22,74       2,53e-79 ***
  nox         -3386,85        320,362        -10,57       9,93e-24 ***

Media de la vble. dep.  22511,51   D.T. de la vble. dep.   9208,856
Suma de cuad. residuos  3,51e+10   D.T. de la regresión    8339,566
R-cuadrado              0,181508   R-cuadrado corregido    0,179884
F(1, 504)               111,7662   Valor p (de F)          9,93e-24
Log-verosimilitud      -5285,537   Criterio de Akaike      10575,07
Criterio de Schwarz     10583,53   Crit. de Hannan-Quinn   10578,39


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


corr(rooms, nox) = -0,30282803
Bajo la hipótesis nula de no correlación:
 t(504) = -7,13342, con valor p a dos colas 0,0000

Aquí conviene mirar los dos coeficientes por separado, porque no se comportan igual:

  • rooms apenas se mueve: pasa de \(9119{,}55\) a \(8178{,}56\), un descenso de aproximadamente el \(10\%\).
  • nox, en cambio, se reduce casi a la mitad: de \(-3386{,}85\) a \(-1884{,}68\).

Es decir, el mismo par de regresores, estimado conjuntamente, deja casi intacto a uno y transforma al otro. Conviene resistir la tentación de explicarlo únicamente por la correlación entre ambos: la correlación que acaba de imprimir el guion es \(-0{,}3028\), menor en valor absoluto que el \(+0{,}4647\) entre sqft y bedrms de la práctica de Ramanathan, y sin embargo aquí uno de los dos desplazamientos es mucho mayor.

La razón es que el desplazamiento del coeficiente de \(\boldsymbol{x}_2\) al añadir \(\boldsymbol{x}_3\) no depende solo de cuán correlacionados estén, sino del producto \[ \hat\beta_3\frac{\sigma_{\boldsymbol{x}_2\boldsymbol{x}_3}}{\sigma^2_{\boldsymbol{x}_2}}, \] donde interviene también la magnitud del coeficiente del regresor añadido y la escala de cada variable —y rooms (habitaciones, entre 3,6 y 8,8) y nox (partes por cien millones, entre 3,9 y 8,7) viven en escalas muy distintas—. La correlación dice si habrá desplazamiento; no dice cuánto.

Actividad 3 - Un tercer regresor: stratio

Añadimos el ratio alumnos/profesor de la zona, una variable que cabe esperar relacionada negativamente con el precio (zonas con colegios más masificados, en principio menos atractivas).

en línea de comandos:

ols price const rooms nox stratio

Antes de mirar el resultado: ¿qué signo espera para el coeficiente de stratio?

Modelo 4: MCO, usando las observaciones 1-506
Variable dependiente: price

             coeficiente   Desv. típica   Estadístico t   valor p 
  ----------------------------------------------------------------
  const        9458,01       4371,41          2,164       0,0310   **
  rooms        7000,63        409,150        17,11        4,83e-52 ***
  nox         -1693,33        236,250        -7,168       2,75e-12 ***
  stratio     -1166,96        128,764        -9,063       2,85e-18 ***

Media de la vble. dep.  22511,51   D.T. de la vble. dep.   9208,856
Suma de cuad. residuos  1,71e+10   D.T. de la regresión    5837,767
R-cuadrado              0,600521   R-cuadrado corregido    0,598133
F(3, 502)               251,5451   Valor p (de F)          1,31e-99
Log-verosimilitud      -5104,059   Criterio de Akaike      10216,12
Criterio de Schwarz     10233,02   Crit. de Hannan-Quinn   10222,75

Lo que debe observar

El coeficiente de stratio es \(-1\,167\): un alumno más por profesor en la zona se asocia, manteniendo fijas habitaciones y contaminación, con unos \(1\,200\) dólares menos de precio mediano. Compare de nuevo los coeficientes de rooms y nox con los de la Actividad 2: rooms baja de \(8\,179\) a \(7\,001\) y nox de \(-1\,885\) a \(-1\,693\). Vuelven a moverse, porque stratio está correlacionada con ambos; cada coeficiente responde a la pregunta ``manteniendo fijos los demás regresores del modelo'', y esa lista acaba de cambiar.

Actividad 4 - \(R^2\) nunca disminuye: los cuatro modelos a la vez

Reunimos los cuatro modelos ya estimados (dos simples, dos múltiples) y comparamos su \(R^2\).

en línea de comandos:

ols price const rooms --quiet
scalar r2_rooms = $rsq

ols price const nox --quiet
scalar r2_nox = $rsq

ols price const rooms nox --quiet
scalar r2_rooms_nox = $rsq

ols price const rooms nox stratio --quiet
scalar r2_todos = $rsq

printf "R2 price~rooms                = %.4f\n", r2_rooms
printf "R2 price~nox                  = %.4f\n", r2_nox
printf "R2 price~rooms+nox            = %.4f\n", r2_rooms_nox
printf "R2 price~rooms+nox+stratio    = %.4f\n", r2_todos
R2 price~rooms                = 0,4841
R2 price~nox                  = 0,1815
R2 price~rooms+nox            = 0,5352
R2 price~rooms+nox+stratio    = 0,6005

Observe que \(R^2\) del modelo con tres regresores no constantes es, como mínimo, igual al de cualquiera de los modelos que ``contiene'' (price~rooms+nox y, transitivamente, los dos simples). Esto no es una casualidad de estos datos: es la propiedad puramente mecánica de MCO anunciada en la lección 8 (``un \(R^2\) alto no certifica nada por sí solo'', y en particular, nunca baja al añadir un regresor, aporte este lo que aporte).

Actividad 5 - Del \(R^2\) al \(R^2\) ajustado

Si \(R^2\) nunca baja, ¿cómo distinguir un regresor que de verdad mejora el modelo de uno que solo lo ``infla'' artificialmente? Gretl reporta el \(R^2\) con $rsq, pero no ofrece ningún accesor ($...) para el \(R^2\) ajustado —aunque sí lo imprime, como ``R-cuadrado corregido'', en la salida habitual de =ols=—, así que lo vamos a recalcular a mano (véase la sección Apéndice - De dónde sale la fórmula del \(R^2\) ajustado).

en línea de comandos:

ols price const rooms nox --quiet
scalar Rbarsq = 1 - (1-$rsq)*($nobs-1)/($nobs-$ncoeff)
printf "Modelo price~rooms+nox\n"
printf "  R2          = %.4f\n", $rsq
printf "  R2 ajustado = %.4f\n", Rbarsq

ols price const rooms nox stratio --quiet
scalar Rbarsq = 1 - (1-$rsq)*($nobs-1)/($nobs-$ncoeff)
printf "Modelo price~rooms+nox+stratio\n"
printf "  R2          = %.4f\n", $rsq
printf "  R2 ajustado = %.4f\n", Rbarsq

ols price const rooms nox stratio radial --quiet
scalar Rbarsq = 1 - (1-$rsq)*($nobs-1)/($nobs-$ncoeff)
printf "Modelo price~rooms+nox+stratio+radial\n"
printf "  R2          = %.4f\n", $rsq
printf "  R2 ajustado = %.4f\n", Rbarsq
Modelo price~rooms+nox
  R2          = 0,5352
  R2 ajustado = 0,5333
Modelo price~rooms+nox+stratio
  R2          = 0,6005
  R2 ajustado = 0,5981
Modelo price~rooms+nox+stratio+radial
  R2          = 0,6008
  R2 ajustado = 0,5976

Lea la salida en dos pasos, porque contiene los dos comportamientos posibles.

Primer paso: un regresor que aporta. Al pasar de price~rooms+nox a price~rooms+nox+stratio, suben los dos índices: \(R^2\) y \(\bar R^2\). stratio aporta lo bastante como para compensar con creces el parámetro adicional que hay que estimar.

Segundo paso: un regresor que no aporta. Ahora añadimos radial (un índice de accesibilidad a las autopistas radiales) al modelo que acabamos de construir. Mire las dos últimas líneas con atención, porque es el momento de la práctica:

  • \(R^2\) sube: de \(0{,}6005\) a \(0{,}6008\). Tenía que subir; no sabe hacer otra cosa.
  • \(\bar R^2\) baja: de \(0{,}5981\) a \(0{,}5976\).

Ahí está, con datos reales, la diferencia entre los dos índices. radial mejora el ajuste —toda variable lo hace, aunque sea por casualidad—, pero lo mejora tan poco que no compensa el grado de libertad que consume. \(R^2\) es incapaz de detectarlo; \(\bar R^2\) sí, y responde bajando.

Conviene subrayar que esto no convierte a \(\bar R^2\) en un criterio infalible para elegir modelos: solo lo hace menos ingenuo que \(R^2\). La práctica siguiente está dedicada a enseñar hasta dónde llega esa mejora.

El apéndice siguiente explica de dónde sale exactamente la fórmula de \(\bar R^2\) y por qué tiene esa propiedad.

Apéndice - De dónde sale la fórmula del \(R^2\) ajustado

Recordemos (lección 8) que \(R^2=1-\mathrm{SRC}/\mathrm{STC}\), con \(\mathrm{STC}=\sum_i(y_i-\mu_{\boldsymbol y})^2\) y \(\mathrm{SRC}=\sum_i\hat e_i^2\). La idea del \(R^2\) ajustado es sustituir, en ese cociente, cada suma de cuadrados por su cuasivarianza correspondiente —es decir, dividir cada una por sus grados de libertad, no por el número de observaciones—: \[ \bar R^2 \;=\; 1-\frac{\mathrm{SRC}/(n-k)}{\mathrm{STC}/(n-1)}, \] donde \(k\) es el número total de regresores del modelo (incluida la constante; convención fijada en la lección 10) y \(n-k\) son los grados de libertad de los residuos (\(k\) parámetros ``beta'' estimados). El denominador \(\mathrm{STC}/(n-1)\) es la cuasivarianza de \(\boldsymbol{y}\): el estimador insesgado de la varianza de la variable \(Y\) del modelo teórico.1 El numerador \(\mathrm{SRC}/(n-k)\) es la cuasivarianza de \(\boldsymbol{\mathop{\widehat{e}}}\): el estimador insesgado de la varianza de las perturbaciones \(U\) del modelo teórico.

Conviene no pasar por alto que numerador y denominador estiman dos cosas distintas: el numerador, la dispersión de las perturbaciones alrededor de la recta; el denominador, la dispersión total de \(Y\) alrededor de su media. \(\bar R^2\) no es, por tanto, el cociente de dos estimaciones de la misma cantidad, sino —igual que \(R^2\)— una comparación entre lo que queda sin explicar y lo que había que explicar, esta vez con cada suma de cuadrados dividida por sus propios grados de libertad.

Operando algebraicamente sobre esta definición se obtiene una expresión equivalente, más cómoda para el cálculo manual a partir de un \(R^2\) ya conocido: \[ \bar R^2 \;=\; 1-(1-R^2)\,\frac{n-1}{n-k}. \]

Por qué \(R^2\) nunca baja pero \(\bar R^2\) sí puede bajar: pues porque al añadir nuevos regresores, \(\mathrm{SRC}\) nunca aumenta. El motivo es que \(\mathrm{SRC}\) es el cuadrado de la distancia entre el vector de datos \(\boldsymbol{y}\) y la combinación lineal de los regresores que está más cerca de \(\boldsymbol{y}\). Al añadir nuevos regresores sin quitar ninguno de los anteriores, usando solo los originales nos podemos acercar tanto como antes (así que la distancia mínima no puede ser mayor). Pero es que, como ahora hay nuevas combinaciones lineales posibles, podría ocurrir que alguna estuviera más cerca de \(\boldsymbol{y}\) de lo que antes nos podíamos acercar. Así que \(R^2=1-\mathrm{SRC}/\mathrm{STC}\) nunca baja… pero sí puede subir.

Sin embargo, en el coeficiente de determinación ajustado \(\bar R^2\) hay dos efectos en juego: \(\mathrm{SRC}\) baja (o se mantiene), lo que empuja \(\bar R^2\) hacia arriba, pero \(k\) sube en una unidad, lo que reduce \(n-k\) y por tanto agranda el cociente \(\mathrm{SRC}/(n-k)\), empujando \(\bar R^2\) hacia abajo. Si el regresor añadido aporta poco (reduce muy poco \(\mathrm{SRC}\)), el segundo efecto puede dominar al primero, y \(\bar R^2\) baja pese a que \(R^2\) no pueda hacerlo.

Verifiquemos que las dos fórmulas arrojan el mismo resultado:

en línea de comandos:

ols price const rooms nox stratio --quiet
scalar n_obs = $nobs
scalar k_reg = $ncoeff

scalar Rbarsq_orig = 1 - ( $ess/($nobs-$ncoeff) )/( sst(price)/($nobs-1) )
scalar Rbarsq = 1 - (1-$rsq)*($nobs-1)/($nobs-$ncoeff)

printf "n = %d,  k = %d (incluida la constante)\n", n_obs, k_reg
printf "R2 ajustado (formula original: 1-(SRC/(n-k))/(STC/(n-1)) ) = %.6f\n", Rbarsq_orig
printf "R2 ajustado (formula reducida: 1-(1-R2)(n-1)/(n-k)) = %.6f\n", Rbarsq
n = 506,  k = 4 (incluida la constante)
R2 ajustado (formula original: 1-(SRC/(n-k))/(STC/(n-1)) ) = 0,598133
R2 ajustado (formula reducida: 1-(1-R2)(n-1)/(n-k)) = 0,598133

Preguntas de interpretación para la clase

  1. ¿Por qué los coeficientes de rooms y nox cambian relativamente poco entre el modelo simple y el múltiple, a diferencia de lo que ocurría con bedrms en la práctica de Ramanathan?
  2. ¿Cómo interpreta el signo obtenido para stratio? ¿Es coherente con lo que cabría esperar económicamente?
  3. Explique, sin usar la fórmula, por qué \(R^2\) no puede bajar nunca al añadir un regresor, mientras que \(\bar R^2\) sí puede hacerlo.
  4. Si al añadir stratio el \(R^2\) ajustado hubiera bajado ligeramente, ¿qué le diría eso sobre el aporte de esa variable al modelo?
  5. ¿Diría que el \(R^2\) ajustado ``certifica'' que un modelo es mejor que otro, en el mismo sentido en que la lección 8 advertía que un \(R^2\) alto no certifica una relación causal?

Para profundizar:

  • Véanse las lecciones lecciones 8 y 10 para la propiedad mecánica de \(R^2\) y la interpretación del efecto parcial.
  • Wooldridge, J. M. (2020). Introductory Econometrics, cap. 6, sección 6.3 (\(R^2\) ajustado).

Código completo de la práctica

Respuestas

  1. ¿Cambian rooms y nox al pasar del modelo simple al múltiple? De forma muy desigual: rooms baja alrededor de un \(10\%\) y nox se reduce casi a la mitad. Conviene resistir la explicación fácil —``estarán muy correlacionadas''—, porque los números no la respaldan: la correlación entre rooms y nox es \(-0{,}3028\), menor en valor absoluto que el \(+0{,}4647\) entre sqft y bedrms de la práctica de Ramanathan. El desplazamiento de \(\hat\beta_2\) al incorporar \(\boldsymbol{x}_3\) vale \(\hat\beta_3\,\sigma_{\boldsymbol{x}_2\boldsymbol{x}_3}/\sigma^2_{\boldsymbol{x}_2}\): intervienen también el tamaño del coeficiente del regresor añadido y las escalas de ambas variables, que aquí son muy distintas (habitaciones frente a partes por cien millones). La correlación anticipa si habrá desplazamiento, no cuánto.
  2. Interpretación del signo de stratio. Un coeficiente negativo es coherente con la intuición: zonas con una proporción más alta de alumnos por profesor (colegios más masificados, en principio de peor calidad percibida) tienden a tener viviendas más baratas, manteniendo fijas las habitaciones y la contaminación. Como siempre, esta es una lectura ceteris paribus, no necesariamente causal: podría haber otros factores (nivel de renta de la zona, inversión pública) que expliquen tanto el ratio alumnos/profesor como el precio.
  3. Por qué \(R^2\) no baja nunca y \(\bar R^2\) sí puede bajar (sin fórmula). Añadir un regresor nunca puede empeorar el mejor ajuste posible: MCO siempre puede, como mínimo, ``ignorar'' el regresor nuevo (darle coeficiente cero) y quedarse igual que antes; en la práctica, suele aprovechar algo de esa dirección extra para reducir un poco más los residuos. Por eso \(R^2\) nunca baja. Pero \(\bar R^2\) además ``cobra un precio'' por cada regresor añadido —descuenta un grado de libertad (diferencia entre \(n\) y \(k\))—, así que si el regresor nuevo casi no reduce los residuos, ese ``precio'' puede pesar más que la mejora conseguida, y \(\bar R^2\) se reduce.
  4. Si \(\bar R^2\) hubiera bajado al añadir stratio. Eso indicaría que la reducción de residuos lograda por stratio es tan pequeña que no compensa el ``coste'' de estimar un parámetro adicional: una señal de que el aumento de complejidad del modelo, en términos de parsimonia, no compensa la pobre aportación de ese regresor en el ajuste del modelo.
  5. ¿Certifica el \(R^2\) ajustado que un modelo es mejor? No, en el mismo sentido en que la lección 8 advertía sobre \(R^2\): un \(\bar R^2\) más alto es un indicio a favor de un modelo frente a otro en términos de ajuste penalizado por complejidad, pero no certifica que la especificación sea correcta, que los regresores incluidos sean los relevantes desde un punto de vista teórico, ni que exista ninguna relación causal. Es una herramienta de comparación entre modelos alternativos, no un veredicto definitivo sobre la validez de ninguno de ellos —la elección de qué variables incluir debe seguir estando guiada, en primer lugar, por la teoría económica, no solo por qué estadístico sube o baja.

Notas al pie de página:

1

La propiedad de insesgadez que ya conoce del curso de estadística y probabilidad, y que abordaremos en la próxima lección teórica.

Autor: Marcos Bujosa

Created: 2026-09-19 sáb 09:48