ÎncepețiÎncepe gratuit

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

Vezi cursul

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 lui e.
  • Modifică funcția fit_lm() pentru a verifica dacă model este un șir de caractere care conține mesajul de eroare.
  • Creează un cluster cu șase nuclee.
  • Aplică fit_lm() listei ls_df în paralel folosind parLapply().

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!"))
Editează și rulează codul