1 Introducción

La estimación de un modelo de regresión lineal múltiple no termina al obtener los coeficientes, el coeficiente de determinación \(R^2\) o los valores p.

Antes de utilizar el modelo para realizar inferencias, explicar relaciones entre variables o efectuar predicciones, es necesario evaluar si se cumplen razonablemente los principales supuestos asociados con la regresión lineal.

En esta clase estudiaremos:

  1. Multicolinealidad.
  2. Normalidad de los residuos.
  3. Homocedasticidad.
  4. Linealidad.
  5. Independencia de los términos de error.
  6. Valores atípicos e influyentes.

2 Preparación del entorno de trabajo

Utilizaremos paquetes especializados para los diferentes diagnósticos.

Los principales paquetes serán:

  • car: VIF, gráficos de componentes y residuos, Durbin-Watson y análisis de influencia.
  • olsrr: VIF, tolerancia, índice de condición y otros diagnósticos de regresión.
  • performance: diagnóstico alternativo de multicolinealidad.
  • lmtest: Breusch-Pagan, Goldfeld-Quandt, Durbin-Watson, RESET y Rainbow.
  • skedastic: prueba de White.
  • tseries: Jarque-Bera.
  • moments: implementación alternativa de Jarque-Bera.
  • nortest: Lilliefors y Anderson-Darling.
paquetes <- c(
  "car",
  "olsrr",
  "performance",
  "lmtest",
  "skedastic",
  "tseries",
  "moments",
  "nortest"
)

faltantes <- paquetes[
  !vapply(
    paquetes,
    requireNamespace,
    quietly = TRUE,
    FUN.VALUE = logical(1)
  )
]

if (length(faltantes) > 0) {
  
  install.packages(
    faltantes,
    dependencies = TRUE
  )
}

invisible(
  lapply(
    paquetes,
    library,
    character.only = TRUE
  )
)

.

3 Recordatorio del modelo de regresión lineal múltiple

Un modelo de regresión lineal múltiple puede expresarse como:

\[ Y_i = \beta_0+ \beta_1X_{1i}+ \beta_2X_{2i}+ \cdots+ \beta_kX_{ki}+ \varepsilon_i \]

donde:

  • \(Y_i\) es la variable dependiente,
  • \(X_{1i},X_{2i},\ldots,X_{ki}\) son las variables explicativas,
  • \(\beta_0\) representa el intercepto,
  • \(\beta_1,\ldots,\beta_k\) son los parámetros asociados con los predictores,
  • \(\varepsilon_i\) representa el término de error.

Una vez estimado el modelo tenemos:

\[ \widehat{Y}_i = \widehat{\beta}_0+ \widehat{\beta}_1X_{1i}+ \cdots+ \widehat{\beta}_kX_{ki} \]

y el residuo correspondiente a cada observación es:

\[ e_i = Y_i-\widehat{Y}_i \]

Los errores \(\varepsilon_i\) no son observables directamente.

Por ello utilizaremos los residuos \(e_i\) para estudiar varias de las características que deberían presentar los errores del modelo.

4 ¿Por qué debemos revisar los supuestos?

Un modelo puede presentar:

  • un \(R^2\) elevado,
  • una prueba F significativa,
  • varios coeficientes significativos,

y, aun así, presentar problemas importantes.

Por ejemplo:

  • dos variables explicativas pueden contener prácticamente la misma información,
  • la varianza de los errores puede aumentar con el nivel de exposición,
  • la relación entre una variable explicativa y la respuesta puede ser curva,
  • los errores pueden estar correlacionados temporalmente,
  • determinadas observaciones pueden ejercer una influencia excesiva.

Por ello el análisis de supuestos debe considerarse parte integral de la construcción del modelo.

5 Multicolinealidad

5.1 Concepto

Existe multicolinealidad cuando dos o más variables explicativas presentan relaciones lineales importantes entre sí.

En el caso extremo de multicolinealidad perfecta, alguna variable explicativa puede escribirse exactamente como combinación lineal de otras variables.

Esto provoca problemas en la estimación del modelo.

En aplicaciones reales es más frecuente encontrar multicolinealidad alta pero no perfecta.

En ciencias actuariales esto puede ocurrir, por ejemplo, al incluir simultáneamente:

  • valor comercial del vehículo,
  • suma asegurada,

o:

  • edad del asegurado,
  • años de experiencia laboral,

o:

  • salario,
  • monto de contribuciones previsionales.

Estas variables pueden contener información muy similar.

6 Consecuencias de la multicolinealidad

La varianza del estimador de un coeficiente puede expresarse como:

\[ Var(\widehat{\beta}_j) = \frac{\sigma^2} {n(1-R_j^2)S_j^2} \]

donde \(R_j^2\) corresponde al coeficiente de determinación obtenido al explicar \(X_j\) utilizando los demás predictores.

Cuando:

\[ R_j^2 \rightarrow 1 \]

entonces:

\[ 1-R_j^2 \rightarrow 0 \]

y la varianza de \(\widehat{\beta}_j\) aumenta.

Por ello la multicolinealidad puede provocar:

  • errores estándar elevados,
  • intervalos de confianza amplios,
  • coeficientes individualmente no significativos,
  • signos inesperados en los coeficientes,
  • sensibilidad de los coeficientes ante pequeños cambios en los datos,
  • dificultad para aislar el efecto individual de cada predictor.

Importante:

La multicolinealidad no necesariamente impide que el modelo tenga buena capacidad predictiva. El problema puede ser especialmente importante cuando el objetivo es interpretar individualmente los coeficientes.

7 Tolerancia

La tolerancia del predictor \(X_j\) se define como:

\[ TOL_j=1-R_j^2 \]

Una tolerancia cercana a cero indica que gran parte de la variabilidad de \(X_j\) puede ser explicada mediante los demás predictores.

8 Factor de inflación de la varianza

El factor de inflación de la varianza se define como:

\[ VIF_j= \frac{1}{1-R_j^2} \]

Por tanto:

\[ VIF_j= \frac{1}{TOL_j} \]

Interpretación general:

  • \(VIF=1\): ausencia de relación lineal con los demás predictores,
  • \(VIF\) entre 1 y aproximadamente 4: generalmente poca preocupación,
  • valores superiores a 4 o 5: requieren revisión,
  • valores superiores a 10: suelen considerarse indicativos de multicolinealidad importante.

Estos puntos de corte deben interpretarse como referencias y no como reglas absolutas.

9 Ejemplo actuarial de multicolinealidad

Supongamos que una compañía de seguros desea explicar la prima anual de una póliza de automóvil mediante:

  • edad del conductor,
  • antigüedad del vehículo,
  • valor comercial,
  • suma asegurada,
  • número de siniestros previos.

Es razonable esperar una relación muy fuerte entre:

  • valor comercial,
  • suma asegurada.

9.1 Generar la base de datos

set.seed(101)

n <- 500

edad <- round(
  runif(n, 18, 75)
)

antiguedad_vehiculo <- round(
  runif(n, 0, 15),
  1
)

valor_comercial <- round(
  rlnorm(
    n,
    meanlog = log(120000),
    sdlog = 0.35
  ),
  2
)

# Construimos deliberadamente una fuerte relación
# entre suma asegurada y valor comercial.

suma_asegurada <-
  valor_comercial *
  runif(n, 0.92, 1.02)

siniestros_previos <- rpois(
  n,
  lambda = 0.6
)

prima_anual <-
  1200 +
  8 * edad -
  35 * antiguedad_vehiculo +
  0.012 * valor_comercial +
  0.004 * suma_asegurada +
  450 * siniestros_previos +
  rnorm(n, 0, 700)

datos_multi <- data.frame(
  prima_anual,
  edad,
  antiguedad_vehiculo,
  valor_comercial,
  suma_asegurada,
  siniestros_previos
)

head(datos_multi)

9.2 Análisis descriptivo

summary(datos_multi)
##   prima_anual          edad       antiguedad_vehiculo valor_comercial 
##  Min.   : 798.3   Min.   :18.00   Min.   : 0.000      Min.   : 40176  
##  1st Qu.:2850.7   1st Qu.:32.00   1st Qu.: 3.275      1st Qu.: 95631  
##  Median :3524.6   Median :46.50   Median : 6.800      Median :118771  
##  Mean   :3572.6   Mean   :46.84   Mean   : 7.175      Mean   :126568  
##  3rd Qu.:4238.1   3rd Qu.:61.00   3rd Qu.:11.000      3rd Qu.:148110  
##  Max.   :7229.9   Max.   :75.00   Max.   :15.000      Max.   :365024  
##  suma_asegurada   siniestros_previos
##  Min.   : 39612   Min.   :0.000     
##  1st Qu.: 92558   1st Qu.:0.000     
##  Median :116436   Median :0.000     
##  Mean   :122589   Mean   :0.632     
##  3rd Qu.:144940   3rd Qu.:1.000     
##  Max.   :353254   Max.   :4.000

9.3 Matriz de correlaciones

round(
  cor(
    datos_multi[
      c(
        "edad",
        "antiguedad_vehiculo",
        "valor_comercial",
        "suma_asegurada",
        "siniestros_previos"
      )
    ]
  ),
  3
)
##                       edad antiguedad_vehiculo valor_comercial suma_asegurada
## edad                 1.000               0.013           0.034          0.033
## antiguedad_vehiculo  0.013               1.000           0.091          0.092
## valor_comercial      0.034               0.091           1.000          0.996
## suma_asegurada       0.033               0.092           0.996          1.000
## siniestros_previos  -0.111               0.037          -0.023         -0.022
##                     siniestros_previos
## edad                            -0.111
## antiguedad_vehiculo              0.037
## valor_comercial                 -0.023
## suma_asegurada                  -0.022
## siniestros_previos               1.000

Observe particularmente:

cor(
  datos_multi$valor_comercial,
  datos_multi$suma_asegurada
)
## [1] 0.9958587

La correlación debería ser extremadamente elevada.

Sin embargo, la correlación solamente analiza relaciones entre pares de variables.

La multicolinealidad también puede producirse debido a combinaciones de varios predictores.

Por ello utilizaremos VIF.

10 Ajustar el modelo

modelo_multi <- lm(
  prima_anual ~
    edad +
    antiguedad_vehiculo +
    valor_comercial +
    suma_asegurada +
    siniestros_previos,
  data = datos_multi
)

summary(modelo_multi)
## 
## Call:
## lm(formula = prima_anual ~ edad + antiguedad_vehiculo + valor_comercial + 
##     suma_asegurada + siniestros_previos, data = datos_multi)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -2213.64  -490.24    25.87   489.78  2106.76 
## 
## Coefficients:
##                       Estimate Std. Error t value Pr(>|t|)    
## (Intercept)         904.376331 144.889924   6.242 9.32e-10 ***
## edad                 11.160767   1.979882   5.637 2.91e-08 ***
## antiguedad_vehiculo -29.309072   7.412570  -3.954 8.81e-05 ***
## valor_comercial       0.018558   0.008154   2.276   0.0233 *  
## suma_asegurada       -0.002288   0.008375  -0.273   0.7849    
## siniestros_previos  454.712406  41.498459  10.957  < 2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 723.4 on 494 degrees of freedom
## Multiple R-squared:  0.5565, Adjusted R-squared:  0.552 
## F-statistic:   124 on 5 and 494 DF,  p-value: < 2.2e-16

Observe:

  • estimaciones de los coeficientes,
  • errores estándar,
  • valores t,
  • valores p,
  • \(R^2\),
  • \(R^2\) ajustado,
  • prueba F.

11 VIF con el paquete car

La primera alternativa es:

car::vif()

Aplicamos:

car::vif(
  modelo_multi
)
##                edad antiguedad_vehiculo     valor_comercial      suma_asegurada 
##            1.013981            1.010379          121.079482          121.085443 
##  siniestros_previos 
##            1.014639

12 VIF y tolerancia con olsrr

Una ventaja de olsrr es que presenta simultáneamente:

  • tolerancia,
  • VIF.
olsrr::ols_vif_tol(
  modelo_multi
)

13 Alternativa con performance

El paquete performance proporciona otra forma de revisar multicolinealidad.

performance::check_collinearity(
  modelo_multi
)

Por tanto, tenemos tres alternativas:

car::vif(modelo_multi)

olsrr::ols_vif_tol(modelo_multi)

performance::check_collinearity(modelo_multi)

No es necesario utilizar las tres en un análisis real.

Se presentan para conocer distintas implementaciones disponibles en R.

14 Índice de condición

Además del VIF, puede utilizarse el índice de condición.

Se define a partir de los autovalores como:

\[ IC_j= \sqrt{ \frac{\lambda_{\max}} {\lambda_j} } \]

Un índice elevado indica que existe una combinación de variables explicativas cercana a una dependencia lineal.

Como referencia general:

  • valores menores de 10: poca preocupación,
  • valores entre 10 y 30: deben revisarse,
  • valores mayores de 30: pueden indicar un problema importante.

14.1 Cálculo mediante olsrr

olsrr::ols_eigen_cindex(
  modelo_multi
)

14.2 Diagnóstico completo de colinealidad

olsrr también permite obtener VIF, tolerancia, autovalores e índice de condición mediante una sola instrucción.

olsrr::ols_coll_diag(
  modelo_multi
)
## Tolerance and Variance Inflation Factor
## ---------------------------------------
##             Variables   Tolerance        VIF
## 1                edad 0.986212237   1.013981
## 2 antiguedad_vehiculo 0.989727151   1.010379
## 3     valor_comercial 0.008259038 121.079482
## 4      suma_asegurada 0.008258631 121.085443
## 5  siniestros_previos 0.985572338   1.014639
## 
## 
## Eigenvalue and Condition Index
## ------------------------------
##     Eigenvalue Condition Index    intercept         edad antiguedad_vehiculo
## 1 5.0008252790        1.000000 0.0019102180 0.0038450317        0.0085730958
## 2 0.5772581242        2.943309 0.0007142025 0.0052386937        0.0064659253
## 3 0.2402540573        4.562317 0.0018079263 0.0113515167        0.9039050421
## 4 0.1432147439        5.909177 0.0157175046 0.4385347468        0.0232033688
## 5 0.0380058117       11.470856 0.9787701016 0.5406946215        0.0576795977
## 6 0.0004419839      106.369623 0.0010800470 0.0003353896        0.0001729703
##   valor_comercial suma_asegurada siniestros_previos
## 1    3.298744e-05   3.327803e-05       1.148405e-02
## 2    3.797940e-05   3.816476e-05       9.326424e-01
## 3    2.910842e-04   2.937752e-04       9.324174e-04
## 4    1.100921e-03   1.133722e-03       4.511054e-06
## 5    5.914640e-04   6.265924e-04       5.474547e-02
## 6    9.979456e-01   9.978745e-01       1.911947e-04

15 ¿Cómo corregir la multicolinealidad?

No existe una solución automática.

Algunas alternativas son:

  1. revisar la definición de las variables,
  2. eliminar una variable redundante,
  3. combinar variables,
  4. aumentar el tamaño de muestra cuando sea posible,
  5. utilizar información externa,
  6. aplicar métodos de reducción de dimensionalidad,
  7. considerar técnicas de regularización cuando el objetivo sea predictivo.

La variable no debe eliminarse únicamente porque su VIF sea elevado.

La decisión debe considerar su significado actuarial.

16 Modelo reducido

Supongamos que después del análisis técnico decidimos mantener valor_comercial y retirar suma_asegurada.

modelo_multi_reducido <- lm(
  prima_anual ~
    edad +
    antiguedad_vehiculo +
    valor_comercial +
    siniestros_previos,
  data = datos_multi
)

summary(
  modelo_multi_reducido
)
## 
## Call:
## lm(formula = prima_anual ~ edad + antiguedad_vehiculo + valor_comercial + 
##     siniestros_previos, data = datos_multi)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -2218.93  -493.87    19.87   486.60  2107.55 
## 
## Coefficients:
##                       Estimate Std. Error t value Pr(>|t|)    
## (Intercept)         904.573781 144.752624   6.249 8.91e-10 ***
## edad                 11.169979   1.977744   5.648 2.74e-08 ***
## antiguedad_vehiculo -29.344022   7.404534  -3.963 8.49e-05 ***
## valor_comercial       0.016340   0.000744  21.961  < 2e-16 ***
## siniestros_previos  454.568352  41.456302  10.965  < 2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 722.7 on 495 degrees of freedom
## Multiple R-squared:  0.5564, Adjusted R-squared:  0.5528 
## F-statistic: 155.2 on 4 and 495 DF,  p-value: < 2.2e-16

Volvemos a evaluar VIF.

car::vif(
  modelo_multi_reducido
)
##                edad antiguedad_vehiculo     valor_comercial  siniestros_previos 
##            1.013686            1.010078            1.010011            1.014475

Alternativamente:

olsrr::ols_vif_tol(
  modelo_multi_reducido
)

Compare los resultados antes y después de retirar la variable.

17 Normalidad de los residuos

17.1 Concepto

El supuesto de normalidad establece que los errores siguen aproximadamente una distribución normal:

\[ \varepsilon_i \sim N(0,\sigma^2) \]

Es fundamental distinguir tres afirmaciones:

  1. La variable dependiente no necesariamente debe ser normal.
  2. Las variables explicativas no necesitan ser normales.
  3. El supuesto se refiere principalmente a los errores del modelo.

Como los errores no son observables, analizamos los residuos.

18 ¿Por qué importa la normalidad?

La normalidad es especialmente importante para justificar determinados resultados inferenciales, entre ellos:

  • pruebas t,
  • pruebas F,
  • intervalos de confianza,
  • intervalos de predicción.

En muestras grandes, pequeñas desviaciones de normalidad pueden tener poca importancia práctica.

Por ello una prueba formal debe acompañarse con análisis gráfico.

19 Ejemplo actuarial de normalidad

Supongamos que deseamos explicar la severidad de los siniestros mediante:

  • edad del asegurado,
  • valor del vehículo,
  • siniestros previos.

19.1 Generar los datos

set.seed(202)

n <- 400

edad_asegurado <- runif(
  n,
  20,
  75
)

valor_vehiculo <- runif(
  n,
  50000,
  300000
)

siniestros_previos <- rpois(
  n,
  lambda = 0.5
)

severidad <-
  3000 +
  35 * edad_asegurado +
  0.06 * valor_vehiculo +
  1200 * siniestros_previos +
  rnorm(
    n,
    mean = 0,
    sd = 4500
  )

datos_normalidad <- data.frame(
  severidad,
  edad_asegurado,
  valor_vehiculo,
  siniestros_previos
)

head(datos_normalidad)

20 Ajustar el modelo

modelo_normalidad <- lm(
  severidad ~
    edad_asegurado +
    valor_vehiculo +
    siniestros_previos,
  data = datos_normalidad
)

summary(
  modelo_normalidad
)
## 
## Call:
## lm(formula = severidad ~ edad_asegurado + valor_vehiculo + siniestros_previos, 
##     data = datos_normalidad)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -10486.7  -2914.3   -109.6   3233.4  17341.3 
## 
## Coefficients:
##                     Estimate Std. Error t value Pr(>|t|)    
## (Intercept)        3.068e+03  8.742e+02   3.510   0.0005 ***
## edad_asegurado     2.978e+01  1.385e+01   2.150   0.0321 *  
## valor_vehiculo     6.222e-02  3.030e-03  20.531  < 2e-16 ***
## siniestros_previos 1.421e+03  3.205e+02   4.433 1.21e-05 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 4448 on 396 degrees of freedom
## Multiple R-squared:  0.5261, Adjusted R-squared:  0.5226 
## F-statistic: 146.6 on 3 and 396 DF,  p-value: < 2.2e-16

21 Obtener los residuos

residuos_normalidad <- residuals(
  modelo_normalidad
)

summary(
  residuos_normalidad
)
##     Min.  1st Qu.   Median     Mean  3rd Qu.     Max. 
## -10486.7  -2914.3   -109.6      0.0   3233.4  17341.3

En un modelo con intercepto, la media de los residuos será aproximadamente cero.

mean(
  residuos_normalidad
)
## [1] 9.635515e-14

22 Histograma de residuos

hist(
  residuos_normalidad,
  breaks = 25,
  main = "Histograma de los residuos",
  xlab = "Residuos",
  ylab = "Frecuencia"
)

Alternativamente, olsrr incorpora un gráfico específico:

olsrr::ols_plot_resid_hist(
  modelo_normalidad
)

23 Gráfico Q-Q

Si los residuos se aproximan a una distribución normal, los puntos deberían ubicarse aproximadamente sobre una línea recta.

qqnorm(
  residuos_normalidad,
  main = "Gráfico Q-Q de los residuos"
)

qqline(
  residuos_normalidad,
  lwd = 2
)

También podemos utilizar:

olsrr::ols_plot_resid_qq(
  modelo_normalidad
)

No se espera que todos los puntos se encuentren exactamente sobre la línea.

Debemos buscar desviaciones sistemáticas, particularmente:

  • asimetría,
  • curvatura,
  • colas excesivamente largas,
  • observaciones alejadas.

24 Prueba de Jarque-Bera

La prueba de Jarque-Bera utiliza conjuntamente:

  • asimetría,
  • curtosis.

En una distribución normal:

\[ Asimetría=0 \]

y la curtosis de Pearson es:

\[ Curtosis=3 \]

El estadístico puede expresarse como:

\[ JB= \frac{n}{6} \left[ S^2+ \frac{(K-3)^2}{4} \right] \]

donde:

  • \(S\) representa asimetría,
  • \(K\) representa curtosis.

Las hipótesis son:

\[ H_0: \text{los residuos son compatibles con una distribución normal} \]

\[ H_1: \text{los residuos no son compatibles con una distribución normal} \]

25 Jarque-Bera con tseries

La primera alternativa será:

tseries::jarque.bera.test(
  residuos_normalidad
)
## 
##  Jarque Bera Test
## 
## data:  residuos_normalidad
## X-squared = 1.1555, df = 2, p-value = 0.5612

26 25. Jarque-Bera con moments

El paquete moments contiene otra implementación.

moments::jarque.test(
  residuos_normalidad
)
## 
##  Jarque-Bera Normality Test
## 
## data:  residuos_normalidad
## JB = 1.1555, p-value = 0.5612
## alternative hypothesis: greater

Por tanto, dos alternativas son:

tseries::jarque.bera.test(residuos)

moments::jarque.test(residuos)

En general, no es necesario ejecutar ambas.

La segunda se presenta como alternativa de implementación.

27 Asimetría y curtosis

El paquete moments permite calcularlas directamente.

moments::skewness(
  residuos_normalidad
)
## [1] 0.1174748
moments::kurtosis(
  residuos_normalidad
)
## [1] 2.881139

En una distribución aproximadamente normal esperamos:

\[ S\approx0 \]

y:

\[ K\approx3 \]

28 Prueba de Shapiro-Wilk

R incluye directamente la prueba Shapiro-Wilk.

Las hipótesis son:

\[ H_0: \text{los residuos proceden de una distribución normal} \]

\[ H_1: \text{los residuos no proceden de una distribución normal} \]

stats::shapiro.test(
  residuos_normalidad
)
## 
##  Shapiro-Wilk normality test
## 
## data:  residuos_normalidad
## W = 0.99398, p-value = 0.1143

Utilizando:

\[ \alpha=0.05 \]

la regla es:

  • si \(p\leq0.05\), rechazamos \(H_0\),
  • si \(p>0.05\), no rechazamos \(H_0\).

No debemos afirmar que \(H_0\) fue demostrada cuando el valor p es mayor que 0.05.

29 Prueba de Lilliefors

El test de Lilliefors es una modificación del procedimiento Kolmogorov-Smirnov para el caso en que los parámetros de la distribución normal son estimados a partir de los datos.

nortest::lillie.test(
  residuos_normalidad
)
## 
##  Lilliefors (Kolmogorov-Smirnov) normality test
## 
## data:  residuos_normalidad
## D = 0.026832, p-value = 0.6904

Sus hipótesis son igualmente:

\[ H_0: \text{normalidad} \]

\[ H_1: \text{no normalidad} \]

30 Anderson-Darling

Como diagnóstico adicional podemos utilizar:

nortest::ad.test(
  residuos_normalidad
)
## 
##  Anderson-Darling normality test
## 
## data:  residuos_normalidad
## A = 0.36054, p-value = 0.4457

Anderson-Darling es particularmente sensible a discrepancias en las colas.

31 Conjunto de pruebas con olsrr

olsrr también incorpora una función que reúne varios contrastes de normalidad.

olsrr::ols_test_normality(
  modelo_normalidad
)
## -----------------------------------------------
##        Test             Statistic       pvalue  
## -----------------------------------------------
## Shapiro-Wilk              0.994          0.1143 
## Kolmogorov-Smirnov        0.0268         0.9356 
## Cramer-von Mises         33.3958         0.0000 
## Anderson-Darling          0.3605         0.4457 
## -----------------------------------------------

No es necesario utilizar simultáneamente todas las pruebas.

En una aplicación práctica podría ser suficiente combinar, por ejemplo:

  • Q-Q plot,
  • Jarque-Bera,
  • Shapiro-Wilk.

32 Ejemplo deliberadamente no normal

Ahora generaremos una distribución asimétrica para observar cómo cambia el diagnóstico.

set.seed(203)

error_asimetrico <-
  rexp(
    n,
    rate = 1 / 4000
  ) -
  4000

severidad_asimetrica <-
  3000 +
  35 * edad_asegurado +
  0.06 * valor_vehiculo +
  1200 * siniestros_previos +
  error_asimetrico

datos_no_normal <- data.frame(
  severidad_asimetrica,
  edad_asegurado,
  valor_vehiculo,
  siniestros_previos
)

modelo_no_normal <- lm(
  severidad_asimetrica ~
    edad_asegurado +
    valor_vehiculo +
    siniestros_previos,
  data = datos_no_normal
)

residuos_no_normales <- residuals(
  modelo_no_normal
)

32.1 31.1 Q-Q plot

qqnorm(
  residuos_no_normales,
  main = "Q-Q plot: residuos no normales"
)

qqline(
  residuos_no_normales,
  lwd = 2
)

32.2 31.2 Jarque-Bera

tseries::jarque.bera.test(
  residuos_no_normales
)
## 
##  Jarque Bera Test
## 
## data:  residuos_no_normales
## X-squared = 852.46, df = 2, p-value < 2.2e-16

Alternativa:

moments::jarque.test(
  residuos_no_normales
)
## 
##  Jarque-Bera Normality Test
## 
## data:  residuos_no_normales
## JB = 852.46, p-value < 2.2e-16
## alternative hypothesis: greater

32.3 31.3 Shapiro-Wilk

stats::shapiro.test(
  residuos_no_normales
)
## 
##  Shapiro-Wilk normality test
## 
## data:  residuos_no_normales
## W = 0.81612, p-value < 2.2e-16

Compare estos resultados con los obtenidos anteriormente.

33 Reflexión actuarial sobre normalidad

Las variables monetarias asociadas con seguros frecuentemente presentan:

  • asimetría positiva,
  • colas largas,
  • concentraciones cercanas a cero,
  • eventos extremos.

Por ello, si la estructura de la variable dependiente es marcadamente asimétrica, puede ser necesario considerar:

  • transformaciones,
  • modelos lognormales,
  • distribuciones Gamma,
  • modelos lineales generalizados,
  • otros modelos específicos para severidad.

El objetivo no debe ser obligar a todos los problemas a cumplir los supuestos de una regresión normal.

El diagnóstico también sirve para determinar cuándo otro modelo puede ser más adecuado.

34 Homocedasticidad

34.1 Concepto

El supuesto de homocedasticidad establece que la varianza de los errores es constante:

\[ Var(\varepsilon_i\mid X) = \sigma^2 \]

para todas las observaciones.

Cuando la varianza depende de los niveles de las variables explicativas tenemos:

\[ Var(\varepsilon_i\mid X) \neq \sigma^2 \]

y hablamos de heterocedasticidad.

35 ¿Por qué importa la heterocedasticidad?

Ante heterocedasticidad, los estimadores de mínimos cuadrados ordinarios pueden continuar siendo insesgados bajo determinadas condiciones.

Sin embargo, sus errores estándar tradicionales pueden dejar de ser adecuados.

Como consecuencia pueden afectarse:

  • valores t,
  • valores p,
  • pruebas F,
  • intervalos de confianza.

En ciencias actuariales la heterocedasticidad es especialmente plausible.

Por ejemplo, el costo de los siniestros de pólizas con valores asegurados elevados puede presentar una dispersión mucho mayor que el correspondiente a pólizas pequeñas.

36 Ejemplo actuarial de heterocedasticidad

36.1 Generar los datos

set.seed(303)

n <- 500

valor_asegurado <- runif(
  n,
  50000,
  500000
)

edad <- runif(
  n,
  20,
  75
)

# Hacemos que la desviación estándar
# aumente con el valor asegurado.

desviacion_error <-
  1000 +
  0.025 * valor_asegurado

error_hetero <- rnorm(
  n,
  mean = 0,
  sd = desviacion_error
)

costo_anual <-
  1500 +
  20 * edad +
  0.08 * valor_asegurado +
  error_hetero

datos_hetero <- data.frame(
  costo_anual,
  edad,
  valor_asegurado
)

head(datos_hetero)

37 Ajustar el modelo

modelo_hetero <- lm(
  costo_anual ~
    edad +
    valor_asegurado,
  data = datos_hetero
)

summary(
  modelo_hetero
)
## 
## Call:
## lm(formula = costo_anual ~ edad + valor_asegurado, data = datos_hetero)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -22794.3  -4569.2    104.2   4052.7  29716.3 
## 
## Coefficients:
##                  Estimate Std. Error t value Pr(>|t|)    
## (Intercept)     1.022e+03  1.472e+03   0.694    0.488    
## edad            1.008e+01  2.277e+01   0.443    0.658    
## valor_asegurado 8.533e-02  2.857e-03  29.871   <2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 8137 on 497 degrees of freedom
## Multiple R-squared:  0.6436, Adjusted R-squared:  0.6422 
## F-statistic: 448.8 on 2 and 497 DF,  p-value: < 2.2e-16

38 Diagnóstico gráfico

plot(
  fitted(modelo_hetero),
  residuals(modelo_hetero),
  xlab = "Valores ajustados",
  ylab = "Residuos",
  main = "Residuos frente a valores ajustados"
)

abline(
  h = 0,
  lty = 2
)

En condiciones de homocedasticidad esperamos observar una nube:

  • aproximadamente horizontal,
  • centrada alrededor de cero,
  • con dispersión aproximadamente constante.

Patrones como:

  • abanico,
  • embudo,
  • triángulo,
  • diamante,

pueden indicar heterocedasticidad.

39 Gráfico Scale-Location

R también incorpora el gráfico Scale-Location dentro de los diagnósticos estándar.

plot(
  modelo_hetero,
  which = 3
)

Un patrón creciente puede sugerir que la variabilidad aumenta con los valores predichos.

40 Prueba de Breusch-Pagan

Las hipótesis son:

\[ H_0: Var(\varepsilon_i)=\sigma^2 \]

es decir, homocedasticidad.

Frente a:

\[ H_1: Var(\varepsilon_i) \text{ no es constante} \]

41 Breusch-Pagan con lmtest

lmtest::bptest(
  modelo_hetero
)
## 
##  studentized Breusch-Pagan test
## 
## data:  modelo_hetero
## BP = 70.454, df = 2, p-value = 5.025e-16

