斯皮尔曼(spearman)相关系数python代码实现

article/2025/9/20 13:17:19

简介

斯皮尔曼等级相关系数(简称等级相关系数,或称秩相关系数,英语:Spearman's rank correlation coefficient或Spearman's ρ)。一般用或者表示。它是衡量两个变量的相关性的无母数指标。它利用单调函数评价两个统计变量的相关性。若数据中没有重复值,且当两变量完全单调相关时,斯皮尔曼相关系数为+1或−1,而且位于-1到1之间如图所示。

更常用的一般为这个公式,但是比较麻烦。一般我们直接调用scipy.stats.spearman()直接调用。

备注:当所有的等级数值都为整数时,可以通过以下简单的公式计算等级相关系数。

斯皮尔曼(等级)系数主要是针对X,Y两个变量求相关性

适用范围

  1. 用于当数据不满足下列条件任意一个(线性关系,连续数据,正态分布)的时候

  1. 当数据为定序数据的时候

定序数据为反应登记的数据,代表了某种逻辑顺序,而且属于品质数据,(甲,乙,丙)(优,良,差)等类型都可以称为定序数据。

补充spearman系数数据排序

备注:如果变量数据相同的话,我们采取依次顺序排序,相同数值取位置的平均值

具体代码

import numpy as np
import pandas as pd
import scipy.stats as stats
def calculate_spearman_correlation(X, Y):return stats.spearmanr(X, Y)[0]
def calculate_spearman_correlation_p(X, Y):return stats.spearmanr(X, Y)[1]
if __name__=='__main__':x = [1, 2, 3, 4, 5, 6, 7, 8, 9]y = [2, 1, 2, 4.5, 7, 6.5, 6, 9, 9.5]print(calculate_spearman_correlation_p(x, y))print(calculate_spearman_correlation(x, y))

spearman检验

小样本检验(n<30)

在一般情况下,我们通过直接适用查表的方式进行验证,即为spearman系数要大于表中对应的临界值。即为我们认为我们的相关系数大于表中的临界值,我们认为相关系数是有显著性差异的,即为有相关性而且相关性不为0

大样本检验(n>30)

在一般情况下,我们通过构造统计量进行假设检验,假设检验如图,而且在统计量,如果统计量符合正态分布,具体公式如图所示。

H0:
H1:

(构造的统计量符合正态分布)

计算p值,如果p值大于0.05,即为证明有显著差异。即为有相关性,相关系数不为0。

求P值代码

def calculate_spearman_correlation_p(X, Y):return stats.spearmanr(X, Y)[1]


http://chatgpt.dhexx.cn/article/Z0MnKjB4.shtml

相关文章

数学建模——相关系数(4)——斯皮尔曼相关系数(spearman)

文章目录 引述一、斯皮尔曼相关系数&#xff08;spearman&#xff09;1.定义12.定义23.使用MATLAB计算spearman相关系数4. 斯皮尔曼相关系数的假设检验 二、斯皮尔曼相关系数与皮尔逊相关系数的比较 引述 经过之前几节的学习&#xff0c;我们了解并掌握了皮尔逊相关系数。在学…

Spearman相关系数的含义及适用场景

斯皮尔曼相关系数计算工具: https://geographyfieldwork.com/SpearmansRankCalculator.html斯皮尔曼相关系数的解释&#xff1a;https://statisticsbyjim.com/basics/spearmans-correlation/ 统计中&#xff0c;斯皮尔曼相关系数是皮尔逊相关系数的非参数替代方法。对遵循曲线、…

SPSS——相关分析——Spearman秩相关系数

简介 斯皮尔曼等级相关&#xff08;Spearman’s correlation coefficient for ranked data&#xff09;主要用于解决称名数据和顺序数据相关的问题。适用于两列变量&#xff0c;而且具有等级变量性质具有线性关系的资料。由英国心理学家、统计学家斯皮尔曼根据积差相关的概念推…

ML之Spearman:Spearman相关系数(斯皮尔曼等级相关系数)的简介、案例应用之详细攻略

ML之Spearman&#xff1a;Spearman相关系数(斯皮尔曼等级相关系数)的简介、案例应用之详细攻略 目录 Spearman相关系数(斯皮尔曼等级相关系数)的简介 (1)、Spearman相关系数(斯皮尔曼等级相关系数)的计算逻辑 Spearman相关系数(斯皮尔曼等级相关系数)的的案例应用 Spearman相…

斯皮尔曼spearman相关系数

斯皮尔曼spearman相关系数 斯皮尔曼相关系数定义&#xff1a; X和Y为两组数据&#xff0c;其斯皮尔曼&#xff08;等级&#xff09;相关系数: r s 1 − 6 ∑ i 1 n d i 2 n ( n 2 − 1 ) r_s1-\frac{6\sum\limits_{i1}^nd_i^2}{n(n^2-1)} rs​1−n(n2−1)6i1∑n​di2​​ …

数据库知识及数据库编程

数据库的概念 数据库是“按照数据结构来组织、存储和管理数据的仓库”。是一个长期存储在计算机内的、有组织的、可共享的、统一管理的大量数据的集合。 数据库是存放数据的仓库。它的存储空间很大&#xff0c;可以存放百万条、千万条、上亿条数据。但是数据库并不是随意地将数…

