5. Resuelve lo siguiente

Usa un modelo de regresión logística para predecir la probabilidad de caer en impago (default) al controlar por ingresos (income) y el saldo (balance) en el conjunto de datos Default. En particular, calcula las estimaciones para los errores estándar de los coeficientes de regresión logística de ingresos y saldo de dos maneras diferentes: 1. Usando el bootstrap. 2. Usando la fórmula estándar para calcular los errores estándar en función glm().

No olvide establecer una semilla aleatoria antes de comenzar su análisis. Utilice una semilla de 1.

El modelo a estimar es:

\[ default = income + balance \]

Carga la base de datos:

set.seed(1) 
library(ISLR)
Default <- Default

Muestra los primeros registros de la base de datos para ver que información contiene:

head(Default)
  1. Utilizando las funciones summary() y glm(), determine los errores estándar estimados para los coeficientes asociados con el ingreso y el saldo en un modelo de regresión logística múltiple que utiliza ambos predictores.
modelo <- glm(default ~ income + balance, data = Default, family = binomial)
summary(modelo)
## 
## Call:
## glm(formula = default ~ income + balance, family = binomial, 
##     data = Default)
## 
## Coefficients:
##               Estimate Std. Error z value Pr(>|z|)    
## (Intercept) -1.154e+01  4.348e-01 -26.545  < 2e-16 ***
## income       2.081e-05  4.985e-06   4.174 2.99e-05 ***
## balance      5.647e-03  2.274e-04  24.836  < 2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for binomial family taken to be 1)
## 
##     Null deviance: 2920.6  on 9999  degrees of freedom
## Residual deviance: 1579.0  on 9997  degrees of freedom
## AIC: 1585
## 
## Number of Fisher Scoring iterations: 8
coef(modelo)
##   (Intercept)        income       balance 
## -1.154047e+01  2.080898e-05  5.647103e-03
  1. Escriba una función, miFuncionBootLogistica(), que tome como entrada el conjunto de datos predeterminados, así como un índice de las observaciones, y que genere las estimaciones de coeficientes para el ingreso y el equilibrio en el modelo de regresión logística múltiple.
Indices <- 1:10000
miFuncionBootLogistica <- function(Default, Indices) {
  fit <- glm(default ~ income + balance, data = Default[Indices, ], family = binomial)
  mis_coeficientes <- coef(fit)
  return(mis_coeficientes)
}
miFuncionBootLogistica(Default, 1:10000)
##   (Intercept)        income       balance 
## -1.154047e+01  2.080898e-05  5.647103e-03
  1. Use la función boot() junto con la función miFuncionBootLogistica() para estimar los errores estándar de los coeficientes de regresión logística para el ingreso y el equilibrio para 100 estimaciones bootstrap.(No olvide cargar la libería boot)
set.seed(1)
miFuncionBootLogistica(Default, sample(10000, 10000, replace = TRUE))
##   (Intercept)        income       balance 
## -1.209470e+01  2.815290e-05  5.837117e-03
miFuncionBootLogistica(Default, sample(10000, 10000, replace = TRUE))
##   (Intercept)        income       balance 
## -1.157101e+01  2.185983e-05  5.710998e-03
miFuncionBootLogistica(Default, sample(10000, 10000, replace = TRUE))
##   (Intercept)        income       balance 
## -1.152585e+01  2.185948e-05  5.620777e-03

Bootstrap

library(boot)
modelo_boot <- boot(Default, miFuncionBootLogistica, 100)
modelo_boot
## 
## ORDINARY NONPARAMETRIC BOOTSTRAP
## 
## 
## Call:
## boot(data = Default, statistic = miFuncionBootLogistica, R = 100)
## 
## 
## Bootstrap Statistics :
##          original        bias     std. error
## t1* -1.154047e+01  7.190460e-03 4.350976e-01
## t2*  2.080898e-05 -4.630112e-07 4.060335e-06
## t3*  5.647103e-03 -2.220392e-06 2.317325e-04
  1. Comente sobre los resultados obtenidos al estimar los errores estándar usando la función glm() y la función bootstrap.

*Los errores estándar de glm() dependen de supuestos clásicos como homocedasticidad y normalidad, por lo que son adecuados solo si estos se cumplen. En cambio, Bootstrap no depende de estos supuestos, ya que utiliza remuestreo para estimar la variabilidad, lo que lo hace más robusto ante violaciones como heterocedasticidad o no normalidad, especialmente en muestras pequeñas.

Al comparar ambos métodos en la actividad, se puede notar que los errores estándar obtenidos por Bootstrap tienden a ser ligeramente mayores que los de glm(). Esto puede interpretarse como una mayor precaución por parte del método Bootstrap al estimar la incertidumbre, reflejando potencialmente una mayor variabilidad real de los estimadores que no es capturada por los supuestos ideales de glm().

Con esto, la conclusion seria, si bien glm() es útil bajo condiciones ideales, el Bootstrap ofrece una alternativa más flexible y confiable cuando los supuestos clásicos no están garantizados. Es recomendable comparar ambos métodos para evaluar la robustez de los resultados. ```