处理相关性计算的缺失值

时间:2011-09-16 13:44:25

标签: r correlation na missing-data

我有一个巨大的矩阵,有很多缺失的值。我想得到变量之间的相关性。

1。是解决方案

cor(na.omit(matrix))

比下面好吗?

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

我已经只选择了缺失值超过20%的变量。

2。哪种方法最有意义?

3 个答案:

答案 0 :(得分:15)

我会投票给第二个选项。听起来你有相当数量的缺失数据,所以你会寻找一个合理的多重插补策略来填补空间。请参阅Harrell的文章“回归建模策略”,获取有关“如何正确执行此操作”的大量指导。

答案 1 :(得分:11)

我认为第二种选择更有意义,

您可以考虑在Hmisc包中使用rcorr功能。

它非常快,只包括成对完整的观察。 返回的对象包含矩阵

  1. 相关分数
  2. 用于每个相关值的观察次数
  3. 每个相关的p值
  4. 这意味着您可以根据少量观察值(无论该阈值适合您)或基于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
    

答案 2 :(得分:6)

对于未来的读者Pairwise-complete correlation considered dangerous可能很有价值,认为$ gco - $ git checkout - 被认为是危险的,并建议cor(matrix, use = "pairwise.complete.obs")等替代方案。