如何计算 r 中与缺失值的相关性
当一个或多个变量存在缺失值时,您可以使用以下方法计算 R 中的相关系数:
方法一:计算存在缺失值的相关系数
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 中执行其他常见任务: