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
Instrucciones del ejercicio
- Proporciona una función al argumento de error. Esta función debe tomar un argumento,
e, y utilizarpaste()para anteponer la cadena"Error!"ae. - Edita
fit_lm()para comprobar simodeles una cadena de caracteres que contiene el mensaje de error. - Crea un clúster con seis núcleos.
- Aplica
fit_lm()a la listals_dfen paralelo utilizandoparLapply().
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!"))