始める無料で始める

ロジスティック回帰による補完

二値変数を補完する方法として、ロジスティック回帰がよく使われます。残念ながら、impute_lm() のような便利な関数は存在しないため、自分で作成する必要があります。

関数名は impute_logreg() とします。第1引数はデータフレーム df で、欠損値が初期化済みであり、補完対象の列にのみ欠損値が含まれているものとします。第2引数は、ロジスティック回帰モデルに使用する formula(式)です。

この関数は以下の処理を行います。

  • 欠損値の位置を記録する。
  • モデルを構築する。
  • 予測を行う。
  • 欠損値を予測値で置き換える。

imp_var を作成している行については気にしないでください。これは、式から補完対象の列名を取り出すための処理です。関数型プログラミングを活用していきましょう。

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

R による欠損データの補完処理

コースを見る

演習の手順

  • df[imp_var] が欠損しているかどうかを示すブールマスクを作成し、missing_imp_var に代入してください。
  • 関数の引数として渡される式とデータを使ってロジスティック回帰モデルを当てはめてください。その際、ロジスティック回帰が適用されるよう正しい family を設定します(クォーテーションなしで渡すこと)。モデルを logreg_model に代入してください。
  • モデルを使って応答変数を予測し、preds に代入してください。適切な予測 type を設定することを忘れずに。
  • predsmissing_imp_var を使って、欠損値を補完してください。

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

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

impute_logreg <- function(df, formula) {
  # Extract name of response variable
  imp_var <- as.character(formula[2])
  # Save locations where the response is missing
  missing_imp_var <- ___
  # Fit logistic regression mode
  logreg_model <- ___(___, data = ___, family = ___)
  # Predict the response and convert it to 0s and 1s
  preds <- predict(___, type = ___)
  preds <- ifelse(preds >= 0.5, 1, 0)
  # Impute missing values with predictions
  df[missing_imp_var, imp_var] <-___[___]
  return(df)
}
コードを編集して実行