1 Multicolinealidad

La multicolinealidad ocurre cuando las variables explicativas están altamente correlacionadas entre sí, lo que hace inestables las estimaciones de los coeficientes.

set.seed(123)
X1 <- 1:100
X2 <- 2*X1 + rnorm(100, 0, 1)
Y  <- 5 + 3*X1 + rnorm(100, 0, 10)

modelo1 <- lm(Y ~ X1 + X2)
summary(modelo1)
## 
## Call:
## lm(formula = Y ~ X1 + X2)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -18.491  -6.869  -0.948   6.015  32.357 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)  
## (Intercept)   2.2850     1.9566   1.168   0.2457  
## X1            4.2532     2.1475   1.981   0.0505 .
## X2           -0.6098     1.0723  -0.569   0.5708  
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 9.708 on 97 degrees of freedom
## Multiple R-squared:  0.9882, Adjusted R-squared:  0.988 
## F-statistic:  4064 on 2 and 97 DF,  p-value: < 2.2e-16
vif(modelo1)
##       X1       X2 
## 4077.605 4077.605

1.1 Interpretación:

Cuando el VIF es mayor que 10, hay evidencia fuerte de multicolinealidad. En este caso, X1 y X2 están casi perfectamente correlacionadas.

Solución: eliminar una variable o usar ACP.

modelo1_fix <- lm(Y ~ X1)
summary(modelo1_fix)
## 
## Call:
## lm(formula = Y ~ X1)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -18.961  -6.688  -0.774   5.608  33.054 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)    
## (Intercept)  2.30720    1.94942   1.184    0.239    
## X1           3.03203    0.03351  90.471   <2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 9.674 on 98 degrees of freedom
## Multiple R-squared:  0.9882, Adjusted R-squared:  0.988 
## F-statistic:  8185 on 1 and 98 DF,  p-value: < 2.2e-16

2 Heterocedasticidad

La heterocedasticidad significa que la varianza de los errores no es constante. Esto hace que los errores estándar sean incorrectos y las pruebas t no sean válidas.

X <- 1:100
u <- rnorm(100, mean=0, sd=X/5)
Y <- 2 + 3*X + u
modelo2 <- lm(Y ~ X)

plot(modelo2$fitted.values, resid(modelo2),
main="Heterocedasticidad: varianza creciente",
xlab="Valores ajustados", ylab="Residuos")
abline(h=0, col="red")

bptest(modelo2)
## 
##  studentized Breusch-Pagan test
## 
## data:  modelo2
## BP = 20.595, df = 1, p-value = 5.674e-06

2.1 Soluciones:

Transformar variables (por ejemplo, logaritmos)

Usar errores estándar robustos

modelo2_log <- lm(log(Y) ~ log(X))
summary(modelo2_log)
## 
## Call:
## lm(formula = log(Y) ~ log(X))
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -0.12489 -0.05732 -0.00271  0.03748  0.36544 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)    
## (Intercept) 1.328298   0.031592   42.05   <2e-16 ***
## log(X)      0.947082   0.008418  112.50   <2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.07773 on 98 degrees of freedom
## Multiple R-squared:  0.9923, Adjusted R-squared:  0.9922 
## F-statistic: 1.266e+04 on 1 and 98 DF,  p-value: < 2.2e-16
coeftest(modelo2, vcov = vcovHC(modelo2, type = "HC1"))
## 
## t test of coefficients:
## 
##              Estimate Std. Error t value Pr(>|t|)    
## (Intercept) -0.897825   1.505179 -0.5965   0.5522    
## X            3.094198   0.043321 71.4256   <2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

3 Autocorrelación

La autocorrelación ocurre cuando los errores están correlacionados entre sí, algo común en series temporales.

set.seed(123)
n <- 100
X <- 1:n
u <- arima.sim(n = n, list(ar = 0.8))
Y <- 5 + 0.5*X + u
modelo3 <- lm(Y ~ X)
dwtest(modelo3)
## 
##  Durbin-Watson test
## 
## data:  modelo3
## DW = 0.45546, p-value = 1.324e-15
## alternative hypothesis: true autocorrelation is greater than 0
plot(resid(modelo3), type="l",
main="Autocorrelación: residuos correlacionados",
ylab="Residuos", xlab="Tiempo")

3.1 Solución: incluir términos rezagados o usar modelos dinámicos (ARIMA, Prais–Winsten, etc.).

4 No linealidad

Cuando la relación entre X y Y no es lineal, el modelo lineal genera residuos con patrón curvo.

X <- 1:100
Y <- 2 + 0.5*X^2 + rnorm(100, 0, 30)
modelo4 <- lm(Y ~ X)

