始める無料で始める

モデリングエラーを捕捉する

出生時平均余命は、集団の健康状態を示す主要な指標です。

あなたは公衆衛生のコンサルタント研究者として働いています。クライアントは、医療に 1 ドル支出するごとの平均余命の増加量を知りたいと考えています。2001 年から 2021 年までの全ての国について、平均余命(年)と 1 人あたり医療費のデータを収集しました。コンサルティング統計家が、各国のデータに回帰モデルを当てはめるコードを書きましたが、データに欠損値が含まれており、モデル当てはめでエラーが起きています。

ワークスペースには、各要素が特定の国のデータであるデータフレームのリスト ls_df があります。parLapply() で並列化し、tryCatch() でエラーを捕捉する予定です。parallel パッケージは読み込まれています。

この演習はコースの一部です

R による並列プログラミング

コースを見る

演習の手順

  • error 引数に関数を指定してください。この関数は 1 つの引数 e を取り、paste() を使って文字列 "Error!"e の前につけます。
  • fit_lm() を編集し、model がエラーメッセージを含む文字列かどうかを確認してください。
  • 6 コアのクラスターを作成してください。
  • parLapply() を使って、fit_lm() をリスト ls_df に並列で適用してください。

実践的なインタラクティブ演習

このサンプルコードを完成させて、この演習に挑戦してみましょう。

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!"))
コードを編集して実行