J'ai une matrice énorme avec beaucoup de valeurs manquantes. Je veux obtenir la corrélation entre les variables.
1. Est la solution
cor(na.omit(matrix))
mieux qu'en dessous?
cor(matrix, use = "pairwise.complete.obs")
J'ai déjà sélectionné uniquement des variables ayant plus de 20% de valeurs manquantes.
2. Quelle est la meilleure méthode pour donner un sens?
Je voterais pour la deuxième option. Il semble que vous ayez une bonne quantité de données manquantes et que vous cherchiez donc une stratégie d'imputation multiple judicieuse pour remplir les espaces. Voir le texte de Harrell "Stratégies de modélisation de la régression" pour une multitude de conseils sur "comment procéder correctement.
Je pense que la deuxième option est plus logique,
Vous pourriez envisager d'utiliser la fonction rcorr dans le package Hmisc.
Il est très rapide et ne comprend que des observations complètes par paire. L'objet retourné contient une matrice
Cela signifie que vous pouvez ignorer les valeurs de corrélation en fonction d'un petit nombre d'observations (quel que soit ce seuil pour vous) ou en fonction d'une valeur 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
Pour les futurs lecteurs La corrélation complète par paire est considérée comme dangereuse peut être utile, arguant que cor(matrix, use = "pairwise.complete.obs")
est considéré comme dangereux et suggérant des alternatives telles que use = "complete.obs")
.