2016-05-03 3 views
0

Я пытаюсь удалить коррелированные атрибуты, которые находятся за пределами границ (-1,1). Я использую следующий код для корреляции:Удалить коррелированные атрибуты в R

cor(df[sapply(df, is.numeric)]) 

После этого я получаю значения корреляции. Как удалить значения больше 1 и меньше -1?

Спасибо

+2

как вы можете получить значения '> 1' и' <-1' из 'cor' ??? просьба предоставить кусок набора данных –

+0

, он слишком велик, имеет 25 столбцов и 1075 строк – user4475661

+1

Вы не должны иметь значения корреляции вне 1 и -1. Вы можете заменить любые значения вне этих ограничений на 'NA' с помощью ifelse (данные <-1, NA, ifelse (данные> 1, NA, данные))' –

ответ

0

Функция кор() в R принимает числовой вектор, матрица или данных кадра и дает парный матрицу корреляции переменных. Ожидается, что значения в корреляционной матрице будут находиться в диапазоне от -1 до +1. Однако проблемы возникают, когда мы имеем корреляционную матрицу, которая не является положительной полуопределенной. Наиболее частая причина недопустимой корреляционной матрицы - отсутствие значений. R предлагает несколько способов обработки отсутствующих значений в корреляционной матрице. Вы можете использовать параметр na.rm = TRUE, чтобы указать, что все отсутствующие значения должны быть удалены (используются только полные строки). Это всегда приведет к действительной корреляционной матрице. Можно указать другие параметры, как обрабатывать отсутствующие наблюдения. Параметр use = "all.obs" указывает, что отсутствуют отсутствующие наблюдения, а наличие любых отсутствующих значений приведет к ошибке. Если указано значение use = "complete.obs", то происходит случайное удаление отсутствующих наблюдений. Если используется значение = "pairwise.complete.obs", используются только полные пары наблюдений. Это может привести к неверной корреляционной матрице.