Prinde erorile din modelare
Speranța de viață la naștere este un indicator esențial al sănătății populației.
Lucrezi ca cercetător consultant în sănătate publică. Clientul tău dorește să afle creșterea speranței de viață pentru fiecare dolar cheltuit pe asistență medicală. Ai colectat date privind speranța de viață (în ani) pentru toate țările și cheltuielile corespunzătoare cu asistența medicală pe cap de locuitor, din 2001 până în 2021. Statisticianul consultant a scris cod pentru a ajusta modele de regresie pe datele fiecărei țări. Totuși, există valori lipsă în date care provoacă erori la ajustarea modelelor.
Ai o listă de cadre de date în spațiul de lucru, ls_df, unde fiecare element reprezintă datele unei anumite țări. Intenționezi să paralelizezi cu parLapply() și să folosești tryCatch() pentru a prinde erorile. Pachetul parallel a fost deja încărcat pentru tine.
Acest exercițiu face parte din cursul
Programare paralelă în R
Instrucțiuni pentru exercițiu
- Furnizează o funcție argumentului error. Această funcție ar trebui să primească un singur argument,
e, și să foloseascăpaste()pentru a plasa șirul"Error!"înaintea luie. - Modifică funcția
fit_lm()pentru a verifica dacămodeleste un șir de caractere care conține mesajul de eroare. - Creează un cluster cu șase nuclee.
- Aplică
fit_lm()listeils_dfîn paralel folosindparLapply().
Exercițiu interactiv practic
Încearcă acest exercițiu completând acest cod de exemplu.
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!"))