データはランダムに欠損しているか?

Rで学ぶスケーラブルなデータ処理

Michael Kane

Assistant Professor, Yale University

Rで学ぶスケーラブルなデータ処理

欠損データの種類

  • 完全ランダム欠損(MCAR)
  • ランダム欠損(MAR)
  • 非ランダム欠損(MNAR)
Rで学ぶスケーラブルなデータ処理

MCAR

完全ランダム欠損

  • どの値が欠損するかを予測できない
  • 欠損データを削除可能
Rで学ぶスケーラブルなデータ処理

MAR

ランダム欠損

  • 欠損はデータセット内の変数に依存する
  • 多重代入法で欠損値を予測する
Rで学ぶスケーラブルなデータ処理

MNAR

非ランダム欠損

  • MCARでもMARでもない
  • 変数間に決定論的な関係がある
Rで学ぶスケーラブルなデータ処理

このコースでの欠損データの扱い

  • 欠損の完全な扱いはこのコースの範囲外です

  • データがMCARである可能性を確認し、欠損値を削除します

Rで学ぶスケーラブルなデータ処理

MARの簡易チェック

  • 欠損なら1、そうでなければ0となる列を作成
  • ロジスティック回帰で他の変数を回帰
  • p値が有意であればMARを示す
  • 欠損のある他の列にも繰り返す
  • 偶然有意になる場合があるため、回帰数に応じて有意水準を調整
Rで学ぶスケーラブルなデータ処理

MAR簡易チェックの例

# Our dependent variable
is_missing <- rbinom(1000, 1, 0.5)

# Our independent variables data_matrix <- matrix(rnorm(1000*10), nrow = 1000, ncol = 10) # A vector of p-values we'll fill in p_vals <- rep(NA, ncol(data_matrix))
Rで学ぶスケーラブルなデータ処理

MAR簡易チェックの例

# Perform logistic regression
for (j in 1:ncol(data_matrix)) {
 s <- summary(glm(is_missing ~ data_matrix[, j]), 
              family = binomial)
              p_vals[j] <- s$coefficients[2, 4]
 }

# Show the p-values p_vals
0.5930082 0.7822695 0.7560343 0.3689330 0.8757048 
0.8812320 0.8281008 0.4888898 0.4781299 0.5655739
Rで学ぶスケーラブルなデータ処理

さあ、練習しましょう!

Rで学ぶスケーラブルなデータ処理

Preparing Video For Download...