Kom igångKom igång gratis

Fånga modelleringsfel

Förväntad livslängd vid födseln är ett viktigt mått på befolkningens hälsa.

Du arbetar som konsult inom folkhälsoforskning. Din uppdragsgivare vill veta hur mycket livslängden ökar för varje dollar som spenderas på sjukvård. Du har samlat in data om förväntad livslängd (i år) för alla länder och deras respektive sjukvårdsutgifter per capita, från 2001 till 2021. Den anlitade statistikern har skrivit kod för att anpassa regressionsmodeller till varje lands data. Det finns dock saknade värden i datan som orsakar fel vid modellanpassningen.

Du har en lista med dataramar i din arbetsmiljö, ls_df, där varje element innehåller data för ett givet land. Du planerar att parallellisera med parLapply() och använda tryCatch() för att fånga fel. Paketet parallel har redan laddats åt dig.

Den här övningen är en del av kursen

Parallell programmering i R

Visa kurs

Övningsinstruktioner

  • Ange en funktion till argumentet error. Funktionen ska ta ett argument, e, och använda paste() för att placera strängen "Error!" före e.
  • Redigera fit_lm() så att den kontrollerar om model är en teckensträng som innehåller felmeddelandet.
  • Skapa ett kluster med sex kärnor.
  • Applicera fit_lm() på listan ls_df parallellt med hjälp av parLapply().

Interaktiv övning med praktiskt arbete

Testa den här övningen genom att slutföra den här exempelkoden.

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!"))
Redigera och kör kod