典型相关分析
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
一、典型相关分析的概念
典型相关分析(canonical correlation analysis )就是利用综合变量对之间的相关关系来反映两组指标之间的整体相关性的多元统计分析方法。它的基本原理是:为了从总体上把握两组指标之间的相关关系,分别在两组变量中提取有代表性的两个综合变量U1和V1(分别为两个变量组中各变量的线性组合),利用这两个综合变量之间的相关关系来反映两组指标之间的整体相关性。
二、条件:
典型相关分析有助于综合地描述两组变量之间的典型的相关关系。其条件是,两组变量都是连续变量,其资料都必须服从多元正态分布。
三、相关计算
如果我们记两组变量的第一对线性组合为:
X u 11α'=Y v 1
1β'=),,,(121111'=p a a a α),,,(121111'
=q ββββ 1)()(11111=∑'='=ααααX Var u Var 1
)()(1221111=∑'='=ββββY Var v Var 112111
11,),(),(11βαβαρ∑'='==Y X Cov v u Cov v u 典型相关分析就是求α1和β1,使二者的相关系数ρ达到最大。
典型相关分析希望寻求 a 和 b 使得 ρ 达到最大,但是由于随机变量乘以常数时不改变它们的相关系数,为了防止不必要的结果重复出现,最好的限制是令Var (U )=1 和Var (V )= 1。
A 关于的特征向量(a i1,a i2,…,a ip ),求
B 关于
的
特征向量(bi 1,b i2,…,bi p ) 5、计算Vi 和Wi ;
i
λ
i λ()
p X X X
,...,1=()
q Y Y Y ,...,1=1.实测变量标准化; 2.求实测变量的相关阵R ;
3.求A 和B ;
4、求A 和B 的特征根及特征向量;
1111111
111111111()()
p
q p pp p pq xx
xy yx
yy p q q qp
q qq p q p q r r r r r r r r R R XX XY R R R YX
YY r r r r r r r r +⨯+⎛⎫
⎪
⎪ ⎪
⎛⎫
⎛⎫ ⎪
=== ⎪
⎪ ⎪ ⎪⎝⎭⎝⎭ ⎪
⎪
⎪⎝⎭
∑∑∑∑ ()
()()()∑∑∑∑∑∑∑∑----==XY
XX YX YY B YX
YY XY XX A 1
1
1
1
p
λλλ≥≥≥...21p ip i i i X b X b X b V +++=...2211q
iq i i i Y a Y a Y a W +++= (2211)
6、Vi 和Wi 的第i 对典型相关系数
应用典型相关分析的场合是:可以使用回归方法,但有两个或两个以上的因变量;特别是因变量或准则变量相互间有一定的相关性,无视它们之间相互依赖的关系而分开处理,研究就毫无意义。另一种有效用法是检验X 变量集合和Y 变量集合间的独立性。 四、典型相关系数的检验
典型相关分析是否恰当,应该取决于两组原变量之间是否相关,如果两组变量之间毫无相关性而言,则不应该作典型相关分析。用样本来估计总体的典型相关系数是否有误,需要进行检验。在原假设为真的情况下,检验的统计量为:
近似服从自由度为pq 的χ2分布。在给定的显著性水平α下,如果χ2≥χ2 (pq),则拒绝原假设,认为至少第一对典型变量之间的相关性显著。 相应的R 编程如下: setwd("D:/data")
ex1=read.table("9-1.txt",head=T) ex1
i
i r λ=()00
1-1(1)ln 2Q n p q ⎡⎤
=--++Λ⎢⎥⎣⎦
x=ex1[,1:3];x
y=ex1[,4:6];y
x=as.matrix(x)
y=as.matrix(y)
x;y
s11=cov(x);s11
s22=cov(y);s22
s12=cov(ex1)[1:3,4:6];s12
s21=cov(ex1)[4:6,1:3];s21#求协方差矩阵
A=solve(s11)%*%s12%*%solve(s22)%*%s21#矩阵相乘用%*%,solve:求逆矩阵
A
eigen(A)#求特征值及其对应的特征向量,
eigen(A)$vectors[,1]
a=sqrt(eigen(A)$values)#求典型相关系数=sqrt(特征值) a
x
t(a)
t(t(a))%*%x
B=solve(s22)%*%s21%*%solve(s11)%*%s12
B
eigen(B)
sqrt(eigen(B)$values)
A0=prod(1-eigen(A)$values)
A0
Q0=-15.5*log(A0);Q0#求检验统计量
pr=1-pchisq(Q0,9)#求P值
pr
m1=cancor(x,y)#典型相关分析
m1
#相关系数的假设检验
corcoef.test<-function(r, n, p, q, alpha=0.1){
#r为相关系数n为样本个数且n>p+q
m<-length(r); Q<-rep(0, m); lambda <- 1
for (k in m:1){
lambda<-lambda*(1-r[k]^2); #检验统计量Q[k]<- -log(lambda) #检验统计量取对数}