一种可以识别局部单调的系数

记录一种可以识别局部单调的系数
在这里插入图片描述
pearson和kendall等系数再识别单调的时候,更多是关注整体情况,很多时候,变量和因变量之间非简单的单调关系,局部单调ξ识别

假设我们正在测量变量X和Y之间的关系。传统的相关性测量方法通常假定X与Y之间的关系是线性的,即X和Y之间的相关性是对称的。然而,新方法的目标是测量Y作为X的函数的程度,因此ξ(X, Y)不一定等于ξ(Y, X)。
为了计算ξ,我们首先需要对数据进行排序,使得X的值按从小到大的顺序排列。然后,我们需要计算Y值的秩。根据数据中是否存在重复值,我们有两种不同的公式:
如果数据中不存在重复值
在这里插入图片描述
如果存在重复值:
在这里插入图片描述

代码实现:

import numpy as np
import randomdef xicor(X, Y, ties=True):"""ties是否存在相同值,如果存在则为True"""n = len(X)order = np.array([i[0] for i in sorted(enumerate(X), key=lambda x: x[1])])if ties:l = np.array([sum(y >= Y[order]) for y in Y[order]])r = l.copy()for j in range(n):if sum([r[j] == r[i] for i in range(n)]) > 1:tie_index = np.array([r[j] == r[i] for i in range(n)])r[tie_index] = random.sample(list(r[tie_index] - np.arange(0, sum(tie_index))), sum(tie_index))return 1 - n * np.sum(np.abs(r[1:] - r[:n-1])) / (2 * np.sum(l * (n - l)))else:r = np.array([sum(y >= Y[order]) for y in Y[order]])return 1 - 3 * np.sum(np.abs(r[1:] - r[:n-1])) / (n**2 - 1)# pyspark实现
from pyspark.sql import SparkSession
from pyspark.sql.functions import col, rank, abs as spark_abs, sum as spark_sum, lit, monotonically_increasing_id
from pyspark.sql.window import Window# 初始化 SparkSession
spark = SparkSession.builder.appName("XiCorrelation").getOrCreate()# 样本数据
data = [(1, 0), (2, 0), (3, 1), (4, 1), (5, 1), (6, 0), (7, 0), (8, 1), (9, 1), (10, 0)]
columns = ["X", "Y"]
df = spark.createDataFrame(data, columns)# 计算 Xi 相关系数函数
def xicor(df, x_col, y_col, ties=True):n = df.count()# 排序和排名window = Window.orderBy(x_col)df = df.withColumn("rank", rank().over(window))if ties:# 处理 ties 的情况order = Window.orderBy(monotonically_increasing_id())df = df.withColumn("order_id", rank().over(order))df = df.withColumn("rank_Y", rank().over(Window.orderBy(y_col)))df = df.withColumn("l", spark_sum(col("rank_Y")).over(Window.partitionBy("rank_Y").orderBy("order_id")))def tie_adjustment(df, l_col):df = df.withColumn("r", col(l_col))for i in range(n):count = df.filter(col("r") == i).count()if count > 1:indices = df.filter(col("r") == i).select("order_id").rdd.flatMap(lambda x: x).collect()adjustments = np.random.permutation(np.arange(count))for j, idx in enumerate(indices):df = df.withColumn("r", when(col("order_id") == idx, col("r") - adjustments[j]).otherwise(col("r")))return dfdf = tie_adjustment(df, "l")else:# 不处理 ties 的情况df = df.withColumn("r", rank().over(Window.orderBy(y_col)))df = df.withColumn("diff", spark_abs(col("r") - col("rank")))if ties:xi = 1 - n * df.select(spark_sum(col("diff"))).first()[0] / (2 * df.select(spark_sum(col("l") * (n - col("l")))).first()[0])else:xi = 1 - 3 * df.select(spark_sum(col("diff"))).first()[0] / (n**2 - 1)return xi

需要注意的是这个系数本质上还是去识别单调,比pearson之类的提升也仅限于局部单调的识别。
如果一个数据是对于特定区间内存在聚集现象的二值化数据,
相关系数可能无法有效识别这种关系.

主要来源

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

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

相关文章

Go - 3.库源码文件

目录 一.引言 二.库源码文件 1.定义 2.生成库源码文件 3.直接调用库源码文件 三.总结 一.引言 前面我们学习了 命令源码文件,并成功运行了 go 的 hello world 代码,下面我们介绍 go 里面另一个概念: 库源码文件。 二.库源码文件 1.定义 库源码文…

一看就会!Win11文件资源管理器的打开方法!

在Win11电脑操作中,用户可以借助文件资源管理器轻松管理文件或文件夹。但是,许多新手用户不知道要怎么操作才能顺利打开文件资源管理器?接下来小编给大家介绍五种简单快速的打开Win11系统文件资源管理器的方法。 方法 1:WindowsE …

构建 Linux 内核指南

该指南列出了用于构建 Linux 内核的各种目标及其说明。 清理目标: clean - 删除大多数生成的文件,但保留配置文件和足以构建外部模块的构建支持。 mrproper - 删除所有生成的文件 配置文件 各个备份文件。 distclean - mrproper 删除编辑器备份和补丁…

企业邮箱大附件无法上传?无法确认接收状态?这样解决就行

Outlook邮箱作为最常用的邮箱系统,被全世界企业采用作为内部通用沟通方式,但Outlook邮箱却有着明显的使用缺陷,如邮箱大附件上传障碍及附件接收无提示等。 1、企业邮箱大附件无法上传 Outlook企业邮箱大附件的上传上限一般是50M,…

