当前位置: 首页 > article >正文

【R语言】相关系数

一、cor()函数

cor()函数是R语言中用于计算相关系数的函数,相关系数用于衡量两个变量之间的线性关系强度和方向

常见的相关系数有皮尔逊相关系数(Pearson correlation coefficient)斯皮尔曼秩相关系数(Spearman's rank correlation coefficient)肯德尔等级相关系数(Kendall's tau correlation coefficient)

cor(x, y=NULL, use="everything", method=c("pearson", "kendall", "spearman"))

参数详解:

  1. x:数值向量、矩阵或数据框;
  2. y:默认为NULL,也可以是向量、矩阵和数据框(要和x的各维度相对应)
  3. use:处理数据中缺失值(NA);一共有5种选择:默认为everything,表示当出现NA时,函数会返回NAall.obs表示遇到NA时会报错;complete.obs表示对出现NA的行进行删除,如果经过此处理后没有完整的数据行,会报错;na.or.complete表示对出现NA的行进行删除,如果经过此处理后没有完整的数据行,会返回NA;pairwise.complete.obs的作用是依次比较多对变量,并把两个变量相互之间的缺失行剔除,然后用余下的数据计算两者的相关系数。
  4. method:指定三种中的相关系数。

下面用R中的内置数据集USArrests举例:

1、皮尔逊相关系数

皮尔逊相关系数是衡量两个连续变量之间线性相关程度的指标。它的值域是-1到1之间,其中1表示完全正相关,-1表示完全负相关,0表示没有线性相关。

head(USArrests)
cor(x=USArrests$Murder, y=USArrests$Assault, method="pearson")

同时计算多个变量之间的两两相关性:

cor(x=USArrests, method="pearson")

 

2、斯皮尔曼秩相关系数

斯皮尔曼秩相关系数是衡量两个变量之间等级(秩)相关程度的指标。与皮尔逊相关系数不同,它不需要数据满足正态分布假设,并且可以用于衡量非线性关系。它的值域也是-1到1之间。

head(USArrests)
cor(x=USArrests$Murder, y=USArrests$Assault, method="spearman")

 同时计算多个变量之间的两两相关性:

cor(x=USArrests, method="spearman")

 

3、肯德尔等级相关系数

肯德尔等级相关系数也是衡量两个变量之间等级(秩)相关程度的指标,但它特别适用于衡量有序分类数据之间的相关性。与斯皮尔曼秩相关系数类似,它也不需要数据满足正态分布假设。 

head(USArrests)
cor(x=USArrests$Murder, y=USArrests$Assault, method="kendall")

 同时计算多个变量之间的两两相关性:

cor(x=USArrests, method="kendall")

二、pcor()函数

pcor()函数来自于ppcor扩展包,用来计算偏相关系数(Partial Correlation Coefficient)

偏相关系数用于衡量两个变量在排除了其他变量影响后的相关性。即,偏相关系数衡量的是两个变量在固定其他变量的情况下的线性关系。

使用pcor()函数需要数据框作为输入,并且可以选择相关性计算的方法(默认为Pearson)。

library(ppcor)

# 查看USArrests数据集的前3行
head(USArrests, n=3)

# 计算偏相关系数矩阵
partial_corr_matrix <- pcor(USArrests)$estimate
partial_corr_matrix

# 提取Murder和Assault之间的偏相关系数
partial_corr_matrix["Murder", "Assault"]


http://www.kler.cn/a/539804.html

相关文章:

  • Vue3 Ref全家桶详解:从入门到实战
  • 【kafka系列】Topic 与 Partition
  • Java 魔法:精准掌控 PDF 合同模板,指定页码与关键字替换签章日期
  • C#+halcon机器视觉九点标定算法
  • opentelemetry-collector 配置elasticsearch
  • webview_flutter的使用
  • Ubuntu禁止内核自动更新
  • 【Java八股】JVM
  • 为什么推荐使用 LabVIEW 开发
  • 日志2025.2.9
  • Java面试题整理一(反射)
  • c++初始
  • Ext系列文件系统(上)
  • C++ Primer 逗号运算符
  • Linux中getifaddrs函数
  • 【人工智能】解码语言之谜:使用Python构建神经机器翻译系统
  • 51单片机之冯·诺依曼结构
  • 爬虫学习笔记之requests库的使用
  • 数据可视化技术综述(4)衡量数据的性能指标的十大维度
  • [Deepseek+Heygen+剪映]快速生产数字人讲解的视频内容
  • 【机器学习】scikit-learn调用KNN算法并手动模仿封装自己的KNN算法
  • 深入解析 FFmpeg 的 AAC 编解码过程
  • Python 鼠标轨迹 - 防止游戏检测
  • NPM 的扁平化目录与幻影依赖问题,以及 PNPM 如何通过硬链接和软链接解决
  • Ranger Admin安装MySQL初始化问题解决
  • Git 基础命令详解:从零开始掌握版本控制