bptest() utiliza por defecto la versión studentizada de Koenker.

Si queremos la versión original de Breusch-Pagan:

lmtest::bptest(
  modelo_hetero,
  studentize = FALSE
)
## 
##  Breusch-Pagan test
## 
## data:  modelo_hetero
## BP = 107.37, df = 2, p-value < 2.2e-16

42 Alternativa Breusch-Pagan con olsrr

olsrr::ols_test_breusch_pagan(
  modelo_hetero
)
## 
##  Breusch Pagan Test for Heteroskedasticity
##  -----------------------------------------
##  Ho: the variance is constant            
##  Ha: the variance is not constant        
## 
##                  Data                   
##  ---------------------------------------
##  Response : costo_anual 
##  Variables: fitted values of costo_anual 
## 
##          Test Summary           
##  -------------------------------
##  DF            =    1 
##  Chi2          =    107.3604 
##  Prob > Chi2   =    3.711416e-25

Otra opción consiste en evaluar explícitamente los predictores del lado derecho:

olsrr::ols_test_breusch_pagan(
  modelo_hetero,
  rhs = TRUE
)
## 
##  Breusch Pagan Test for Heteroskedasticity
##  -----------------------------------------
##  Ho: the variance is constant            
##  Ha: the variance is not constant        
## 
##              Data               
##  -------------------------------
##  Response : costo_anual 
##  Variables: edad valor_asegurado 
## 
##          Test Summary           
##  -------------------------------
##  DF            =    2 
##  Chi2          =    107.3656 
##  Prob > Chi2   =    4.851367e-24

De esta forma tenemos dos implementaciones principales:

lmtest::bptest(modelo)

olsrr::ols_test_breusch_pagan(modelo)

43 Prueba de White

La prueba de White permite detectar estructuras de heterocedasticidad más generales.

Su lógica consiste en explicar los residuos al cuadrado utilizando:

  • variables explicativas,
  • cuadrados de las variables,
  • eventualmente interacciones.

Las hipótesis son:

\[ H_0: \text{homocedasticidad} \]

\[ H_1: \text{heterocedasticidad} \]

El paquete skedastic contiene una implementación directa.

skedastic::white(
  modelo_hetero
)

Si queremos incluir también interacciones entre los predictores:

skedastic::white(
  modelo_hetero,
  interactions = TRUE
)

No debe confundirse esta prueba con otras funciones denominadas white.test que pueden implementar procedimientos distintos.

44 Prueba de Goldfeld-Quandt

El procedimiento de Goldfeld-Quandt divide las observaciones después de ordenarlas según una variable y compara la variabilidad entre grupos.

Las hipótesis son:

\[ H_0: \text{varianza constante} \]

\[ H_1: \text{varianza creciente o diferente entre grupos} \]

En nuestro ejemplo tiene sentido ordenar por valor_asegurado.

lmtest::gqtest(
  costo_anual ~
    edad +
    valor_asegurado,
  order.by = ~ valor_asegurado,
  data = datos_hetero
)
## 
##  Goldfeld-Quandt test
## 
## data:  costo_anual ~ edad + valor_asegurado
## GQ = 4.23, df1 = 247, df2 = 247, p-value < 2.2e-16
## alternative hypothesis: variance increases from segment 1 to 2

45 Comparación de pruebas de homocedasticidad

Podemos ejecutar:

lmtest::bptest(
  modelo_hetero
)
## 
##  studentized Breusch-Pagan test
## 
## data:  modelo_hetero
## BP = 70.454, df = 2, p-value = 5.025e-16
skedastic::white(
  modelo_hetero,
  interactions = TRUE
)
lmtest::gqtest(
  costo_anual ~
    edad +
    valor_asegurado,
  order.by = ~ valor_asegurado,
  data = datos_hetero
)
## 
##  Goldfeld-Quandt test
## 
## data:  costo_anual ~ edad + valor_asegurado
## GQ = 4.23, df1 = 247, df2 = 247, p-value < 2.2e-16
## alternative hypothesis: variance increases from segment 1 to 2

No deben interpretarse como tres votos independientes.

Cada prueba tiene una lógica diferente.

El diagnóstico debe combinar:

  • teoría,
  • gráficos,
  • pruebas formales.

46 ¿Qué hacer ante heterocedasticidad?

Las posibles alternativas incluyen:

  1. revisar la forma funcional del modelo,
  2. transformar la variable dependiente,
  3. transformar predictores,
  4. utilizar mínimos cuadrados ponderados,
  5. utilizar errores estándar robustos,
  6. considerar modelos cuya distribución permita que la varianza dependa de la media.

En aplicaciones actuariales esta última posibilidad es particularmente importante.

47 Linealidad

47.1 Concepto

El supuesto de linealidad implica que la media condicional de la respuesta se encuentra correctamente representada mediante la forma funcional especificada.

En el modelo:

\[ E(Y\mid X) = \beta_0+ \beta_1X_1+ \cdots+ \beta_kX_k \]

la expresión es lineal en los parámetros.

Es importante comprender que un modelo que contiene:

\[ X^2 \]

puede seguir siendo una regresión lineal.

Por ejemplo:

\[ Y= \beta_0+ \beta_1X+ \beta_2X^2+ \varepsilon \]

continúa siendo lineal respecto de:

\[ \beta_0,\beta_1,\beta_2 \]

48 Ejemplo actuarial de no linealidad

Supongamos que analizamos el costo esperado de siniestros según:

  • edad del conductor,
  • kilometraje anual.

Es posible que la edad tenga una relación curva con el riesgo.

Por ejemplo:

  • conductores jóvenes presentan mayor riesgo,
  • el riesgo disminuye en edades intermedias,
  • posteriormente vuelve a aumentar.

48.1 Generar los datos

set.seed(404)

n <- 500

edad_conductor <- runif(
  n,
  18,
  80
)

kilometros_anuales <- runif(
  n,
  5000,
  30000
)

costo <-
  2500 +
  0.025 * kilometros_anuales +
  4.5 * (edad_conductor - 45)^2 +
  rnorm(
    n,
    0,
    1800
  )

datos_linealidad <- data.frame(
  costo,
  edad_conductor,
  kilometros_anuales
)

head(datos_linealidad)

49 Modelo lineal inicial

Supongamos que inicialmente especificamos:

\[ Costo= \beta_0+ \beta_1Edad+ \beta_2Kilometros+ \varepsilon \]

modelo_lineal_simple <- lm(
  costo ~
    edad_conductor +
    kilometros_anuales,
  data = datos_linealidad
)

summary(
  modelo_lineal_simple
)
## 
## Call:
## lm(formula = costo ~ edad_conductor + kilometros_anuales, data = datos_linealidad)
## 
## Residuals:
##    Min     1Q Median     3Q    Max 
##  -6239  -1424     72   1341   6761 
## 
## Coefficients:
##                     Estimate Std. Error t value Pr(>|t|)    
## (Intercept)        2.468e+03  3.818e+02   6.462 2.46e-10 ***
## edad_conductor     3.430e+01  5.494e+00   6.244 9.18e-10 ***
## kilometros_anuales 1.305e-02  1.349e-02   0.967    0.334    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 2160 on 497 degrees of freedom
## Multiple R-squared:  0.07357,    Adjusted R-squared:  0.06984 
## F-statistic: 19.73 on 2 and 497 DF,  p-value: 5.665e-09

50 Residuos frente a valores ajustados

plot(
  fitted(modelo_lineal_simple),
  residuals(modelo_lineal_simple),
  xlab = "Valores ajustados",
  ylab = "Residuos",
  main = "Residuos frente a valores ajustados"
)

abline(
  h = 0,
  lty = 2
)

lines(
  lowess(
    fitted(modelo_lineal_simple),
    residuals(modelo_lineal_simple)
  ),
  lwd = 2
)

Una curva sistemática en los residuos puede indicar que la forma funcional utilizada es inadecuada.

51 Gráfico de componentes más residuos

Una herramienta especialmente útil es el gráfico de componentes más residuos.

También se conoce como:

  • Component + Residual Plot,
  • Partial Residual Plot.

El paquete car permite obtenerlo directamente.

car::crPlots(
  modelo_lineal_simple
)

Este gráfico permite estudiar la forma de la relación entre cada predictor y la respuesta después de controlar estadísticamente los demás predictores.

52 Prueba RESET de Ramsey

Como complemento del diagnóstico gráfico puede utilizarse la prueba RESET.

Sus hipótesis pueden interpretarse aproximadamente como:

\[ H_0: \text{la especificación funcional es adecuada} \]

\[ H_1: \text{existe evidencia de mala especificación} \]

lmtest::resettest(
  modelo_lineal_simple,
  power = 2:3,
  type = "fitted"
)
## 
##  RESET test
## 
## data:  modelo_lineal_simple
## RESET = 124.52, df1 = 2, df2 = 495, p-value < 2.2e-16

53 Rainbow test

Otra alternativa disponible en lmtest es la prueba Rainbow.

lmtest::raintest(
  modelo_lineal_simple
)
## 
##  Rainbow test
## 
## data:  modelo_lineal_simple
## Rain = 1.0298, df1 = 250, df2 = 247, p-value = 0.4086

Estas pruebas son complementarias al análisis gráfico.

No sustituyen la necesidad de comprender la forma funcional del problema.

54 Incorporar un término cuadrático

Después del diagnóstico podemos plantear:

\[ Costo= \beta_0+ \beta_1Edad+ \beta_2Edad^2+ \beta_3Kilometros+ \varepsilon \]

En R:

modelo_cuadratico <- lm(
  costo ~
    edad_conductor +
    I(edad_conductor^2) +
    kilometros_anuales,
  data = datos_linealidad
)

summary(
  modelo_cuadratico
)
## 
## Call:
## lm(formula = costo ~ edad_conductor + I(edad_conductor^2) + kilometros_anuales, 
##     data = datos_linealidad)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -5506.5 -1189.3    92.1  1227.2  4598.8 
## 
## Coefficients:
##                       Estimate Std. Error t value Pr(>|t|)    
## (Intercept)          1.195e+04  6.605e+02  18.096   <2e-16 ***
## edad_conductor      -4.145e+02  2.798e+01 -14.813   <2e-16 ***
## I(edad_conductor^2)  4.586e+00  2.823e-01  16.245   <2e-16 ***
## kilometros_anuales   1.715e-02  1.091e-02   1.571    0.117    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 1747 on 496 degrees of freedom
## Multiple R-squared:  0.3953, Adjusted R-squared:  0.3916 
## F-statistic: 108.1 on 3 and 496 DF,  p-value: < 2.2e-16

55 Revisar los residuos nuevamente

plot(
  fitted(modelo_cuadratico),
  residuals(modelo_cuadratico),
  xlab = "Valores ajustados",
  ylab = "Residuos",
  main = "Modelo con término cuadrático"
)

abline(
  h = 0,
  lty = 2
)

lines(
  lowess(
    fitted(modelo_cuadratico),
    residuals(modelo_cuadratico)
  ),
  lwd = 2
)

Compare este gráfico con el obtenido para el modelo inicial.

56 Comparación mediante AIC

AIC(
  modelo_lineal_simple,
  modelo_cuadratico
)

57 Comparación mediante BIC

BIC(
  modelo_lineal_simple,
  modelo_cuadratico
)

Un valor menor de AIC o BIC representa un mejor equilibrio entre ajuste y complejidad según el criterio correspondiente.

58 Comparación de modelos anidados

Como el modelo lineal simple se encuentra contenido dentro del modelo cuadrático, también podemos comparar los modelos mediante:

anova(
  modelo_lineal_simple,
  modelo_cuadratico
)

Las hipótesis pueden conceptualizarse como:

\[ H_0: \beta_2=0 \]

frente a:

\[ H_1: \beta_2\neq0 \]

donde \(\beta_2\) corresponde al término cuadrático.

59 Independencia de los términos de error

59.1 Concepto

El supuesto de independencia establece que los errores de distintas observaciones no deben presentar una relación sistemática.

En datos temporales puede existir:

\[ Corr(\varepsilon_t,\varepsilon_{t-1}) \neq0 \]

A este fenómeno se le denomina autocorrelación.

60 Aplicaciones actuariales donde puede aparecer

La dependencia temporal puede aparecer al analizar:

  • pagos mensuales de siniestros,
  • reservas técnicas,
  • siniestralidad mensual,
  • primas emitidas por periodo,
  • mortalidad anual,
  • rendimientos de inversiones,
  • tasas de interés,
  • número de reclamaciones mensuales.

En estos casos el orden de las observaciones contiene información.

61 Ejemplo actuarial de autocorrelación

Generaremos información de 120 meses.

set.seed(505)

n <- 120

mes <- 1:n

exposicion <-
  10000 +
  45 * mes +
  rnorm(
    n,
    0,
    300
  )

rho <- 0.75

error_auto <- arima.sim(
  model = list(
    ar = rho
  ),
  n = n,
  sd = 250
)

siniestros_mensuales <-
  500 +
  0.07 * exposicion +
  2.5 * mes +
  as.numeric(error_auto)

datos_auto <- data.frame(
  mes,
  exposicion,
  siniestros_mensuales
)

head(datos_auto)

62 Ajustar el modelo

modelo_auto <- lm(
  siniestros_mensuales ~
    exposicion +
    mes,
  data = datos_auto
)

summary(
  modelo_auto
)
## 
## Call:
## lm(formula = siniestros_mensuales ~ exposicion + mes, data = datos_auto)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -1050.21  -239.69   -27.32   209.11   902.30 
## 
## Coefficients:
##              Estimate Std. Error t value Pr(>|t|)  
## (Intercept) -938.7148  1083.3677  -0.866   0.3880  
## exposicion     0.2027     0.1089   1.861   0.0653 .
## mes           -1.4707     5.0949  -0.289   0.7734  
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 363.2 on 117 degrees of freedom
## Multiple R-squared:  0.3763, Adjusted R-squared:  0.3656 
## F-statistic: 35.29 on 2 and 117 DF,  p-value: 1.015e-12

63 Residuos en el tiempo

plot(
  datos_auto$mes,
  residuals(modelo_auto),
  type = "l",
  xlab = "Mes",
  ylab = "Residuo",
  main = "Residuos a través del tiempo"
)

abline(
  h = 0,
  lty = 2
)

En ausencia de autocorrelación se espera una sucesión relativamente aleatoria alrededor de cero.

En presencia de autocorrelación positiva pueden observarse:

  • varios residuos positivos consecutivos,
  • varios residuos negativos consecutivos,
  • patrones persistentes.

64 Función de autocorrelación

acf(
  residuals(modelo_auto),
  main = "ACF de los residuos"
)

La barra correspondiente al rezago 1 es especialmente importante para estudiar autocorrelación de primer orden.

65 Durbin-Watson

El estadístico Durbin-Watson puede expresarse como:

\[ DW= \frac{ \sum_{t=2}^{n}(e_t-e_{t-1})^2 }{ \sum_{t=1}^{n}e_t^2 } \]

De manera aproximada:

\[ DW\approx2 \]

sugiere ausencia de autocorrelación de primer orden.

\[ DW<2 \]

es consistente con autocorrelación positiva.

\[ DW>2 \]

es consistente con autocorrelación negativa.

66 Durbin-Watson mediante lmtest

lmtest::dwtest(
  modelo_auto,
  alternative = "two.sided"
)
## 
##  Durbin-Watson test
## 
## data:  modelo_auto
## DW = 0.57668, p-value = 1.654e-15
## alternative hypothesis: true autocorrelation is not 0

Las hipótesis son:

\[ H_0: \rho=0 \]

frente a:

\[ H_1: \rho\neq0 \]

67 Alternativa mediante car

El paquete car también incorpora Durbin-Watson.

car::durbinWatsonTest(
  modelo_auto,
  max.lag = 1
)
##  lag Autocorrelation D-W Statistic p-value
##    1       0.7089551     0.5766766       0
##  Alternative hypothesis: rho != 0

