44

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

1.是解决方案

cor(na.omit(matrix))

比下面好吗?

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

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

2.什么是最有意义的方法?

4

3 回答 3

19

我会投票给第二个选项。听起来您有大量缺失的数据,因此您将寻找一种合理的多重插补策略来填补这些空白。有关“如何正确执行此操作”的大量指导,请参见 Harrell 的文本“回归建模策略”。

于 2011-09-16T13:49:22.490 回答
14

我认为第二个选项更有意义,

您可以考虑使用 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
于 2011-09-18T09:10:51.630 回答
7

对于未来的读者来说,被认为危险的成对完全相关可能是有价值的,认为这cor(matrix, use = "pairwise.complete.obs")被认为是危险的,并提出了替代方案,例如use = "complete.obs").

于 2017-08-02T16:35:02.437 回答