ggplot(data.frame(X, Y), aes(X, Y)) +
geom_point() +
geom_smooth(method="lm", se=FALSE, col="red") +
ggtitle("No linealidad: relación cuadrática mal especificada")

plot(resid(modelo4), main="Residuos con patrón curvo", ylab="Residuos")

modelo4_fix <- lm(Y ~ X + I(X^2))
summary(modelo4_fix)
## 
## Call:
## lm(formula = Y ~ X + I(X^2))
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -56.037 -19.253  -5.385  20.221  95.829 
## 
## Coefficients:
##              Estimate Std. Error t value Pr(>|t|)    
## (Intercept) -6.193425   9.319165  -0.665    0.508    
## X            0.402664   0.425911   0.945    0.347    
## I(X^2)       0.496219   0.004086 121.456   <2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 30.44 on 97 degrees of freedom
## Multiple R-squared:  0.9996, Adjusted R-squared:  0.9996 
## F-statistic: 1.221e+05 on 2 and 97 DF,  p-value: < 2.2e-16

4.1 Solución:

Agregar términos polinómicos o transformaciones de las variables.

5 Outliers y valores influyentes

Un solo punto extremo puede alterar toda la pendiente de la regresión.

set.seed(123)
X <- 1:30
Y <- 2 + 3*X + rnorm(30, 0, 10)
Y[30] <- 200  # outlier extremo
modelo5 <- lm(Y ~ X)

plot(X, Y, main="Outlier extremo", pch=19)
abline(modelo5, col="red")

influencePlot(modelo5)

##       StudRes        Hat      CookD
## 1  -0.1399481 0.12688172 0.00147472
## 26 -1.1086773 0.08238784 0.05473237
## 30 11.4865697 0.12688172 1.68887692

5.1 Solución:

Revisar si el outlier es un error de medición o usar regresión robusta.

options(encoding = "UTF-8")
##install.packages("flextable")
library(flextable)

df <- data.frame(
  Problema = c("Multicolinealidad", "Heterocedasticidad", "Autocorrelacion", "No linealidad", "Outliers"),
  Descripcion = c(
    "Variables explicativas altamente correlacionadas.",
    "Varianza no constante del error.",
    "Errores correlacionados entre sí.",
    "Relación no lineal entre variables.",
    "Observaciones extremas distorsionan los resultados."
  ),
  Solucion = c(
    "Usar ACP o eliminar variables redundantes.",
    "Errores robustos o transformación logarítmica.",
    "Modelos ARIMA o inclusión de rezagos.",
    "Modelos no lineales o polinomiales.",
    "Revisión y tratamiento de valores extremos."
  )
)

flextable::flextable(df)

Problema

Descripcion

Solucion

Multicolinealidad

Variables explicativas altamente correlacionadas.

Usar ACP o eliminar variables redundantes.

Heterocedasticidad

Varianza no constante del error.

Errores robustos o transformación logarítmica.

Autocorrelacion

Errores correlacionados entre sí.

Modelos ARIMA o inclusión de rezagos.

No linealidad

Relación no lineal entre variables.

Modelos no lineales o polinomiales.

Outliers

Observaciones extremas distorsionan los resultados.

Revisión y tratamiento de valores extremos.

6 Reflexión Final:

Aprender de los errores econométricos

  • En la práctica económica, los problemas de una regresión no son simples fallas estadísticas: representan señales que nos advierten sobre la naturaleza compleja de los fenómenos económicos.

  • Multicolinealidad nos recuerda que las variables económicas están profundamente interrelacionadas. Precios, ingresos y consumo rara vez se mueven por separado. El desafío del economista está en discernir cuál variable impulsa el cambio y cuál solo lo acompaña.

  • Heterocedasticidad refleja que la volatilidad o la incertidumbre no son constantes. Los mercados y los agentes reaccionan de forma distinta según el tamaño de los shocks o el nivel de ingreso.

  • Autocorrelación enseña que el tiempo importa. Los errores de hoy suelen ser herencia del pasado: las decisiones económicas no se desvanecen de inmediato, sino que dejan huellas que deben modelarse.

  • No linealidad invita a aceptar que la economía no siempre responde de forma proporcional. Pequeños cambios pueden tener grandes impactos, y entender esa curvatura mejora nuestras predicciones.

  • Outliers representan los choques, crisis o eventos atípicos que desafían la normalidad. Lejos de ignorarlos, comprenderlos permite anticipar riesgos y fortalecer la resiliencia de los modelos.

En síntesis, cada error econométrico encierra una lección sobre la realidad. La econometría no busca eliminar la incertidumbre, sino aprender de ella, construir modelos más sólidos y, sobre todo, fortalecer la capacidad del analista para pensar críticamente los datos.

Autor: Econ. FRIDNO MARC RStudio — 2025