Esta implementación utiliza simulación para obtener el valor p.

Por tanto, tenemos como alternativas:

lmtest::dwtest(modelo)

car::durbinWatsonTest(modelo)

68 Breusch-Godfrey como diagnóstico adicional

Durbin-Watson se centra principalmente en autocorrelación de primer orden.

Una alternativa más general es Breusch-Godfrey.

Por ejemplo, para estudiar hasta cuatro rezagos:

lmtest::bgtest(
  modelo_auto,
  order = 4
)
## 
##  Breusch-Godfrey test for serial correlation of order up to 4
## 
## data:  modelo_auto
## LM test = 60.49, df = 4, p-value = 2.289e-12

Las hipótesis son:

\[ H_0: \text{no existe autocorrelación hasta el orden evaluado} \]

frente a:

\[ H_1: \text{existe autocorrelación} \]

69 ¿Qué hacer ante autocorrelación?

Dependiendo del problema pueden considerarse:

  • variables temporales adicionales,
  • efectos estacionales,
  • modelos con errores AR,
  • modelos ARIMA,
  • modelos dinámicos,
  • estructuras explícitas de correlación.

El punto fundamental es que una regresión ordinaria puede no ser suficiente si las observaciones presentan una estructura temporal importante.

70 Valores atípicos

Aunque el análisis de valores atípicos no siempre se formula como un supuesto clásico, constituye una etapa esencial del diagnóstico.

Debemos distinguir:

  1. outliers,
  2. observaciones con alto leverage,
  3. observaciones influyentes.

71 Outlier

Un outlier es una observación cuyo valor de la variable dependiente es mal explicado por el modelo.

Por ello suele presentar un residuo grande.

72 Leverage

Una observación posee alto leverage cuando presenta valores inusuales en las variables explicativas.

Es decir, se encuentra alejada del centro de la nube multivariada de predictores.

73 Influencia

Una observación es influyente cuando su presencia afecta sustancialmente:

  • los coeficientes,
  • los valores ajustados,
  • las conclusiones del modelo.

Una observación puede ser:

  • outlier sin alto leverage,
  • leverage alto sin ser outlier,
  • simultáneamente outlier y leverage alto,
  • influyente o no influyente.

74 Ejemplo actuarial de observaciones atípicas

set.seed(606)

n <- 300

edad <- runif(
  n,
  20,
  75
)

valor_vehiculo <- runif(
  n,
  50000,
  250000
)

siniestros_previos <- rpois(
  n,
  lambda = 0.6
)

costo <-
  1000 +
  20 * edad +
  0.07 * valor_vehiculo +
  900 * siniestros_previos +
  rnorm(
    n,
    0,
    3000
  )

datos_atipicos <- data.frame(
  costo,
  edad,
  valor_vehiculo,
  siniestros_previos
)

# Introducimos tres siniestros extraordinarios.

datos_atipicos$costo[
  c(25, 120, 250)
] <-
  datos_atipicos$costo[
    c(25, 120, 250)
  ] +
  c(
    30000,
    45000,
    55000
  )

# Introducimos un asegurado con un vehículo
# extraordinariamente costoso.

datos_atipicos$valor_vehiculo[300] <-
  900000

datos_atipicos$costo[300] <-
  85000

75 Ajustar el modelo

modelo_atipicos <- lm(
  costo ~
    edad +
    valor_vehiculo +
    siniestros_previos,
  data = datos_atipicos
)

summary(
  modelo_atipicos
)
## 
## Call:
## lm(formula = costo ~ edad + valor_vehiculo + siniestros_previos, 
##     data = datos_atipicos)
## 
## Residuals:
##    Min     1Q Median     3Q    Max 
## -10500  -2456   -221   1726  59977 
## 
## Coefficients:
##                     Estimate Std. Error t value Pr(>|t|)    
## (Intercept)        1.643e+03  1.242e+03   1.323   0.1868    
## edad               2.159e+00  1.943e+01   0.111   0.9116    
## valor_vehiculo     7.376e-02  4.488e-03  16.435   <2e-16 ***
## siniestros_previos 8.769e+02  4.138e+02   2.119   0.0349 *  
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 5663 on 296 degrees of freedom
## Multiple R-squared:  0.4866, Adjusted R-squared:  0.4814 
## F-statistic: 93.52 on 3 and 296 DF,  p-value: < 2.2e-16

76 Residuos estudentizados

Los residuos estudentizados permiten comparar mejor observaciones que los residuos ordinarios.

R los calcula directamente mediante:

residuos_estudentizados <- stats::rstudent(
  modelo_atipicos
)

head(
  residuos_estudentizados
)
##            1            2            3            4            5            6 
##  0.909681097  0.250543854  0.902549431  0.113934631 -0.497591616  0.002627843

Como criterio exploratorio pueden revisarse observaciones con:

\[ |r_i|>2 \]

which(
  abs(residuos_estudentizados) > 2
)
##  25 120 250 300 
##  25 120 250 300

Un criterio más estricto sería:

\[ |r_i|>3 \]

which(
  abs(residuos_estudentizados) > 3
)
##  25 120 250 300 
##  25 120 250 300

77 Prueba de outliers con car

El paquete car incorpora una prueba Bonferroni para detectar observaciones atípicas.

car::outlierTest(
  modelo_atipicos
)
##      rstudent unadjusted p-value Bonferroni p
## 250 13.517540         9.8439e-33   2.9532e-30
## 120  8.665099         3.0334e-16   9.1003e-14
## 25   5.477132         9.2651e-08   2.7795e-05

78 Alternativa con olsrr

olsrr::ols_test_outlier(
  modelo_atipicos
)

Por tanto podemos complementar:

  • residuos estudentizados,
  • prueba Bonferroni.

79 Leverage

Los valores de leverage corresponden a los elementos diagonales de la matriz:

