Začněte nyníZačněte zdarma

Zachytávání chyb při modelování

Střední délka života při narození je jedním z klíčových ukazatelů zdraví populace.

Pracuješ jako konzultant/ka v oblasti veřejného zdraví. Tvůj klient chce vědět, o kolik se zvýší střední délka života s každým dolarem vynaloženým na zdravotní péči. Získal/a jsi data o střední délce života (v letech) pro všechny země a odpovídající výdaje na zdravotní péči na obyvatele za roky 2001 až 2021. Statistik pověřený konzultací napsal kód pro fitování regresních modelů na data každé země. V datech se však vyskytují chybějící hodnoty, které způsobují chyby při fitování modelů.

V pracovním prostředí máš k dispozici seznam datových rámců ls_df, kde každý prvek obsahuje data pro jednu zemi. Plánuješ paralelizaci pomocí parLapply() a zachytávání chyb pomocí tryCatch(). Balíček parallel je již načten.

Toto cvičení je součástí kurzu

Paralelní programování v R

Zobrazit kurz

Pokyny k cvičení

  • Předej funkci argumentu error. Tato funkce by měla přijímat jeden argument e a pomocí paste() přidat řetězec "Error!" před e.
  • Uprav funkci fit_lm() tak, aby kontrolovala, zda je model řetězec typu character obsahující chybovou zprávu.
  • Vytvoř cluster se šesti jádry.
  • Aplikuj funkci fit_lm() na seznam ls_df paralelně pomocí parLapply().

Interaktivní cvičení na vyzkoušení si v praxi

Vyzkoušejte si toto cvičení dokončením tohoto ukázkového kódu.

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!"))
Upravit a spustit kód