加载中…
个人资料
数据小雄
数据小雄
  • 博客等级:
  • 博客积分:0
  • 博客访问:37,617
  • 关注人气:3
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
相关博文
推荐博文
谁看过这篇博文
加载中…
正文 字体大小:

R语言学习笔记-典型相关分析(CCA)

(2016-09-10 13:56:27)
标签:

365

r

分类: R语言
测试数据:
X1X2X3Y1Y2Y3
1913650516260
193385812101101
18935461315558
2113856810138
17631741520040
16934501712038
154346414215105
193364667031
176375446025
15633541522573
1893752211060
16235621210537
1823656410142
1673460612540
154335617251250
166335213210115
247465015050
202376212210120
15732521123080
1383368211043


#####典型相关分析
#依赖函数:cancor
#输入参数:训练数据CCAdata,
#输出结果:输出序号1(输出标签:第一组指标标准化结果)对应数据集CCAdata1
#          输出序号2(输出标签:第二组指标标准化结果)对应数据集CCAdata2
#          输出序号3(输出标签:典型相关分析结果)对应数据集ca
#          输出序号4(输出标签:第一组指标数据的典型载荷)对应数据集U
#          输出序号5(检验结果:第二组指标数据的典型载荷)对应数据集V
#          输出序号6(输出标签:散点图)对应图片
#          输出序号7(输出标签:显著性检验结果)对应数据集corcoef_test

#code
#读取数据
CCAdata=read.csv("C:\\Users\\Administrator\\Desktop\\CCA_test.csv")
#第一组指标
CCAdata1 <- CCAdata[,1:3] #此处选取原始数据第1、2、3列为第一组指标
#第二组指标
CCAdata2 <- CCAdata[,4:6] #此处选取原始数据第4、5、6列为第二组指标

#对第一、二组指标进行中心化和标准化,用于消除数据数量级的影响
CCAdata1_Z<-scale(CCAdata1)  #(输出序号1)
CCAdata2_Z<-scale(CCAdata2)  #(输出序号2)

#cancor用于典型相关分析的计算及输出
ca<-cancor(CCAdata1_Z,CCAdata2_Z);ca  #(输出序号3)


#样本数据在典型变量下得分计算及输出
U<-as.matrix(CCAdata1_Z)%*% ca$xcoef ; U   #xcoef为第一组指标数据的典型载荷(输出序号4)
V<-as.matrix(CCAdata2_Z)%*% ca$ycoef ; V   #ycoef为第二组指标数据的典型载荷(输出序号5)


#画相关变量U和V的数据散点图,此处因为前面每组指标均有三个变量,故画三个
#画相关变量U1和V1为坐标的数据散点图(输出序号6)
plot(U[,1], V[,1], xlab="U1", ylab="V1")
#画相关变量U1和V1为坐标的数据散点图
plot(U[,2], V[,2], xlab="U2", ylab="V2")
#画相关变量U1和V1为坐标的数据散点图
plot(U[,3], V[,3], xlab="U3", ylab="V3")


##典型相关系数的显著性检验
#典型相关系数检验的R程序(程序名:corcoef.test)
corcoef.test<-function(r, n, p, q, alpha=0.1)
{
m<-length(r); Q<-rep(0, m); lambda <- 1
for (k in m:1)
{
lambda<-lambda*(1-r[k]^2);
Q[k]<- -log(lambda)
}
s<-0; i<-m
for (k in 1:m)
{
Q[k]<- (n-k+1-1/2*(p+q+3)+s)*Q[k]
chi<-1-pchisq(Q[k], (p-k+1)*(q-k+1))
if (chi>alpha)
{
i<-k-1; break
}
s<-s+1/r[k]^2
}
i
}


#典型相关系数检验结果
corcoef_test <- corcoef.test(r=ca$cor,n=20,p=3,q=3) #n代表训练数据样本数,p代表第一组指标数,q代表第二组指标数(输出序号7)

R语言交流QQ群:99598210,欢迎加入!

点击链接加入:http://jq.qq.com/?_wv=1027&k=2GdJIAQ


—————————————————————————

【版权申明】

如非注明,本站文章均为 数据小雄 原创,转载请注明出处:数据小雄博客,并附带本文链接,谢谢合作!

本文地址:http://www.zhangzhengxiong.com/?id=6。

—————————————————————————

0

阅读 评论 收藏 转载 喜欢 打印举报/Report
  • 评论加载中,请稍候...
发评论

    发评论

    以上网友发言只代表其个人观点,不代表新浪网的观点或立场。

      

    新浪BLOG意见反馈留言板 电话:4000520066 提示音后按1键(按当地市话标准计费) 欢迎批评指正

    新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 会员注册 | 产品答疑

    新浪公司 版权所有