logo

Introducción

La utilidad de un modelo de regresión no se agota en ajustar una recta o un hiperplano: la validez de la inferencia (intervalos, pruebas, predicciones) depende de que los errores cumplan una serie de supuestos que garanticen su correcta aplicación. Es decir, se deben verificar los supuestos del modelo antes de realizar cualquier regresión, pues la violación de cualquiera de estos, pondría en duda la validez de los resultados.

Los supuestos del modelo de regresión son los siguientes:

  • Normalidad: los errores siguen aproximadamente una distribución normal.

  • Varianza constante (homocedasticidad): la dispersión del error no cambia con los valores ajustados.

  • Independencia: los errores no están correlacionados en el tiempo o el orden de observación.

1. Normalidad

El supuesto de normalidad se refiere a que los errores del modelo siguen aproxidamente una distribución normal. Esto garantiza la validez exacta de pruebas e intervalos en muestras pequeñas. Con muestras grandes, si los demás supuestos se cumplen, MCO sigue siendo confiable por resultados asintóticos (TCL).

Si no se cumple:

  • En muestras pequeñas, los p-values de las pruebas \(t\) y \(F\) y los intervalos de confianza pueden quedar mal calibrados (demasiado optimistas o conservadores).

  • Aumenta la sensibilidad a outliers y a colas pesadas (extremos), lo que puede inflar los errores estándar o volver inestable la inferencia.

  • Los intervalos de predicción pueden perder cobertura.

  • En casos extremos (colas muy pesadas), incluso con \(n\) moderado, la aproximación asintótica puede ser pobre.

¿Cómo detectar su cumplimiento?

i. QQ-plot (Quantile–Quantile plot): es un gráfico que compara los cuantiles de tus datos con los de una distribución teórica (usualmente la normal) para evaluar cuán parecidos son. Se construye ordenando los datos y colocándolos contra los cuantiles teóricos; si los puntos siguen aproximadamente una línea recta, la concordancia es buena. Desviaciones sistemáticas revelan problemas, colas pesadas se ven como alejamientos en los extremos, la asimetría produce curvaturas (hacia arriba/abajo), y una forma en S sugiere no normalidad. En regresión, se aplica al residual estandarizado para diagnosticar el supuesto de normalidad de los errores.

ii. Prueba de Shapiro–Wilk: esta prueba evalúa si un conjunto de datos proviene de una distribución normal. La hipótesis planteada:

  • \(H_0\): los datos son normales.
  • \(H_a\): los datos no son normales.

Por lo tanto, un p-value pequeño sugiere no normalidad. Es muy sensible al tamaño muestral: con muestras grandes puede rechazar por desviaciones leves que no afectan la práctica, y con muestras pequeñas tiene poca potencia. En regresión se aplica típicamente a los residuales estandarizados como apoyo al QQ-plot. En R se usa la función shapiro.test(errores).

¿Qué hacer si no se cumple?

  • Transformar la variable respuesta.

  • Revisar las variables: incorporar términos o variables omitidas.

  • Considerar otros métodos robustos como por ejemplo modelos lineales generalizados.

  • En muestras grandes, si los diagnósticos son razonables, suele ser suficiente para una inferencia confiable.

2. Varianza constante

Este supuesto establece que la variabilidad de los errores es constante a lo largo de todos los niveles de los valores ajustados (y de los predictores). Bajo homocedasticidad, los errores estándar de MCO son correctos.

Si no se cumple (heterocedasticidad):

  • Los coeficientes de MCO siguen teniendo media cero, pero los errores estándar quedan mal estimados, por lo que _p-values e intervalos de confianza pueden estar mal calibrados.

  • Pérdida de eficiencia (estimaciones menos precisas) y mayor sensibilidad a observaciones extremas en regiones de alta varianza.

¿Cómo detectar su cumplimiento?

i. Gráfico de residuales vs. ajustados: la nube de puntos debe permanecer constante alrededor de 0 (sin ningún patrón).

ii. Prueba de Breusch–Pagan: evalúa la constancia de la varianza de los errores en un modelo lineal (homocedasticidad) frente a la alternativa de que la varianza depende de los predictores (heterocedasticidad). La hipótesis planteada:

  • \(H_0\): la varianza es constante (homocedasticidad).
  • \(H_a\): la varianza no es constante (heterocedasticidad).

Por lo tanto, un p-value pequeño sugiere heterocedasticidad. Como otras pruebas de ajuste, es sensible al tamaño muestral: con muestras grandes puede detectar desviaciones leves sin relevancia práctica; con muestras pequeñas puede tener poca potencia. En R se emplea la función bptest(ajustados) de la librería lmtest.

3. Independencia

Este supuesto establece que los errores no están correlacionados entre sí. En otras palabras, el error asociado a una observación no debe predecir ni depender del error de otra. La independencia es particularmente relevante en datos temporales o secuenciales, donde puede existir autocorrelación.

Si no se cumple (autocorrelación):

  • Los errores estándar quedan mal estimados, lo que afecta p-values e intervalos de confianza.
  • Las pruebas de hipótesis pueden resultar demasiado optimistas.
  • Puede indicar que falta incorporar estructura temporal o variables que expliquen la dependencia.

