【數學建模】day11-典型相關分析


這與主成分分析有點相似。

 

0. 基本思想
主成分分析(PCA)是把原始有相關性變量,線性組合出無關的變量(投影),以利用主成分變量進行更加有效的分析。
而典型相關分析(CCA)的思想是:

分析自變量組 X = [x1,x2,x3…xp],因變量組 Y = [y1,y2,y3…yq] 之間的相關性。(注意這里X的每一個自變量x1是個列向量,代表有多個觀測值)。

如果采用傳統的相關分析,只要求X的每一個變量與Y的每一個變量的相關系數,從而組成相關系數矩陣 R = [rij]p*q ,rij表示第i個自變量xi與第j個因變量yj之間的相關系數。

然而,這是有缺陷的:只粗暴的考慮了X與Y的關系,卻忽略了X自變量之間也可能有相關關系,Y因變量之間亦如此。

解決的方法類似於主成分分析,我們可以把X提取出主成分,Y也提取出主成分,從而X、Y內部線性不相關了,這樣利用主成分研究X與Y之間相關性就解決了上述缺點。


1. 典型相關分析

典型相關分析:

假設

自變量組:X = [x1,x2,x3…xp]

因變量組:Y = [y1,y2,y3…yq]

注意,xi與yj都是相同維度的列向量。

要求

分析X與Y之間的相關性

 

2 直觀描述

首先在X中找出線性組合u1, 在Y中找出線性組合v1,使得 r(u1,v1)達到最大。

其次,在X中找第二個線性組合u2,Y中找第二個線性組合v2,要求使得u2與u1線性不相關,v2與v1線性不相關,並且: r(u2,v2)達到次大。

繼續。直到兩組變量之間的相關性被提取完畢。

 

3 數學描述

數學描述:

image

image

image

image

image

線性組合得到的變量稱作典型變量。

 


4. 典型相關模型的分析

需要分析原始變量與典型變量之間的相關性。

原始變量xi與典型變量uj之間的相關性為:

image

式中,α是典型變量系數。

同理可求得原始變量xi與典型變量vj、yi與vj、yi與uj之間的相關系數。

建模時可以列出這四個相關系數表格。

 

進而,我們要對典型變量對各組原始變量解釋能力做分析,因為原始變量-->典型變量畢竟會有信息的損失。

Def:

image

其中,ρ(ui,xk) 是指原始變量xk與電影變量ui之間的相關系數。

注:

1)這個解釋能力是指,原始變量—>典型變量后,某個典型變量 ui 對原始變量<x1,x2,…xp>的解釋能力。因為如果采用比較少的典型變量,就會有更多的信息損失,這與PCA分析中主成分貢獻率類似。

2) 計算方法是:某個典型變量ui與所有xk(k=1 to p)的相關系數的平方和,再除以變量個數。這是方差比例。

 

我們還要進行典型相關系數的檢驗。

這一步是建模必須的。

計算典型相關系數用到的是,X與X之間的協方差矩陣、X與Y之間的協方差矩陣、Y與Y之間的協方差矩陣。而這些協方差矩陣其實是未知的,我們只是用一些樣本對總體進行了近似。這個近似是有誤差的,需要進行有關的假設檢驗。

即:整體檢驗:檢驗X與Y之間的協方差矩陣是否為0。若是0,則顯然X與Y不相關。否則X與Y具有相關性,即說明至少第一對典型變量之間的相關性顯著。

部分檢驗:檢驗部分典型相關系數為0的檢驗:也就是第k對典型相關變量之間相關關系不顯著。

下面進行檢驗:

1)整體檢驗

image

image

 

2)部分總體典型相關系數為零的檢驗

image

 

5 Summary:典型相關分析步驟

步驟如下:

設標准化后,X、Y增廣陣為Z:

image

 

step1:計算原始變量X、Y增廣陣的相關系數矩陣R,並且剖分為:image,其中,R11是X的協方差矩陣,R12是X與Y的協方差矩陣。

step2:求典型相關系數以及典型變量。

    image

