【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"]

三、kendall.global()函数

R语言中的vegan包中,kendall.global()函数是用于分析多个群落(或样本)之间整体相关性一致性的。这个函数通常用于生态学研究,特别是在群落生态学领域,来评估不同群落之间的相似性或差异性。

kendall.global()函数基于Kendall's coefficient of concordance(Kendall和谐系数)来计算,这是一个衡量多个评估者对同一对象排序一致性的统计量。在群落生态学中,这个系数可以被用来衡量多个群落样本在物种组成或丰度上的整体一致性。

library(vegan)
x <- data.frame(col1=c(1,2,5,6,7), col2=c(3,6,8,9,88), col3=c(2.5,6.7,1.2,4.5,9.0))
kendall.global(x)

四、点二列相关:biserial.cor()函数

点二列相关(Point-Biserial Correlation用于测量一个连续变量与一个二分类变量之间的相关性。它实际上是皮尔逊相关系数(Pearson correlation coefficient)的一种特殊情况,其中一个变量被转换为标准正态分布的z分数,而另一个变量是二分类的(通常编码为0和1)。

在R语言中,可以使用ltm包中的biserial.cor()函数来计算点二列相关。

使用ltm扩展包中的LSAT数据集来演示,此数据集包含了美国法学院入学考试中5道题的测试结果,现在要求这5道题的总分与第1题之间的相关。

head(LSAT)
library(ltm)
# 首先使用cor()函数计算总分值与第1题之间的点二列相关系数
cor(x = rowSums(x=LSAT), y=LSAT[[1]])# 然后使用ltm::biserial.cor()函数计算总分值与第1题之间的点二列相关系数
biserial.cor(x=rowSums(LSAT), y=LSAT[[1]])

从上面结果可知,两个函数得出的结果在数值上是一样的,但反向相反。 

可以通过改变biserial.cor()函数的level参数来得到与cor()函数完全一致的结果。这个参数表示二分变量中哪一个作为参照水平,默认为1,可以将其设置为2来实现。

biserial.cor(x=rowSums(LSAT), y=LSAT[[1]], level=2)

 二列相关:biserial()函数

二列相关是一种特殊类型的相关系数,用于测量一个连续变量(如测试分数)与一个二分变量(如通过/失败)之间的关系。

可以使用psych包中的biserial()函数

library(ltm)
library(psych)
# 使用psych::biserial()函数计算总分值与第1题之间的二列相关系数
biserial(x=rowSums(LSAT), y=LSAT[[1]])

 五、Phi相关系数:phi()函数

Phi系数是专门用于两个二分变量之间的相关系数。它的值范围在-1到1之间,类似于皮尔逊相关系数,但它是基于列联表(contingency table)计算的。

可以使用psych包中的phi()函数实现。

Phi系数为0:表示两个二分变量之间没有关联或相关性。这可以理解为,在控制其他因素的情况下,一个变量的状态(如0或1)不会给出另一个变量状态的任何信息。

Phi系数接近1或-1:表示两个变量之间存在强烈的正相关或负相关。即,一个变量的状态能够很好地预测另一个变量的状态。

需要注意的是,phi()函数返回0并不总是意味着两个变量在实际意义上没有关联。它仅仅表明在当前的样本和数据收集方法下,没有找到足够的证据来支持两个变量之间存在统计相关性。

library(psych)# 创建两个二分变量数据框
data <- data.frame(x = factor(c(0, 1, 0, 1, 1, 0, 1, 0)),y = factor(c(0, 0, 1, 1, 1, 0, 0, 1))
)# 使用psych包中的phi函数计算Phi系数
# phi函数需要的是一个列联表作为输入
table_xy <- table(data$x, data$y)
phi_coefficient <- phi(table_xy)phi_coefficient

x <- matrix(c(100, 60, 90, 180), ncol=2)
x
phi(x)

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/16119.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

网络工程师 (32)TRUNK

一、定义 TRUNK&#xff0c;也称为端口汇聚、链路汇聚或多链路汇聚&#xff0c;是一种网络技术&#xff0c;其本质是将多个以太网端口绑定在一起作为一个逻辑链路来使用。通过TRUNK技术&#xff0c;用户在使用这个逻辑链路时&#xff0c;就好像是在使用一条独立的物理链路一样&…

“可通过HTTP获取远端WWW服务信息”漏洞修复

环境说明&#xff1a;①操作系统&#xff1a;windows server&#xff1b;②nginx&#xff1a;1.27.1。 1.漏洞说明 “可通过HTTP获取远端WWW服务信息”。 修复前&#xff0c;在“响应标头”能看到Server信息&#xff0c;如下图所示&#xff1a; 修复后&#xff0c;“响应标头…

编译和链接【三】

文章目录 编译和链接【三】前言系列文章入口编译过程词法分析语法分析语义分析生成中间代码汇编链接 编译和链接【三】 前言 在我大一的时候&#xff0c; 我使用VC6.0对C语言程序进行编译链接和运行 &#xff0c; 然后我接触了VS&#xff0c; Qt creator等众多IDE&#xff0c…

波导阵列天线学习笔记8 高增益、低轴比的3D打印Ka波段圆极化单脉冲天线阵列

摘要&#xff1a; 本文中&#xff0c; 一种3D打印的16x16圆极化单脉冲天线阵列在Ka波段研究&#xff0c;有着高增益和低轴比的特点。此单脉冲天线阵列有着四个低剖面的左旋圆极化子阵列和一个顺序旋转的和差网络。这四个子阵列正交连接着和差网络的输出&#xff0c;保证了传统2…

高通android WIFI debug

参考高通文档&#xff1a;80-76240-16_REV_AA_Wi-Fi_Debug_Techniques 大纲 一、 WLAN Debug Logs –logcat ■ Logcat log logcat is a command-line tool that dumps the log of system messages, ■ Including stack traces when the device throws an error. ■ Need t…

Pytest自动化测试框架总结

1、pytest简介 pytest是Python的一种单元测试框架&#xff0c;与python自带的unittest测试框架类似&#xff0c;但是比unittest框架使用起来更简洁&#xff0c;效率更高。 执行测试过程中可以将某些测试跳过&#xff0c;或者对某些预期失败的case标记成失败能够支持简单的单元…

交叉编译工具链下载和使用

初级代码游戏的专栏介绍与文章目录-CSDN博客 我的github&#xff1a;codetoys&#xff0c;所有代码都将会位于ctfc库中。已经放入库中我会指出在库中的位置。 这些代码大部分以Linux为目标但部分代码是纯C的&#xff0c;可以在任何平台上使用。 源码指引&#xff1a;github源…

【SVN基础】

软件&#xff1a;ToritoiseSVN 代码版本回退&#xff1a;回退到上一个版本 问题&#xff1a;SVN版本已经提交了版本1和版本2&#xff0c;现在发现不需要版本2的内容&#xff0c;需要回退到版本1然后继续开发。 如图SVN版本已经提交到了107版本&#xff0c;那么本地仓库也已经…

作业:zuoye

1.闹钟&#xff08;错的&#xff09; #include "widget.h" #include "ui_widget.h" #include <QMessageBox>Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget) {ui->setupUi(this);// 初始化定时器objTimer new QTimer(th…

一种非完全图下的TSP求解算法

序 旅行商问题(Traveling Salesman Problem,简称TSP)是组合优化中的一个经典问题,就是给定一组城市和城市之间的距离,找到一条最短路径使得每个城市只被访问一次后返回到起点。 一些传统的解法都是基于完全图的,我在网上也很少找到非完全图的解法,非完全图应该在实际应…

2025.2.11——一、[极客大挑战 2019]PHP wakeup绕过|备份文件|代码审计

题目来源&#xff1a;BUUCTF [极客大挑战 2019]PHP 目录 一、打开靶机&#xff0c;整理信息 二、解题思路 step 1&#xff1a;目录扫描、爆破 step 2&#xff1a;代码审计 1.index.php 2.class.php 3.flag.php step 3&#xff1a;绕过__wakeup重置 ​编辑 三、小结…

Word成功接入DeepSeek详细步骤

原理 原理是利用Word的VBA宏&#xff0c;写代码接入API。无需下载额外插件。 步骤一、注册硅基流动 硅基流动统一登录 注册这个是为了有一个api调用的api_key&#xff0c;有一些免费的额度可以使用。大概就是这个公司提供token&#xff0c;我们使用这个公司的模型调用deepsee…

STM32_USART通用同步/异步收发器

目录 背景 程序 STM32浮空输入的概念 1.基本概念 2. STM32浮空输入的特点 3. STM32浮空输入的应用场景 STM32推挽输出详解 1. 基本概念 2. 工作原理 3. 应用场景 使能外设时钟 TXE 和 TC的区别 USART_IT_TXE USART_IT_TC 使能串口外设 中断处理函数 背景 单片…

Kafka的消费消息是如何传递的?

大家好&#xff0c;我是锋哥。今天分享关于【Kafka的消费消息是如何传递的&#xff1f;】面试题。希望对大家有帮助&#xff1b; Kafka的消费消息是如何传递的&#xff1f; 1000道 互联网大厂Java工程师 精选面试题-Java资源分享网 Kafka 的消息传递机制是基于 发布-订阅 模型…

活动预告 | Power Hour: Copilot 引领商业应用的未来

课程介绍 智能化时代&#xff0c;商业应用如何实现突破&#xff1f;微软全球副总裁 Charles Lamanna 将为您深度解析&#xff0c;剖析其中关键因素。 在本次线上研讨会中&#xff0c;Charles Lamanna 将分享他在增强商业运营方面的独到见解与实战策略&#xff0c;深度解读商业…

IPD项目管理是什么?

IPD项目管理&#xff0c;即整合项目交付管理&#xff0c;是一种创新的管理方式、强调团队协作、优化设计和施工过程的方法。这种管理模式的核心是整合所有项目参与者的专业技能和知识&#xff0c;从项目初始阶段就开始共同合作&#xff0c;以实现项目目标。它特别强调所有参与者…

支付宝安全发全套解决方案

产品价值 ● 通过支付宝的资金能力&#xff0c;让服务商机构通过信息流驱动资金流&#xff0c;在不碰触客户企业资金的同时&#xff0c;为客户企业完成转账。账目清晰&#xff0c;无合规和资质风险。 ● 为服务商提供全链路的资金流动明细信息&#xff0c;服务商可以将这些信息…

关于FANUC机器人示教器型号的说明

关于FANUC机器人示教器型号的说明 如下图所示&#xff0c; 示教器的型号为&#xff1a;A05B-2255-C102#ESW&#xff0c; 如果需要对示教器进行更换或维修测试&#xff0c;只需保证前面8位的型号保持一致即可&#xff0c; 例如下图中的型号&#xff0c; 只需保证A05B-2255-x…

计算机毕业设计SpringBoot校园二手交易小程序 校园二手交易平台(websocket消息推送+云存储+双端+数据统计)(源码+文档+运行视频+讲解视频)

温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 作者简介&#xff1a;Java领…

11vue3实战-----封装缓存工具

11vue3实战-----封装缓存工具 1.背景2.pinia的持久化思路3.以localStorage为例解决问题4.封装缓存工具 1.背景 在上一章节&#xff0c;实现登录功能时候&#xff0c;当账号密码正确&#xff0c;身份验证成功之后&#xff0c;把用户信息保存起来&#xff0c;是用的pinia。然而p…