Cómo estimar una curva de calibración con bootstrap (R)

9

Pregunta : He ajustado un modelo probabilístico (red bayesiana) para modelar una variable de resultado binaria. Me gustaría crear un gráfico de calibración de alta resolución (por ejemplo, spline) corregido por sobreajuste con bootstrapping. ¿Existe un procedimiento estándar para calcular dicha curva?

Consideraciones : podría hacerlo fácilmente con la división de tren / prueba, pero preferiría no tirar ningún dato ya que tengo menos de 20,000 muestras. Así que, naturalmente, pensé en bootstrapping. Sé que una de esas funciones (calibrar) se implementa en el paquete rms de Frank Harrell, pero desafortunadamente el modelo que uso no es compatible con el paquete.

Pregunta adicional: ¿es posible recalibrar un modelo mal calibrado con bootstrapping? La razón por la que pregunto esto es porque intenté recalibrar un modelo

  1. dividir datos en tren / prueba
  2. modelo apropiado para el conjunto de entrenamiento
  3. recalibrar el modelo al conjunto de entrenamiento (con una spline cúbica)
  4. evaluar la calibración en el conjunto de prueba

Los modelos recalibrados de la manera anterior estaban perfectamente calibrados en el conjunto del tren, pero no tanto en el conjunto de prueba, lo que probablemente indica un sobreajuste leve. También intenté dividir aún más el conjunto de prueba, calibrar en una división y evaluar la calibración en la segunda división. Obtuve mejores resultados (aunque todavía no está perfectamente calibrado), pero los conjuntos se volvieron bastante pequeños (~ 1000 muestras) y, por lo tanto, la calibración no es confiable

Gino_JrDataScientist
fuente
1
No estoy seguro de qué hay disponible en R, pero el sklearn de Python tiene un excelente módulo de calibración de probabilidad que admite validación cruzada y regresión isotónica / monotónica, que son clave para la calibración de probabilidad de alta calidad. Puede ser un buen lugar para obtener algunas ideas. scikit-learn.org/stable/modules/calibration.html
olooney
¡Gracias por su respuesta! Estoy obligado a R y no estoy particularmente interesado en comenzar reticulate. Podría implementar el procedimiento yo mismo si lo supiera, pero no lo he encontrado en ninguna parte. Supongo que solo espero que el profesor Harrell vea esta pregunta: D
Gino_JrDataScientist
1
Incluya un ejemplo de datos (pequeño) para ilustrar de qué está hablando. Gracias.
Jim
Debería considerar echar un vistazo a esta introducción al paquete rms (y su función de calibración) en R: r-bloggers.com/introduction-to-the-rms-package
rpatel
Hola rpatel, gracias por la sugerencia. Había mencionado la función rms :: calibrate en mi pregunta original, señalando que no es compatible con la clase de modelo que estoy usando. También soy dueño del libro de estrategias de modelado de regresión de Harrell, pero no puedo encontrar ninguna descripción detallada sobre cómo funciona la función de calibración.
Gino_JrDataScientist

Respuestas:

6

Después de discutir con el profesor Frank Harrell por correo electrónico, ideé el siguiente procedimiento para estimar la curva de calibración corregida por el optimismo, parcialmente basada en su Tutorial en Bioestadística (ESTADÍSTICAS EN MEDICINA, VOL. 15,361-387 (1996)):

  1. ajustar un modelo de predicción de riesgos en todos los datos
  2. ajustar un modelo flexible (juego con spline y enlace logit) a las probabilidades pronosticadas del modelo frente al resultado, y consultar el juego en una cuadrícula de probabilidades pronosticadas pags=(0,01,0,02,...,0,99). Esta es la curva de calibración aparente y la llamamosCunalunapagspags
  3. extraer muestra de arranque con reemplazo, el mismo tamaño de datos originales
  4. Ajustar el modelo de predicción de riesgo en la muestra de bootstrap
  5. use el modelo de bootstrap para predecir probabilidades de la muestra de bootstrap , ajuste una gama entre las probabilidades predichas y el resultado, y consulte la gama en una cuadrícula de probabilidades predichas (llamemos a estos puntosCunalsioot)
  6. use el modelo bootstrap para predecir probabilidades de la muestra original , ajuste una gama entre las probabilidades predichas y el resultado, y consulte la gama en una cuadrícula de probabilidades predichas obteniendo una curva de calibración (Cunaloryosol)
  7. calcular el optimismo en cada punto pags de la cuadrícula así
    Opagstyometroyosmetro(pags)=Cunalsioot(pags)-Cunaloryosol(pags)
  8. repita los pasos 3-7 unas 100 veces, promedie el optimismo en cada punto pags
  9. calcular la calibración corregida optimismo así
    CunalCorr(pags)=Cunalunapagspags(pags)-<Opagstyometroyosmetro(pags)>

Nota importante : El procedimiento anterior está inspirado en el trabajo de Harrell y mi discusión con él, pero todos los errores son solo míos.

Gino_JrDataScientist
fuente