web-dev-qa-db-fra.com

cor affiche uniquement NA ou 1 pour les corrélations - Pourquoi?

J'exécute cor() sur un data.frameavec 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?

31
Dave

Le 1s sont parce que tout est parfaitement corrélé avec lui-même, et les NAs sont parce qu'il y a 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 l'argument use en cor, voir ?cor pour plus de détails.

30
Fojtasek

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

cor(data$price, data$exprice, use = "complete.obs")
39
dmt

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
12
mbq

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")
6
Patrick Koua

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.

2
STG