web-dev-qa-db-ja.com

相関計算のための欠損値の取り扱い

多くの欠損値を持つ巨大なマトリックスがあります。変数間の相関を取得したい。

1。は解決策ですか

cor(na.omit(matrix))

下より良い?

cor(matrix, use = "pairwise.complete.obs")

すでに20%を超える欠損値を持つ変数のみを選択しました。

2。どちらが理にかなった最良の方法ですか?

29
Delphine

2番目のオプションに投票します。かなりの量のデータが欠落しているように聞こえるので、スペースを埋めるための賢明な多重代入戦略を探しているでしょう。 「これを適切に行う方法」に関する豊富なガイダンスについては、ハレルのテキスト「回帰モデリング戦略」を参照してください。

16
42-

2番目のオプションの方が理にかなっていると思います。

Hmiscパッケージのrcorr関数の使用を検討することもできます。

非常に高速で、ペアごとの完全な観測のみが含まれます。返されるオブジェクトには行列が含まれます

  1. 相関スコアの
  2. 各相関値に使用される観測数
  3. 各相関のp値の

これは、少数の観測値(そのしきい値が何であれ)に基づいて、またはp値に基づいて相関値を無視できることを意味します。

library(Hmisc)
x<-matrix(nrow=10,ncol=10,data=runif(100))
x[x>0.5]<-NA
result<-rcorr(x)
result$r[result$n<5]<-0 # ignore less than five observations
result$r
12
Iain

将来の読者のために ペアワイズ完全相関は危険と見なされます は、cor(matrix, use = "pairwise.complete.obs")が危険と見なされ、use = "complete.obs")

6
Triamus