我有很多缺失值的巨大矩阵。我想得到变量之间的相关性。
1.是解决方案
cor(na.omit(matrix))
比下面好吗?
cor(matrix, use = "pairwise.complete.obs")
我已经只选择了缺失值超过 20% 的变量。
2.什么是最有意义的方法?
我有很多缺失值的巨大矩阵。我想得到变量之间的相关性。
1.是解决方案
cor(na.omit(matrix))
比下面好吗?
cor(matrix, use = "pairwise.complete.obs")
我已经只选择了缺失值超过 20% 的变量。
2.什么是最有意义的方法?
我会投票给第二个选项。听起来您有大量缺失的数据,因此您将寻找一种合理的多重插补策略来填补这些空白。有关“如何正确执行此操作”的大量指导,请参见 Harrell 的文本“回归建模策略”。
我认为第二个选项更有意义,
您可以考虑使用 Hmisc 包中的 rcorr 函数。
它非常快,并且只包括成对的完整观察。返回的对象包含一个矩阵
这意味着您可以忽略基于少量观察值(无论该阈值对您而言是什么)或基于 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
对于未来的读者来说,被认为危险的成对完全相关可能是有价值的,认为这cor(matrix, use = "pairwise.complete.obs")
被认为是危险的,并提出了替代方案,例如use = "complete.obs")
.