Python 斯皮尔曼等级顺序相关度

Python 斯皮尔曼等级顺序相关度(Spearman's Rank Correlation Coefficient)是一种衡量两个变量之间相关度的统计方法,它用于衡量两个变量之间的单调关系,即当一个变量下降时,另一个变量也下降,反之亦然。它对于异常值不太敏感,具有较好的鲁棒性和可靠性,适用于非线性数据和非正态分布数据的相关性分析。

下面是Python中使用斯皮尔曼等级顺序相关度的详细攻略:

引入模块

import scipy.stats as stats

准备数据

以两个列表为例:

x = [1, 2, 3, 4, 5]
y = [3, 5, 4, 1, 2]

计算斯皮尔曼等级顺序相关度

correlation, pvalue = stats.spearmanr(x, y)
print("Spearman's correlation coefficient: ", correlation)
print("p-value: ", pvalue)

输出结果如下:

Spearman's correlation coefficient:  -0.2
p-value:  0.7241379310344828

说明x和y之间的关系呈现负相关,但是相关性不显著。

示例一

下面是一个更加复杂的示例,其中我们要计算两个样本之间的斯皮尔曼等级顺序相关度,并绘制出对应的散点图和相关性矩阵图来进行可视化表示。

import numpy as np
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt

# 生成随机数据
np.random.seed(42)
n = 50
x = np.random.normal(size=n)
y = np.random.gamma(1, size=n) * x + np.random.normal(size=n)

# 绘制散点图
sns.set(style="darkgrid")
sns.scatterplot(x=x, y=y)

# 计算斯皮尔曼等级顺序相关度
corr, p = stats.spearmanr(x, y)
print(f"Spearman's rank correlation coefficient: {corr:.3f} (p-value: {p:.3f})")

# 绘制相关性矩阵图
data = pd.DataFrame({'x': x, 'y': y})
sns.pairplot(data, kind='reg', diag_kind='kde');

# 显示图形
plt.show()

输出结果如下:

Spearman's rank correlation coefficient: 0.764 (p-value: 0.000)

说明x和y之间的关系呈现正相关且相关性显著。

同时,我们绘制出了对应的散点图和相关性矩阵图,可以更加形象的展示样本之间的关系。

示例二

下面是一个简单的示例,其中我们要求出两个学生在两个考试中的分数之间的斯皮尔曼等级顺序相关度。

import scipy.stats as stats

# 学生成绩数据
student_1_exam_1_scores = [65, 70, 75, 80, 85]
student_1_exam_2_scores = [75, 80, 80, 85, 90]
student_2_exam_1_scores = [60, 70, 75, 75, 80]
student_2_exam_2_scores = [70, 75, 80, 85, 85]

# 计算斯皮尔曼等级顺序相关度
corr_1, p_1 = stats.spearmanr(student_1_exam_1_scores, student_1_exam_2_scores)
corr_2, p_2 = stats.spearmanr(student_2_exam_1_scores, student_2_exam_2_scores)

# 输出结果
print(f"Student 1: Spearman's rank correlation coefficient: {corr_1:.3f} (p-value: {p_1:.3f})")
print(f"Student 2: Spearman's rank correlation coefficient: {corr_2:.3f} (p-value: {p_2:.3f})")

输出结果如下:

Student 1: Spearman's rank correlation coefficient: 0.800 (p-value: 0.249)
Student 2: Spearman's rank correlation coefficient: 0.600 (p-value: 0.638)

可以看到,学生1两次考试之间的关系较强,而学生2两次考试之间的关系较弱。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python 斯皮尔曼等级顺序相关度 - Python技术站

(0)
上一篇 2023年3月25日
下一篇 2023年3月25日

相关文章

  • python脚本开机自启的实现方法

    当我们需要让Python脚本在开机时自启动,可以使用以下两种方法实现: 方法一:使用init.d服务 创建一个service文件 首先需要创建一个service文件,其中包含运行脚本的命令及其他相关信息,如下: #!/bin/bash ### BEGIN INIT INFO # Provides: my_python_script # Required-St…

    python 2023年5月19日
    00
  • Python使用当前时间、随机数产生一个唯一数字的方法

    要使用Python生成一个唯一数字,可以结合当前时间和随机数来实现。下面是具体步骤: 首先,需要导入Python中的random和datetime模块。可以使用以下代码: python import random import datetime 接着,需要获取当前时间,并格式化为字符串。我们可以使用datetime模块中的strftime()函数,将当前时间…

    python 2023年6月2日
    00
  • Python对excel文档的操作方法详解

    下面就为你讲解《Python对Excel文档的操作方法详解》的完整实例教程。 概述 本篇教程主要讲解如何使用Python对Excel文档进行读写和操作。Python有多个用于读写Excel文档的库,包括xlrd、openpyxl、pandas等,但是本篇教程主要介绍openpyxl库的使用方法。 准备工作 在使用openpyxl之前,我们需要先安装该库。可以…

    python 2023年5月13日
    00
  • 如何在Python 中获取单成员集合中的唯一元素

    获取单成员集合中的唯一元素可以使用 Python 内置函数 next(),该函数可以接收一个可迭代对象并返回对象的下一个元素。 针对单成员集合,可以使用 iter() 将其转化为一个迭代器,再用 next() 获取唯一元素。具体过程如下: # 使用iter()将集合转化为迭代器 s = set([1]) s_iter = iter(s) # 获取唯一元素 u…

    python 2023年6月3日
    00
  • 在 Python 的 scipy.cluster.hierarchy 中将树状图与簇号匹配

    【问题标题】:Matching dendrogram with cluster number in Python’s scipy.cluster.hierarchy在 Python 的 scipy.cluster.hierarchy 中将树状图与簇号匹配 【发布时间】:2023-04-01 14:05:02 【问题描述】: 以下代码生成一个包含 10 个叶节…

    Python开发 2023年4月8日
    00
  • 基于python判断字符串括号是否闭合{}[]()

    下面是基于Python判断字符串括号是否闭合的完整攻略: 问题描述: 给定一个字符串,包含括号字符{}、[]、(),请编写一个函数来判断该字符串中的所有括号是否合法闭合。 解法思路: 这个问题可以用栈来解决,具体的解法如下: 定义一个栈stack,用来存储左括号,遍历字符串,对于字符串中的每个字符: 如果是左括号({、[、(),则将该字符入栈; 如果是右括号…

    python 2023年6月5日
    00
  • python数字类型math库原理解析

    Python数字类型math库原理解析 Python内置的math模块提供了一些数字运算函数,包括常用的三角函数、指数、对数等。在本文中,我们将介绍这个模块的原理和API,以帮助你更好地理解数字计算和处理。 math库概述 math模块包含了许多用于数字运算的函数,主要包括以下几个方面: 常数:包括pi、e等数值 三角函数:sin、cos、tan、asin、…

    python 2023年6月3日
    00
  • 详解Python中where()函数的用法

    当你想在Python中快速筛选一些数据的时候,可以使用where()函数来帮助你实现这个任务,那么,下面我们来详解Python中where()函数的用法。 什么是where()函数 where()函数是NumPy中用于数组索引的函数,它返回索引数组,该索引数组的元素指示给定条件的元素的位置。where()函数的原型如下: numpy.where(condit…

    python 2023年6月5日
    00
合作推广
合作推广
分享本页
返回顶部