cor muestra solo NA o 1 para correlaciones - ¿Por qué?
Estoy ejecutando cor()
en un data.frame
con todos los valores numéricos y estoy obteniendo esto como resultado:
price exprice...
price 1 NA
exprice NA 1
...
Así que es 1
o NA
para cada valor en la tabla resultante. ¿Por qué aparecen las NA
s en lugar de correlaciones válidas?
5 answers
Los 1
s son porque todo está perfectamente correlacionado consigo mismo, y los NA
s son porque hay NA
s en sus variables.
Tendrá que especificar cómo desea que R calcule la correlación cuando faltan valores, porque el valor predeterminado es calcular solo un coeficiente con información completa.
Puede cambiar este comportamiento con el argumento use
a cor
, vea ?cor
para más detalles.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-03-28 22:07:23
Dígale a la correlación que ignore el NAs con el argumento use
, por ejemplo:
cor(data$price, data$exprice, use = "complete.obs")
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-03-30 15:49:42
El NAS también aparece si hay atributos con varianza cero( con todos los elementos iguales); vea por ejemplo:
cor(cbind(a=runif(10),b=rep(1,10)))
Que devuelve:
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
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-09-26 22:34:07
La NA puede deberse a 2 razones. Una es que hay una NA en sus datos. Otro se debe a que uno de los valores es constante. Esto da como resultado que la desviación estándar sea igual a cero y, por lo tanto, la función cor devuelve NA.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-04-20 21:46:45
Respuesta muy simple y correcta
Dígale a la correlación que ignore el NAs con el argumento use, por ejemplo:
cor(data$price, data$exprice, use = "complete.obs")
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-11-20 17:02:31