Retrait de NA dans la matrice de corrélation
Je suis en train de faire une matrice de corrélation pour un dataframe de 4000 variable et je voudrais enlever les variables montrant > 0.5 corrélation, donc je suis en utilisant cette commande à partir du {lambda} package.
removeme <- findCorrelation(corrMatrix, cutoff = 0.5, verbose = FALSE)
Error in if (mean(x[i, -i]) > mean(x[-j, j])) { :
missing value where TRUE/FALSE needed
Les données que j'ai est très variable, et je reçois NA valeurs ici et là. Pour commencer, je ne pouvais pas trouver quelque chose qui peut faire face à NA valeurs sur la page d'aide de cette commande, j'ai donc décidé de supprimer le NA les valeurs de moi-même.
Certaines variables présentent des NA les valeurs de tout le chemin à travers les données, et certains montrent quelques NA valeurs. Je suis en train de supprimer les variables qui sont à l'origine de tout NA valeurs, de sorte que je serais en mesure d'utiliser la commande ci-dessus. Voici un exemple minimal de ce que mon apparence des données
dput(df) <- structure(list(GK = 1:10, HGF = c(0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L), HJI = c(2L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L),
HDF = c(5L, 6L, 8L, 9L, 5L, 2L, 4L, 3L, 2L, 1L), KLJG = c(0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L), KLJA = c(0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L), KDA = c(10L, 11L, 15L, 18L,
11L, 10L, 10L, 15L, 12L, 13L), OIE = c(NA, NA, NA, NA, NA,
NA, NA, NA, NA, NA), AFE = c(0L, 0L, 0L, 1L, 0L, 0L, NA,
NA, NA, NA)), .Names = c("GK", "HGF", "HJI", "HDF", "KLJG",
"KLJA", "KDA", "OIE", "AFE"), class = "data.frame", row.names = c(NA,
-10L))
corrMatrix <- cor(df,use="pairwise.complete.obs")
Quelle serait la meilleure idée pour se débarrasser de ces satanés variables? J'ai essayé Beaucoup de commandes, mais n'a pas accès à un idéal qui serait de se débarrasser de ces variables. Voici l'un de mes essais:
removeme <- corrMatrix[,which(as.numeric(rowSums(is.na(corrMatrix))) > 100)]
Le problème avec cette commande que si il n'y avait plus de 100 défectueux variables (donnant NA dans la matrice de corrélation) les variables normales seront supprimés, de même que les colonnes de la variable normale aura > 100 NA valeurs.
J'espère que cette modification faite ma question plus clairement. Des acclamations.
corrMatrix
. Si il y a NA
valeurs dans la matrice, alors vous devez décider ce que vous voulez y mettre, par exemple, des zéros ou artificielle de grande valeur, afin de permettre findCorrelation
pour accomplir sa tâche.
OriginalL'auteur Error404 | 2013-10-01
Vous devez vous connecter pour publier un commentaire.
Tout simplement si vous voulez vous débarrasser de toute la colonne qui a une ou plusieurs
NA
s, puis il suffit de faireCependant, même avec des données manquantes, vous pouvez calculer une matrice de corrélation avec aucune
NA
valeurs en spécifiant leuse
paramètre dans la fonctioncor
. La valeurpairwise.complete.obs
oucomplete.obs
entraînera dans une matrice de corrélation avec aucuneNA
s.complete.obs
ignorera toutes les lignes avec des données manquantes, alors quepairwise.complete.obs
va simplement ignorer le manque de paires de données. Notez que, bien quepairwise.complete.obs
"sonne mieux", car il utilise plus de données disponibles, mais il n'est pas garanti pour produire une défini-positif matrice de corrélation, ce qui pourrait être un problème.Quel est le problème avec le réglage de
df<-df[,colSums(!is.na(df))>0]
pour se débarrasser de colonnes qui sont tousNA
avant de générer la matrice de corrélation?Parce que je ne suis pas entièrement sûr que seul le "tout à zéro", les variables sont à l'origine de la NA (pensée, il y a peut-être autre chose, comme je travaille avec des milliers de variables. De toute façon je suis en train d'essayer maintenant. Espérons que cela fonctionnera. merci pour l'astuce.
Oui seulement le zéro pour tous les colonnes s'est avéré le problème, c'est gênant! Je ne suis pas sûr si je devrais garder la question, peut être utile pour quelqu'un?
OriginalL'auteur mrip
Avant d'évaluer la corrélation de facteurs prédictifs de votre jeu de données supprimer le zéro de la variance des facteurs prédictifs.
pour supprimer le zéro de la variance des facteurs prédictifs
calculer la matrice de corrélation
résumer la matrice de corrélation
trouver les attributs qui sont fortement corrigé (idéalement >0.7)
imprimer index de fortement corrélée attributs
variables importantes
OriginalL'auteur Madhurima Pal
Il n'est pas clair ce que vous essayez de faire. Mais voici un exemple dans la façon de traiter avec des valeurs manquantes. Je montre ça dans un petit matrice.
supprimer des colonnes avec tous les éléments sont NA
supprimer des colonnes d'avoir tout NA
na.omit()
je lâche quelques variables je veux en fait. Pouvez vous s'il vous plaît jetez un oeil à l'exemple que je viens d'ajouter? Mercijamais vous trouver une solution? J'ai exactement le même problème.
OriginalL'auteur agstudy