EmpezarEmpieza gratis

Detectar errores de modelización

La esperanza de vida al nacer es un importante indicador de la salud de la población.

Trabajas como investigador consultor en salud pública. A tu cliente le gustaría saber el aumento de la esperanza de vida por cada dólar gastado en asistencia sanitaria. Has obtenido datos sobre la esperanza de vida (en años) de todos los países y su correspondiente gasto sanitario per cápita, de 2001 a 2021. El estadístico asesor ha escrito un código para ajustar modelos de regresión a los datos de cada país. Sin embargo, hay valores perdidos en los datos que provocan errores en el ajuste del modelo.

Tienes una lista de marcos de datos en tu espacio de trabajo, ls_df, donde cada elemento son los datos de un país determinado. Piensas paralelizar con parLapply() y utilizar tryCatch() para detectar errores. Se ha cargado para ti el paquete parallel.

Este ejercicio forma parte del curso

Programación paralela en R

Ver curso

Instrucciones del ejercicio

  • Proporciona una función al argumento de error. Esta función debe tomar un argumento, e, y utilizar paste() para anteponer la cadena "Error!" a e.
  • Edita fit_lm() para comprobar si model es una cadena de caracteres que contiene el mensaje de error.
  • Crea un clúster con seis núcleos.
  • Aplica fit_lm() a la lista ls_df en paralelo utilizando parLapply().

ejercicio interactivo práctico

Prueba este ejercicio completando este código de ejemplo.

fit_lm <- function (df) {
  model <- tryCatch(lm(life_expectancy ~ health_exp_per_capita, data = df),
# Supply a function that pastes "Error!" and one argument, e
                    error = ___)                   
# If model is character (error) return model else return model coefficient
  if (___) return(model)
  else return(coef(model)[2])
}
# Make a cluster of six cores
cluster <- ___(___)
# Apply fit_lm in parallel to ls_df using cluster
ls_mod <- parLapply(___, ___, ___)
stopCluster(cluster)
                    
print(paste(sum(sapply(ls_mod, is.numeric)), "models fit and", sum(sapply(ls_mod, is.character)), "errors caught!"))
Editar y ejecutar código