数据库编程与设计—SQL语言

一、SQL语言基础 1 什么是SQL 结构化查询语言结构化查询语言(Structured Query Language)简称 SQL(发音&#xff1a;sequal[si:kwəl])&#xff0c;是一种数据库查询和程序设计语言&#xff0c;用于存取数据以及查询、更新和管理关系数据库系统&#xff1b;同时也是数据库脚本…

JDBC --- Java的数据库编程

目录 &#x1f348;一、数据库编程的必备条件 &#x1f349;二、什么是 JDBC JDBC 的优势 &#x1f34a;三、JDBC 使用流程 以及 常用接口和类的讲解 &#x1f361;0. 前置工作 &#x1f36d;1. 引入依赖 &#x1f36c;2. 数据库连接Connection &#x1f36c;3. 创建操…

数据库—mysql、数据库编程(API)

1. Linux平台准备 &#xff08;1&#xff09;安装SDK开发包的命令 sudo apt-get install libmysqlclient-dev &#xff08;2&#xff09;编译时需要链接的库:-lmysqlclient 2. mysql 的初始化和清理 #include <mysql/mysql.h> MYSQL mysql1; //创建句柄 mysql_init(&…

8.数据库编程

一、思维导图 二、基础梳理 1.游标的使用步骤 ① 声明游标。 用DECLARE语句为一条SELECT语句定义游标 EXEC SQL DECLARE<游标名> CURSOR FOR <SELECT语句>;使用T-SQL语句生成一个结果集&#xff0c;并且定义游标的特征&#xff0c;如游标中的记录是否可以修改。…

数据库编程----Mysql简介

数据库编程----Mysql简介 文章目录 一、什么是Mysql二、Mysq的l特点三、总结 一、什么是Mysql Mysql是一个关系型数据库管理系统二、Mysq的l特点 三、总结 Mysql是一个关系型的数据管理系统

6.数据库编程

PL-SQL编程 1.PL/SQL的特点 PL(Procedure Language)/SQL&#xff09;是Oracle在数据库中引入的一种过程化的编程语言。 PL/SQL是对SQL的扩充&#xff1a;具有为程序开发而设计的特性&#xff1b; 在PL/SQL 中可以使用变量&#xff0c;进行流程控制&#xff0c;来实现比较复杂…

编程语言与数据库

从新近的TIOBE编程语言排名可看到&#xff0c;Java、C依然稳定地在最受欢迎前列。 因具备图灵完备性&#xff0c;2018年才重新被纳入清单的SQL语言已快速出现在第9位置&#xff08;7月&#xff09;——这似乎意味着&#xff0c;传统的RDBMS(关系数据库系统)仍然是应用的主流&am…

java数据库编程入门

一、JDBC概述 1、JDBC是Java数据库连接技术的简称&#xff0c;提供连接各种常用数据库的能力。 2、JDBC模型 JAVA程序一般通过调用JDBC所定义的类和接口来处理数据库中的数据&#xff0c;也就是通过调用JDBC的驱动程序实现对数据库的操作。 3、JDBC操作数据库过程 基于JDBC…

Python之数据库编程

目录 一、MySQL数据库的使用 数据库相关操作 二、数据库增删改查 增加 修改 删除 三、数据库标准写法 一、MySQL数据库的使用 建表 CREATE TABLE py_student( id INTEGER primary key auto_increment, name INTEGER not null, gender varchar(11) default 男 , birthday d…

Java-数据库编程技术(MySQL)

初识MySQL 数据库简介 什么是数据库 数据库&#xff08;Database&#xff0c;DB&#xff09;就是存放数据的仓库&#xff0c;为了实现一定目的&#xff0c;按照某种规则组织起来的数据的集合。当然数据有多种形式&#xff0c;如文字、数码、符号、图形、声音等。从广义的角度…

【数据库系统】数据库编程

嵌入式SQL的处理过程&#xff1a; 嵌入式SQL是将SQL语句嵌入程序设计语言中&#xff0c;被嵌入的设计语言为主语言。 当主语言为C语言时&#xff0c;语法格式为&#xff1a; EXEC SQL <SQL语句> 嵌入式SQL语句与主语言之间的通信&#xff1a; 将SQL嵌入到高级语言中混…

数据库应用(mysql)数据库编程

第1关&#xff1a;创建存储过程1 任务描述 本关任务&#xff1a; 1.新建一个没有参数的存储过程p1&#xff0c;显示product表中所有数据。 2.调用p1。 USE petstore; create procedure p1() #新建一个没有参数的存储过程 select * from product; call p1(); …

java数据库编程

java数据库编程 刚入门学习java数据库的编程&#xff0c;看了一部分的java核心技术卷2的内容&#xff0c;结合在blibli上看了javaweb的视频&#xff0c;先写一个入门级的数据库文章。 jdbc是由java定制的一套操作数据库的API&#xff08;应用程序编程接口&#xff09;。通过…

MySQL数据库编程(C++)介绍

本文主要介绍基于 C 编程语言&#xff0c;实现 MySQL 数据库编程的相关知识。 1 概述 本文利用 MySQL 接口实现基于 C 编程语言的 MySQL 数据库编程。 官网中对于 MySQL 的介绍如下&#xff1a; MySQL is a C wrapper for MySQL’s C API. It is built around the same prin…