resueltos probabilidad muestrales mendenhall medicina introducción introduccion inferencial estadística estadistica ejercicios ejemplos distribuciones distribucion discretas continuas bioestadistica aleatorias ala 13th r machine-learning random-forest na missing-data

probabilidad - ¿Cómo construir bosques aleatorios en R con valores perdidos(NA)?



introduccion ala probabilidad y estadistica mendenhall 13th pdf (2)

Me gustaría ajustar un modelo de bosque aleatorio, pero cuando llamo

library(randomForest) cars$speed[1] <- NA # to simulate missing value model <- randomForest(speed ~., data=cars)

Obtuve el siguiente error

Error in na.fail.default(list(speed = c(NA, 4, 7, 7, 8, 9, 10, 10, 10, : missing values in object


Mi reacción inicial a esta pregunta fue que no mostró mucho esfuerzo de investigación, ya que "todos" saben que los bosques aleatorios no manejan los valores perdidos en los predictores. Pero al revisar ?randomForest debo confesar que podría ser mucho más explícito sobre esto.

(Aunque, el PDF de Breiman vinculado en la documentación dice explícitamente que los valores perdidos simplemente no se manejan del todo).

La única pista obvia en la documentación oficial que pude ver fue que el valor predeterminado para el parámetro na.fail es na.fail , que podría ser demasiado críptico para los nuevos usuarios.

En cualquier caso, si sus predictores tienen valores perdidos, tiene (básicamente) dos opciones:

  1. Use una herramienta diferente (la parte maneja muy bien los valores perdidos).
  2. Imputar los valores perdidos

No es sorprendente que el paquete randomForest tenga una función para hacer esto, rfImpute . La documentación en ?rfImpute ejecuta a través de un ejemplo básico de su uso.

Si solo un pequeño número de casos tiene valores faltantes, también puede intentar configurar na.action = na.omit para simplemente descartar esos casos.

Y, por supuesto, esta respuesta es un poco de adivinar que su problema realmente es simplemente tener valores perdidos.


Si existe la posibilidad de que los valores faltantes sean informativos, puede inventar valores perdidos y agregar variables binarias adicionales (con new.vars<-is.na(your_dataset) ) y verificar si se reduce el error, si new.var es demasiado grande como para your_dataset a your_dataset entonces podrías usarlo solo, elegir variables significativas con varImpPlot y agregarlas a your_dataset , también podrías intentar agregar una sola variable a your_dataset que cuente el número de new.var <- rowSums(new.vars)

Esta no es una respuesta fuera de lo común, si las variables faltantes son informativas, la contabilidad podría corregir el aumento del error del modelo debido al procedimiento de imputación de imperfecto solo.

Los valores faltantes son informativos y surgen debido a causas no aleatorias, es especialmente común en los entornos de experimentos sociales.