Python统计学教程:斯皮尔曼相关分析原理及代码实现
前言
自学笔记,分享给对统计学原理不太清楚但需要在论文中用到的小伙伴,欢迎大佬们补充或绕道。ps:本文不涉及公式讲解(文科生小白友好体质)~(部分定义等来源于知乎)
本文重点:斯皮尔曼相关分析
【1.斯皮尔曼相关分析的简单原理】
【2.斯皮尔曼相关分析和皮尔曼相关分析的区别】
【3.斯皮尔曼相关分析代码】
▷重要:相关关系不等于因果关系
1.斯皮尔曼相关分析的简单原理
斯皮尔曼相关检验(Spearman's rank correlation test)是一种非参数统计方法,用于衡量两个变量之间的单调关系强度和方向。与皮尔逊相关检验不同,斯皮尔曼相关检验不要求数据满足正态分布,对异常值也不敏感,适用于序数尺度或等级数据。
关于“参数检验”和“非参数检验”的不同,请参考以下文章。【统计学】参数检验和非参数检验的区别和基本统计学
- 假设检验:斯皮尔曼相关检验的零假设(H0)是两个变量之间没有单调关系,即相关系数等于0;备择假设(H1)是两个变量之间存在单调关系,即相关系数不等于0。
- 将数据转换为秩次:将两个变量的数据分别按照从小到大的顺序排列,并将它们的位置(秩次)赋予相应的数值。如果有并列的数据,则取其平均秩次。
- 计算秩次相关系数:斯皮尔曼相关系数(ρ)的计算公式为: ρ = 1 – (6 * Σ(d^2)) / (n * (n^2 – 1)) 其中,d是两个变量秩次之差,n是样本量。
- 计算 p 值:根据样本量和相关系数,可以计算出 p 值,用于判断相关性的显著性水平。通常,如果 p 值小于显著性水平(如0.05),则拒绝零假设,认为两个变量之间存在显著的单调关系。
2.斯皮尔曼相关分析和皮尔曼相关分析的区别
对比区别
皮尔逊相关检验 | 斯皮尔曼相关检验 | |
---|---|---|
数据要求 | 要求数据满足正态分布 | 没有正态分布的要求 |
变量尺度 | 适用于连续变量 | 适用于序数尺度或等级数据 |
关系类型 | 衡量变量之间的线性关系 | 衡量变量之间的单调关系(变量同向或反向变化,但不一定是线性的) |
对异常值的敏感性 | 敏感 | 不敏感 |
计算方法 | 直接使用原始数据计算 | 使用数据的秩次计算 |
以下是几个例子:
斯皮尔曼相关分析数据实例:
序号 | 变量1 | 变量2 |
---|---|---|
1 | 教育程度: 高中、大专、本科、硕士、博士 | 收入满意度: 非常不满意、不满意、一般、满意、非常满意 |
2 | 电影评分: 1星、2星、3星、4星、5星 | 票房收入排名: 1、2、3、4、5 |
3 | 员工绩效等级: A、B、C、D、E | 晋升次数: 0、1、2、3、4 |
4 | 餐厅评论评分: 1分、2分、3分、4分、5分 | 价格区间: 低、中低、中等、中高、高 |
皮尔逊相关分析数据实例:
序号 | 变量1 | 变量2 |
---|---|---|
1 | 身高(cm): 160, 165, 170, 175, 180, 185, 190 | 体重(kg): 50, 55, 60, 65, 70, 75, 80 |
2 | 房屋面积(平方米): 50, 60, 70, 80, 90, 100, 110 | 售价(万元): 100, 120, 140, 160, 180, 200, 220 |
3 | 产品单价(元): 10, 15, 20, 25, 30, 35, 40 | 销量(件): 1000, 900, 800, 700, 600, 500, 400 |
4 | 广告投放时长(秒): 5, 10, 15, 20, 25, 30, 35 | 点击率(%): 1, 2, 3, 4, 5, 6, 7 |
3.斯皮尔曼相关分析代码
使用以上"教育程度与收入满意度"的数据作为示例:
import numpy as np
from scipy.stats import spearmanr
# 教育程度数据(1-高中,2-大专,3-本科,4-硕士,5-博士)
education_level = np.array([1, 2, 2, 3, 3, 3, 4, 4, 4, 4, 5, 5])
# 收入满意度数据(1-非常不满意,2-不满意,3-一般,4-满意,5-非常满意)
income_satisfaction = np.array([1, 1, 2, 2, 3, 3, 3, 4, 4, 5, 4, 5])
# 计算斯皮尔曼相关系数和p值
correlation, p_value = spearmanr(education_level, income_satisfaction)
print(f"斯皮尔曼相关系数: {correlation:.3f}")
print(f"p值: {p_value:.3f}")
斯皮尔曼相关系数: 0.889
p值: 0.000
- 斯皮尔曼相关系数为0.889,这表明教育程度与收入满意度之间存在很强的正相关关系。换句话说,教育程度越高,收入满意度也越高。
- p值非常接近于0,远小于显著性水平0.05,因此我们可以拒绝零假设,认为教育程度与收入满意度之间存在显著的单调相关关系。
作者:TUTO_TUTO