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

yizhihongxing

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用户推荐系统曼哈顿算法实现完整代码”的完整攻略,包括算法原理、Python实现和两个示例说明。 算法原理 曼哈距离是一种计算两个向量之间距离的方法,其计算方法是将两个向量的每个对应元素的差的绝对值相加。用户推荐系统中,可以使用曼哈顿距离来计算用户之间的相似度,从而进行推荐。具体步骤如下: 将用户评分矩阵转换为用户向量矩阵; 计算用…

    python 2023年5月14日
    00
  • python迭代器模块itertools常用的方法

    Python迭代器模块itertools常用的方法 Python的itertools模块是一个非常实用的工具箱,提供了很多用于操作迭代器和生成器的函数。在这里,我们将介绍一些常用的itertools函数以及它们的用法。 itertools函数 count() count()函数返回一个迭代器,用于生成从指定数字开始的无限序列。 import itertool…

    python 2023年6月3日
    00
  • python中os模块详解

    Python中os模块详解 什么是os模块? os模块是Python中的一个重要标准库,在文件和目录操作、进程管理和环境变量操作等方面提供了许多便利的函数。通过调用os模块的函数,我们可以简化Python编程中一些操作系统相关的任务,提高编程效率。 常用的os模块函数 1. 文件和目录操作 os.getcwd() os.getcwd() 函数可以返回当前工作…

    python 2023年6月2日
    00
  • python实现360的字符显示界面

    一、Python实现360字符显示界面 Python可以通过curses库来实现字符显示界面,其中curses库提供了在终端中操作文本界面的函数接口。接下来我们详细讲解如何使用Python的curses库来实现360的字符显示界面。 1.安装curses库: 在Windows系统下,可以使用pip来安装curses库: pip install windows…

    python 2023年5月20日
    00
  • Spring事件Application Event原理详解

    那我来为大家详细讲解一下“Spring事件Application Event原理详解”的完整攻略。 1. 什么是Spring事件? Spring事件是指在Spring容器中通过Application Event来传递消息。在Spring应用程序中,可以通过触发实现ApplicationEvent接口的自定义事件来实现应用程序的解耦。ApplicationEv…

    python 2023年6月13日
    00
  • 解决运行django程序出错问题 ‘str’object has no attribute’_meta’

    解决运行django程序出错问题’str’object has no attribute ‘_meta’的完整攻略如下: 问题描述 当运行Django程序时,可能会遇到如下的错误信息:’str’ object has no attribute ‘_meta’。这通常是因为程序中存在些问题,例如在定义Django模型类时,可能会出现在某个字段处使用了字符串类型…

    python 2023年5月13日
    00
  • python list与numpy数组效率对比

    以下是“Python list与NumPy数组效率对比”的完整攻略。 1. Python list和NumPy数组的区别 Python list和NumPy数组都是Python中常用的数据结构,但它们有一些重要的区别。Python list是一种动态数组,可以存储任意类型的数据,但它的效率较低。而NumPy数组是一种静态数组,可以存储一种类型的数据,但它的效…

    python 2023年5月13日
    00
  • Python简单生成随机姓名的方法示例

    下面就来详细讲解一下如何用Python生成随机姓名的方法。 生成姓氏 首先我们需要生成姓氏,通常我们可以使用已有的姓氏列表,很多基础库都可以提供这种列表。这里我们使用Python内置的random库来实现: import random # 姓氏列表 family_name_list = [‘赵’, ‘钱’, ‘孙’, ‘李’, ‘周’, ‘吴’, ‘郑’, …

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