Cor показывает только NA или 1 для корреляций - Почему?
Я запускаю cor()
в data.frame
со всеми числовыми значениями, и я получаю это как результат:
price exprice...
price 1 NA
exprice NA 1
...
Так что это либо 1
, либо NA
для каждого значения в результирующей таблице. Почему появляется NA
вместо действительных корреляций?
Ответы
Ответ 1
1
- это потому, что все отлично коррелирует с самим собой, а NA
- потому, что в ваших переменных есть NA
.
Вам нужно указать, как вы хотите, чтобы R вычислила корреляцию, когда отсутствуют значения, потому что по умолчанию используется только вычисление коэффициента с полной информацией.
Вы можете изменить это поведение с аргументом use
на cor
, подробнее см. ?cor
.
Ответ 2
Скажите корреляции, чтобы игнорировать NA с аргументом use
, например:
cor(data$price, data$exprice, use = "complete.obs")
Ответ 3
NA также появляются, если есть атрибуты с нулевой дисперсией (со всеми равными элементами); см., например:
cor(cbind(a=runif(10),b=rep(1,10)))
который возвращает:
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
Ответ 4
НС может быть по двум причинам. Во-первых, в ваших данных есть NA. Другое из-за того, что одно из значений является постоянным. Это приводит к тому, что стандартное отклонение равно нулю и, следовательно, функция cor возвращает NA.
Ответ 5
очень простой и правильный ответ
Сообщите корреляции игнорировать NA с аргументом использования, например:
cor(data$price, data$exprice, use = "complete.obs")