Работа с отсутствующими значениями для расчета корреляций

У меня огромная матрица с большим количеством недостающих значений. Я хочу получить корреляцию между переменными.

1. Является ли решение

cor(na.omit(matrix))

лучше, чем ниже?

cor(matrix, use = "pairwise.complete.obs")

Я уже выбрал только переменные, имеющие более 20% пропущенных значений.

2. Какой из лучших методов имеет смысл?

Ответы

Ответ 1

Я бы проголосовал за второй вариант. Похоже, что у вас есть достаточное количество недостающих данных, и поэтому вы бы искали разумную стратегию множественного вливания, чтобы заполнить пробелы. См. Текст Харрелла "Стратегии моделирования регрессии" для получения большого количества рекомендаций относительно того, как это сделать должным образом.

Ответ 2

Я думаю, что второй вариант имеет больше смысла,

Вы можете использовать функцию rcorr в пакете Hmisc.

Это очень быстро и включает только парные полные наблюдения. Возвращаемый объект содержит матрицу

  • показателей корреляции
  • с числом наблюдений, используемым для каждого значения корреляции
  • p-значения для каждой корреляции

Это означает, что вы можете игнорировать значения корреляции на основе небольшого числа наблюдений (независимо от того, что пороговое значение для вас) или на основе p-значения.

library(Hmisc)
x<-matrix(nrow=10,ncol=10,data=runif(100))
x[x>0.5]<-NA
result<-rcorr(x)
result$r[result$n<5]<-0 # ignore less than five observations
result$r