Как рассчитать корреляцию в r с пропущенными значениями
Вы можете использовать следующие методы для расчета коэффициентов корреляции в R, когда одна или несколько переменных имеют пропущенные значения:
Способ 1: Рассчитать коэффициент корреляции при наличии пропущенных значений
cor(x, y, use=' complete.obs ')
Способ 2: Рассчитать корреляционную матрицу с наличием пропущенных значений
cor(df, use=' pairwise.complete.obs ')
Следующие примеры показывают, как использовать каждый метод на практике.
Пример 1: Расчет коэффициента корреляции при наличии пропущенных значений
Предположим, мы пытаемся использовать функцию cor() для расчета коэффициента корреляции Пирсона между двумя переменными при наличии пропущенных значений:
#create two variables
x <- c(70, 78, 90, 87, 84, NA, 91, 74, 83, 85)
y <- c(90, NA, 79, 86, 84, 83, 88, 92, 76, 75)
#attempt to calculate correlation coefficient between x and y
cor(x, y)
[1] NA
Функция cor() возвращает NA , поскольку мы не указали, как обрабатывать пропущенные значения.
Чтобы избежать этой проблемы, мы можем использовать аргумент use=’complete.obs’ , чтобы R знал, что нужно использовать только парные наблюдения, где присутствуют оба значения:
#create two variables
x <- c(70, 78, 90, 87, 84, NA, 91, 74, 83, 85)
y <- c(90, NA, 79, 86, 84, 83, 88, 92, 76, 75)
#calculate correlation coefficient between x and y
cor(x, y, use=' complete.obs ')
[1] -0.4888749
Коэффициент корреляции между двумя переменными оказывается равным -0,488749 .
Обратите внимание, что функция cor() использовала только обе парные комбинации, где значения присутствовали при вычислении коэффициента корреляции.
Пример 2. Вычисление корреляционной матрицы с наличием пропущенных значений
Предположим, мы пытаемся использовать функцию cor() для создания корреляционной матрицы для фрейма данных с тремя переменными при наличии пропущенных значений:
#create data frame with some missing values
df <- data. frame (x=c(70, 78, 90, 87, 84, NA, 91, 74, 83, 85),
y=c(90, NA, 79, 86, 84, 83, 88, 92, 76, 75),
z=c(57, 57, 58, 59, 60, 78, 81, 83, NA, 90))
#attempt to create correlation matrix for variables in data frame
cor(df)
X Y Z
x 1 NA NA
y NA 1 NA
z NA NA 1
Функция cor() возвращает NA в нескольких местах, поскольку мы не указали, как обрабатывать пропущенные значения.
Чтобы избежать этой проблемы, мы можем использовать аргумент use=’pairwise.complete.obs’ , чтобы R знал, что нужно использовать только парные наблюдения, где присутствуют оба значения:
#create data frame with some missing values
df <- data. frame (x=c(70, 78, 90, 87, 84, NA, 91, 74, 83, 85),
y=c(90, NA, 79, 86, 84, 83, 88, 92, 76, 75),
z=c(57, 57, 58, 59, 60, 78, 81, 83, NA, 90))
#create correlation matrix for variables using only pairwise complete observations
cor(df, use=' pairwise.complete.obs ')
X Y Z
x 1.0000000 -0.4888749 0.1311651
y -0.4888749 1.0000000 -0.1562371
z 0.1311651 -0.1562371 1.0000000
Теперь отображаются коэффициенты корреляции для каждой парной комбинации переменных в базе данных.
Дополнительные ресурсы
В следующих руководствах объясняется, как выполнять другие распространенные задачи в R:
Как найти значение P коэффициента корреляции в R
Как рассчитать корреляцию Спирмена в R
Как рассчитать скользящую корреляцию в R