\[ H= X(X'X)^{-1}X' \]

En R:

leverage <- stats::hatvalues(
  modelo_atipicos
)

head(
  leverage
)
##           1           2           3           4           5           6 
## 0.019861152 0.010067968 0.012723879 0.008980309 0.017179051 0.015684090

Una regla exploratoria es:

\[ h_i> \frac{2p}{n} \]

donde \(p\) representa el número de parámetros del modelo, incluyendo el intercepto.

p <- length(
  coef(modelo_atipicos)
)

n_obs <- nobs(
  modelo_atipicos
)

umbral_leverage <-
  2 * p / n_obs

umbral_leverage
## [1] 0.02666667

Identificamos:

which(
  leverage >
    umbral_leverage
)
##  30  44  61  99 125 134 180 226 238 239 300 
##  30  44  61  99 125 134 180 226 238 239 300

80 Distancia de Cook

La distancia de Cook mide cuánto pueden cambiar los resultados del modelo debido a una observación.

cook <- stats::cooks.distance(
  modelo_atipicos
)

head(
  cook
)
##            1            2            3            4            5            6 
## 4.194578e-03 1.601110e-04 2.626244e-03 2.950605e-05 1.084716e-03 2.760154e-08

Una regla exploratoria frecuente es:

\[ D_i>\frac{4}{n} \]

umbral_cook <-
  4 / nobs(modelo_atipicos)

umbral_cook
## [1] 0.01333333

Observaciones potencialmente influyentes:

which(
  cook >
    umbral_cook
)
##  12  25 120 250 300 
##  12  25 120 250 300

81 Gráfico de distancia de Cook con olsrr

olsrr::ols_plot_cooksd_chart(
  modelo_atipicos
)

Otra presentación:

olsrr::ols_plot_cooksd_bar(
  modelo_atipicos
)

82 Residuos estudentizados con olsrr

olsrr::ols_plot_resid_stud(
  modelo_atipicos
)

83 Residuos contra leverage

olsrr::ols_plot_resid_lev(
  modelo_atipicos
)

Este gráfico permite visualizar simultáneamente dos características importantes:

  • magnitud del residuo,
  • leverage.

84 Gráfico de influencia con car

Una herramienta muy útil integra:

  • residuos estudentizados,
  • leverage,
  • distancia de Cook.
car::influencePlot(
  modelo_atipicos
)

En este gráfico:

  • el eje horizontal representa leverage,
  • el eje vertical representa residuos estudentizados,
  • el tamaño de los círculos refleja aproximadamente la distancia de Cook.

85 Índices de influencia con car

Otra alternativa es:

car::influenceIndexPlot(
  modelo_atipicos
)

86 Distancia de Mahalanobis

La distancia de Mahalanobis permite analizar qué tan inusual es una observación considerando simultáneamente varias variables explicativas.

Se define como:

\[ D_i^2= (x_i-\bar{x})' S^{-1} (x_i-\bar{x}) \]

R posee directamente la función mahalanobis().

X_atipicos <- datos_atipicos[
  c(
    "edad",
    "valor_vehiculo",
    "siniestros_previos"
  )
]

distancia_mahalanobis <- stats::mahalanobis(
  X_atipicos,
  center = colMeans(X_atipicos),
  cov = cov(X_atipicos)
)

head(
  distancia_mahalanobis
)
## [1] 4.941818 2.013656 2.807773 1.688446 4.139870 3.692876

Un criterio exploratorio puede obtenerse mediante una distribución chi-cuadrado.

umbral_mahalanobis <- qchisq(
  0.99,
  df = ncol(X_atipicos)
)

umbral_mahalanobis
## [1] 11.34487

Identificamos observaciones:

which(
  distancia_mahalanobis >
    umbral_mahalanobis
)
## [1] 300

87 ¿Debe eliminarse una observación atípica?

No automáticamente.

Antes de eliminarla debemos investigar:

  • ¿existe un error de digitación?
  • ¿el valor es físicamente imposible?
  • ¿corresponde a otra población?
  • ¿se trata de un siniestro real?
  • ¿el modelo se encuentra mal especificado?
  • ¿el evento extremo representa una característica real del riesgo?

En ciencias actuariales esta última pregunta es fundamental.

Un siniestro extremadamente grande puede ser precisamente la observación que contiene información importante sobre la cola de la distribución.

88 Caso integrado

Ahora construiremos un modelo actuarial y realizaremos el diagnóstico completo.

Una aseguradora desea explicar el costo anual de siniestros mediante:

  • edad del asegurado,
  • antigüedad del vehículo,
  • kilometraje anual,
  • valor asegurado,
  • número de siniestros previos.

89 Generar la cartera

set.seed(707)

n <- 600

edad <- runif(
  n,
  18,
  75
)

antiguedad <- runif(
  n,
  0,
  18
)

kilometros <- runif(
  n,
  5000,
  35000
)

valor_asegurado <- runif(
  n,
  50000,
  400000
)

siniestros_previos <- rpois(
  n,
  lambda = 0.7
)

# Construimos deliberadamente
# cierta heterocedasticidad.

sigma <-
  1800 +
  0.01 * valor_asegurado

costo_siniestros <-
  800 +
  25 * edad -
  40 * antiguedad +
  0.035 * kilometros +
  0.065 * valor_asegurado +
  1000 * siniestros_previos +
  rnorm(
    n,
    mean = 0,
    sd = sigma
  )

cartera <- data.frame(
  costo_siniestros,
  edad,
  antiguedad,
  kilometros,
  valor_asegurado,
  siniestros_previos
)

head(
  cartera
)

90 Análisis descriptivo

summary(
  cartera
)
##  costo_siniestros      edad         antiguedad         kilometros   
##  Min.   :-2602    Min.   :18.15   Min.   : 0.05606   Min.   : 5035  
##  1st Qu.:10950    1st Qu.:32.83   1st Qu.: 4.66395   1st Qu.:12474  
##  Median :16697    Median :45.30   Median : 8.97847   Median :20165  
##  Mean   :17652    Mean   :46.07   Mean   : 9.12721   Mean   :20045  
##  3rd Qu.:23315    3rd Qu.:60.06   3rd Qu.:13.59833   3rd Qu.:27832  
##  Max.   :43692    Max.   :74.91   Max.   :17.96471   Max.   :34994  
##  valor_asegurado  siniestros_previos
##  Min.   : 50279   Min.   :0.000     
##  1st Qu.:130338   1st Qu.:0.000     
##  Median :223452   Median :1.000     
##  Mean   :221905   Mean   :0.725     
##  3rd Qu.:313408   3rd Qu.:1.000     
##  Max.   :399968   Max.   :5.000

91 Matriz de correlaciones

round(
  cor(cartera),
  3
)
##                    costo_siniestros   edad antiguedad kilometros
## costo_siniestros              1.000  0.075      0.011      0.091
## edad                          0.075  1.000      0.026      0.054
## antiguedad                    0.011  0.026      1.000      0.031
## kilometros                    0.091  0.054      0.031      1.000
## valor_asegurado               0.857  0.017      0.022      0.097
## siniestros_previos            0.084 -0.022     -0.024     -0.028
##                    valor_asegurado siniestros_previos
## costo_siniestros             0.857              0.084
## edad                         0.017             -0.022
## antiguedad                   0.022             -0.024
## kilometros                   0.097             -0.028
## valor_asegurado              1.000             -0.009
## siniestros_previos          -0.009              1.000

92 Ajustar el modelo

modelo_final <- lm(
  costo_siniestros ~
    edad +
    antiguedad +
    kilometros +
    valor_asegurado +
    siniestros_previos,
  data = cartera
)

summary(
  modelo_final
)
## 
## Call:
## lm(formula = costo_siniestros ~ edad + antiguedad + kilometros + 
##     valor_asegurado + siniestros_previos, data = cartera)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -13446.8  -2654.7   -110.8   2591.2  15699.1 
## 
## Coefficients:
##                      Estimate Std. Error t value Pr(>|t|)    
## (Intercept)         49.793872 795.115941   0.063  0.95009    
## edad                32.889533  10.779745   3.051  0.00238 ** 
## antiguedad         -11.679962  34.056292  -0.343  0.73175    
## kilometros           0.006551   0.019956   0.328  0.74282    
## valor_asegurado      0.069327   0.001676  41.362  < 2e-16 ***
## siniestros_previos 935.253423 207.986552   4.497  8.3e-06 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 4287 on 594 degrees of freedom
## Multiple R-squared:  0.7477, Adjusted R-squared:  0.7456 
## F-statistic: 352.1 on 5 and 594 DF,  p-value: < 2.2e-16

93 Interpretación de los coeficientes

Los coeficientes estimados son:

coef(
  modelo_final
)
##        (Intercept)               edad         antiguedad         kilometros 
##       49.793871877       32.889532944      -11.679962356        0.006551215 
##    valor_asegurado siniestros_previos 
##        0.069326830      935.253423163

Cada coeficiente se interpreta manteniendo constantes los demás predictores.

Por ejemplo:

coef(
  modelo_final
)["siniestros_previos"]
## siniestros_previos 
##           935.2534

Si el coeficiente estimado fuera aproximadamente 1,000, la interpretación sería:

Manteniendo constantes las demás variables incluidas en el modelo, un siniestro previo adicional se asocia con aproximadamente 1,000 unidades monetarias adicionales en el costo anual esperado de siniestros.

Observe que hablamos de asociación.

Un coeficiente de regresión obtenido con datos observacionales no implica automáticamente causalidad.

94 Diagnóstico 1: multicolinealidad

94.1 Alternativa 1: car

car::vif(
  modelo_final
)
##               edad         antiguedad         kilometros    valor_asegurado 
##           1.004071           1.002420           1.013796           1.010001 
## siniestros_previos 
##           1.001707

94.2 Alternativa 2: olsrr

olsrr::ols_vif_tol(
  modelo_final
)

94.3 Alternativa 3: performance

performance::check_collinearity(
  modelo_final
)

94.4 Índice de condición

olsrr::ols_eigen_cindex(
  modelo_final
)

95 Diagnóstico 2: normalidad

Obtenemos los residuos:

res_final <- residuals(
  modelo_final
)

95.1 Histograma

hist(
  res_final,
  breaks = 30,
  main = "Histograma de residuos",
  xlab = "Residuo"
)

95.2 Q-Q plot

qqnorm(
  res_final,
  main = "Q-Q plot"
)

qqline(
  res_final,
  lwd = 2
)

95.3 Jarque-Bera: alternativa 1

tseries::jarque.bera.test(
  res_final
)
## 
##  Jarque Bera Test
## 
## data:  res_final
## X-squared = 14.082, df = 2, p-value = 0.0008754

95.4 Jarque-Bera: alternativa 2

moments::jarque.test(
  res_final
)
## 
##  Jarque-Bera Normality Test
## 
## data:  res_final
## JB = 14.082, p-value = 0.0008754
## alternative hypothesis: greater

95.5 Shapiro-Wilk

stats::shapiro.test(
  res_final
)
## 
##  Shapiro-Wilk normality test
## 
## data:  res_final
## W = 0.99391, p-value = 0.01634

95.6 Lilliefors

nortest::lillie.test(
  res_final
)
## 
##  Lilliefors (Kolmogorov-Smirnov) normality test
## 
## data:  res_final
## D = 0.031526, p-value = 0.157

95.7 Diagnóstico conjunto con olsrr

olsrr::ols_test_normality(
  modelo_final
)
## -----------------------------------------------
##        Test             Statistic       pvalue  
## -----------------------------------------------
## Shapiro-Wilk              0.9939         0.0163 
## Kolmogorov-Smirnov        0.0315         0.5899 
## Cramer-von Mises         50.0267         0.0000 
## Anderson-Darling          0.7862         0.0412 
## -----------------------------------------------

96 Diagnóstico 3: homocedasticidad

96.1 Gráfico

plot(
  fitted(modelo_final),
  residuals(modelo_final),
  xlab = "Valores ajustados",
  ylab = "Residuos",
  main = "Residuos frente a valores ajustados"
)

abline(
  h = 0,
  lty = 2
)

lines(
  lowess(
    fitted(modelo_final),
    residuals(modelo_final)
  ),
  lwd = 2
)

96.2 Breusch-Pagan con lmtest

lmtest::bptest(
  modelo_final
)
## 
##  studentized Breusch-Pagan test
## 
## data:  modelo_final
## BP = 73.199, df = 5, p-value = 2.209e-14

96.3 Breusch-Pagan con olsrr

olsrr::ols_test_breusch_pagan(
  modelo_final
)
## 
##  Breusch Pagan Test for Heteroskedasticity
##  -----------------------------------------
##  Ho: the variance is constant            
##  Ha: the variance is not constant        
## 
##                     Data                     
##  --------------------------------------------
##  Response : costo_siniestros 
##  Variables: fitted values of costo_siniestros 
## 
##          Test Summary           
##  -------------------------------
##  DF            =    1 
##  Chi2          =    87.30031 
##  Prob > Chi2   =    9.323329e-21

96.4 White

skedastic::white(
  modelo_final,
  interactions = TRUE
)

97 Diagnóstico 4: linealidad

97.1 Component + Residual Plots

car::crPlots(
  modelo_final
)

97.2 RESET

lmtest::resettest(
  modelo_final,
  power = 2:3,
  type = "fitted"
)
## 
##  RESET test
## 
## data:  modelo_final
## RESET = 1.4575, df1 = 2, df2 = 592, p-value = 0.2336

97.3 Rainbow

lmtest::raintest(
  modelo_final
)
## 
##  Rainbow test
## 
## data:  modelo_final
## Rain = 0.93681, df1 = 300, df2 = 294, p-value = 0.7131

98 Diagnóstico 5: independencia

Este conjunto de datos es de corte transversal.

Por ello el orden de las observaciones no posee necesariamente interpretación temporal.

En consecuencia, Durbin-Watson no sería indispensable en este ejemplo.

Sin embargo, para observar su sintaxis:

lmtest::dwtest(
  modelo_final
)
## 
##  Durbin-Watson test
## 
## data:  modelo_final
## DW = 2.0563, p-value = 0.755
## alternative hypothesis: true autocorrelation is greater than 0

Este resultado no debe interpretarse mecánicamente porque el orden de las pólizas no representa necesariamente tiempo.

99 Diagnóstico 6: valores atípicos

99.1 Residuos estudentizados

rstudent(
  modelo_final
)
##             1             2             3             4             5 
## -0.7652724719 -0.8700587055  1.0583519273 -0.4938952177 -0.2437067599 
##             6             7             8             9            10 
##  1.2662671444  1.4059618626 -0.4393942982 -0.2361708626  0.8704671189 
##            11            12            13            14            15 
## -0.0362732317  2.2547698854  0.1157669947 -0.7649717240 -0.1831588824 
##            16            17            18            19            20 
##  0.0354096445  0.9543553637  0.0651390909 -0.6203468185  1.3517008350 
##            21            22            23            24            25 
##  0.2545824274 -1.1806310166  0.1561508761  0.3777955970  1.2028908324 
##            26            27            28            29            30 
## -2.0743467342 -0.7543862756  0.9339878669  0.1624425397  0.8508886069 
##            31            32            33            34            35 
## -0.1648285163 -1.0710158442  0.7794220821 -1.7812213528  1.1349100744 
##            36            37            38            39            40 
##  0.6085541402 -1.3323382909 -0.8462486402 -0.7440279594 -0.5120375734 
##            41            42            43            44            45 
## -0.1772742622 -0.3274816036 -0.4336029737 -0.9844961366  0.7314861460 
##            46            47            48            49            50 
##  0.0317932049 -0.8684657334 -0.1402141834  0.6724995621 -1.1185420878 
##            51            52            53            54            55 
## -0.6129380857  1.0176937716 -1.5159315589  0.4611492207  1.6528796409 
##            56            57            58            59            60 
## -0.0702606763 -0.5047998222 -1.3741154610 -0.2985074198 -0.7027839058 
##            61            62            63            64            65 
##  0.0256762174 -2.0058469801  0.3960625561  0.8574141403 -1.2966600702 
##            66            67            68            69            70 
## -0.1787559458 -0.0240539194  1.4897596958 -0.1570652738  0.2995077177 
##            71            72            73            74            75 
## -0.6194121007  0.0746662026  0.6901562512  1.7428512267  0.4154055953 
##            76            77            78            79            80 
## -0.4897841086 -1.1398566055 -1.1790680535  0.1132278126  0.0312709079 
##            81            82            83            84            85 
##  0.6837747678  0.2192303976 -0.2687716986 -0.0094645419 -0.9756731998 
##            86            87            88            89            90 
##  1.5854957620 -1.2092367319  1.2478755870 -1.1189569480 -0.9965448074 
##            91            92            93            94            95 
## -0.2790217995 -0.9911945742 -0.5289195680 -0.6197239693  0.5055788253 
##            96            97            98            99           100 
##  0.4659322738 -0.5766331703 -0.1542074604  0.1059264667  1.5524401104 
##           101           102           103           104           105 
## -1.0779198237 -0.6123038439 -0.8225762461 -0.2428339771  0.7363035410 
##           106           107           108           109           110 
##  1.8001383402  1.2128721813 -0.7658761969  0.3806689529 -0.1859917611 
##           111           112           113           114           115 
## -0.3022645148 -0.9638138009  1.5630478041 -0.3233829619 -1.2251696336 
##           116           117           118           119           120 
## -0.0406224336 -0.9581432419  0.5744299740  0.3714835557  0.2805421513 
##           121           122           123           124           125 
## -0.7666577334  2.3138491847  0.0571417767  0.1776178962 -0.9067728187 
##           126           127           128           129           130 
##  0.8619494231 -1.6073503555 -0.2735125436 -1.1328721568  0.6442778898 
##           131           132           133           134           135 
##  0.0015594313  0.1454985048  0.8901786256 -0.4079687067  0.4364798474 
##           136           137           138           139           140 
## -0.6270403721  0.3905879982 -0.4443540644  1.1518507031  0.6490707956 
##           141           142           143           144           145 
##  1.5026349731  2.2969989405 -0.6291985310  0.0294315879 -0.9488266345 
##           146           147           148           149           150 
##  0.2318167045  1.8583506343  1.6099682749  0.3426733373 -1.4887374235 
##           151           152           153           154           155 
## -0.3496075929 -1.1386995795 -0.1333179480 -1.8218174814  0.4687328039 
##           156           157           158           159           160 
##  1.6884407582 -1.5515060641  1.2945486148 -0.8692415420  2.4112599880 
##           161           162           163           164           165 
##  0.2849359475 -0.5302851975 -0.0339968611 -0.6902789844 -0.3511143883 
##           166           167           168           169           170 
##  1.7983434393  0.2170234176 -0.8647395885 -1.9635588471  0.1367938009 
##           171           172           173           174           175 
##  0.1254487118 -0.0390142745  0.8539044562  1.2846342963 -0.6304235903 
##           176           177           178           179           180 
##  1.8883797522  1.4329784743 -0.5400557205  0.0575154681  1.5484041719 
##           181           182           183           184           185 
## -0.7263428958 -1.3477480480  0.4089329305  1.3341400124  0.8492559402 
##           186           187           188           189           190 
## -0.9866775482  0.3748896371  0.6667022417  1.3531068380  0.8301948883 
##           191           192           193           194           195 
## -0.2155221209  0.0434593137 -0.0003538672 -0.2258844685 -0.0816588508 
##           196           197           198           199           200 
## -0.1276067559  1.7572996224  1.1462680811  0.8080983745 -1.4725108964 
##           201           202           203           204           205 
##  0.7274650884 -0.7376268644  0.5003220967 -3.0356853300 -0.4868398840 
##           206           207           208           209           210 
## -1.9425286315 -0.4271026243 -0.9867495640  1.1005635365 -2.9271121555 
##           211           212           213           214           215 
## -0.2671301263 -1.2212068331 -0.4174596377 -0.5479895946 -0.3825724761 
##           216           217           218           219           220 
##  0.9209525629  0.9084913479 -0.6174854551  1.5362585900  0.4375820491 
##           221           222           223           224           225 
## -1.1003262812 -0.2546041598  0.3311289171 -0.6071659739 -0.6391747214 
##           226           227           228           229           230 
##  0.2125822643  0.7607693999  0.3737220965  0.5474754856 -0.1135339527 
##           231           232           233           234           235 
##  0.3832178824  0.2013787626 -0.0968933820  0.1871788491 -0.7380481718 
##           236           237           238           239           240 
## -0.8026818823  0.9273174739 -1.5576940576 -0.4233524842  0.5647149919 
##           241           242           243           244           245 
## -0.6626297118  0.3529884625  0.1835652881  0.3252786013 -0.3860113924 
##           246           247           248           249           250 
##  1.1054416851 -0.5875141020 -0.7885808461 -1.1062135540  0.0998533513 
##           251           252           253           254           255 
##  0.4645894153 -0.5338452804 -1.7029121725  0.5274369903  0.2350729844 
##           256           257           258           259           260 
##  0.2577287062  0.1619844529 -0.0309038980  0.9455993621  0.8823851109 
##           261           262           263           264           265 
## -0.8392486430 -1.0155707891 -0.3111419782 -0.9668096728 -2.3289676443 
##           266           267           268           269           270 
## -0.6069983440 -1.4612539765  0.4049735970 -0.5122988172  0.2515945125 
##           271           272           273           274           275 
##  0.0503419183  0.2927330007  0.7068445528 -0.9104022236  1.1267571680 
##           276           277           278           279           280 
## -1.9952811015  0.3416745451  2.6095590418  0.8640259024  1.2998466039 
##           281           282           283           284           285 
##  0.5016673659 -0.3309167055  0.5659270603 -0.1117857753  0.8224031514 
##           286           287           288           289           290 
## -1.0796397005 -0.4623166901  0.2666116164 -0.3037515936 -0.3862538017 
##           291           292           293           294           295 
## -0.5639551842 -0.9110930165 -0.9402276383  1.4869268157  0.6081161966 
##           296           297           298           299           300 
##  0.0257307355  0.4953153541  0.0884681084 -1.3329332724 -0.6884361484 
##           301           302           303           304           305 
## -0.0649724868  0.8556830360 -0.1480326613 -2.7506918546 -0.3349139964 
##           306           307           308           309           310 
##  0.2423190841  0.8349274580  0.6116154357 -0.6414680706  1.0570026323 
##           311           312           313           314           315 
## -0.5957536592  0.4958795083 -0.8140869353  0.3050476834  0.5171907957 
##           316           317           318           319           320 
## -1.0032343918 -0.3379138769  0.1193058423  0.1733158732  0.4092038206 
##           321           322           323           324           325 
##  2.0357892566  0.7216884183  1.0546493539 -0.2279104872  1.1412060335 
##           326           327           328           329           330 
##  0.5910966638 -0.9291820360  1.3191390507 -0.7686259456  1.7148608710 
##           331           332           333           334           335 
## -0.4838217101 -0.3352063705 -1.1988596401 -1.5957149387 -2.3024279385 
##           336           337           338           339           340 
##  1.0249549763  0.7943939699  1.3526135320  2.4904678779  1.2169972329 
##           341           342           343           344           345 
##  0.7307212148 -0.5664917844 -0.1674696950  0.3323378419 -0.4110152596 
##           346           347           348           349           350 
##  0.0166100546  3.6400204783 -0.6115272405  0.6204763572 -0.3181563837 
##           351           352           353           354           355 
## -1.4063305810  0.4019978612 -0.8723045129 -0.3675472575 -0.2011694116 
##           356           357           358           359           360 
##  0.0485147780  1.0408819389 -0.3948375552  0.7985273459 -1.5852228909 
##           361           362           363           364           365 
## -0.3265893509 -0.5308465107 -0.2404364887  1.3365559811  0.6074193874 
##           366           367           368           369           370 
## -1.1381299132  0.9748459409 -0.5759766130 -0.2007166389 -0.9958673006 
##           371           372           373           374           375 
## -1.6409478447 -1.4338393289  1.5740451587 -1.1033338540 -0.7227634749 
##           376           377           378           379           380 
##  1.7467715005  0.3831228430 -1.9792428622 -0.2406931525  0.3165272115 
##           381           382           383           384           385 
##  0.8092687438 -0.9042422943 -1.6954851168 -0.4811917512 -1.6315118076 
##           386           387           388           389           390 
## -0.3845392566 -0.2637538434 -0.1635574824 -1.3357062255  0.1509951263 
##           391           392           393           394           395 
##  0.2589739928  0.3597232270 -0.2645340420 -0.2657510424  0.3445981525 
##           396           397           398           399           400 
## -0.1020909874  1.6627109140 -1.9160769160 -0.4894949826  1.3035313710 
##           401           402           403           404           405 
## -0.3347140171 -0.7795845636  0.1491994665 -0.4680004429  0.1853237571 
##           406           407           408           409           410 
##  0.4711675260  0.2133571277 -0.6822420637 -2.1264324042  2.8951445717 
##           411           412           413           414           415 
##  0.2721205047 -1.3315069149  1.4268304995 -0.6473549421  0.4115662148 
##           416           417           418           419           420 
##  2.3715021807  0.7291779069  0.1399955484 -1.8481115588  0.2373514358 
##           421           422           423           424           425 
## -0.4920828828  0.5098369857 -0.4315812693  0.0744326207 -0.7021027325 
##           426           427           428           429           430 
##  2.2967834238 -0.3297542465  0.8691940321 -1.1391760656 -0.0355115019 
##           431           432           433           434           435 
## -0.2339510160 -0.2823966471 -2.0603153476  3.0977069655 -0.2930540966 
##           436           437           438           439           440 
##  0.2111380965  0.3337406063 -0.7413134213 -0.0277980052 -1.4387890535 
##           441           442           443           444           445 
## -0.0579685810 -0.0706003866  0.4643899304  0.6145353103  0.9959624795 
##           446           447           448           449           450 
##  0.1102959812  0.4961753113  0.6224796000 -0.1154350553 -0.2256047757 
##           451           452           453           454           455 
##  0.8494842635  0.5336928041  2.0170115536  0.1416120469 -0.0077311409 
##           456           457           458           459           460 
## -0.1065439349  0.0337446321  1.3455893588  0.5149619307 -1.8207357787 
##           461           462           463           464           465 
## -2.0090646509  1.3483513858  0.6465909952  0.7766464926  0.1640142189 
##           466           467           468           469           470 
## -0.3350874655  0.2465806181  0.4628699134  1.1873418922  1.3588375991 
##           471           472           473           474           475 
## -0.5868963017 -0.7045807925 -0.2159976001 -0.4628580646 -0.6441622531 
##           476           477           478           479           480 
## -0.3573353179  0.3254384354 -0.1169747067 -0.7160772143  1.7083905842 
##           481           482           483           484           485 
## -1.2224570777  0.5710195627  0.5113629271  1.6247761116  0.7407393473 
##           486           487           488           489           490 
##  0.3500573244 -0.5863126791  0.2342665371 -0.5512637712  0.3933481373 
##           491           492           493           494           495 
##  1.6497732374 -0.0501430035 -1.1027428431  0.0434125779  2.1189013225 
##           496           497           498           499           500 
## -0.7593533901  1.0251773461 -0.5355366239 -1.5082332611 -0.2367377577 
##           501           502           503           504           505 
##  1.1375004755  1.2415156820 -0.4123259727  2.1447244030 -1.0132266983 
##           506           507           508           509           510 
## -0.5918630579  1.4829785759 -0.3341336681  0.0528748291 -2.5945591500 
##           511           512           513           514           515 
## -0.5357141752  0.3527255627 -0.3098069105  0.7548105286  0.3988138619 
##           516           517           518           519           520 
## -1.0888656041 -0.6818505688  1.0312275334  1.0089563656 -0.7469462279 
##           521           522           523           524           525 
##  0.0669717431  0.1980944070 -0.3944243887  1.0068582650 -0.1424915532 
##           526           527           528           529           530 
##  0.2526293833  2.1534540637 -1.3731397585  0.8157278098  0.1085998072 
##           531           532           533           534           535 
## -0.2086720462  0.8237434207  0.2297498063 -0.7518508581 -1.1993494326 
##           536           537           538           539           540 
## -0.1718960700  0.5475278048  0.5664253615 -3.1713849642  0.2995646632 
##           541           542           543           544           545 
## -0.8253757805  0.9144870863 -0.7818726873  1.9567608376 -0.1446173272 
##           546           547           548           549           550 
##  0.8434336462  0.5187699060 -0.3029303236 -1.0219541348  0.5170454261 
##           551           552           553           554           555 
## -2.1844095670 -0.3554596720  0.7579413134  0.3011816330  0.7770252378 
##           556           557           558           559           560 
##  0.6844834925 -0.9654705949  0.2593093854  0.6372871389 -0.2706673567 
##           561           562           563           564           565 
## -0.1392611841  0.4545170848 -0.4067597334 -0.0887358682 -1.2935707935 
##           566           567           568           569           570 
## -1.1716674027  1.4359247377  0.6553226293  2.8046921645  0.2195467230 
##           571           572           573           574           575 
## -0.2442997499 -0.0974909183 -1.2560306457 -1.9263999139 -0.6150716058 
##           576           577           578           579           580 
##  3.7180049528 -0.9626171062 -0.8178164870 -1.1638014758 -0.3262101369 
##           581           582           583           584           585 
## -1.4110424356  1.2670040484 -0.9527971880 -1.1379603129  0.0837021628 
##           586           587           588           589           590 
##  0.5948452156  0.0728472909 -3.0501110961 -1.1148358873  0.3716729468 
##           591           592           593           594           595 
##  1.1709723760  0.1681261741  0.1207020950  0.1270985676  1.1465629758 
##           596           597           598           599           600 
## -0.5681623629 -0.6685503324 -0.2963544058  0.4513188161  0.2504380299

Observaciones con:

\[ |r_i|>2 \]

which(
  abs(
    rstudent(modelo_final)
  ) > 2
)
##  12  26  62 122 142 160 204 210 265 278 304 321 335 339 347 409 410 416 426 433 
##  12  26  62 122 142 160 204 210 265 278 304 321 335 339 347 409 410 416 426 433 
## 434 453 461 495 504 510 527 539 551 569 576 588 
## 434 453 461 495 504 510 527 539 551 569 576 588

99.2 Test Bonferroni

car::outlierTest(
  modelo_final
)
## No Studentized residuals with Bonferroni p < 0.05
## Largest |rstudent|:
##     rstudent unadjusted p-value Bonferroni p
## 576 3.718005         0.00021984      0.13191

100 Diagnóstico 7: leverage

hatvalues(
  modelo_final
)
##           1           2           3           4           5           6 
## 0.010341299 0.008219393 0.007078211 0.004774700 0.006716056 0.008308819 
##           7           8           9          10          11          12 
## 0.011607048 0.013031440 0.009310485 0.005029197 0.008195828 0.009176992 
##          13          14          15          16          17          18 
## 0.009298063 0.012469883 0.004389717 0.007252448 0.010469550 0.011048427 
##          19          20          21          22          23          24 
## 0.011714582 0.009314860 0.010870029 0.007553305 0.009793996 0.008657276 
##          25          26          27          28          29          30 
## 0.003624276 0.015531636 0.005521708 0.015879480 0.006765747 0.011848084 
##          31          32          33          34          35          36 
## 0.010719688 0.008998006 0.014990840 0.010264040 0.006013938 0.009676623 
##          37          38          39          40          41          42 
## 0.011353067 0.009179363 0.011448897 0.006059534 0.011590485 0.012314063 
##          43          44          45          46          47          48 
## 0.014426963 0.006404358 0.005645564 0.004323381 0.053516005 0.011351898 
##          49          50          51          52          53          54 
## 0.011819533 0.010926138 0.007234683 0.006044898 0.010878139 0.005766697 
##          55          56          57          58          59          60 
## 0.013656220 0.007782807 0.011047987 0.009485355 0.017194774 0.012598865 
##          61          62          63          64          65          66 
## 0.008997535 0.015226980 0.006692929 0.035411333 0.007148534 0.012729896 
##          67          68          69          70          71          72 
## 0.011760737 0.014006447 0.006350429 0.011788823 0.009627454 0.011282759 
##          73          74          75          76          77          78 
## 0.011015170 0.006386245 0.008463044 0.012857921 0.008592540 0.003212275 
##          79          80          81          82          83          84 
## 0.010271746 0.013276245 0.008445859 0.008435990 0.008357479 0.008699770 
##          85          86          87          88          89          90 
## 0.005630015 0.012684610 0.005918923 0.010018995 0.009638249 0.015840862 
##          91          92          93          94          95          96 
## 0.002698963 0.011642786 0.013988526 0.006378246 0.008393997 0.006788376 
##          97          98          99         100         101         102 
## 0.010553454 0.010589220 0.007392149 0.010300711 0.012039979 0.007793241 
##         103         104         105         106         107         108 
## 0.007306507 0.010542638 0.012903206 0.013430807 0.004248361 0.022402275 
##         109         110         111         112         113         114 
## 0.005593574 0.007889116 0.008281265 0.007852253 0.005780372 0.008233504 
##         115         116         117         118         119         120 
## 0.011251805 0.003303941 0.015936895 0.010883715 0.005003826 0.009532019 
##         121         122         123         124         125         126 
## 0.012956111 0.012179130 0.012753830 0.012717403 0.004663849 0.008434128 
##         127         128         129         130         131         132 
## 0.012019556 0.010082617 0.007219526 0.005021413 0.007835197 0.011772032 
##         133         134         135         136         137         138 
## 0.016563672 0.007079547 0.007305612 0.014973917 0.009498655 0.006724023 
##         139         140         141         142         143         144 
## 0.008250787 0.007722071 0.007083381 0.009981240 0.010313686 0.013172941 
##         145         146         147         148         149         150 
## 0.011748717 0.015783400 0.004637737 0.011435246 0.007571012 0.009988244 
##         151         152         153         154         155         156 
## 0.010103983 0.005503322 0.005339492 0.006136593 0.017466947 0.008387613 
##         157         158         159         160         161         162 
## 0.012025110 0.008864103 0.006130016 0.010652163 0.006772741 0.015266389 
##         163         164         165         166         167         168 
## 0.006151922 0.006733005 0.009642222 0.012870583 0.008676380 0.009003681 
##         169         170         171         172         173         174 
## 0.003825119 0.006063614 0.011760045 0.008655732 0.009749286 0.008558172 
##         175         176         177         178         179         180 
## 0.007152323 0.014412167 0.011969417 0.020452717 0.016290806 0.011117596 
##         181         182         183         184         185         186 
## 0.009293279 0.005169513 0.009652876 0.006537752 0.006745526 0.007929197 
##         187         188         189         190         191         192 
## 0.006625057 0.006563919 0.010037347 0.009101592 0.014297570 0.016967661 
##         193         194         195         196         197         198 
## 0.010039644 0.008150421 0.008859171 0.004430491 0.014950360 0.007021115 
##         199         200         201         202         203         204 
## 0.007381017 0.011870838 0.007308364 0.008137355 0.009618862 0.012443480 
##         205         206         207         208         209         210 
## 0.021075020 0.010876785 0.007942785 0.007733229 0.006107080 0.010072627 
##         211         212         213         214         215         216 
## 0.013838512 0.012783733 0.005812995 0.006064405 0.007089362 0.012294520 
##         217         218         219         220         221         222 
## 0.012933528 0.012369128 0.013839704 0.012395092 0.008787410 0.009245228 
##         223         224         225         226         227         228 
## 0.011486401 0.006114663 0.013873772 0.012234321 0.008416764 0.004774930 
##         229         230         231         232         233         234 
## 0.010315568 0.006422718 0.009575961 0.011034033 0.012012862 0.009343690 
##         235         236         237         238         239         240 
## 0.004321273 0.010005198 0.012498041 0.008030221 0.010473334 0.007411512 
##         241         242         243         244         245         246 
## 0.008294122 0.003345254 0.008755735 0.008213431 0.008391260 0.005053827 
##         247         248         249         250         251         252 
## 0.007979939 0.006556254 0.010825615 0.009508152 0.004455384 0.010489684 
##         253         254         255         256         257         258 
## 0.013762412 0.003900623 0.008082886 0.007455145 0.004471296 0.010153379 
##         259         260         261         262         263         264 
## 0.008690774 0.023995468 0.014523089 0.015137190 0.015056789 0.008491421 
##         265         266         267         268         269         270 
## 0.020719414 0.012826951 0.008148664 0.011232951 0.015072947 0.008681550 
##         271         272         273         274         275         276 
## 0.007094845 0.020029068 0.010099962 0.006515066 0.012889545 0.008745684 
##         277         278         279         280         281         282 
## 0.011451991 0.014178265 0.015814221 0.006895948 0.005497954 0.010948442 
##         283         284         285         286         287         288 
## 0.011041673 0.007482215 0.011694684 0.013413401 0.010221806 0.013024732 
##         289         290         291         292         293         294 
## 0.004317708 0.011311378 0.007336288 0.009616852 0.009284369 0.008927753 
##         295         296         297         298         299         300 
## 0.010343621 0.007135325 0.011469279 0.014451979 0.006147605 0.008431963 
##         301         302         303         304         305         306 
## 0.004963071 0.008610667 0.014439799 0.012166975 0.008255850 0.013089672 
##         307         308         309         310         311         312 
## 0.009064806 0.008788214 0.012876609 0.007401757 0.003799340 0.008884151 
##         313         314         315         316         317         318 
## 0.008198079 0.012221783 0.011771006 0.010816903 0.011373477 0.016308288 
##         319         320         321         322         323         324 
## 0.008789094 0.010549244 0.009311223 0.007635273 0.005351347 0.005498161 
##         325         326         327         328         329         330 
## 0.007376810 0.010808678 0.007570567 0.016057855 0.009950979 0.006630638 
##         331         332         333         334         335         336 
## 0.011865849 0.008317635 0.006414457 0.014507116 0.009068223 0.007930534 
##         337         338         339         340         341         342 
## 0.013946926 0.011593947 0.007664127 0.005803822 0.013538378 0.010040596 
##         343         344         345         346         347         348 
## 0.028459378 0.005018581 0.012845906 0.023115182 0.009533704 0.007450657 
##         349         350         351         352         353         354 
## 0.008124627 0.014370144 0.005330070 0.004544480 0.008550994 0.013377635 
##         355         356         357         358         359         360 
## 0.009674188 0.009876164 0.012614071 0.007883471 0.022079205 0.007580180 
##         361         362         363         364         365         366 
## 0.012938351 0.004679024 0.008786671 0.020833318 0.011919510 0.007211068 
##         367         368         369         370         371         372 
## 0.005904412 0.006335073 0.006297239 0.011553400 0.006388945 0.008089142 
##         373         374         375         376         377         378 
## 0.010715453 0.009328171 0.012277785 0.004330626 0.008465956 0.012881976 
##         379         380         381         382         383         384 
## 0.007211689 0.009595586 0.015307813 0.005887222 0.007259299 0.007138036 
##         385         386         387         388         389         390 
## 0.006760569 0.006597084 0.011300444 0.006981083 0.011776416 0.006337141 
##         391         392         393         394         395         396 
## 0.013736943 0.022377885 0.007788377 0.007083571 0.008843056 0.008547713 
##         397         398         399         400         401         402 
## 0.011600440 0.008384617 0.008978140 0.008413081 0.007876946 0.015886967 
##         403         404         405         406         407         408 
## 0.004152306 0.006449119 0.005799188 0.010229916 0.014593403 0.005187768 
##         409         410         411         412         413         414 
## 0.011962625 0.011104915 0.013918394 0.013256467 0.006937863 0.011935492 
##         415         416         417         418         419         420 
## 0.008735200 0.010731022 0.004799985 0.011521985 0.007476999 0.012428590 
##         421         422         423         424         425         426 
## 0.010750352 0.009203686 0.017917450 0.007226152 0.013415584 0.009103666 
##         427         428         429         430         431         432 
## 0.008596377 0.008522361 0.005219479 0.017843363 0.013415808 0.010563076 
##         433         434         435         436         437         438 
## 0.017255331 0.008992676 0.011996822 0.012111894 0.010922370 0.006881525 
##         439         440         441         442         443         444 
## 0.006139613 0.005008034 0.013519751 0.006913408 0.012103490 0.004678709 
##         445         446         447         448         449         450 
## 0.006409321 0.009852268 0.002235322 0.019054217 0.004567955 0.010677467 
##         451         452         453         454         455         456 
## 0.008640766 0.009173290 0.006462372 0.009627562 0.008748541 0.007305209 
##         457         458         459         460         461         462 
## 0.014571001 0.008691479 0.009567606 0.010459821 0.013000816 0.004011949 
##         463         464         465         466         467         468 
## 0.007331960 0.021861417 0.006548454 0.014276089 0.004755303 0.008098559 
##         469         470         471         472         473         474 
## 0.018682329 0.005746649 0.009948719 0.009001034 0.011800847 0.019283889 
##         475         476         477         478         479         480 
## 0.007032655 0.007657559 0.019210671 0.011837368 0.013078785 0.009584079 
##         481         482         483         484         485         486 
## 0.005228614 0.013069859 0.011801479 0.011608329 0.011765416 0.013846255 
##         487         488         489         490         491         492 
## 0.012151526 0.010979949 0.004275508 0.014043603 0.011266968 0.009442329 
##         493         494         495         496         497         498 
## 0.010211152 0.004827802 0.010869733 0.012127679 0.023307466 0.007453991 
##         499         500         501         502         503         504 
## 0.012680588 0.006789367 0.008822586 0.012770795 0.011628895 0.028785696 
##         505         506         507         508         509         510 
## 0.015202620 0.008350024 0.007876051 0.009111257 0.010332347 0.005139181 
##         511         512         513         514         515         516 
## 0.008149415 0.010296827 0.005701674 0.008466103 0.007686839 0.010326368 
##         517         518         519         520         521         522 
## 0.008597846 0.007188769 0.011332771 0.007750745 0.010948800 0.015007389 
##         523         524         525         526         527         528 
## 0.004128440 0.010364633 0.008567545 0.010414624 0.016947885 0.008219925 
##         529         530         531         532         533         534 
## 0.006663683 0.009677092 0.008845058 0.008673042 0.005492481 0.012762284 
##         535         536         537         538         539         540 
## 0.011124612 0.006689973 0.008659474 0.013198025 0.006985683 0.010362200 
##         541         542         543         544         545         546 
## 0.019822261 0.008932272 0.018944014 0.009820815 0.010520977 0.009287515 
##         547         548         549         550         551         552 
## 0.004797820 0.006437960 0.015582354 0.007373007 0.005667997 0.008417693 
##         553         554         555         556         557         558 
## 0.004277759 0.012914072 0.008293681 0.008294132 0.012853181 0.012967619 
##         559         560         561         562         563         564 
## 0.008441638 0.013712074 0.013461131 0.009096795 0.005256302 0.007423221 
##         565         566         567         568         569         570 
## 0.010777542 0.010828378 0.011761410 0.010556761 0.009636976 0.012208288 
##         571         572         573         574         575         576 
## 0.010915327 0.006984966 0.014904412 0.012961150 0.009313178 0.009052949 
##         577         578         579         580         581         582 
## 0.008646182 0.003635166 0.009419889 0.008943063 0.007077851 0.007256580 
##         583         584         585         586         587         588 
## 0.009903874 0.008440538 0.009678476 0.014908046 0.006594403 0.004056550 
##         589         590         591         592         593         594 
## 0.017297949 0.007578818 0.010336459 0.006664019 0.006838076 0.009699211 
##         595         596         597         598         599         600 
## 0.014703350 0.012293375 0.008423129 0.007026947 0.003393571 0.006830394

Definimos:

n_final <- nobs(
  modelo_final
)

p_final <- length(
  coef(modelo_final)
)

umbral_leverage_final <-
  2 * p_final / n_final

umbral_leverage_final
## [1] 0.02

Identificamos:

which(
  hatvalues(modelo_final) >
    umbral_leverage_final
)
##  47  64 108 178 205 260 265 272 343 346 359 364 392 464 497 504 
##  47  64 108 178 205 260 265 272 343 346 359 364 392 464 497 504

101 Diagnóstico 8: distancia de Cook

cooks.distance(
  modelo_final
)
##            1            2            3            4            5            6 
## 1.020642e-03 1.046039e-03 1.330545e-03 1.952973e-04 6.703677e-05 2.236770e-03 
##            7            8            9           10           11           12 
## 3.862553e-03 4.254388e-04 8.750382e-05 6.385854e-04 1.815177e-06 7.794383e-03 
##           13           14           15           16           17           18 
## 2.099857e-05 1.232409e-03 2.469216e-05 1.529215e-06 1.606324e-03 7.913820e-06 
##           19           20           21           22           23           24 
## 7.610484e-04 2.859212e-03 1.188960e-04 1.766929e-03 4.026112e-05 2.080402e-04 
##           25           26           27           28           29           30 
## 8.765418e-04 1.125171e-02 5.270231e-04 2.346457e-03 3.000715e-05 1.447506e-03 
##           31           32           33           34           35           36 
## 4.914599e-05 1.735421e-03 1.541938e-03 5.463839e-03 1.298195e-03 6.037464e-04 
##           37           38           39           40           41           42 
## 3.392996e-03 1.106292e-03 1.069346e-03 2.667295e-04 6.151961e-05 2.231816e-04 
##           43           44           45           46           47           48 
## 4.593180e-04 1.041274e-03 5.067190e-04 7.327463e-07 7.110567e-03 3.768571e-05 
##           49           50           51           52           53           54 
## 9.023967e-04 2.302543e-03 4.567847e-04 1.049734e-03 4.203052e-03 2.058480e-04 
##           55           56           57           58           59           60 
## 6.285921e-03 6.464442e-06 4.750510e-04 3.009116e-03 2.602283e-04 1.051236e-03 
##           61           62           63           64           65           66 
## 9.992885e-07 1.031614e-02 1.764111e-04 4.500117e-03 2.015282e-03 6.878076e-05 
##           67           68           69           70           71           72 
## 1.149540e-06 5.243780e-03 2.632041e-05 1.786288e-04 6.222599e-04 1.062106e-05 
##           73           74           75           76           77           78 
## 8.849694e-04 3.242726e-03 2.458196e-04 5.214412e-04 1.875857e-03 7.461933e-04 
##           79           80           81           82           83           84 
## 2.221292e-05 2.196547e-06 6.643421e-04 6.825935e-05 1.016283e-04 1.312448e-07 
##           85           86           87           88           89           90 
## 8.983679e-04 5.369017e-03 1.449955e-03 2.624106e-03 2.029998e-03 2.664164e-03 
##           91           92           93           94           95           96 
## 3.516984e-05 1.928956e-03 6.622850e-04 4.113164e-04 3.610778e-04 2.476231e-04 
##           97           98           99          100          101          102 
## 5.917505e-04 4.248750e-05 1.395000e-05 4.170736e-03 2.359335e-03 4.913103e-04 
##          103          104          105          106          107          108 
## 8.304858e-04 1.048838e-04 1.182049e-03 7.324872e-03 1.045213e-03 2.241817e-03 
##          109          110          111          112          113          114 
## 1.360488e-04 4.592093e-05 1.273492e-04 1.225476e-03 2.361636e-03 1.449150e-04 
##          115          116          117          118          119          120 
## 2.844537e-03 9.132310e-07 2.478280e-03 6.058190e-04 1.158349e-04 1.264339e-04 
##          121          122          123          124          125          126 
## 1.286742e-03 1.092157e-02 7.042077e-06 6.784030e-05 6.423185e-04 1.053705e-03 
##          127          128          129          130          131          132 
## 5.224607e-03 1.271905e-04 1.554744e-03 3.494904e-04 3.206115e-09 4.209944e-05 
##          133          134          135          136          137          138 
## 2.225180e-03 1.980630e-04 2.339971e-04 9.971749e-04 2.441820e-04 2.230763e-04 
##          139          140          141          142          143          144 
## 1.838636e-03 5.469614e-04 2.678951e-03 8.802300e-03 6.883073e-04 1.930407e-06 
##          145          146          147          148          149          150 
## 1.784097e-03 1.438601e-04 2.670785e-03 4.983809e-03 1.495236e-04 3.719164e-03 
##          151          152          153          154          155          156 
## 2.082360e-04 1.195286e-03 1.592831e-05 3.402255e-03 6.518387e-04 4.006505e-03 
##          157          158          159          160          161          162 
## 4.871596e-03 2.495130e-03 7.770347e-04 1.034952e-02 9.241264e-05 7.274635e-04 
##          163          164          165          166          167          168 
## 1.194395e-06 5.387955e-04 2.003422e-04 7.001447e-03 6.881488e-05 1.132797e-03 
##          169          170          171          172          173          174 
## 2.455631e-03 1.905779e-05 3.126425e-05 2.218737e-06 1.196997e-03 2.371627e-03 
##          175          176          177          178          179          180 
## 4.776601e-04 8.653451e-03 4.138674e-03 1.016178e-03 9.145832e-06 4.481909e-03 
##          181          182          183          184          185          186 
## 8.254705e-04 1.570978e-03 2.720392e-04 1.949659e-03 8.167424e-04 1.296896e-03 
##          187          188          189          190          191          192 
## 1.564447e-04 4.899392e-04 3.089626e-03 1.055661e-03 1.124726e-04 5.442507e-06 
##          193          194          195          196          197          198 
## 2.120126e-10 6.999227e-05 9.950384e-06 1.209752e-05 7.784127e-03 1.547596e-03 
##          199          200          201          202          203          204 
## 8.097755e-04 4.332914e-03 6.498651e-04 7.445389e-04 4.057120e-04 1.908872e-02 
##          205          206          207          208          209          210 
## 8.515259e-04 6.883522e-03 2.437516e-04 1.264778e-03 1.239991e-03 1.434725e-02 
##          211          212          213          214          215          216 
## 1.671534e-04 3.215981e-03 1.700645e-04 3.057280e-04 1.744206e-04 1.760023e-03 
##          217          218          219          220          221          222 
## 1.802971e-03 7.967081e-04 5.507613e-03 4.010752e-04 1.788265e-03 1.009754e-04 
##          223          224          225          226          227          228 
## 2.126649e-04 3.784092e-04 9.589205e-04 9.343883e-05 8.193678e-04 1.118463e-04 
##          229          230          231          232          233          234 
## 5.212989e-04 1.391041e-05 2.369876e-04 7.553202e-05 1.905711e-05 5.516502e-05 
##          235          236          237          238          239          240 
## 3.943153e-04 1.085897e-03 1.814312e-03 3.265882e-03 3.166000e-04 3.973226e-04 
##          241          242          243          244          245          246 
## 6.126161e-04 6.980631e-05 4.968770e-05 1.462583e-04 2.104546e-04 1.034139e-03 
##          247          248          249          250          251          252 
## 4.632799e-04 6.844319e-04 2.231223e-03 1.597878e-05 1.612076e-04 5.041325e-04 
##          253          254          255          256          257          258 
## 6.722942e-03 1.817813e-04 7.516862e-05 8.328435e-05 1.967377e-05 1.635494e-06 
##          259          260          261          262          263          264 
## 1.306742e-03 3.191570e-03 1.730847e-03 2.641896e-03 2.470290e-04 1.334327e-03 
##          265          266          267          268          269          270 
## 1.898556e-02 7.987593e-04 2.918171e-03 3.109666e-04 6.702382e-04 9.253809e-05 
##          271          272          273          274          275          276 
## 3.023245e-06 2.923537e-04 8.503368e-04 9.061458e-04 2.761749e-03 5.824940e-03 
##          277          278          279          280          281          282 
## 2.257374e-04 1.616518e-02 2.000131e-03 1.953117e-03 2.321792e-04 2.023350e-04 
##          283          284          285          286          287          288 
## 5.966557e-04 1.572665e-05 1.334604e-03 2.640518e-03 3.683773e-04 1.565846e-04 
##          289          290          291          292          293          294 
## 6.678556e-05 2.848871e-04 3.922031e-04 1.343780e-03 1.381030e-03 3.312686e-03 
##          295          296          297          298          299          300 
## 6.448684e-04 7.943430e-07 4.750184e-04 1.916010e-05 1.829288e-03 6.723061e-04 
##          301          302          303          304          305          306 
## 3.515181e-06 1.060384e-03 5.359910e-05 1.536233e-02 1.558573e-04 1.300061e-04 
##          307          308          309          310          311          312 
## 1.063362e-03 5.533472e-04 8.954872e-04 1.388278e-03 2.258476e-04 3.678276e-04 
##          313          314          315          316          317          318 
## 9.135327e-04 1.921865e-04 5.316701e-04 1.834320e-03 2.192653e-04 3.939516e-05 
##          319          320          321          322          323          324 
## 4.446448e-05 2.979644e-04 6.457894e-03 6.684238e-04 9.971862e-04 4.793834e-05 
##          325          326          327          328          329          330 
## 1.612278e-03 6.369920e-04 1.097941e-03 4.727234e-03 9.903467e-04 3.260877e-03 
##          331          332          333          334          335          336 
## 4.690971e-04 1.573077e-04 1.545327e-03 6.231002e-03 8.027233e-03 1.399528e-03 
##          337          338          339          340          341          342 
## 1.488568e-03 3.571791e-03 7.914574e-03 1.439854e-03 1.222305e-03 5.430939e-04 
##          343          344          345          346          347          348 
## 1.371503e-04 9.298762e-05 3.669040e-04 1.089874e-06 2.082635e-02 4.683611e-04 
##          349          350          351          352          353          354 
## 5.261329e-04 2.463400e-04 1.763450e-03 1.231323e-04 1.094224e-03 3.057288e-04 
##          355          356          357          358          359          360 
## 6.599502e-05 3.919455e-06 2.306530e-03 2.067560e-04 2.400895e-03 3.190867e-03 
##          361          362          363          364          365          366 
## 2.333679e-04 2.210570e-04 8.554530e-05 6.326308e-03 7.425979e-04 1.567325e-03 
##          367          368          369          370          371          372 
## 9.408178e-04 3.529059e-04 4.261980e-05 1.932032e-03 2.877499e-03 2.789383e-03 
##          373          374          375          376          377          378 
## 4.461629e-03 1.909723e-03 1.083118e-03 2.204242e-03 2.091787e-04 8.478764e-03 
##          379          380          381          382          383          384 
## 7.024993e-05 1.620273e-04 1.697850e-03 8.072843e-04 3.492425e-03 2.778031e-04 
##          385          386          387          388          389          390 
## 3.011239e-03 1.639005e-04 1.327267e-04 3.139547e-05 3.538797e-03 2.427415e-05 
##          391          392          393          394          395          396 
## 1.559341e-04 4.943912e-04 9.169276e-05 8.410431e-05 1.768395e-04 1.500119e-05 
##          397          398          399          400          401          402 
## 5.391827e-03 5.150695e-03 3.622469e-04 2.399966e-03 1.484700e-04 1.636282e-03 
##          403          404          405          406          407          408 
## 1.549513e-05 2.372591e-04 3.344341e-05 3.829185e-04 1.125389e-04 4.049078e-04 
##          409          410          411          412          413          414 
## 9.070637e-03 1.549496e-02 1.744717e-04 3.964554e-03 2.366389e-03 8.445273e-04 
##          415          416          417          418          419          420 
## 2.491260e-04 1.008916e-02 4.277478e-04 3.813774e-05 4.270998e-03 1.183522e-04 
##          421          422          423          424          425          426 
## 4.391334e-04 4.029306e-04 5.671494e-04 6.732244e-06 1.118140e-03 8.019778e-03 
##          427          428          429          430          431          432 
## 1.573789e-04 1.082774e-03 1.134260e-03 3.824843e-06 1.242433e-04 1.421162e-04 
##          433          434          435          436          437          438 
## 1.235471e-02 1.430546e-02 1.740689e-04 9.124002e-05 2.053069e-04 6.351343e-04 
##          439          440          441          442          443          444 
## 7.969349e-07 1.733441e-03 7.688537e-06 5.792900e-06 4.409480e-04 2.961832e-04 
##          445          446          447          448          449          450 
## 1.066461e-03 2.020818e-05 9.204126e-05 1.255721e-03 1.020837e-05 9.170017e-05 
##          451          452          453          454          455          456 
## 1.048779e-03 4.400298e-04 4.387686e-03 3.254498e-05 8.806826e-08 1.394590e-05 
##          457          458          459          460          461          462 
## 2.810950e-06 2.642204e-03 4.274792e-04 5.817603e-03 8.816091e-03 1.218873e-03 
##          463          464          465          466          467          468 
## 5.151691e-04 2.248349e-03 2.960165e-05 2.714367e-04 4.849558e-05 2.919314e-04 
##          469          470          471          472          473          474 
## 4.470151e-03 1.776164e-03 5.775114e-04 7.521386e-04 9.300641e-05 7.030247e-04 
##          475          476          477          478          479          480 
## 4.902884e-04 1.644628e-04 3.462641e-04 2.736410e-05 1.133469e-03 4.691971e-03 
##          481          482          483          484          485          486 
## 1.308031e-03 7.204905e-04 5.211224e-04 5.153225e-03 1.089574e-03 2.871817e-04 
##          487          488          489          490          491          492 
## 7.055501e-04 1.017082e-04 2.177336e-04 3.678258e-04 5.154283e-03 4.001278e-06 
##          493          494          495          496          497          498 
## 2.090121e-03 1.526376e-06 8.175072e-03 1.180655e-03 4.179715e-03 3.594074e-04 
##          499          500          501          502          503          504 
## 4.858883e-03 6.395322e-05 1.918588e-03 3.320148e-03 3.338534e-04 2.258548e-02 
##          505          506          507          508          509          510 
## 2.641278e-03 4.921481e-04 2.903924e-03 1.713534e-04 4.872883e-06 5.740330e-03 
##          511          512          513          514          515          516 
## 3.934747e-04 2.160537e-04 9.187093e-05 8.113632e-04 2.056381e-04 2.061186e-03 
##          517          518          519          520          521          522 
## 6.726023e-04 1.283214e-03 1.944761e-03 7.268980e-04 8.289115e-06 9.980869e-05 
##          523          524          525          526          527          528 
## 1.076408e-04 1.769514e-03 2.929120e-05 1.121222e-04 1.324365e-02 2.600661e-03 
##          529          530          531          532          533          534 
## 7.443925e-04 1.923969e-05 6.486886e-05 9.899706e-04 4.866454e-05 1.218812e-03 
##          535          536          537          538          539          540 
## 2.695027e-03 3.322234e-05 4.369603e-04 7.159949e-04 1.161523e-02 1.568453e-04 
##          541          542          543          544          545          546 
## 2.297384e-03 1.256557e-03 1.968717e-03 6.299333e-03 3.712405e-05 1.112022e-03 
##          547          548          549          550          551          552 
## 2.165039e-04 9.925493e-05 2.755071e-03 3.313605e-04 4.504703e-03 1.790329e-04 
##          553          554          555          556          557          558 
## 4.116321e-04 1.980976e-04 8.421182e-04 6.536595e-04 2.023044e-03 1.474676e-04 
##          559          560          561          562          563          564 
## 5.768487e-04 1.700192e-04 4.417676e-05 3.165096e-04 1.459165e-04 9.831084e-06 
##          565          566          567          568          569          570 
## 3.035029e-03 2.503091e-03 4.082573e-03 7.643922e-04 1.261171e-02 9.944627e-05 
##          571          572          573          574          575          576 
## 1.099477e-04 1.116119e-05 3.974327e-03 8.084875e-03 5.933574e-04 2.060309e-02 
##          577          578          579          580          581          582 
## 1.347117e-03 4.069196e-04 2.145377e-03 1.602821e-04 2.361517e-03 1.953698e-03 
##          583          584          585          586          587          588 
## 1.513718e-03 1.836279e-03 1.143088e-05 8.934564e-04 5.881015e-06 6.228358e-03 
##          589          590          591          592          593          594 
## 3.644734e-03 1.760787e-04 2.385366e-03 3.165706e-05 1.674609e-05 2.641309e-05 
##          595          596          597          598          599          600 
## 3.267864e-03 6.703973e-04 6.333861e-04 1.037452e-04 1.157528e-04 7.200414e-05

Umbral exploratorio:

umbral_cook_final <-
  4 / nobs(modelo_final)

umbral_cook_final
## [1] 0.006666667

Identificamos:

which(
  cooks.distance(modelo_final) >
    umbral_cook_final
)
##  12  26  47  62 106 122 142 160 166 176 197 204 206 210 253 265 278 304 335 339 
##  12  26  47  62 106 122 142 160 166 176 197 204 206 210 253 265 278 304 335 339 
## 347 378 409 410 416 426 433 434 461 495 504 527 539 569 574 576 
## 347 378 409 410 416 426 433 434 461 495 504 527 539 569 574 576

Gráfico mediante olsrr:

olsrr::ols_plot_cooksd_chart(
  modelo_final
)

102 Diagnóstico integrado de influencia

car::influencePlot(
  modelo_final
)

103 Panel de diagnósticos de olsrr

El paquete olsrr permite visualizar varios diagnósticos conjuntamente.

olsrr::ols_plot_diagnostics(
  modelo_final
)

104 Gráficos estándar de lm

R también genera cuatro gráficos clásicos de diagnóstico.

par(
  mfrow = c(2, 2)
)

plot(
  modelo_final
)

par(
  mfrow = c(1, 1)
)

Los gráficos corresponden principalmente a:

  1. residuos frente a valores ajustados,
  2. Q-Q plot,
  3. Scale-Location,
  4. residuos/leverage e influencia.

105 Resumen de herramientas disponibles

Supuesto o problema Método Paquete Función
Multicolinealidad VIF car vif()
Multicolinealidad VIF y tolerancia olsrr ols_vif_tol()
Multicolinealidad VIF performance check_collinearity()
Multicolinealidad Índice de condición olsrr ols_eigen_cindex()
Normalidad Jarque-Bera tseries jarque.bera.test()
Normalidad Jarque-Bera moments jarque.test()
Normalidad Shapiro-Wilk stats shapiro.test()
Normalidad Lilliefors nortest lillie.test()
Normalidad Anderson-Darling nortest ad.test()
Normalidad Conjunto de pruebas olsrr ols_test_normality()
Homocedasticidad Breusch-Pagan lmtest bptest()
Homocedasticidad Breusch-Pagan olsrr ols_test_breusch_pagan()
Homocedasticidad White skedastic white()
Homocedasticidad Goldfeld-Quandt lmtest gqtest()
Linealidad Component + Residual car crPlots()
Linealidad RESET lmtest resettest()
Linealidad Rainbow lmtest raintest()
Independencia Durbin-Watson lmtest dwtest()
Independencia Durbin-Watson car durbinWatsonTest()
Independencia Breusch-Godfrey lmtest bgtest()
Atípicos Residuos estudentizados stats rstudent()
Atípicos Bonferroni car outlierTest()
Atípicos Bonferroni olsrr ols_test_outlier()
Leverage Hat values stats hatvalues()
Influencia Cook stats cooks.distance()
Influencia Cook olsrr ols_plot_cooksd_chart()
Influencia Gráfico integrado car influencePlot()

106 ¿Cómo interpretar los valores p?

Durante toda la clase utilizamos:

\[ \alpha=0.05 \]

La regla general es:

\[ p\leq\alpha \Rightarrow \text{rechazar }H_0 \]

mientras que:

\[ p>\alpha \Rightarrow \text{no rechazar }H_0 \]

Debe evitarse escribir:

Se acepta \(H_0\).

Es preferible expresar:

No existe evidencia estadística suficiente para rechazar la hipótesis nula al nivel de significancia establecido.

107 Resumen conceptual de los supuestos

Aspecto Pregunta fundamental Evidencia principal
Multicolinealidad ¿Los predictores contienen información redundante? VIF, tolerancia, índice de condición
Normalidad ¿Los residuos son aproximadamente normales? Q-Q plot, Jarque-Bera, Shapiro-Wilk
Homocedasticidad ¿La varianza de los errores es constante? Residuos vs ajustados, Breusch-Pagan, White
Linealidad ¿La forma funcional del modelo es adecuada? Residuos, C+R plots, RESET
Independencia ¿Los errores se encuentran correlacionados? Gráfico temporal, ACF, Durbin-Watson
Atípicos ¿Existen observaciones mal explicadas? Residuos estudentizados
Leverage ¿Existen valores inusuales de los predictores? Hat values
Influencia ¿Una observación cambia sustancialmente el modelo? Cook, influence plot

108 Ejemplo de interpretación conjunta

Supongamos que un modelo produce:

  • VIF máximo de 1.80,
  • Jarque-Bera con \(p=0.21\),
  • Breusch-Pagan con \(p=0.003\),
  • Durbin-Watson cercano a 2.

Una posible interpretación sería:

Los factores de inflación de la varianza no evidencian problemas relevantes de multicolinealidad. Asimismo, al nivel de significancia de 0.05 no existe evidencia estadística suficiente para rechazar la normalidad de los residuos. Sin embargo, la prueba de Breusch-Pagan resulta estadísticamente significativa, por lo que se rechaza la hipótesis de homocedasticidad y se concluye que existe evidencia de varianza no constante. En consecuencia, antes de realizar inferencias definitivas sobre los coeficientes debe analizarse la estructura de la heterocedasticidad y considerar una especificación o procedimiento de estimación adecuado.

Observe que una buena conclusión:

  • especifica el nivel de significancia,
  • interpreta cada supuesto separadamente,
  • no utiliza exclusivamente el valor p,
  • incorpora evidencia gráfica,
  • relaciona el diagnóstico con las consecuencias estadísticas.

109 Errores frecuentes al analizar los supuestos

109.1 Error 1. Exigir normalidad a todas las variables

El supuesto se refiere fundamentalmente a los errores del modelo y, operacionalmente, analizamos los residuos.

No se requiere que todos los predictores tengan distribución normal.

109.2 Error 2. Utilizar únicamente valores p

Una prueba formal debe complementarse con diagnóstico gráfico.

Con tamaños de muestra grandes, desviaciones pequeñas pueden producir valores p reducidos.

109.3 Error 3. Eliminar automáticamente un outlier

Una observación extrema puede ser completamente válida.

En un problema actuarial puede representar precisamente un siniestro extremo que forma parte de la naturaleza del riesgo.

109.4 Error 4. Eliminar variables solamente porque presentan VIF elevado

Debe analizarse primero:

  • significado técnico,
  • propósito del modelo,
  • redundancia de información,
  • objetivo predictivo o explicativo.

109.5 Error 5. Aplicar Durbin-Watson a cualquier base

Durbin-Watson tiene sentido particularmente cuando el orden de las observaciones posee significado.

109.6 Error 6. Interpretar \(p>0.05\) como demostración del supuesto

Un valor p superior a 0.05 indica que no existe evidencia suficiente para rechazar \(H_0\).

No demuestra que \(H_0\) sea verdadera.

109.7 Error 7. Pensar que un \(R^2\) elevado garantiza un modelo adecuado

Un modelo puede tener:

\[ R^2=0.95 \]

y presentar simultáneamente:

  • multicolinealidad,
  • heterocedasticidad,
  • autocorrelación,
  • mala especificación,
  • observaciones influyentes.

110 Secuencia recomendada para analizar un modelo

Una posible secuencia de trabajo es:

\[ \text{Comprender el problema} \]

\[ \downarrow \]

\[ \text{Realizar análisis descriptivo} \]

\[ \downarrow \]

\[ \text{Especificar el modelo} \]

\[ \downarrow \]

\[ \text{Estimar el modelo} \]

\[ \downarrow \]

\[ \text{Evaluar multicolinealidad} \]

\[ \downarrow \]

\[ \text{Analizar residuos} \]

\[ \downarrow \]

\[ \text{Evaluar normalidad} \]

\[ \downarrow \]

\[ \text{Evaluar homocedasticidad} \]

\[ \downarrow \]

\[ \text{Evaluar linealidad} \]

\[ \downarrow \]

\[ \text{Evaluar independencia si corresponde} \]

\[ \downarrow \]

\[ \text{Analizar observaciones atípicas e influyentes} \]

\[ \downarrow \]

\[ \text{Reespecificar el modelo si es necesario} \]

\[ \downarrow \]

\[ \text{Interpretar actuarialmente} \]

111 Código compacto de diagnóstico

Una vez comprendida la teoría, un diagnóstico básico podría ejecutarse utilizando directamente las funciones de los paquetes.

# MODELO
modelo <- lm(
  y ~ x1 + x2 + x3,
  data = datos
)

# RESUMEN
summary(modelo)

# -----------------------------------------
# MULTICOLINEALIDAD
# -----------------------------------------

car::vif(modelo)

olsrr::ols_vif_tol(modelo)

olsrr::ols_eigen_cindex(modelo)

# -----------------------------------------
# NORMALIDAD
# -----------------------------------------

qqnorm(residuals(modelo))
qqline(residuals(modelo))

tseries::jarque.bera.test(
  residuals(modelo)
)

stats::shapiro.test(
  residuals(modelo)
)

nortest::lillie.test(
  residuals(modelo)
)

# -----------------------------------------
# HOMOCEDASTICIDAD
# -----------------------------------------

plot(
  fitted(modelo),
  residuals(modelo)
)

lmtest::bptest(modelo)

skedastic::white(modelo)

# -----------------------------------------
# LINEALIDAD
# -----------------------------------------

car::crPlots(modelo)

lmtest::resettest(modelo)

# -----------------------------------------
# INDEPENDENCIA
# Solo cuando el orden tenga significado
# -----------------------------------------

lmtest::dwtest(modelo)

car::durbinWatsonTest(modelo)

# -----------------------------------------
# OUTLIERS
# -----------------------------------------

rstudent(modelo)

car::outlierTest(modelo)

# -----------------------------------------
# LEVERAGE
# -----------------------------------------

hatvalues(modelo)

# -----------------------------------------
# INFLUENCIA
# -----------------------------------------

cooks.distance(modelo)

car::influencePlot(modelo)

olsrr::ols_plot_cooksd_chart(modelo)

112 Ideas clave para recordar

  1. La construcción de un modelo no finaliza con lm().

  2. El diagnóstico de supuestos forma parte de la construcción del modelo.

  3. La multicolinealidad se refiere a relaciones lineales entre los predictores.

  4. El VIF indica cuánto se incrementa la varianza de un coeficiente debido a la relación del predictor con los demás.

  5. Tolerancia y VIF contienen esencialmente la misma información desde perspectivas inversas.

  6. El índice de condición permite estudiar dependencias lineales desde una perspectiva matricial.

  7. La normalidad se analiza principalmente utilizando los residuos.

  8. Jarque-Bera utiliza información de asimetría y curtosis.

  9. Una prueba formal de normalidad debe complementarse con un Q-Q plot.

  10. Homocedasticidad significa varianza constante de los errores.

  11. Breusch-Pagan, White y Goldfeld-Quandt estudian la heterocedasticidad desde enfoques diferentes.

  12. Una curva en los residuos puede indicar que la forma funcional es incorrecta.

  13. Los gráficos de componentes más residuos son especialmente útiles para estudiar linealidad.

  14. Durbin-Watson es particularmente relevante cuando las observaciones poseen un orden temporal.

  15. Un outlier no necesariamente posee alto leverage.

  16. Un punto de alto leverage no necesariamente es influyente.

  17. La distancia de Cook combina información relacionada con residuo e influencia.

  18. Ninguna observación debe eliminarse exclusivamente porque un indicador estadístico la identifica como inusual.

  19. Los diagnósticos gráficos y las pruebas estadísticas son complementarios.

  20. La interpretación final siempre debe tener sentido dentro del problema actuarial.

113 Conclusión

El diagnóstico de los supuestos de regresión lineal múltiple no debe entenderse como una lista de pruebas que el modelo debe “aprobar”.

El objetivo es determinar si la estructura matemática y probabilística asumida por el modelo representa razonablemente el fenómeno que estamos analizando.

En ciencias actuariales esta evaluación es especialmente importante porque es frecuente encontrar:

  • variables monetarias asimétricas,
  • siniestros extremos,
  • variabilidad creciente con la exposición,
  • relaciones no lineales,
  • dependencia temporal,
  • variables tarifarias altamente relacionadas.

Estas características no necesariamente representan errores en la información.

Pueden ser propiedades naturales del riesgo analizado.

Por ello, cuando un supuesto no se cumple, la pregunta no debe ser únicamente:

¿Cómo hago para que el supuesto se cumpla?

También debemos preguntarnos:

¿La regresión lineal es realmente el modelo apropiado para este fenómeno?