¿Cómo detectar su cumplimiento?

i. Gráfico de residuales vs. tiempo/orden: debe mostrar puntos dispersos alrededor de 0 sin patrones. Una secuencia de residuales positivos/negativos o tendencias indica dependencia.

ii. Prueba de Durbin–Watson: evalúa la autocorrelación de primer orden en los errores de un modelo de regresión. La hipótesis planteada:

  • \(H_0\): no hay autocorrelación (independencia).

  • \(H_a\): existe autocorrelación (dependencia).

Por lo tanto, un p-value pequeño sugiere dependencia entre errores. En R se usa la función dwtest(ajustados) de la librería lmtest.

¿Qué hacer si no se cumple?

  • Revisar la estructura temporal de los datos (tendencias, ciclos).

  • Incluir variables de control o términos autorregresivos.

  • Ajustar modelos que consideren la autocorrelación (modelos lineales generalizados, modelos de serires de tiempo).

  • Validar si la dependencia proviene de un sesgo de especificación (variables omitidas que evolucionan en el tiempo).


En algunos textos aparece como supuesto adicional que los errores del modelo de regresión tienen media cero \(E(e|X)=0\).
Sin embargo, esto es en realidad una consecuencia teórica del modelo, al estimar con MCO y al incluir un intercepto, la suma de los residuales es exactamente cero, y por lo tanto su media también lo es.
Por esta razón, en este curso no lo trataremos como un supuesto independiente, sino como una propiedad inherente al modelo de regresión lineal.


Ejemplo 1

Para este primer ejemplo simularemos un contexto donde podamos observar que se cumplan los supuestos.Para esto, simularemos 500 observaciones del siguiente modelo y luego analizamos por medio de los residuales estándarizados el cumplimiento de los supuestos.

\[\begin{align*} x_i & \sim \text{Uniforme}(-5,6), \\ e_i & \sim \text{Normal}(0,4), \\ y_i & = 4 -6x_i + e_i \end{align*}\]

Desarrollo en R

Datos simulados

Datos:

set.seed(2025)
n  <- 500
data1 <- data.frame(
xi     =  round(runif(n, -5, 6),2),
e     =  round(rnorm(n,0,4),2))  %>%
mutate(yi = 4 - 6*xi + e)
head(data1)
##     xi     e     yi
## 1 3.06  2.76 -11.60
## 2 0.23  2.40   5.02
## 3 0.66  2.14   2.18
## 4 0.48  3.56   4.68
## 5 3.58 -1.93 -19.41
## 6 0.55  8.42   9.12

Modelo ajustado

mod1  <- lm(yi~xi, data=data1)
summary(mod1)
## 
## Call:
## lm(formula = yi ~ xi, data = data1)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -11.1659  -2.8033  -0.0273   2.3886  12.8592 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)    
## (Intercept)  3.97653    0.18634   21.34   <2e-16 ***
## xi          -5.84344    0.05687 -102.75   <2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 4.105 on 498 degrees of freedom
## Multiple R-squared:  0.955,  Adjusted R-squared:  0.9549 
## F-statistic: 1.056e+04 on 1 and 498 DF,  p-value: < 2.2e-16

Supuesto 1

Normalidad:
library(ggplot2)
library(broom)


df  <- data.frame(
 yhat = fitted.values(mod1),
 res  = rstandard(mod1))

ggplot(df, aes(sample = res)) +
  stat_qq(color = "blue") +
  stat_qq_line(linewidth = 1) +  
  labs(x = "Cuantiles teóricos", y = "Cuantiles muestrales") +
  theme_minimal(base_size = 14)

Prueba:
shapiro.test(df$res)
## 
##  Shapiro-Wilk normality test
## 
## data:  df$res
## W = 0.99534, p-value = 0.1397
Media de los errores
mean(df$res)
## [1] 2.150562e-05

Supuesto 2

Varianza constante (homocedasticidad):
ggplot(df, aes(x = yhat, y = res)) +
  geom_point(alpha = 0.6, color = "blue") +
  geom_hline(yintercept = 0, linetype = "dashed", color = "grey40") +
  labs(x = "Valores ajustados", y = "Residuales estandarizados") +
  theme_minimal(base_size = 14)

Prueba:
library(lmtest)
bptest(mod1)
## 
##  studentized Breusch-Pagan test
## 
## data:  mod1
## BP = 0.3194, df = 1, p-value = 0.572

Supuesto 3

Independencia (autocorrelación):
library(ggplot2)

df1 <- data.frame(
  res   =  rstandard(mod1)) %>%
  mutate(orden = 1:length(res))   
  

ggplot(df1, aes(x = orden, y = res)) +
  geom_point(alpha = 0.6, color = "blue") +
  geom_hline(yintercept = 0, linetype = "dashed", color = "grey40") +
  labs(x = "Orden/tiempo", y = "Residuales estandarizados") +
  theme_minimal(base_size = 14)

