11、气象学中常用的相关分析方法

本文介绍了气象学中三种常用的相关分析方法:皮尔逊相关、Spearman秩相关和Kendall's相关。皮尔逊相关适合数学运算,但对离群点敏感;Spearman和Kendall's相关具有鲁棒性,尤其适用于非线性关系。文中提供了每种方法的公式解释及代码实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


气象数据处理与分析中,经常需要统计两个或多个变量之间的相关关系。本文主要讲解皮尔逊(普通)相关、Spearman秩相关、Kendall’s τ \tau τ相关以及序列相关的使用方法以及适用条件,并给出相应的Python实践案例。

一、皮尔逊(普通)相关

两个变量 x , y x,y x,y之间的皮尔逊相关系数可以表示为:
r x y = Cov ⁡ ( x , y ) s x s y = 1 n − 1 ∑ i = 1 n [ ( x i − x ˉ ) ( y i − y ˉ ) ] [ 1 n − 1 ∑ i = 1 n ( x i − x ˉ ) 2 ] 1 / 2 [ 1 n − 1 ∑ i = 1 n ( y i − y ˉ ) 2 ] 1 / 2 (1) r_{x y}=\frac{\operatorname{Cov}(x, y)}{s_{x} s_{y}}=\frac{\frac{1}{n-1} \sum_{i=1}^{n}\left[\left(x_{i}-\bar{x}\right)\left(y_{i}-\bar{y}\right)\right]}{\left[\frac{1}{n-1} \sum_{i=1}^{n}\left(x_{i}-\bar{x}\right)^{2}\right]^{1 / 2}\left[\frac{1}{n-1} \sum_{i=1}^{n}\left(y_{i}-\bar{y}\right)^{2}\right]^{1 / 2}} \tag{1} rxy=sxsyCov(x,y)=[n11i=1n(xixˉ)2]1/2[n11i=1n(yiyˉ)2]1/2n11i=1n[(xixˉ)(yiyˉ)](1)

r x y = ∑ i = 1 n ( x i ′ y i ′ ) [ ∑ i = 1 n ( x i ′ ) 2 ] 1 / 2 [ ∑ i = 1 n ( y i ′ ) 2 ] 1 / 2 (2) r_{xy}=\frac{\sum_{i=1}^{n}\left(x_{i}^{\prime} y_{i}^{\prime}\right)}{\left[\sum_{i=1}^{n}\left(x_{i}^{\prime}\right)^{2}\right]^{1 / 2}\left[\sum_{i=1}^{n}\left(y_{i}^{\prime}\right)^{2}\right]^{1 / 2}} \tag{2} rxy=[i=1n(xi)2]1/2[i=1n(yi)2]1/2i=1n(xiyi)(2)
皮尔逊相关系数,既不具有鲁棒性也不具有稳定性。它不具有鲁棒性,点那个两个变量 x , y x,y x,y之间有很强但是非线性关系时,是不可以识别的。不具有稳定性,是因为它可能对一个或者几个离群点极为敏感。但是皮尔逊相关系数非常适合数学运算,所以经常被使用,并于回归分析等内容有密切关系。
皮尔逊相关系数的两个重要性质:

  • 皮尔逊相关系数数值在[-1,1]之间
  • 皮尔逊相关系数的平方 r x y 2 r^{2}_{xy} rxy2 表征 x x x或者 y y y中一个由另一个线性说明或描述的比例,但这个是不合理的。
    皮尔逊相关系数的另一个表示方法:

