斯皮尔曼spearman相关系数

article/2025/9/20 13:09:59

斯皮尔曼spearman相关系数

斯皮尔曼相关系数定义:

X和Y为两组数据,其斯皮尔曼(等级)相关系数:
r s = 1 − 6 ∑ i = 1 n d i 2 n ( n 2 − 1 ) r_s=1-\frac{6\sum\limits_{i=1}^nd_i^2}{n(n^2-1)} rs=1n(n21)6i=1ndi2
其中, d i d_i di X i X_i Xi Y i Y_i Yi之间的等级差。
可以证明: r s r_s rs为于-1和+1之间。

等级:一个数的等级,就是将它所在的一列数按从小到大排序后,这个数所在的位置,也就是排序后等级从小到大为1,2,…,n。当排序时有相同数值时,则将取它们所在的位置的算数平均值。

下面举一个例子:

xyx的等级y的等级等级差等级差的平方
352111
81054.50.50.25
483300
71044.5-0.50.25
2612-11

根据公式可以计算出斯皮尔曼相关系数为0.875。
注:斯皮尔曼相关系数>0为正相关;斯皮尔曼相关系数<0为负相关。越接近1和-1相关性越强。斯皮尔曼相关系数为零表明当X增加时Y没有任何趋向性。

斯皮尔曼相关系数还有另一种定义方式:斯皮尔曼相关系数被定义成等级变量之间的皮尔逊相关系数。如果数据中没有重复值,计算和上一种定义方式相同。如果有重复值,可能会有一定的偏差。

MATLAB中计算斯皮尔曼相关系数

两种用法:

corr(X,Y,'type','Spearman')
%这里的XY必须是列向量
corr(X,'type','Spearman')
%计算x矩阵各列之间的斯皮尔曼相关系数

下面我们对上面表格中的例子使用MATLAB进行计算:

%% 斯皮尔曼相关系数
X = [3 8 4 7 2]'  % 一定要是列向量哦,一撇'表示求转置
Y = [5 10 9 10 6]'
% 第一种计算方法
1-6*(1+0.25+0.25+1)/5/24% 第二种计算方法
coeff = corr(X , Y , 'type' , 'Spearman')
% 等价于:
RX = [2 5 3 4 1]
RY = [1 4.5 3 4.5 2]
R = corrcoef(RX,RY)
%这里的等价就是斯皮尔曼相关系数被定义成等级变量之间的皮尔逊相关系数。% 计算矩阵各列的斯皮尔曼相关系数
R = corr(Test, 'type' , 'Spearman')

斯皮尔曼相关系数的假设检验

斯皮尔曼相关系数的假设检验分为大样本和小样本的情况。
H 0 : r s = 0 , H 1 : r s ≠ 0 H_0:r_s=0,H_1:r_s\neq0 H0:rs=0,H1:rs=0
小样本情况,即n<30时,直接查临界值表即可。
注:样本相关系数r必须大于表中的临界值,才能得出显著的结论。在这里插入图片描述
大样本情况下,构造统计量: r s n − 1 服 从 标 准 正 态 N ( 0 , 1 ) r_s\sqrt{n-1}服从标准正态N(0,1) rsn1 N(0,1)
H 0 : r s = 0 , H 1 : r s ≠ 0 H_0:r_s=0,H_1:r_s\neq0 H0:rs=0,H1:rs=0
我们计算检验值 r s n − 1 r_s\sqrt{n-1} rsn1 ,并求出对应的p值与0.05相比即可。

disp((1-normcdf(r_s*sqrt(n-1)))*2)
%normcdf是对标准正态分布进行积分
%双侧检验时p值需要乘以2

matlab中也给出了对应的函数,可以直接输出斯皮尔曼相关系数和p值:

% 直接给出相关系数和p值
[R,P]=corr(Test, 'type' , 'Spearman')
%R为斯皮尔曼相关系数
%P为对应的p值

使用spss标注显著性水平

使用spss标记显著性水平:分析——相关——双变量在这里插入图片描述
勾选皮尔逊、斯皮尔曼。根据问题选择双尾或单尾。勾选标记显著性水平。
在这里插入图片描述

皮尔逊相关系数和斯皮尔曼相关系数的比较

1.连续数据,正态分布,线性关系,用皮尔逊相关系数最为恰当,当然斯皮尔曼相关系数也可以,就是效率没有皮尔逊相关系数高。

2.上述任一条件不满足,就用斯皮尔曼相关系数,不能使用皮尔逊相关系数。

3两个定序数据之间也用斯皮尔曼相关系数,不能使用皮尔逊相关系数。

定序数据是指仅仅反应观测对象等级、顺序关系的数据,是由定序尺度计量形成的,表现为类别,可以进行排序,属于品质数据。
例如:优、良、差;
我们可以使用1表示差、2表示良、3表示优,但是请注意,用2除以1得出的2并不代表任何含义。定序数据最重要的意义代表了一组数据中的某种逻辑顺序。


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

相关文章

数据库知识及数据库编程

数据库的概念 数据库是“按照数据结构来组织、存储和管理数据的仓库”。是一个长期存储在计算机内的、有组织的、可共享的、统一管理的大量数据的集合。 数据库是存放数据的仓库。它的存储空间很大&#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…

数据库编程——简单教程

一、实验目的 1、掌握存储过程的概念、优点、特点及用途&#xff1b; 2、掌握创建、执行、修改和删除存储过程的方法。 二、实验内容 &#xff08;一&#xff09;附加上次实验所创建的数据库“db_Library”&#xff0c;并回顾该库的数据表信息。 &#xff08;二&#xff09;练习…

数据库基础编程

连接mysql在黑窗口 mysql -u root -p #登录MySQL SQL语句分类 数据库操作 创建数据库 create database [if not exists] db_name; 1.character set :指定数据库采用的字符集&#xff0c;如果不指定字符集&#xff0c;默认utf8 2&#xff0c;collate&#xff1a;指定数据库…

数据库编程

数据库编程 T-SQL编程基础知识 标识符 标识符分类 常规标识符&#xff08;严格遵守标识符格式规则&#xff09; 界定标识符&#xff08;引号”或方括号[]&#xff09;标识符格式规则 字母或_、、&#xff03;开头的字母数字或_、、$序列 不与保留字相同 长度小于128 不符合规…

数据库编程之ODBC编程

ODBC优点 移植性好 能同时访问不同的数据库 共享多个数据资源 ODBC概述 ODBC产生的原因 由于不同的数据库管理系统的存在&#xff0c;在某个关系数据库管理系统下编写的应用程序就不能在另一个关系数据库管理系统下运行 许多应用程序需要共享多个部门的数据资源&#xff0c…

第8章 数据库编程

文章目录 ❖第一节 T-SQL编程基础标识符注释语句表达式SET、SELECT区别 流程控制语句选择结构❖IF ELSECASE语句搜索式CASE语句 循环结构等待语句返回语句 系统函数标量函数日期和时间函数字符串函数 数据类型转换函数 ❖第二节 游标&#xff08;重点&#xff09;1. 声明游标2.…