Как рассчитать корреляцию в 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

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *