南京邮电大学多元统计分析实验七-典型相关

使用平台:R、Rstudio

题目描述:试对两组变量(体重、腰围、脉搏与单杠、仰卧起坐、跳高)进行典型相关分析。


rm(list=ls())
# install.packages("CCA")
library(haven)
library(CCA)
fit=read_sav("典型相关.sav")
PHY=fit[,1:3]   # 生理指标数据单独保存
EXER=fit[,4:6]  # 运动指标数据单独保存
matcor(PHY,EXER) # matcor函数分别计算PHY和EXER的自相关矩阵以及两组变量的相关阵

cc1=cc(PHY,EXER)  # cc()是进行典型相关分析的函数
cc1[1]    #典型相关系数
cc1[3:4]  #原始典型系数
cc1[5]    #输出典型变量得分及典型变量与原始变量的相关系数矩阵

## 计算标准化典型系数即典型权重
sdx=sapply(PHY,function(x) sd(x)) #计算生理指标各变量的标准差
s1=diag(sdx)                      #生成以sdx为对角线元素的对角矩阵
s1 %*% cc1 $ xcoef                #输出生理指标各变量的标准化典型系数

sdy=sapply(EXER,function(x) sd(x))#计算运动指标各变量的标准差
s2=diag(sdy)                      #生成对角阵
s2 %*% cc1 $ ycoef                #输出运动指标各变量的典型系数

## 典型相关系数的显著性检验
ev=cc1 $ cor^2        #cc1$cor是典型相关系数,其平方根即为典型根
ev2=1-ev              
n=dim(PHY)[1]         #将样本量赋值给n
p=length(PHY)         #将PHY所含变量的个数赋给p
q=length(EXER)
l=length(ev)          #提取典型变量的个数
m=n-1-(p+q+1)/2       
w=cbind(NULL)         #定义w以保存中间计算值
for(i in 1:l){
  w=cbind(w,prod(ev2[i:l]))
}
d=cbind(NULL)
Q=cbind(NULL)
for(i in 1:l){
  Q=cbind(Q,-(m-(i-1))*log(w[i]))
  d=cbind(d,(p-i+1)*(q-i+1))
}
pvalue=pchisq(Q,d,lower.tail = FALSE)         #计算卡方统计量对应的概率
bat=cbind(t(Q),t(d),t(pvalue))                #将统计量、自由度和相应的p值合在一起
colnames(bat)=c("Chi-Squared","df","pvalue")  
rownames(bat)=c(seq(1:l))
bat

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值