step3:進行典型相關系數λi的顯著性檢驗。有整體檢驗與部分檢驗,詳情見上。

step4:典型結構與典型冗余分析。

這其實是計算:

image

典型結構分析:其實就是X組原始變量被ui解釋分方差比例,Y組原始變量被vi解釋的方差比例

image

典型冗余分析:其實就是X組原始變量被vi解釋分方差比例,Y組原始變量被ui解釋的方差比例

image

image

 

 

 

 

6. MATLAB實現。

MATLAB進行典型相關分析命令:

先查看一下Matlab help命令解釋:

canoncorr Canonical correlation analysis.
    [A,B] = canoncorr(X,Y) computes the sample canonical coefficients for
    the N-by-P1 and N-by-P2 data matrices X and Y.  X and Y must have the
    same number of observations (rows) but can have different numbers of
    variables (cols).  A and B are P1-by-D and P2-by-D matrices, where D =
    min(rank(X),rank(Y)).  The jth columns of A and B contain the canonical
    coefficients, i.e. the linear combination of variables making up the
    jth canonical variable for X and Y, respectively.  Columns of A and B
    are scaled to make COV(U) and COV(V) (see below) the identity matrix.
    If X or Y are less than full rank, canoncorr gives a warning and
    returns zeros in the rows of A or B corresponding to dependent columns
    of X or Y.

   [A,B,R] = canoncorr(X,Y) returns the 1-by-D vector R containing the
    sample canonical correlations.  The jth element of R is the correlation
    between the jth columns of U and V (see below).

   [A,B,R,U,V] = canoncorr(X,Y) returns the canonical variables, also
    known as scores, in the N-by-D matrices U and V.  U and V are computed
    as

      U = (X - repmat(mean(X),N,1))*A and
       V = (Y - repmat(mean(Y),N,1))*B.

   [A,B,R,U,V,STATS] = canoncorr(X,Y) returns a structure containing
    information relating to the sequence of D null hypotheses H0_K, that
    the (K+1)st through Dth correlations are all zero, for K = 0:(D-1).
    STATS contains seven fields, each a 1-by-D vector with elements
    corresponding to values of K:

      Wilks:    Wilks' lambda (likelihood ratio) statistic
       chisq:    Bartlett's approximate chi-squared statistic for H0_K,
                 with Lawley's modification
       pChisq:   the right-tail significance level for CHISQ
       F:        Rao's approximate F statistic for H0_K
       pF:       the right-tail significance level for F
       df1:      the degrees of freedom for the chi-squared statistic,
                 also the numerator degrees of freedom for the F statistic
       df2:      the denominator degrees of freedom for the F statistic

   Example:

      load carbig;
       X = [Displacement Horsepower Weight Acceleration MPG];
       nans = sum(isnan(X),2) > 0;
       [A B r U V] = canoncorr(X(~nans,1:3), X(~nans,4:5));

      plot(U(:,1),V(:,1),'.');
       xlabel('0.0025*Disp + 0.020*HP - 0.000025*Wgt');
       ylabel('-0.17*Accel + -0.092*MPG')

   See also pca, manova1.


 

典型相關分析函數:[a,b,r,u,v,stats] = cononcorr(x,y):

param:

  x:原始變量x矩陣,每列一個自變量指標,第i列是 xi 的樣本值

  y:原始變量y矩陣,每列一個因變量指標,第j列是 yj 的樣本值

return:

  a:自變量x的典型相關變量系數矩陣,每列是一組系數。

        列數為典型相關變量數

  b:因變量y的典型相關變量系數矩陣,每列是一個系數

  r: 典型相關系數。即第一對<u1,v1>之間的相關系數、第二對<u2,v2>之間的相關系數…

  u:對於X的典型相關變量的值

  v:對於Y的典型相關變量的值

  stats:假設檢驗的值<詳細用一下就知道了>

 

 

 

也可以使用MATLAB按照原理直接編寫程序,一個實現的例子如下:

image

實現程序:

image

image

image

這個典型相關系數表中,第一列0.5537是第<u1,v1>的相關系數。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM