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?

22
demandé sur zx8754 2010-09-26 21:36:13

5 réponses

Les 1 s sont parce que tout est parfaitement corrélé avec lui-même, et les NAs sont parce qu'il y a des NAs 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.

26
répondu Fojtasek 2017-03-28 22:07:23

Dites à la corrélation d'ignorer le NAs avec l'argument use, par exemple:

cor(data$price, data$exprice, use = "complete.obs")
31
répondu dmt 2017-03-30 15:49:42

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
11
répondu mbq 2010-09-26 22:34:07

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.

2
répondu STG 2017-04-20 21:46:45

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")
1
répondu Patrick Koua 2017-11-20 17:02:31