目录

什么是典型相关分析

典型相关分析基本架构

简单相关分析

多变量相关分析

典型相关分析

典型相关分析的基本原理

R实现

20名中年人的生理指标和训练指标

广州省能源消费量与经济增长之间的典型相关分析


什么是典型相关分析

用于探讨一组解释变量-亦即预测变量与一组反应变量间的关系即是典型相关分析-canonical correlation analysis,比如在体育训练中,考察运动员身体的各项指标与训练成绩之间的关系,典型相关分析可以说是复相关分析的延伸。

典型相关分析基本架构

简单相关分析

R语言机器学习算法XGBoost特征重要性解释SHAP value r语言典型相关分析_数据

多变量相关分析

R语言机器学习算法XGBoost特征重要性解释SHAP value r语言典型相关分析_相关分析_02

典型相关分析

R语言机器学习算法XGBoost特征重要性解释SHAP value r语言典型相关分析_数据_03

典型相关分析的基本原理

假设有两组变量,采用类似主成分分析的做法,在每一组变量中选择若干个有代表性的综合指标-变量的线性组合,通过研究两组的综合指标之间的关系来反映两组变量之间的相关关系,基本原理如下:首先在魅族变量中找出变量的线性组合,使其具有最大相关性,然后再每组变量中找出第二对线性组合,使其分别与第一对线性组合不相关,而第二对线性组合本身具有最大的相关性,如此继续下去,直到两组变量之间的相关性被提取完毕。

R实现

20名中年人的生理指标和训练指标

x1	x2	x3	y1	y2	y3
191	36	50	5	162	60
189	37	52	2	110	60
193	38	58	12	101	101
162	35	62	12	105	37
189	35	46	13	155	58
182	36	56	4	101	42
211	38	56	8	101	38
167	34	60	6	125	40
176	31	74	15	200	40
154	33	56	17	251	250
169	34	50	17	120	38
166	33	52	13	210	115
154	34	64	14	215	105
247	46	50	1	50	50
193	36	46	6	70	31
202	37	62	12	210	120
176	37	54	4	60	25
157	32	52	11	230	80
156	33	54	15	225	73
138	33	68	2	110	43

计算相关系数矩阵

> X=read.table("clipboard",header=T)#读取例11.1数据
> (R=cor(X))
           x1         x2          x3         y1         y2          y3
x1  1.0000000  0.8702435 -0.36576203 -0.3896937 -0.4930836 -0.22629556
x2  0.8702435  1.0000000 -0.35289213 -0.5522321 -0.6455980 -0.19149937
x3 -0.3657620 -0.3528921  1.00000000  0.1506480  0.2250381  0.03493306
y1 -0.3896937 -0.5522321  0.15064802  1.0000000  0.6957274  0.49576018
y2 -0.4930836 -0.6455980  0.22503808  0.6957274  1.0000000  0.66920608
y3 -0.2262956 -0.1914994  0.03493306  0.4957602  0.6692061  1.00000000
>

求特征值和典型相关系数

> R11=R[1:3,1:3]
> R12=R[1:3,4:6]
> R21=R[4:6,1:3]
> R22=R[4:6,4:6]
> A=solve(R11)%*%R12%*%solve(R22)%*%R21
> ev=eigen(A)$values# 特征值
> ev   
[1] 0.632992335 0.040222726 0.005266446
> sqrt(ev)#典型相关系数
[1] 0.79560815 0.20055604 0.07257029
>

典型相关系数检验,确定典型变量

> xy=scale(X)#数据标准化 
> ca=cancor(xy[,1:3],xy[,4:6])#典型相关分析 
> ca$cor#典型相关系数 
[1] 0.79560815 0.20055604 0.07257029
> ca$xcoef#第一组变量的典型载荷
          [,1]        [,2]        [,3]
x1 -0.17788841 -0.43230348  0.04381432
x2  0.36232695  0.27085764 -0.11608883
x3 -0.01356309 -0.05301954 -0.24106633
> ca$ycoef#第二组变量的典型载荷
          [,1]        [,2]        [,3]
y1 -0.08018009 -0.08615561  0.29745900
y2 -0.24180670  0.02833066 -0.28373986
y3  0.16435956  0.24367781  0.09608099
>

检验

> library(mvstats)   
> cancor.test(xy[,1:3],xy[,4:6],plot=T)#典型相关分析及检验作图

$`cor`
[1] 0.79560815 0.20055604 0.07257029

$xcoef
          [,1]        [,2]        [,3]
x1 -0.17788841 -0.43230348  0.04381432
x2  0.36232695  0.27085764 -0.11608883
x3 -0.01356309 -0.05301954 -0.24106633

$ycoef
          [,1]        [,2]        [,3]
y1 -0.08018009 -0.08615561  0.29745900
y2 -0.24180670  0.02833066 -0.28373986
y3  0.16435956  0.24367781  0.09608099

$xcenter
           x1            x2            x3 
-5.551115e-18 -1.942890e-17  1.821460e-17 

$ycenter
           y1            y2            y3 
-2.775558e-17  3.330669e-17  3.365364e-17 

cancor test: 
              r          Q          P
[1,] 0.79560815 16.2549575 0.06174456
[2,] 0.20055604  0.6718487 0.95475464
[3,] 0.07257029  0.0712849 0.78947507
>

R语言机器学习算法XGBoost特征重要性解释SHAP value r语言典型相关分析_相关分析_04

广州省能源消费量与经济增长之间的典型相关分析