r x y = 1 n − 1 ∑ i = 1 n [ ( x i − x ˉ ) s x ( y i − y ˉ ) s y ] = 1 n − 1 ∑ i = 1 n z x i z y i (3) r_{x y}=\frac{1}{n-1} \sum_{i=1}^{n}\left[\frac{\left(x_{i}-\bar{x}\right)}{s_{x}} \frac{\left(y_{i}-\bar{y}\right)}{s_{y}}\right]=\frac{1}{n-1} \sum_{i=1}^{n} z_{x_{i}} z_{y_{i}} \tag{3} rxy=n11i=1n[sx(xixˉ)sy(yiyˉ)]=n11i=1nzxizyi(3)
从计算角度考虑,上述皮尔逊计算公式是复杂的,会消耗大量的计算资源,导致运行效率的下降。为此,提出了以下的计算公式,以提高运行与计算效率。

∑ i = 1 n [ ( x i − x ˉ ) ( y i − y ˉ ) ] = ∑ i = 1 n [ x i y i − x i y ˉ − y i x ˉ − x ˉ y ˉ ) ] = ∑ i = 1 n ( x i y i ) − y ˉ ∑ i = 1 n x i − x ˉ ∑ i = 1 n y i + x ˉ y ˉ ∑ i = 1 n ( 1 ) = ∑ i = 1 n ( x i y i ) − n x ˉ y ˉ − n x ˉ y ˉ + n x ˉ y ˉ = ∑ i = 1 n ( x i y i ) − 1 n [ ∑ i = 1 n x i ] [ ∑ i = 1 n y i ] (4) \begin{aligned} \sum_{i=1}^{n}\left[\left(x_{i}-\bar{x}\right)\left(y_{i}-\bar{y}\right)\right] &\left.=\sum_{i=1}^{n}\left[x_{i} y_{i}-x_{i} \bar{y}-y_{i} \bar{x}-\bar{x} \bar{y}\right)\right] \\ &=\sum_{i=1}^{n}\left(x_{i} y_{i}\right)-\bar{y} \sum_{i=1}^{n} x_{i}-\bar{x} \sum_{i=1}^{n} y_{i}+\bar{x} \bar{y} \sum_{i=1}^{n}(1) \\ &=\sum_{i=1}^{n}\left(x_{i} y_{i}\right)-n \bar{x} \bar{y}-n \bar{x} \bar{y}+n \bar{x} \bar{y} \\ &=\sum_{i=1}^{n}\left(x_{i} y_{i}\right)-\frac{1}{n}\left[\sum_{i=1}^{n} x_{i}\right]\left[\sum_{i=1}^{n} y_{i}\right] \end{aligned} \tag{4} i=1n[(xixˉ)(yiyˉ)]=i=1n[xiyixiyˉyixˉxˉyˉ)]=i=1n(xiyi)yˉi=1nxixˉi=1nyi+xˉyˉi=1n(1)=i=1n(xiyi)nxˉyˉnxˉyˉ+nxˉyˉ=i=1n(xiyi)n1[i=1nxi][i=1nyi](4)

s x = ( ∑ x i 2 − n x ˉ 2 n − 1 ) 1 / 2 = [ ∑ x i 2 − 1 n ( ∑ x i ) 2 n − 1 ] 1 / 2 (5) s_{x}=\left(\frac{\sum x_{i}^{2}-n \bar{x}^{2}}{n-1}\right)^{1 / 2}=\left[\frac{\sum x_{i}^{2}-\frac{1}{n}\left(\sum x_{i}\right)^{2}}{n-1}\right]^{1 / 2} \tag{5} sx=(n1xi2nxˉ2)1/2=[n1xi2n1(xi)2]1/2(5)

r x y = ∑ i = 1 n x i y i − 1 n ( ∑ i = 1 n x i ) ( ∑ i = 1 n y i ) [ ∑ i = 1 n x i 2 − 1 n ( ∑ i = 1 n x i ) 2 ] 1 / 2 [ ∑ i = 1 n y i 2 − 1 n ( ∑ i = 1 n y i ) 2 ] 1 / 2 (6) r_{x y}=\frac{\sum_{i=1}^{n} x_{i} y_{i}-\frac{1}{n}\left(\sum_{i=1}^{n} x_{i}\right)\left(\sum_{i=1}^{n} y_{i}\right)}{\left[\sum_{i=1}^{n} x_{i}^{2}-\frac{1}{n}\left(\sum_{i=1}^{n} x_{i}\right)^{2}\right]^{1 / 2}\left[\sum_{i=1}^{n} y_{i}^{2}-\frac{1}{n}\left(\sum_{i=1}^{n} y_{i}\right)^{2}\right]^{1 / 2}} \tag{6} rxy=[i=1nxi2n1(i=1nxi)2]1/2[i=1nyi2n1(i=1nyi)2]1/2i=1nxiyin1(i=1nxi)(i=1nyi)(6)

代码实现

pccs_1 = np.corrcoef(x1, y1)
pccs_2 = np.corrcoef(x2, y2)
print(pccs_1)
print("=====================================")
print(pccs_2)

二、Spearman秩相关

Spearman秩相关具有鲁棒性和抗干扰性,可以有效弥补皮尔逊相关的不足。Spearman秩相关使用的是资料的秩,而不是资料本身,其具体计算过程如下:

  • 将数据本身转化成数据的秩。
    在这里插入图片描述

  • 计算公式
    如果没有重复的秩,使用下列公式进行计算:
    r r a n k = 1 − 6 ∑ i = 1 n D i 2 n ( n 2 − 1 ) (7) r_{\mathrm{rank}}=1-\frac{6 \sum_{i=1}^{n} D_{i}^{2}}{n\left(n^{2}-1\right)} \tag{7} rrank=1n(n21)6i=1nDi2(7)
    其中 D i = x i ′ − y i ′ D_{i}=x^{'}_{i}-y^{'}_{i} Di=xiyi,为 y i y_{i} yi x i x_{i} xi之间的秩差值。
    具体推导过程:
    从1到n的整数平均值为 n + 1 2 \frac{n+1}{2} 2n+1,其方差为 n ( n + 1 ) 12 \frac{n(n+1)}{12} 12n(n+1), 1 2 + 2 2 + ⋯ + n 2 = n ( n + 1 ) ( 2 n + 1 ) 6 1^2+2^2+\cdots +n^2=\frac{n(n+1)(2n+1)}{6} 12+22++n2=6n(n+1)(2n+1)
    r r a n k = 1 n − 1 ∑ i = 1 n [ ( x i − x ˉ ) ( y i − y ˉ ) ] [ 1 n − 1 ∑ i = 1 n ( x i − x ˉ ) 2 ] 1 / 2 [ 1 n − 1 ∑ i = 1 n ( y i − y ˉ ) 2 ] 1 / 2 (8) \begin{aligned} r_{\mathrm{rank}}=\frac{\frac{1}{n-1} \sum_{i=1}^{n}\left[\left(x_{i}-\bar{x}\right)\left(y_{i}-\bar{y}\right)\right]}{\left[\frac{1}{n-1} \sum_{i=1}^{n}\left(x_{i}-\bar{x}\right)^{2}\right]^{1 / 2}\left[\frac{1}{n-1} \sum_{i=1}^{n}\left(y_{i}-\bar{y}\right)^{2}\right]^{1 / 2}}\\ \end{aligned} \tag{8} rrank=[n11i=1n(xixˉ)2]1/2[n11i=1n(yiyˉ)2]1/2n11i=1n[(xixˉ)(yiyˉ)](8)
    对上述式子进行化简并代入可以得到:
    r r a n k = 1 n − 1 ∑ i = 1 n x i y i − n x ˉ y ˉ n ( n + 1 ) 12 = 12 ∑ i = 1 n x i y i − n x ˉ y ˉ n ( n + 1 ) ( n − 1 ) = 12 ∑ i = 1 n x i y i − n ( n + 1 ) 2 4 n ( n + 1 ) ( n − 1 ) = 12 ∑ i = 1 n x i y i − 3 n ( n + 1 ) 2 n ( n + 1 ) ( n − 1 ) (9) \begin{aligned} r_{rank} &= \frac{1}{n-1}\frac{\sum_{i= 1}^{n}x_{i}y_{i}-n\bar{x}\bar{y}}{\frac{n(n+1)}{12} } \\ &=12\frac{\sum_{i=1}^{n}x_{i}y_{i}-n\bar{x}\bar{y} }{n(n+1)(n-1)} \\ &=12\frac{\sum_{i=1}^{n}x_{i}y_{i}-\frac{n(n+1)^2}{4} }{n(n+1)(n-1)} \\ &=\frac{12\sum_{i=1}^{n}x_{i}y_{i}-3n(n+1)^2 }{n(n+1)(n-1)} \end{aligned} \tag{9} rrank=n1112n(n+1)i=1nxiyinxˉyˉ=12n(n+1)(n1)i=1nxiyinxˉyˉ=12n(n+1)(n1)i=1nxiyi4n(n+1)2=n(n+1)(n1)12i=1nxiyi3n(n+1)2(9)