Prueba:
dwtest(mod1)
## 
##  Durbin-Watson test
## 
## data:  mod1
## DW = 2.0199, p-value = 0.5892
## alternative hypothesis: true autocorrelation is greater than 0

Ejemplo 2

En este ejemplo se genera un conjunto de datos donde se incumplen los tres supuestos básicos de la regresión lineal. El objetivo es mostrar que, aunque el modelo lineal ajusta una relación entre x e y, los residuales revelan problemas que afectan la validez de la inferencia.

\[\begin{align*} x_i &\sim \text{Uniforme}(0,10), \\ e_i &\sim \text{t}(3), \\ \sigma & = 0.5 + 0.3x_i, \\ y_i &= 2 + 0.8x_i + \phi e_{i-1} + e_i, \quad \phi = 0.6 \end{align*}\]

Desarrollo en R

Datos simulados

Datos:

set.seed(1234)

n <- 500

xi     <-  round(runif(n,0, 10),2)
sigma  <-  0.5 + 0.3 * xi
u      <-  rt(n, df = 3)
phi    <-  0.5
e      <- as.numeric(stats::filter(u * sigma, filter = phi, method = "recursive"))

yi      <-  2 + 0.8 * xi + e

data2 <- data.frame(xi,yi)
head(data2)
##     xi       yi
## 1 1.14 3.206484
## 2 6.22 8.107271
## 3 6.09 3.462627
## 4 6.23 5.766502
## 5 8.61 1.761343
## 6 6.40 2.598627

Modelo ajustado

mod2  <- lm(yi~xi, data=data2)
summary(mod2)
## 
## Call:
## lm(formula = yi ~ xi, data = data2)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -23.4149  -1.9489  -0.2179   1.8296  16.1505 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)    
## (Intercept)   2.7120     0.3613   7.506 2.83e-13 ***
## xi            0.7208     0.0624  11.552  < 2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 3.948 on 498 degrees of freedom
## Multiple R-squared:  0.2113, Adjusted R-squared:  0.2097 
## F-statistic: 133.4 on 1 and 498 DF,  p-value: < 2.2e-16

Supuesto 1

Normalidad:
library(ggplot2)
library(broom)


df2  <- data.frame(
 yhat = fitted.values(mod2),
 res  = rstandard(mod2))

ggplot(df2, aes(sample = res)) +
  stat_qq(color = "blue") +
  stat_qq_line(linewidth = 1) +  
  labs(x = "Cuantiles teóricos", y = "Cuantiles muestrales") +
  theme_minimal(base_size = 14)

Prueba:
shapiro.test(df2$res)
## 
##  Shapiro-Wilk normality test
## 
## data:  df2$res
## W = 0.93217, p-value = 2.778e-14
Media de los errores
mean(df2$res)
## [1] -7.149152e-06

Supuesto 2

Varianza constante (homocedasticidad):
ggplot(df2, aes(x = yhat, y = res)) +
  geom_point(alpha = 0.6, color = "blue") +
  geom_hline(yintercept = 0, linetype = "dashed", color = "grey40") +
  labs(x = "Valores ajustados", y = "Residuales estandarizados") +
  theme_minimal(base_size = 14)

Prueba:
library(lmtest)
bptest(mod2)
## 
##  studentized Breusch-Pagan test
## 
## data:  mod2
## BP = 26.034, df = 1, p-value = 3.354e-07

Nota importante: la prueba no detecta heterocedasticidad porque el problema no es de varianza, sino de estructura del modelo.

Supuesto 3

Independencia (autocorrelación):
library(ggplot2)

df3 <- data.frame(
  res   =  rstandard(mod2)) %>%
  mutate(orden = 1:length(res))   
  

ggplot(df3, aes(x = orden, y = res)) +
  geom_point(alpha = 0.6, color = "blue") +
  geom_hline(yintercept = 0, linetype = "dashed", color = "grey40") +
  labs(x = "Orden/tiempo", y = "Residuales estandarizados") +
  theme_minimal(base_size = 14)

Prueba:
dwtest(mod2)
## 
##  Durbin-Watson test
## 
## data:  mod2
## DW = 0.99871, p-value < 2.2e-16
## alternative hypothesis: true autocorrelation is greater than 0

Ejercicio de clase

Trabajaremos con la base de datos Gapminder (https://www.gapminder.org/ ). La versión final limpia se encuentra disponible en la plataforma de Moodle. El objetivo es analizar los supuestos de dos modelos planteados.

1. Modelo de regresión lineal simple:

  • Variable dependiente: expectativa de vida femenina (lifExpFem)

  • Variable independiente: médicos por 1000 habitantes (doctor)

2. Modelo de regresión lineal múltiple:

  • Variable dependiente: tasa de fecundidad (tfr)

  • Variables independientes: uso de anticonceptivos (contracep) y promedio de años de educación femenina (yearSchF)

Para cada modelo, realiza un diagnóstico de los residuos considerando los tres supuestos básicos de la regresión lineal. Argumenta tus respuestas basándote en los resultados obtenidos (gráficos y pruebas estadísticas). Explica en qué medida se cumplen o violan los supuestos y cómo esto afecta la confianza en los resultados.