6.4 Análisis e interpretación del modelo

Al margen de la colinealidad, si no se verifican las otras hipótesis estructurales del modelo (Sección 6.1), los resultados y las conclusiones basadas en la teoría estadística pueden no ser fiables, o incluso totalmente erróneas:

  • La falta de linealidad “invalida” las conclusiones obtenidas (cuidado con las extrapolaciones).

  • La falta de normalidad tiene poca influencia si el número de datos es suficientemente grande (TCL). En caso contrario la estimación de la varianza, los intervalos de confianza y los contrastes podrían verse afectados.

  • Si no hay igualdad de varianzas los estimadores de los parámetros no son eficientes pero sí insesgados. Las varianzas, los intervalos de confianza y contrastes podrían verse afectados.

  • La dependencia entre observaciones puede tener un efecto mucho más grave.

Con el método plot() se pueden generar gráficos de interés para la diagnosis del modelo (ver Figura 6.8):

oldpar <- par(mfrow = c(2,2))
plot(modelo)
Gráficos de diagnóstico del ajuste lineal.

Figura 6.8: Gráficos de diagnóstico del ajuste lineal.

par(oldpar)

Por defecto se muestran cuatro gráficos (ver help(plot.lm) para más detalles). El primero (residuos frente a predicciones) permite detectar falta de linealidad o heterocedasticidad (o el efecto de un factor omitido: mala especificación del modelo), lo ideal sería no observar ningún patrón. El segundo gráfico (gráfico QQ), permite diagnosticar la normalidad, los puntos del deberían estar cerca de la diagonal. El tercer gráfico de dispersión-nivel permite detectar heterocedasticidad (la pendiente debería ser nula) y ayudar a seleccionar una transformación para corregirla (también se podría emplear la función boxcox() del paquete MASS). El último gráfico permite detectar valores atípicos o influyentes. Representa los residuos estandarizados en función del valor de influencia (a priori) o leverage (\(hii\) que depende de los valores de las variables explicativas, debería ser \(< 2(p+1)/2\)) y señala las observaciones atípicas (residuos fuera de [-2,2]) e influyentes a posteriori (estadístico de Cook >0.5 y >1).

Si las conclusiones obtenidas dependen en gran medida de una observación (normalmente atípica), esta se denomina influyente (a posteriori) y debe ser examinada con cuidado por el experimentador. Se puede volver a ajustar el modelo eliminando las observaciones influyentes34, pero puede ser recomendable emplear regresión lineal robusta, por ejemplo mediante la función rlm() del paquete MASS).

En regresión lineal múltiple, en lugar de generar gráficos de dispersión simple (p.e. gráficos de dispersión matriciales) para analizar los efectos de las variables explicativas y detectar posibles problemas (falta de linealidad…), se pueden generar gráficos parciales de residuos, por ejemplo con el comando:

termplot(modelo, partial.resid = TRUE)

Aunque puede ser preferible emplear las funciones crPlots() ó avPlots() del paquete car35:

library(car)
# avPlots(modelo)
crPlots(modelo, main = "")
Gráficos parciales de residuos (componentes + residuos) del ajuste lineal.

Figura 6.9: Gráficos parciales de residuos (componentes + residuos) del ajuste lineal.

En la tabla 6.2 se incluyen algunas funciones adicionales que permiten obtener medidas de diagnosis o resúmenes numéricos de interés (ver help(influence.measures) para un listado más completo).

Tabla 6.2: Listado de las principales funciones auxiliares para modelos ajustados.
Función Descripción
rstandard() residuos estandarizados (también eliminados)
rstudent() residuos estudentizados
cooks.distance() valores del estadístico de Cook
influence() valores de influencia, cambios en coeficientes y varianza residual al eliminar cada dato (LOOCV).

Hay muchas herramientas adicionales disponibles en otros paquetes. Por ejemplo, como ya se comentó, se puede emplear la función vif() del paquete car para calcular los factores de inflación de varianza, aunque puede ser preferible emplear otras medidas como el índice de condicionamiento, implementado en el paquete mctest. La librería lmtest proporciona herramientas adicionales para la diagnosis de modelos lineales, por ejemplo el test de Breusch-Pagan (para contrastar homocedasticidad) en la función bptest() o el de Durbin-Watson (para detectar si hay correlación en serie) en dwtest().

Posibles soluciones cuando no se satisfacen los supuestos básicos:

  • Como ya se comentó, pueden llevarse a cabo transformaciones de los datos para tratar de corregir la falta de linealidad, heterocedasticidad y/o normalidad (normalmente estas últimas “suelen ocurrir en la misma escala”). Otra alternativa sería tratar de emplear modelos lineales generalizados.

  • Si no se logra corregir la heterocedasticidad puede ser adecuado utilizar mínimos cuadrados ponderados (habría que modelar la varianza).

  • Si hay dependencia se puede tratar de modelarla y utilizar mínimos cuadrados generalizados.

  • Si no se logra corregir la falta de linealidad se puede pensar en utilizar modelos más flexibles (capítulo siguiente y anteriores).

Otra alternativa es emplear las técnicas de aprendizaje estadístico descritas en la Sección 1.3. Desde este punto de vista podríamos ignorar las hipótesis estructurales y pensar que los procedimientos clásicos, como por ejemplo el ajuste lineal mediante el método por pasos, son simplemente algoritmos de predicción. En ese caso, después de ajustar el modelo en la muestra de entrenamiento, en lugar de emplear medidas como el coeficiente de determinación ajustado, emplearíamos la muestra de test para evaluar la capacidad predictiva en nuevas observaciones.

Trataremos en primer lugar este último paso y posteriormente, en la Sección 6.6, se darán algunas nociones de como se podría haber empleado remuestreo para la selección del modelo.


  1. Normalmente se sigue un proceso iterativo, eliminando la más influyente cada vez, por ejemplo con which.max(cooks.distance(modelo)) y update().↩︎

  2. Estas funciones permitirían además detectar puntos atípicos o influyentes mediante el argumento id.↩︎