一、什么是典型相关分析

通常情况下,为了研究两组变量
{ X = ( x 1 , x 2 , ⋯   , x p ) Y = ( y 1 , y 2 , ⋯   , y q ) \left\{ \begin{array}{l} X=\left( x_1,x_2,\cdots ,x_p \right)\\ \\ Y=\left( y_1,y_2,\cdots ,y_q \right)\\ \end{array} \right. X=(x1,x2,,xp)Y=(y1,y2,,yq)

的相关关系,可以用最原始的方法,分别计算两组变量之间的全部相关系数,一共有 p × q p\times q p×q个简单相关系数,这样又烦琐又不能抓住问题的本质。如果能够采用类似于主成分的思想,分别找出两组变量的各自的某个线性组合,讨论线性组合之间的相关关系,则更简捷。

因此,典型相关分析是分析两组变量之间的相关性的一种统计方法,它包含了简单的Pearson相关分析(两组均只含一个变量)和复相关(一组只含一个变量,另一个组含多个变量)这两种特殊情况。

典型相关分析的基本思想和主成分分析的基本思想相似,它将一组变量与另一组变量之间单变量的多重线性相关性研究,转换为少数几对综合变量之间的简单线性相关性的研究,并且这少数几对变量所包含的线性相关性的信息几乎覆盖了原变量组所包含的全部相应信息

二、典型相关分析的思想

假设所研究的两组变量为X组和Y组,其中X组有p个变量
X = ( x 1 , x 2 , ⋯   , x p ) X=\left( x_1,x_2,\cdots ,x_p \right) X=(x1,x2,,xp)
Y组有q个变量

Y = ( y 1 , y 2 , ⋯   , y q ) \begin{array}{l} Y=\left( y_1,y_2,\cdots ,y_q \right)\\ \end{array} Y=(y1,y2,,yq)

则分别对这两组变量做线性组合后,再计算它们的加权和的简单相关系数,以这个简单相关系数当做这两组变量之间相关性的度量指标,即

{ u = a 1 x 1 + a 2 x 2 + ⋯ + a p x p v = b 1 y 1 + b 2 y 2 + ⋯ + b q y q \left\{ \begin{array}{l} u=a_1x_1+a_2x_2+\cdots +a_px_p\\ \\ v=b_1y_1+b_2y_2+\cdots +b_qy_q\\ \end{array} \right. u=a1x1+a2x2++apxpv=b1y1+b2y2++bqyq

其中,u 和 v 分别是由 x 变量和 y 变量的线性组合产生的综合逐步变量。显然,对任意的一组系数 ( a 1 , a 2 , ⋯   , a p ) , ( b 1 , b 2 , ⋯   , b q ) \left( a_1,a_2,\cdots ,a_p \right) \text{,}\left( b_1,b_2,\cdots ,b_q \right) (a1,a2,,ap),(b1,b2,,bq),都可以通过上式求出一对典型变量 u 和 v,在典型相关分析中称之为典型变量。进而可以求出典型变量 u 和 v 的简单相关系数,称之为典型相关系数。

那么,问题来了,怎么进行组合呢?

首先,分别在每组变量中找出第一对线性组合

{ u 1 = a 11 x 1 + a 21 x 2 + ⋯ + a p 1 x p v 1 = b 11 y 1 + b 21 y 2 + ⋯ + b q 1 y q \left\{ \begin{array}{l} u_1=a_{11}x_1+a_{21}x_2+\cdots +a_{p1}x_p\\ \\ v_1=b_{11}y_1+b_{21}y_2+\cdots +b_{q1}y_q\\ \end{array} \right. u1=a11x1+a21x2++ap1xpv1=b11y1+b21y2++bq1yq

使其具有最大相关性,即使得对应的典型变量 u 1 u_1 u1 v 1 v_1 v1的相关系数为最大。假设这个最大的相关系数是 p 1 = p ( u 1 , v 1 ) p_1=p\left( u_1,v_1 \right) p1=p(u1,v1)
则称 p 1 p_1 p1为第1典型相关系数,且称具有最大相关系数的这对典型变量 u 1 u_1 u1 v 1 v_1 v1为第1典型变量。

然后再次估计组合系数,在每组变量中找出第二对线性组合,使其分别与本组内的第一线性组合不相关,第二对本身具有次大的相关性
{ u 2 = a 12 x 1 + a 22 x 2 + ⋯ + a p 2 x p v 2 = b 12 y 1 + b 22 y 2 + ⋯ + b q 2 y q \left\{ \begin{array}{l} u_2=a_{12}x_1+a_{22}x_2+\cdots +a_{p2}x_p\\ \\ v_2=b_{12}y_1+b_{22}y_2+\cdots +b_{q2}y_q\\ \end{array} \right. u2=a12x1+a22x2++ap2xpv2=b12y1+b22y2++bq2yq

假设这个次大的相关系数是 p 2 = p ( u 2 , v 2 ) p_2=p\left( u_2,v_2 \right) p2=p(u2,v2)
则称 p 2 p_2 p2为第2典型相关系数,且称这对典型变量 u 2 u_2 u2 v 2 v_2 v2为第2典型变量。

其中, u 2 u_2 u2 v 2 v_2 v2 u 1 u_1 u1 v 1 v_1 v1相互独立,但 u 2 u_2 u2 v 2 v_2 v2相关。如此继续下去,直至进行到 r 步,两组变量的相关性被提取完为止。
r ≤ m i n ( p , q ) r\le min\left( p,q \right) rmin(p,q)
可以得到 r 组变量。

从上述分析的过程可以看出,第1对典型变量的第1典型相关系数 p 1 p_1 p1描述了两个组中变量之间的相关程度,且它提取的有关这两组变量相关性的信息景最多。

第2对典型变量的第2典型相关系数 p 2 p_2 p2也描述了两个组中变量之间的相关程度,但它提取的有关这两组变量相关性的信总量次多。

依次类推,可以得知,由上述方法得到的一系列典型变量的典型相关系数,所包含的有关原变量组之间相关程度的信息一个比一个少,如果少数几对典型变量就能够解释原数据的主要信息,特别是如果一对典型变量就能够反映出原数据的主要信息,那么,对两个变量组之间相关程度的分析就可以转化为对少数几对或者是一对典型变量的简单相关分析,这就是典型相关分析的主要目的

三、典型相关分析的理论以及基本假设

考虑两组变量的向量
{ x = ( x 1 , x 2 , ⋯   , x p ) T y = ( y 1 , y 2 , ⋯   , y q ) T \left\{ \begin{array}{l} x=\left( x_1,x_2,\cdots ,x_p \right) ^T\\ \\ y=\left( y_1,y_2,\cdots ,y_q \right) ^T\\ \end{array} \right. x=(x1,x2,,xp)Ty=(y1,y2,,yq)T

典型相关分析就是寻找 x 组 的线性组合 u 1 = a 11 x 1 + a 21 x 2 + ⋯ + a p 1 x p u_1=a_{11}x_1+a_{21}x_2+\cdots +a_{p1}x_p u1=a11x1+a21x2++ap1xp
与 y 组的线性组合 v 1 = b 11 y 1 + b 21 y 2 + ⋯ + b q 1 y q v_1=b_{11}y_1+b_{21}y_2+\cdots +b_{q1}y_q v1=b11y1+b21y2++bq1yq,使得 u 1 u_1 u1 v 1 v_1 v1之间的简单相关系数为最大,其中

a 1 = { a 11 a 12 ⋮ a 1 p         b 1 = { b 11 b 12 ⋮ b 1 q a_1=\left\{ \begin{array}{l} \begin{array}{c} a_{11}\\ a_{12}\\ \end{array}\\ \begin{array}{c} \vdots\\ a_{1p}\\ \end{array}\\ \end{array} \right. \ \ \ \ \ \ \ b_1=\left\{ \begin{array}{l} \begin{array}{c} b_{11}\\ b_{12}\\ \end{array}\\ \begin{array}{c} \vdots\\ b_{1q}\\ \end{array}\\ \end{array} \right. a1=a11a12a1p       b1=b11b12b1q

设,x 组与 y 组的协方差阵为
Σ = [ Σ x x Σ x y Σ y x Σ y y ] \Sigma =\left[ \begin{matrix} \varSigma _{xx}& \varSigma _{xy}\\ \varSigma _{yx}& \varSigma _{yy}\\ \end{matrix} \right] Σ=[ΣxxΣyxΣxyΣyy]
其中 Σ x x \varSigma _{xx} Σxx是 x 组 的协方差矩阵; Σ y y \varSigma _{yy} Σyy是 y 组变量的协方差矩阵; Σ x y = Σ y x ′ \Sigma _{xy}=\Sigma '_{yx} Σxy=Σyx 是 x 组和 y 组 的协方差矩阵。

u 1 u_1 u1的方差为
V a r ( u 1 ) = V a r ( a 1 ′ x ) = a 1 ′ Σ x x a 1 Var\left( u_1 \right) =Var\left( a_1'x \right) =a_1'\varSigma _{xx}a_1 Var(u1)=Var(a1x)=a1Σxxa1
v 1 v_1 v1的方差为
V a r ( v 1 ) = V a r ( b 1 ′ y ) = b 1 ′ Σ y y b 1 Var\left( v_1 \right) =Var\left( b_1'y \right) =b_1'\varSigma _{yy}b_1 Var(v1)=Var(b1y)=b1Σyyb1

u 1 u_1 u1 v 1 v_1 v1的协方差为
C o v ( u 1 , v 1 ) = C o v ( a 1 ′ x , b 1 ′ y ) = a 1 ′ Σ x y b 1 Cov\left( u_1,v_1 \right) =Cov\left( a_1'x,b_1'y \right) =a_1'\varSigma _{xy}b_1 Cov(u1,v1)=Cov(a1x,b1y)=a1Σxyb1

u 1 u_1 u1 v 1 v_1 v1的简单相关系数(pearson)为
p ( u 1 , v 1 ) = C o v ( u 1 , v 1 ) V a r ( u 1 ) × V a r ( v 1 ) = a 1 ′ Σ x y b 1 a 1 ′ Σ x x a 1 b 1 ′ Σ y y b 1 p\left( u_1,v_1 \right) =\frac{Cov\left( u_1,v_1 \right)}{\sqrt{Var\left( u_1 \right) \times Var\left( v_1 \right)}}=\frac{a_1'\varSigma _{xy}b_1}{\sqrt{a_1'\varSigma _{xx}a_1b_1'\varSigma _{yy}b_1}} p(u1,v1)=Var(u1)×Var(v1) Cov(u1,v1)=a1Σxxa1b1Σyyb1 a1Σxyb1
典型相关问题就是使得 u 1 u_1 u1 v 1 v_1 v1的简单相关系数最大,故:
V a r ( u 1 ) = 1 Var\left( u_1 \right) =1 Var(u1)=1 V a r ( v 1 ) = 1 Var\left( v_1 \right)=1 Var(v1)=1的条件下,求取使 C o v ( u 1 , v 1 ) Cov\left( u_1,v_1 \right) Cov(u1,v1)最大的 a 1 a_1 a1 b 1 b_1 b1

然后再次估计组合系数,直至进行到 r 步,两组变量的相关性被提取完为止。
r ≤ m i n ( p , q ) r\le min\left( p,q \right) rmin(p,q)
可以得到 r 组变量。求出每一组特征值,满足
λ 1 ≥ λ 2 ≥ ⋯ ≥ λ r \lambda _1\ge \lambda _2\ge \cdots \ge \lambda _r λ1λ2λr
a i a_i ai b i b_i bi分别是 λ i \lambda _i λi的特征向量,则 u i = a i ′ x u_i=a_i'x ui=aix v i = b i ′ y v_i=b_i'y vi=biy,称为第 i 组典型变量, u i u_i ui v i v_i vi的第 i 典型相关为 λ i , i = 1 , 2 , ⋯   , r \sqrt{\lambda _i}\text{,}i=1,2,\cdots ,r λi i=1,2,,r

因为, Σ x x , Σ y y , Σ x y \varSigma _{xx},\varSigma _{yy},\varSigma _{xy} Σxx,Σyy,Σxy未知,改以 S x x , S y y , S x y S_{xx},S_{yy},S_{xy} Sxx,Syy,Sxy取代之,而得到
λ ^ 1 ≥ λ ^ 2 ≥ ⋯ ≥ λ ^ r \hat{\lambda}_1\ge \hat{\lambda}_2\ge \cdots \ge \hat{\lambda}_r λ^1λ^2λ^r

典型变量的系数称为典型权重,权重越大,表示此变量对此典型变量的贡献越大。在以上的计算中,此权重为标准后的资源所得的,故 k 个资料的第 i 典型变量得点为
∑ a i j ( x j k − x ˉ j ) s j \sum_{}{a_{ij}\frac{\left( x_{jk}-\bar{x}_j \right)}{s_j}} aijsj(xjkxˉj)

四、冗余分析

冗余分析是通过原始变量与典型变量之间的相关性。分析引起原始变量变异的原因。以原始变量为因变量,以典型变量为自变量,建立线性回归模型,则相应的确定系数(判定系数 R 2 R^2 R2)等于因变量与典型变量间的相关系数的平方,它描述了由于因变量与典型变量的线性关系引起的因变量变异在因变量的总变异中比例。

典型负荷为变量与典型变量的相关系数,可由相关系数的平方了解此典型变量解释了此变量多少比例的变异数。

五、典型相关系数的假设检验

那么,要选择多少组典型变量呢?

在做两组变量 X,Y 的典型相关分析之前,首先应该检验两组变量是否相关,如果不相关,则讨论两组变量的典型相关就毫无意义.

最多可以选取 r = min(p,q) 组,可经由卡方检验决定要选取多少组典型变量。先检验最大的典型根,然后再一个接一个对各个根进行检验,只保留有统计显著性(就是拒绝原假设)的根。

(1)提出假设
H 0 : λ 1 = λ 2 = λ 3 = ⋯ = λ r = 0 ↔ H 1 : λ 1 , λ 2 , λ 3 , ⋯   , λ r 至少有一个不为 0 H_0\text{:}\lambda _1=\lambda _2=\lambda _3=\cdots =\lambda _r=0\leftrightarrow H_1\text{:}\lambda _1,\lambda _2,\lambda _3,\cdots ,\lambda _r\text{至少有一个不为}0 H0λ1=λ2=λ3==λr=0H1λ1,λ2,λ3,,λr至少有一个不为0

检验统计量

χ 2 = − [ ( n − 1 ) − p + q + 1 2 ] ln ⁡ ( 1 − λ ^ 1 ) ( 1 − λ ^ 2 ) ( 1 − λ ^ 3 ) ⋯ ( 1 − λ ^ r ) \chi ^2=-\left[ \left( n-1 \right) -\frac{p+q+1}{2} \right] \ln \left( 1-\hat{\lambda}_1 \right) \left( 1-\hat{\lambda}_2 \right) \left( 1-\hat{\lambda}_3 \right) \cdots \left( 1-\hat{\lambda}_r \right) χ2=[(n1)2p+q+1]ln(1λ^1)(1λ^2)(1λ^3)(1λ^r)
其中, r = min(p,q),若 χ 2 > χ α 2 ( p q ) \chi ^2>\chi _{\alpha}^2\left( pq \right) χ2>χα2(pq),则拒绝原假设,则认为至少第一对典型变量 u 1 u_1 u1 v 1 v_1 v1具有相关性,得出第一对典型变量 u 1 u_1 u1 v 1 v_1 v1可能已经提取了两组变量X 和 Y相关关系的绝大部分信息, λ 1 \lambda _1 λ1是显著的,是具有价值的,那么,接下来将它移除,再检验剩余 r -1 组的显著性,否则接受原假设,认为两组变量之间的相关性没有意义。

(2)当上述原假设 H 0 H_0 H0被拒绝时,接着做

H 0 : λ 2 = λ 3 = ⋯ = λ r = 0 H_0\text{:}\lambda _2=\lambda _3=\cdots =\lambda _r=0 H0λ2=λ3==λr=0

检验统计量

χ 2 = − [ ( n − 1 ) − p + q + 1 2 ] ln ⁡ ( 1 − λ ^ 2 ) ( 1 − λ ^ 3 ) ⋯ ( 1 − λ ^ r ) \chi ^2=-\left[ \left( n-1 \right) -\frac{p+q+1}{2} \right] \ln \left( 1-\hat{\lambda}_2 \right) \left( 1-\hat{\lambda}_3 \right) \cdots \left( 1-\hat{\lambda}_r \right) χ2=[(n1)2p+q+1]ln(1λ^2)(1λ^3)(1λ^r)

其中, r = min(p,q),若 χ 2 > χ α 2 ( ( p − 1 ) ( q − 1 ) ) \chi ^2>\chi _{\alpha}^{2}\left( \left( p-1 \right) \left( q-1 \right) \right) χ2>χα2((p1)(q1))

则拒绝原假设,则认为第二对典型变量 u 2 u_2 u2 v 2 v_2 v2具有相关性,认为至少前两组具有相关性,可能已经提取大部分信息, λ 2 \lambda _2 λ2也是显著的,是具有价值的,那么,接下来将它移除,再检验剩余 r -2 组的显著性。

(3)当上述原假设 H 0 H_0 H0被拒绝时,接着做

H 0 : λ 3 = ⋯ = λ r = 0 H_0\text{:}\lambda _3=\cdots =\lambda _r=0 H0λ3==λr=0

(4)依次类推,直到在检验某个 t 值 ,没有理由拒绝原假设为止,即认为至少前t-1组典型变量是相关的,都是具有价值的,可能已经提取 X 和 Y 相关关系的绝大部分信息,没有必要对剩余的组进行检验了。
H 0 : λ t = ⋯ = λ r = 0 H_0\text{:}\lambda _t=\cdots =\lambda _r=0 H0λt==λr=0

事实上,检验的总显著性水平已不是α了,且难以确定。还有,检验的结果易受样本容量大小的影响,因此,检验的结果只宜作为确定典型变量个数的重要参考依据,而不宜作为惟一的依据。

关于典型相关分析的具体操作

实际上,只需要掌握典型相关分析的基本原理,基本思想就可以了,具体实际操作并不难,不需要通过公式进行计算,目前基本上是使用SPSS进行分析。
这里推荐两个教程:
https://mp.weixin.qq.com/s/cI0wXAjRIjQkPC_xAfbQpw

https://mp.weixin.qq.com/s/cQiDk4ZsKvvcl9E5kaakIg

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