一、cor()函数
cor()函数是R语言中用于计算相关系数的函数,相关系数用于衡量两个变量之间的线性关系强度和方向。
常见的相关系数有皮尔逊相关系数(Pearson correlation coefficient)、斯皮尔曼秩相关系数(Spearman's rank correlation coefficient)和肯德尔等级相关系数(Kendall's tau correlation coefficient)。
R
cor(x, y=NULL, use="everything", method=c("pearson", "kendall", "spearman"))
参数详解:
- x:数值向量、矩阵或数据框;
- y:默认为NULL,也可以是向量、矩阵和数据框(要和x的各维度相对应)
- use :处理数据中缺失值(NA);一共有5种选择:默认为everything,表示当出现NA时,函数会返回NA ;all.obs表示遇到NA时会报错;complete.obs表示对出现NA的行进行删除,如果经过此处理后没有完整的数据行,会报错;na.or.complete表示对出现NA的行进行删除,如果经过此处理后没有完整的数据行,会返回NA;pairwise.complete.obs的作用是依次比较多对变量,并把两个变量相互之间的缺失行剔除,然后用余下的数据计算两者的相关系数。
- method:指定三种中的相关系数。
下面用R中的内置数据集USArrests举例:
1、皮尔逊相关系数
皮尔逊相关系数是衡量两个连续变量之间线性相关程度的指标。它的值域是-1到1之间,其中1表示完全正相关,-1表示完全负相关,0表示没有线性相关。
R
head(USArrests)
cor(x=USArrests$Murder, y=USArrests$Assault, method="pearson")
![](https://i-blog.csdnimg.cn/direct/05db2275c0d74290b12cbda4a016b407.png)
同时计算多个变量之间的两两相关性:
R
cor(x=USArrests, method="pearson")
![](https://i-blog.csdnimg.cn/direct/1284ced8c87b4332af8741b318e4574d.png)
2、斯皮尔曼秩相关系数
斯皮尔曼秩相关系数是衡量两个变量之间等级(秩)相关程度的指标。与皮尔逊相关系数不同,它不需要数据满足正态分布假设,并且可以用于衡量非线性关系。它的值域也是-1到1之间。
R
head(USArrests)
cor(x=USArrests$Murder, y=USArrests$Assault, method="spearman")
![](https://i-blog.csdnimg.cn/direct/0f95f82e15a64c6fa3810bea83c244f9.png)
同时计算多个变量之间的两两相关性:
R
cor(x=USArrests, method="spearman")
![](https://i-blog.csdnimg.cn/direct/048681b07ece445597bc3e9be194b9a5.png)
3、肯德尔等级相关系数
肯德尔等级相关系数也是衡量两个变量之间等级(秩)相关程度的指标,但它特别适用于衡量有序分类数据之间的相关性。与斯皮尔曼秩相关系数类似,它也不需要数据满足正态分布假设。
R
head(USArrests)
cor(x=USArrests$Murder, y=USArrests$Assault, method="kendall")
![](https://i-blog.csdnimg.cn/direct/ccb405e4c7264c549287eb4dafcc6256.png)
同时计算多个变量之间的两两相关性:
R
cor(x=USArrests, method="kendall")
![](https://i-blog.csdnimg.cn/direct/2733bed2c09341d79e3ce0c8c71890be.png)
二、pcor()函数
pcor()函数来自于ppcor扩展包,用来计算偏相关系数(Partial Correlation Coefficient)。
偏相关系数用于衡量两个变量在排除了其他变量影响后的相关性。即,偏相关系数衡量的是两个变量在固定其他变量的情况下的线性关系。
使用pcor()函数需要数据框作为输入,并且可以选择相关性计算的方法(默认为Pearson)。
R
library(ppcor)
# 查看USArrests数据集的前3行
head(USArrests, n=3)
# 计算偏相关系数矩阵
partial_corr_matrix <- pcor(USArrests)$estimate
partial_corr_matrix
# 提取Murder和Assault之间的偏相关系数
partial_corr_matrix["Murder", "Assault"]
![](https://i-blog.csdnimg.cn/direct/604c6157dec3421589b2ccbad6b382b3.png)