∑ i = 1 n x i y i = ∑ i = 1 m x i 2 + ∑ i = 1 n y i 2 − ∑ i = 1 n ( x i − y i ) 2 (10) \begin{aligned} \sum_{i=1}^{n} x_{i}y_{i}=\sum_{i=1}^{m}x_{i}^2+\sum_{i=1}^{n}y_{i}^2-\sum_{i=1}^{n}(x_{i}-y_{i})^2 \end{aligned} \tag{10} i=1nxiyi=i=1mxi2+i=1nyi2i=1n(xiyi)2(10)
将公式(10)代入公式(9)后,利用 1 2 + 2 2 + ⋯ + n 2 = n ( n + 1 ) ( 2 n + 1 ) 6 1^2+2^2+\cdots +n^2=\frac{n(n+1)(2n+1)}{6} 12+22++n2=6n(n+1)(2n+1),便可得到公式(7)的结果。
如果存在重复的秩,则需要计算秩次之间的皮尔逊相关系数:
r r a n k = ∑ i ( x i − x ˉ ) ( y i − y ˉ ) ∑ i ( x i − x ˉ ) 2 ∑ i ( y i − y ˉ ) 2 (11) r_{\mathrm{rank}}=\frac{\sum_{i}\left(x_{i}-\bar{x}\right)\left(y_{i}-\bar{y}\right)}{\sqrt{\sum_{i}\left(x_{i}-\bar{x}\right)^{2} \sum_{i}\left(y_{i}-\bar{y}\right)^{2}}} \tag{11} rrank=i(xixˉ)2i(yiyˉ)2 i(xixˉ)(yiyˉ)(11)

代码实现

import scipy.stats
x1=[0,1,2,3,5,7,9,12,16,20]
y1=[0,3,6,8,11,13,14,15,16,16]
scipy.stats.spearmanr(x1,y1)

三、Kendall’s相关

kendall的 τ \tau τ相关同样具有鲁棒性和抗干扰性,是皮尔逊相关系数的第二种替代方案。
计算公式为:
τ = N C − N D n ( n − 1 ) / 2 (12) \tau=\frac{N_{C}-N_{D}}{n(n-1) / 2} \tag{12} τ=n(n1)/2NCND(12)

N C N_{C} NC一致数据对的数目
N D N_{D} ND不一致的数据对数目
下面通过一个具体的数据进行说明:
在这里插入图片描述

以样本编号1为例,样本1-9的年龄都比样本1大,且样本1-9的任务完成度也全部大于样本1的任务完成度,所以一致对数为9,不一致对数为0。

代码实现

import scipy.stats
age=[10,15,18,21,23,25,28,30,45,41]
degree=[0.001,0.04,0.01,0.03,0.02,0.56,0.12,0.75,0.78,0.89]
scipy.stats.kendalltau(age,degree)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

爱转呼啦圈的小兔子

觉得文章不错?请小编喝杯咖啡吧

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值