J'exécute cor()
sur un data.frame
avec toutes les valeurs numériques et j'obtiens ceci comme résultat:
price exprice...
price 1 NA
exprice NA 1
...
Donc c'est soit 1
ou NA
pour chaque valeur de la table résultante. Pourquoi les NA
apparaissent-ils au lieu de corrélations valides?
Le 1
s sont parce que tout est parfaitement corrélé avec lui-même, et les NA
s sont parce qu'il y a NA
s dans vos variables.
Vous devrez spécifier comment vous voulez que R calcule la corrélation lorsqu'il y a des valeurs manquantes, car la valeur par défaut est de calculer uniquement un coefficient avec des informations complètes.
Vous pouvez modifier ce comportement avec l'argument use
en cor
, voir ?cor
pour plus de détails.
Dites à la corrélation d'ignorer les NA avec l'argument use
, par exemple:
cor(data$price, data$exprice, use = "complete.obs")
Les NA apparaissent également s'il y a des attributs avec une variance nulle (avec tous les éléments égaux); voir par exemple:
cor(cbind(a=runif(10),b=rep(1,10)))
qui renvoie:
a b
a 1 NA
b NA 1
Warning message:
In cor(cbind(a = runif(10), b = rep(1, 10))) :
the standard deviation is zero
réponse très simple et correcte
Dites à la corrélation d'ignorer les NA avec l'argument use, par exemple:
cor(data$price, data$exprice, use = "complete.obs")
L'AN peut en fait être due à 2 raisons. La première est qu'il existe une NA dans vos données. Un autre est dû au fait que l'une des valeurs est constante. Il en résulte que l'écart type est égal à zéro et donc la fonction cor renvoie NA.