R语言机器学习算法XGBoost特征重要性解释SHAP value r语言典型相关分析_5e_05

R语言机器学习算法XGBoost特征重要性解释SHAP value r语言典型相关分析_5e_06

年份	x1	x2	x3	x4	y1	y2	y3	y4	y5	y6
1984	867.7	483.52	662.35	30	145.25	154.33	33.22	125.93	5576.6	818.37
1985	955.2	531.74	700.16	30.03	171.87	185.81	44.01	175.69	5656.6	954.12
1986	1019.3	624.53	797.59	231.83	188.37	208.46	47.42	223.28	5740.7	1102.1
1987	1144.4	678.17	944.6	175.46	232.14	273.77	56.58	284.2	5832.1	1320.9
1988	1451.1	756.01	1017.6	165.54	306.5	386.35	73.82	388.7	5928.3	1583.1
1989	1575.2	893.28	1112.6	375.61	351.73	464.06	90.07	475.53	6025	2086.2
1990	1326	919.61	1313.7	474.8	384.59	523.42	92.45	558.58	6246.3	2303.2
1991	1459.2	1055.7	1515.5	517.89	416	675.55	107.12	694.63	6348.9	2752.2
1992	1535.9	1149.4	1817	1046.3	465.83	899.28	201.04	881.39	6463.2	3476.7
1993	1693.8	1173.9	2174.5	1779.9	559.67	1380.2	320.73	1171.3	6581.6	4632.4
1994	1749.5	1328.3	2630.8	1605.2	694.65	1847.6	394.37	1580	6692	6367.1
1995	1906.8	1476	2803.7	1575.5	868.99	2413.8	462.91	1988.2	6788.7	7438.7
1996	1804.4	1506.2	3072	2354.6	941.73	2788.8	480.53	2308.1	6896.8	8157.8
1997	1756.3	1472.6	3090.8	3064.6	986.82	3158.7	489.08	2680.9	7013.7	8561.7
1998	1681.3	1737.9	3273.8	2954.2	1004.9	3463.1	528.85	2922.2	7115.6	8839.7
1999	1541.8	1912.5	3454.3	2668.3	1021.3	3705.9	558.44	3178.7	7298.9	9125.9
2000	1552.7	2052.1	4122.4	2757.4	1000.1	4295	573.72	3793.4	7498.5	9761.6
2001	1554.3	2209.2	4506.3	3662.6	1004.4	4732.4	609.2	4301.8	7565.3	10415
2002	1574.9	2346.1	5343.9	4211.2	1032.8	5288.5	647.1	4801.3	7649.3	11137
> d.2=read.table("clipboard",header=T)#选取例11.2数据
> cancor.test(d.2[,1:4],d.2[5:10],plot=T)

$`cor`
[1] 0.9990222 0.9549215 0.7372625 0.4267113

$xcoef
          [,1]       [,2]       [,3]        [,4]
x1 -0.01398338  0.2627242 -0.1633945 -0.05500050
x2  0.11886915  0.4359084  1.5136720 -0.02025096
x3  0.09035694 -0.7627282 -1.6045267 -0.96535666
x4  0.03687362  0.1724089  0.1985098  1.04168316

$ycoef
          [,1]       [,2]        [,3]       [,4]       [,5]       [,6]
y1 -0.05900682  1.7711541  1.05700423  1.5686538  -2.689797 -1.4397779
y2 -0.22982193 -5.0796599  3.72100577  1.5689112  12.636121  6.4680292
y3  0.05815256  1.2193116  0.09171477  0.9209067  -1.508867 -3.9679901
y4  0.32722774  4.4699954 -2.21299707 -0.2103381 -12.579865 -6.8854323
y5  0.08585993 -0.3786835  0.95433947 -0.8581875   2.151352  0.7645358
y6  0.05439361 -1.9202108 -3.59564677 -2.9345146   1.884370  4.9775014

$xcenter
           x1            x2            x3            x4 
 3.418318e-16 -4.382459e-17 -8.034509e-17 -9.641410e-17 

$ycenter
           y1            y2            y3            y4            y5 
-5.551115e-17  3.871172e-17 -9.641410e-17  7.888427e-17  3.494098e-16 
           y6 
 8.326673e-17 

cancor test: 
             r          Q            P
[1,] 0.9990222 120.647898 7.438494e-15
[2,] 0.9549215  39.264245 5.850938e-04
[3,] 0.7372625  10.345472 2.416105e-01
[4,] 0.4267113   1.909441 5.914135e-01
>

R语言机器学习算法XGBoost特征重要性解释SHAP value r语言典型相关分析_5e_07

 经检验在0.05水平上,有两个典型相关是显著的。于是可得前两对典型变量的线性组合:

 -0.01398338x1 + 0.11886915x2 +  0.09035694x3 + 0.03687362x4 = V1

 -0.05900682y1 +  -0.22982193y2 +  0.05815256y3 +  0.32722774y4 +  0.08585993y5 +   0.05439361y6 = U1

…………

解释如下:

r1 =  0.9990222,说明u1与v1之间具有高度的相关关系,尤其是拥有绝对值较大的权系数,而各自的线性组合中变量大多为正数,说明能源消耗越高,经济增长越快。油品,电力,进口能源拥有较大载荷,说明油品,电力是能源消费量的重要指标,在能源消费中占主导地位,x4较x1较大,说明随着经济的发展,本地能源不足以满足经济发展需求,进口能源逐渐凸显其重要性。