机器学习数学基础:32.斯皮尔曼等级相关

斯皮尔曼等级相关教程

一、定义与原理

斯皮尔曼等级相关系数(Spearman's rank - correlation coefficient),常用 ρ \rho ρ表示,是一种非参数统计量,用于衡量两个变量的等级之间的关联程度。它基于变量的秩次(排序后的位置)进行计算,不依赖于数据的分布形态,能有效处理非线性关系和非数值型的有序数据。取值范围在 − 1 -1 −1到 1 1 1之间, ρ = 1 \rho \ = 1 ρ =1表示完全正相关,即一个变量的等级增加时,另一个变量的等级也严格增加; ρ = − 1 \rho \ = - 1 ρ =−1表示完全负相关; ρ = 0 \rho \ = 0 ρ =0表示不存在等级相关关系。

二、适用场景

  • 数据为定序数据:如比赛名次、成绩等级、满意度排序等,例如分析不同餐厅在美食评选中的排名和顾客推荐率排名的关系。
  • 数据分布未知或不满足正态分布:当无法确定数据是否服从正态分布,或者明确知道数据不服从正态分布时,斯皮尔曼等级相关系数是很好的选择。
  • 变量间为非线性关系:只要两个变量之间存在单调变化趋势(不一定是线性),都可以用它来衡量相关性,比如植物生长时间和植株高度的关系(可能是先慢后快再趋于平稳的非线性增长) 。

三、计算步骤

斯皮尔曼等级相关系数计算

  1. 数据排序 :分别对两个变量的数据进行排序,确定每个数据在各自变量中的等级。若存在相同数值,通常取平均等级。例如,有三个数据 3 3 3, 3 3 3, 5 5 5,它们的等级分别为 1.5 1.5 1.5( ( 1 + 2 ) ÷ 2 (1 + 2)\div2 (1+2)÷2), 1.5 1.5 1.5, 3 3 3。
  2. 计算等级差 :对于每一对数据,计算它们的等级差 d i d_{i} di。
  3. 计算等级差的平方 :得到 d i 2 d_{i}^{2} di2,并对所有的 d i 2 d_{i}^{2} di2求和,得到 ∑ d i 2 \sum d_{i}^{2} ∑di2。
  4. 计算相关系数 :根据公式 ρ = 1 − 6 ∑ d i 2 n 3 − n \rho \ = 1-\frac{6\sum d_{i}^{2}}{n^{3}-n} ρ =1−n3−n6∑di2( n n n为样本数量)计算斯皮尔曼等级相关系数。

t检验步骤

  1. 建立假设
    • 原假设 H 0 H_0 H0:总体的斯皮尔曼等级相关系数 ρ = 0 \rho \ = 0 ρ =0,即总体中两个变量之间不存在等级相关关系。
    • 备择假设 H 1 H_1 H1:总体的斯皮尔曼等级相关系数 ρ ≠ 0 \rho\neq 0 ρ=0,即总体中两个变量之间存在等级相关关系。
  2. 计算t统计量 :在斯皮尔曼等级相关的t检验中,可使用公式 t = r R n − 2 1 − r R 2 t\ =\frac{r_{R}\sqrt{n - 2}}{\sqrt{1 - r_{R}^{2}}} t =1−rR2 rRn−2 (这里 r R r_{R} rR表示计算得到的斯皮尔曼等级相关系数, n n n为样本数量)。此公式与积差相关系数(如Pearson相关系数)检验中t统计量的计算形式相同,这样做是因为在一定条件下,基于等级数据计算出的相关系数的抽样分布近似于t分布。
  3. 确定临界值 :根据给定的显著性水平 α \alpha α(常用的有 0.05 0.05 0.05、 0.01 0.01 0.01等)和自由度 d f = n − 2 df \ = n - 2 df =n−2,查阅 t t t分布表得到临界值 t α / 2 ( n − 2 ) t_{\alpha/2}(n - 2) tα/2(n−2)。
  4. 做出决策
    • 如果 ∣ t ∣ > t α / 2 ( n − 2 ) \vert t\vert>t_{\alpha/2}(n - 2) ∣t∣>tα/2(n−2),则拒绝原假设 H 0 H_0 H0,认为总体中两个变量之间存在等级相关关系。
    • 如果 ∣ t ∣ ≤ t α / 2 ( n − 2 ) \vert t\vert\leq t_{\alpha/2}(n - 2) ∣t∣≤tα/2(n−2),则不能拒绝原假设 H 0 H_0 H0,即没有足够证据表明总体中两个变量之间存在等级相关关系。

四、实例演示

斯皮尔曼等级相关系数计算实例

研究 6 6 6名学生的语文成绩排名和英语成绩排名的相关性,数据如下:

学生编号 语文成绩排名 X X X 英语成绩排名 Y Y Y d i d_{i} di(等级差) d i 2 d_{i}^{2} di2(等级差的平方)
1 2 3 -1 1
2 4 2 2 4
3 1 1 0 0
4 3 4 -1 1
5 5 5 0 0
6 6 6 0 0

计算 ∑ d i 2 = 1 + 4 + 0 + 1 + 0 + 0 = 6 \sum d_{i}^{2}\ =1 + 4+0 + 1+0 + 0 \ = 6 ∑di2 =1+4+0+1+0+0 =6, n = 6 n \ = 6 n =6。

代入公式可得:
ρ = 1 − 6 × 6 6 3 − 6 = 1 − 36 216 − 6 = 1 − 36 210 ≈ 0.83 \begin{align*} \rho&\ =1-\frac{6\times6}{6^{3}-6}\\ &\ =1-\frac{36}{216 - 6}\\ &\ =1-\frac{36}{210}\\ &\approx0.83 \end{align*} ρ =1−63−66×6 =1−216−636 =1−21036≈0.83

结果表明,这 6 6 6名学生的语文和英语成绩排名有较强的正相关关系。

t检验实例

针对上述例子,假设显著性水平 α = 0.05 \alpha \ = 0.05 α =0.05。

  1. 已知 r R ≈ 0.83 r_{R} \approx 0.83 rR≈0.83, n = 6 n \ = 6 n =6,计算 t t t统计量:
    t = 0.83 6 − 2 1 − 0.8 3 2 = 0.83 × 2 1 − 0.6889 = 1.66 0.3111 ≈ 2.97 \begin{align*} t&\ =\frac{0.83\sqrt{6 - 2}}{\sqrt{1 - 0.83^{2}}}\\ &\ =\frac{0.83\times2}{\sqrt{1 - 0.6889}}\\ &\ =\frac{1.66}{\sqrt{0.3111}}\\ &\approx2.97 \end{align*} t =1−0.832 0.836−2 =1−0.6889 0.83×2 =0.3111 1.66≈2.97
  2. 自由度 d f = n − 2 = 6 − 2 = 4 df \ = n - 2 \ = 6 - 2 \ = 4 df =n−2 =6−2 =4,查 t t t分布表得 t 0.025 ( 4 ) = 2.776 t_{0.025}(4)\ = 2.776 t0.025(4) =2.776。
  3. 因为 ∣ 2.97 ∣ > 2.776 \vert 2.97\vert> 2.776 ∣2.97∣>2.776,所以拒绝原假设 H 0 H_0 H0,可以认为在总体中,学生的语文成绩排名和英语成绩排名之间存在等级相关关系。

五、注意事项

  • 只反映等级相关:它衡量的是变量等级之间的关联,并非原始数据值之间的精确关系。
  • 对单调关系敏感:只能检测单调的相关关系,若变量间关系复杂非单调,可能无法准确反映相关性。
  • 样本数量影响 :样本数量过少可能导致结果不稳定,一般建议样本量 n ≥ 10 n\geq 10 n≥10 。
  • t检验前提:虽然斯皮尔曼等级相关的t检验形式与积差相关类似,但在使用时要注意其基于等级数据的特点,以及样本数据对近似t分布条件的满足程度。当样本量较小时,t检验结果的准确性可能会受到一定影响。
相关推荐
likunyuan083014 小时前
概率统计中的数学语言与术语1
人工智能·机器学习·概率论
qq_3148108114 小时前
AI与IT人:协作而非替代
人工智能
骑猪兜风23314 小时前
深度解析 ChatGPT 和 Claude 的记忆机制
人工智能·chatgpt·ai编程
蒋星熠14 小时前
脑机接口(BCI):从信号到交互的工程实践
人工智能·python·神经网络·算法·机器学习·ai·交互
大模型铲屎官14 小时前
【数据结构与算法-Day 37】超越二分查找:探索插值、斐波那契与分块查找的奥秘
人工智能·python·大模型·二分查找·数据结构与算法·斐波那契·分块查找
数智顾问15 小时前
Transformer模型:深度解析自然语言处理的革命性架构——从注意力机制到基础架构拆解
人工智能·rnn·深度学习
IT_陈寒15 小时前
React Hooks 实战:这5个自定义Hook让我开发效率提升了40%
前端·人工智能·后端
KKKlucifer15 小时前
Gartner 2025 中国网络安全成熟度曲线深度解读:AI 安全如何重构防御逻辑
人工智能·安全·web安全
合作小小程序员小小店15 小时前
桌面预测类开发,桌面%雷达,信号预测%系统开发,基于python,tk,scikit-learn机器学习算法实现,桌面预支持向量机分类算法,CSV无数据库
python·算法·机器学习·支持向量机·scikit-learn
java1234_小锋15 小时前
Scikit-learn Python机器学习 - 聚类分析算法 - Agglomerative Clustering(凝聚层次聚类)
python·算法·机器学习