Comece agoraComece grátis

Capturar erros de modelagem

A expectativa de vida ao nascer é um indicador importante da saúde de uma população.

Você atua como pesquisador(a) de saúde pública em consultoria. Seu cliente quer saber o aumento na expectativa de vida para cada dólar gasto em saúde. Você obteve dados da expectativa de vida (em anos) para todos os países e seus respectivos gastos com saúde per capita, de 2001 a 2021. O(a) estatístico(a) da consultoria escreveu um código para ajustar modelos de regressão aos dados de cada país. No entanto, há valores ausentes nos dados que causam erros no ajuste do modelo.

Você tem uma lista de data frames no seu ambiente, ls_df, em que cada elemento corresponde aos dados de um país. Você planeja paralelizar com parLapply() e usar tryCatch() para capturar erros. O pacote parallel já foi carregado para você.

Este exercicio faz parte do curso

Programação Paralela em R

Ver curso

Instruções do exercicio

  • Forneça uma função para o argumento error. Essa função deve receber um argumento, e, e usar paste() para colocar a string "Error!" antes de e.
  • Edite fit_lm() para verificar se model é uma string de caracteres contendo a mensagem de erro.
  • Crie um cluster com seis núcleos.
  • Aplique fit_lm() à lista ls_df em paralelo usando parLapply().

exercicio interativo prático

Tente este exercicio completando este código de exemplo.

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!"))
Editar e Executar Código