cor montre seulement NA ou 1 pour les corrélations-pourquoi?
Je cours 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 dans le tableau résultant. Pourquoi les NA
apparaissent-ils au lieu de corrélations valides?
5 réponses
Les 1
s sont parce que tout est parfaitement corrélé avec lui-même, et les NA
s sont parce qu'il y a des 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 la use
argument cor
, voir ?cor
pour plus de détails.
Dites à la corrélation d'ignorer le NAs avec l'argument use
, par exemple:
cor(data$price, data$exprice, use = "complete.obs")
NAs 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
La NA peut effectivement être due à 2 raisons. L'un est qu'il y a un NA dans vos données. Un autre est dû au fait que l'une des valeurs est constante. Il en résulte un écart-type égal à zéro et donc la fonction cor renvoie NA.
Réponse très simple et correcte
Dites à la corrélation d'ignorer le NAs avec l'argument use, par exemple:
cor(data$price, data$exprice, use = "complete.obs")