i have search the web and not find code to cal these index.so i write one.if there exists code for such index,i hope you can let me know. this is my first R code.i send the the list and hope uesRs give me some advise for improve it or check if i make any mistake . i appriciate your suggestion . i have check the result roughly to the SPSS's. though i do not know excatly how SPSS calculate the redundancy index,but my result is similar to the SPSS's. thank you. -------------------------------------- cancor.index<-function(object,x,y,center=T,scale=F){ x<-scale(x,center=center,scale=scale) y<-scale(y,center=center,scale=scale) ncor<-length(object$cor) #number of canonical variables nx<-dim(object$xco)[1] #number of X ny<-dim(object$yco)[1] #number of Y xscore<-x%*%(object$xcoe[,1:ncor]) colnames(xscore)<-paste("con",1:ncor,"x",sep=".") yscore<-y%*%(object$ycoe[,1:ncor]) colnames(yscore)<-paste("con",1:ncor,"y",sep=".") #canonical score eigenvalue<-object$cor^2/(1-object$cor^2) #eigenvalue/lambda x.xscore<-cor(x,xscore) y.yscore<-cor(y,yscore) #canonical loadings y.xscore<-cor(y,xscore) x.yscore<-cor(x,yscore) #structure loadings/cross loadings prop.y<-diag(crossprod(y.yscore)/ny) prop.x<-diag(crossprod(x.xscore)/nx) #proportion of varoiance accounted for by its own cv cr.sqare<-as.vector(object$cor^2) #canonical R-sqare RD.yy<-cr.sqare*prop.y RD.xx<-cr.sqare*prop.x #proportion variance accounting for my the opposite Can. Var index<-list( "xscore"=xscore,"yscore"=yscore, "eigenvalue"=eigenvalue, "cr.sqare"=cr.sqare, "can.loadings.x"=x.xscore,"can.loadings.y"=y.yscore, "cros.loadings.y"=y.xscore,"cros.loadings.x"=x.yscore, "prop.var.of.Y.by.CV.Y"=prop.y, "prop.var.of.X.by.CV.X"=prop.x, "prop.var.of.y.by.CV-X"=RD.yy, "prop.var.of.X.by.CV-Y"=RD.xx ) class(index)<-"cancor.index" return(index) }