J'ai utilisé la prcomp()fonction pour effectuer une PCA (analyse des composants principaux) dans R. Cependant, il y a un bogue dans cette fonction, de sorte que le na.actionparamètre ne fonctionne pas. J'ai demandé de l'aide sur stackoverflow ; deux utilisateurs y ont proposé deux manières différentes de gérer les NAvaleurs. Cependant, le problème avec les deux solutions est que lorsqu'il existe une NAvaleur, cette ligne est supprimée et n'est pas prise en compte dans l'analyse PCA. Mon véritable ensemble de données est une matrice de 100 x 100 et je ne veux pas perdre une ligne entière simplement parce qu'elle contient une seule NAvaleur.
L'exemple suivant montre que la prcomp()fonction ne renvoie aucun composant principal pour la ligne 5 car elle contient une NAvaleur.
d <- data.frame(V1 = sample(1:100, 10), V2 = sample(1:100, 10),
V3 = sample(1:100, 10))
result <- prcomp(d, center = TRUE, scale = TRUE, na.action = na.omit)
result$x # $
d$V1[5] <- NA # $
result <- prcomp(~V1+V2, data=d, center = TRUE, scale = TRUE, na.action = na.omit)
result$x
Je me demandais si je pouvais définir les NAvaleurs à une valeur numérique spécifique quand centeret si elles scalesont définies pour TRUEque la prcomp()fonction fonctionne et ne supprime pas les lignes contenant NAdes, mais n'influence pas non plus le résultat de l'analyse PCA.
J'ai pensé à remplacer les NAvaleurs par la valeur médiane sur une seule colonne, ou par une valeur très proche de 0. Cependant, je ne sais pas comment cela influence l'analyse PCA.
Quelqu'un peut-il penser à une bonne façon de résoudre ce problème?
NAvaleurs : quelle est la cause du "manque"?