1. 程式人生 > >典型相關分析及R應用

典型相關分析及R應用

目錄

什麼是典型相關分析

典型相關分析基本架構

簡單相關分析

多變數相關分析

典型相關分析

典型相關分析的基本原理

R實現

20名中年人的生理指標和訓練指標

廣州省能源消費量與經濟增長之間的典型相關分析


什麼是典型相關分析

用於探討一組解釋變數-亦即預測變數與一組反應變數間的關係即是典型相關分析-canonical correlation analysis,比如在體育訓練中,考察運動員身體的各項指標與訓練成績之間的關係,典型相關分析可以說是複相關分析的延伸。

典型相關分析基本架構

簡單相關分析

多變數相關分析

典型相關分析

典型相關分析的基本原理

假設有兩組變數,採用類似主成分分析的做法,在每一組變數中選擇若干個有代表性的綜合指標-變數的線性組合,通過研究兩組的綜合指標之間的關係來反映兩組變數之間的相關關係,基本原理如下:首先在魅族變數中找出變數的線性組合,使其具有最大相關性,然後再每組變數中找出第二對線性組合,使其分別與第一對線性組合不相關,而第二對線性組合本身具有最大的相關性,如此繼續下去,直到兩組變數之間的相關性被提取完畢。

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
> 

廣州省能源消費量與經濟增長之間的典型相關分析

年份	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
> 

 經檢驗在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較大,說明隨著經濟的發展,本地能源不足以滿足經濟發展需求,進口能源逐漸凸顯其重要性。