Linux知识汇总

方法一: 当ens33的ip地址丢失时使用下面命令找回 service NetworkManager stop service network restart方法二: 网卡没有启动,只要指定再次启动这个网卡即可 ifconfig ens33 up 启动指定网卡 方法三: 执行完命令之后再次查看网络信息已经可以看到ens33的网卡了…

SpringSecurity6从入门到实战之自定义登录页面

SpringSecurity6从入门到实战之自定义登录页面 在使用SpringSecurity进行认证操作的时候,可以发现默认提供的登录页面比较简陋.那么我们能否对登录页面进行自定义配置呢?接下来开始讲解应该如何进行配置 自定义登录页面流程 引入模板依赖 由于自定义登录页面会使用到前端相关…

测试单选框

单选按钮:用于在一组互相排斥的选项中选择其中一项; 由一个圆圈和紧随其后的文本标题组成,当它被选中时,圆圈中就标上一个黑点。 通常将一组单选按钮放在一个组框控件中,在一组单选按钮中,第一个(Tab键顺序…

uniapp微信小程序局部刷新,无感刷新,修改哪条数据刷新哪条

uniapp做微信小程序时,一个商品列表滑到几百条数据时,点进去详情跳转去编辑信息上下架等,修改完成回来商品列表就到第一条数据了,这样页面效果体验感不是很好,是因为我们把数据接口放在onshow中了,每次回来…

SSH隧道(客户端的数据加密并通过 SSH 服务器转发到目标服务器)

SSH隧道简介 SSH 隧道(SSH Tunneling)是通过 SSH(Secure Shell)协议创建的安全通道,用于将流量从一个网络传输到另一个网络。 SSH 隧道可以用来保护网络数据的传输,通常用于穿越防火墙、隐藏流量、访问受…

【Linux】版本

文章目录 linux版本1、linxu技术版本(内核版本)2、linux商业化版本(发行版本) 区别 linux版本 1、linxu技术版本(内核版本) 内核:提供硬件抽象层、硬盘及文件系统控制及多任务功能的系统核心程…

PyTorch与TensorFlow模型互转指南

在深度学习的领域中,PyTorch和TensorFlow是两大广泛使用的框架。每个框架都有其独特的优势和特性,因此在不同的项目中选择使用哪一个框架可能会有所不同。然而,有时我们可能需要在这两个框架之间进行模型的转换,以便于在不同的环境…

高考志愿填报,理科生如何分析选专业?

理科生选择专业的范围更大一些,相比文科说理工科的院校也更多,如何选择适合自己的专业,这是一个比较重要的课题,毕竟大学专业直接关系到职业,是一辈子的大事。 那么理科究竟如何选择专业呢?需要从什么地方…

RPC框架知识学习

RPC框架介绍 RPC(Remote Procedure Call,远程过程调用)框架是一种允许程序调用位于另一台计算机上的程序的技术。这种调用看起来就像是调用本地程序一样,但实际上是通过网络进行的。RPC框架使得分布式系统的开发变得更加简单&…

MyBatis 自定义映射 ResultMap:一对多映射关系处理

在 MyBatis 中处理一对多(或称为一对集合)的映射关系时,我们通常会使用 collection 标签或分布查询来定义这种关系。这种关系常见于一个部门有多个员工这样的场景。下面我们将详细探讨如何使用 MyBatis 的 resultMap 来处理这种一对多的关系。…

Nginx反向代理Kingbase数据库

本文适用于开发人员学习运维领域知识,主要内容为在个人理解的基础上对企业级开发中所使用的Nginx和数据库kingbase相关使用,并附上Nginx反向代理kingbase数据库的相关配置的操作方式,感谢阅读 为什么是nginx代理kingbase数据库服务端 生产环…

JAVA学习笔记DAY6——SSM_Spring

文章目录 技术体系结构单体架构分布式架构 框架 FrameworkSpringIoc容器和核心概念组件Spring管理组件优点Spring Ioc 容器和容器实现普通容器复杂容器SpringIoc容器具体接口和实现类SpringIoc 容器管理配置方式 SpringIoc Ioc DI Spring Ioc 实践和应用Spring Ioc创建步骤配置…

【VUE3学习手札】

VUE3学习手札 vue3成长之路学习笔记 文章目录 VUE3学习手札前言一、markRaw1.1 代码示例1.2 应用场景1.3 拓展(toRaw)1.4 实际应用 二、ref 和 reactive 前言 主要用于自己的一个备忘,对知识点的查缺补漏 一、markRaw 将一个对象标记为不可被…

编程精粹—— Microsoft 编写优质无错 C 程序秘诀 02:设计并使用断言

这是一本老书,作者 Steve Maguire 在微软工作期间写了这本书,英文版于 1993 年发布。2013 年推出了 20 周年纪念第二版。我们看到的标题是中译版名字,英文版的名字是《Writing Clean Code ─── Microsoft’s Techniques for Developing》&a…

6spark期末复习

1)var a:Double5;var b:Int7;那么print(a*b) 2) var a:Int5; var bif(a>6) 7 println(b) 3)var a:Int16; var b:Int13; var cif(a>b) 5 else 7; println(c) 4. object TestDemo { print("B") def main(args: Array[String]): Unit { } } 5 def mai…

JeecgFlow排他网关演示

排他网关概念理解 排他网关,也称为异或(XOR)网关,用于流程中实现分支决策建模。排他网关需要搭配条件顺序流使用。 当流程流转到排他网关时,所有流程顺序流都是会顺序求解, 其中第一条条件为true的顺序流会被选中(当有多条顺序流都…