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

您所在的位置:网站首页 皮尔逊相关系数为0757 11、气象学中常用的相关分析方法

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

2024-03-07 01:29| 来源: 网络整理| 查看: 265

文章目录 一、皮尔逊(普通)相关代码实现 二、Spearman秩相关代码实现 三、Kendall's相关代码实现 气象数据处理与分析中,经常需要统计两个或多个变量之间的相关关系。本文主要讲解皮尔逊(普通)相关、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​=sx​sy​Cov(x,y)​=[n−11​∑i=1n​(xi​−xˉ)2]1/2[n−11​∑i=1n​(yi​−yˉ​)2]1/2n−11​∑i=1n​[(xi​−xˉ)(yi​−yˉ​)]​(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/2∑i=1n​(xi′​yi′​)​(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​=n−11​i=1∑n​[sx​(xi​−xˉ)​sy​(yi​−yˉ​)​]=n−11​i=1∑n​zxi​​zyi​​(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=1∑n​[(xi​−xˉ)(yi​−yˉ​)]​=i=1∑n​[xi​yi​−xi​yˉ​−yi​xˉ−xˉyˉ​)]=i=1∑n​(xi​yi​)−yˉ​i=1∑n​xi​−xˉi=1∑n​yi​+xˉyˉ​i=1∑n​(1)=i=1∑n​(xi​yi​)−nxˉyˉ​−nxˉyˉ​+nxˉyˉ​=i=1∑n​(xi​yi​)−n1​[i=1∑n​xi​][i=1∑n​yi​]​(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​=(n−1∑xi2​−nxˉ2​)1/2=[n−1∑xi2​−n1​(∑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=1n​xi2​−n1​(∑i=1n​xi​)2]1/2[∑i=1n​yi2​−n1​(∑i=1n​yi​)2]1/2∑i=1n​xi​yi​−n1​(∑i=1n​xi​)(∑i=1n​yi​)​(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​=1−n(n2−1)6∑i=1n​Di2​​(7) 其中 D i = x i ′ − y i ′ D_{i}=x^{'}_{i}-y^{'}_{i} Di​=xi′​−yi′​,为 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​=[n−11​∑i=1n​(xi​−xˉ)2]1/2[n−11​∑i=1n​(yi​−yˉ​)2]1/2n−11​∑i=1n​[(xi​−xˉ)(yi​−yˉ​)]​​(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​​=n−11​12n(n+1)​∑i=1n​xi​yi​−nxˉyˉ​​=12n(n+1)(n−1)∑i=1n​xi​yi​−nxˉyˉ​​=12n(n+1)(n−1)∑i=1n​xi​yi​−4n(n+1)2​​=n(n+1)(n−1)12∑i=1n​xi​yi​−3n(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=1∑n​xi​yi​=i=1∑m​xi2​+i=1∑n​yi2​−i=1∑n​(xi​−yi​)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​(xi​−xˉ)2∑i​(yi​−yˉ​)2 ​∑i​(xi​−xˉ)(yi​−yˉ​)​(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(n−1)/2NC​−ND​​(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)


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3