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
Pokyny k cvičení
- Předej funkci argumentu error. Tato funkce by měla přijímat jeden argument
ea pomocípaste()přidat řetězec"Error!"přede. - Uprav funkci
fit_lm()tak, aby kontrolovala, zda jemodelřetězec typu character obsahující chybovou zprávu. - Vytvoř cluster se šesti jádry.
- Aplikuj funkci
fit_lm()na seznamls_dfparalelně 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!"))