@R语言相关分析与典型相关分析

#相关分析与典型相关分析
#pearson相关系数
a=c(1,3,5,7,9);b=c(1,4,6,9,10)
cor(a,b) #pearson相关系数
cor.test(a,b) #检验相关系数的显著性
cor(iris[1:4]) #相关系数,参数填数据集,则计算相关系数矩阵

#spearman相关系数,亦即秩相关系数
#spearman和kendall都是等级相关系数,亦即其值与两个相关变量的具体值无关,而仅仅与其值之间的大小关系有关。
#spearman相关系数,亦即秩相关系数,根据随机变量的等级而不是其原始值衡量相关性的一种方法。
m=c(1,2,4,3);n=c(100,101,102,103)
m1=c(30,31,35,34);n1=c(85,87,90,93)
cor(m,n);cor(m1,n1)
cor(m,n,method = “spearman”);cor(m1,n1,method = “spearman”)
cor.test(m,n,method = “spearman”);cor.test(m1,n1,method = “spearman”)
#spearman相关系数的计算可以由计算pearson系数的方法,只需要把原随机变量中的原始数据替换成其在随机变量中的等级顺序即可:

acf #自相关和协方差函数
acf(airmiles,type=‘correlation’,lag.max=10) #自相关
pacf(airmiles,lag.max=10) #偏自相关
pairs(~Sepal.Length+Sepal.Width+Petal.Length+Petal.Width,data=iris,
main=“Simple Scatterplot Matrix”) #散点图矩阵
install.packages(“scatterplot3d”) #3D散点图
library(scatterplot3d)
scatterplot3d(irisSepal.Length,irisSepal.Length, irisSepal.Length,irisPetal.Length, iris$Petal.Width)

install.packages(“corrgram”) #有兴趣的同学自己练习
library(corrgram)
#1、设置排序处理
corrgram(mtcars,order=TRUE)
#2、设置上下三角面板形状
corrgram(mtcars,order=TRUE,lower.panel=panel.shade,upper.panel=panel.pie)
#3、只显示下三角部分
corrgram(mtcars,order=TRUE,lower.panel=panel.shade,upper.panel=NULL)
#4、调整面板颜色
corrgram(mtcars,order=TRUE,lower.panel=panel.shade,upper.panel=panel.pie,
col.regions=colorRampPalette(c(“darkgoldenrod4”,“burlywood1”,“white”, “darkkhaki”,“darkgreen”)))
install.packages(“corrplot”)
library(corrplot)
#1、使用不同的method绘制相关矩阵图
methods<-c(“circle”,“square”,“ellipse”,“pie”,“shade”,“color”)
par(mfrow=c(2,3))
t0=mapply(function(x){corrplot(cor(mtcars), method=x,order=“AOE”)},methods)
par(mfrow=c(1,1))
#2、设置method=color绘制热力矩阵图
corrplot(cor(mtcars), method=“color”, order = “AOE”,tl.col=“black”,tl.srt=45,
addCoef.col=“black”,col=colorRampPalette(c("#7F0000",“red”,"#FF7F00",
“yellow”,“white”, “cyan”, “#007FFF”, “blue”,"#00007F"))(20))
#3、绘制上下三角及不同色彩的相关矩阵图
library(RColorBrewer)
par(mfrow=c(2,2))
corrplot(cor(mtcars),type=“lower”)
corrplot(cor(mtcars),type=“lower”,order=“hclust”,
col=brewer.pal(n=8,name=“RdYlBu”))
corrplot(cor(mtcars),type=“upper”,order=“AOE”,
col=c(“black”,“white”),bg=“lightblue”)
corrplot(cor(mtcars),type=“upper”,order=“FPC”,
col=brewer.pal(n=8, name=“PuOr”))
par(mfrow=c(1,1))

d<-sqrt(1-cor(mtcars)^2)
hc<-hclust(as.dist(d))
plot(hc)
rect.hclust(hc,k=3)

install.packages(“pvclust”)
library(pvclust)
cluster.bootstrap <- pvclust(mtcars, nboot=1000, method.dist=“correlation”)
plot(cluster.bootstrap)
pvrect(cluster.bootstrap) #自己练习部分结束

#典型相关:指两组变量之间的相关关系,不是两个变量之间相关关系,也不是两组变量之间两两组合的简单相关
#两组变量作为整体的相关性
#例如体育运动和身体状况的相关性,体育运动包括跑步,篮球,足球,乒乓球,游泳等变量,身体状况包括身高,体重,肺活量,血压等变量
#以R语言自带的iris为例
#1、提取iris的前4个数值列,并进行标准化处理
data0=scale(iris[1:4])
#2、计算这4个变量的协方差,由于经过标准化处理,这样得到的也是相关系数
M=cov(data0)
#3、将M进行分块,1:2两个变量一组,3:4是另外一组,并进行两两组合
X11=M[1:2,1:2]
X12=M[1:2,3:4]
X21=M[3:4,1:2]
X22=M[3:4,3:4]
#4、按公式求解矩阵A和B
A=solve(X11)%%X12%%solve(X22)%%X21
B=solve(X22)%
%X21%%solve(X11)%%X12
#5、使用eigen函数求解典型相关系数如下
eV=sqrt(eigen(A)$values)
eV

#6、进行验证
#…比较A与XΛX^(-1)是否相等
round(A-eigen(A)vectorsvectors%*%diag(eigen(A)vectorsvalues)%*%solve(eigen(A)$vectors),3)

Sepal.Length Sepal.Width

Sepal.Length 0 0

Sepal.Width 0 0

#…比较B与YΛY^(-1)是否相等
round(B-eigen(B)vectorsvectors%*%diag(eigen(B)vectorsvalues)%*%solve(eigen(B)$vectors),3)

#…求解A对应的特征向量并计算典型向量C1
C1=data0[,1:2]%*%eigen(A)$vectors
#…验证C1对应各变量的标准差是否为1,同时查看均差
apply(C1,2,sd)

[1] 1.041196 0.951045

apply(C1,2,mean)

[1] -4.880321e-16 -2.759430e-17

#…由于均值为0,标准差不为1,这里对特征向量进行伸缩变换
eA=eigen(A)$vectors%%diag(1/apply(C1,2,sd))
#…再次验证方差和均值
C1=data0[,1:2]%
%eA
apply(C1,2,sd)

[1] 1 1

apply(C1,2,mean)

[1] -4.667693e-16 -2.745503e-17

#…可见,特征向量已经满足要求,同理对B可得
C2=data0[,3:4]%*%eigen(B)$vectors
apply(C2,2,sd)

[1] 0.6291236 0.2003530

apply(C2,2,mean)

[1] -1.403572e-17 -9.859870e-18

eB=eigen(B)$vectors%%diag(1/apply(C2,2,sd))
C2=data0[,3:4]%
%eB
apply(C2,2,sd)

[1] 1 1

apply(C2,2,mean)

round(cor(cbind(C1,C2)),3)
#用cancor可以直接求解典型相关系数
x<-as.matrix(iris[,1:2])
y<-as.matrix(iris[,3:4])
cancor(x,y)

R语言 相关分析和典型相关分析相关推荐

  1. R语言偏相关和典型相关

    本文首发于公众号:医学和生信笔记,完美观看体验请至公众号查看本文. 文章目录 偏相关(partial correlation) 偏相关散点图 典型相关(Canonical Correlation) 使 ...

  2. R语言典型相关分析:NBA球员身体素质与统计数据关联性

    昨天万众瞩目的2017NBA总决赛G1,想必各位JRs们都看了吧?不是骑士不尽力,奈何对面有高达,比赛结果是书包杜和打卡库双星闪耀先下一城.恰好前两天的数模课上的是多元统计,于是便复习了下主成分分析与 ...

  3. 典型相关分析(Canonical Correlation Analysis,CCA)原理及Python、MATLAB实现

    随着对CCA的深入研究,是时候对CCA进行一下总结了. 本菜鸡主要研究方向为故障诊断,故会带着从应用角度进行理解. 典型相关分析 基本原理 从字面意义上理解CCA,我们可以知道,简单说来就是对不同变量 ...

  4. 典型相关分析(Canonical correlation analysis)(二):原始变量与典型变量之间的相关性 、典型相关系数的检验

    典型相关分析系列博文: 典型相关分析(Canonical correlation analysis)(一):基本思想 .复相关系数.偏相关系数 典型相关分析(Canonical correlation ...

  5. 典型相关分析(Canonical correlation analysis)(一):基本思想 、复相关系数、偏相关系数

    典型相关分析系列博文: 典型相关分析(Canonical correlation analysis)(一):基本思想 .复相关系数.偏相关系数 典型相关分析(Canonical correlation ...

  6. 150分钟学会R语言与R常见问题解答

    序: 这篇文档内容的来源多样,既有来自于 R官方文档(包括 R intro,R data,R admin),也有来 自于互联网的 contributed documents:还有若干来自于 Capit ...

  7. R语言实现主成分分析与典型相关分析

    <数据分析方法>–梅长林 各章原理及R语言实现 数据描述性分析 回归分析 方差分析 4. 主成分分析与典型相关分析 判别分析 聚类分析 Bayes统计分析 4.1主成分分析 4.1.1总体 ...

  8. r语言实现互相关分析和典型相关分析

    互相关分析 互相关与自相关不同,互相关是指两个时间序列在任意两个不同时刻的相关程度. 假设有时间序列 xt 和 yt ,则 xt 在时刻 t 和 yt 在时刻 t+n 的相关即为n阶互相关. 公式: ...

  9. 【R语言】典型相关分析,自写函数计算相关系数

    简单相关系数 简单相关系数的代码实现 1.XY都是随机变量,地位对称 2.相关系数只反映两变量之间线性相关的程度,不能说明其非线性相关关系. 3.虽能度量相关关系,但是不能度量变量间的因果关系 公式 ...

最新文章

  1. Java 集合 — HashMap
  2. android ble5.0添加扫描过滤,bluetooth-lowenergy
  3. net::ERR_INCOMPLETE_CHUNKED_ENCODING
  4. 三刺激值计算公式_常用的车削、铣削、钻削加工计算公式全在这里了,随用随查...
  5. Keras多GPU训练指南
  6. VMware vSphere Client WIN10安装问题
  7. LeetCode # Array # Easy # 217. Contains Duplicate
  8. 第九章 魔法方法、特性和迭代器
  9. Unity3d导出Lightingmap的方法
  10. PHP报错:Cannot use a scalar value as an array
  11. 读python学习手册
  12. 基于信息论的特征选择算法综述
  13. 最新二次开发知宇自动发卡系统源码/全网对接/功能齐全
  14. XBee无线模块的通信方式和结合Arduino的具体实施过程
  15. 生物计算机公式,高中生物公式大全.pdf
  16. 产品基础训练 - Persona[用户画像]
  17. Win11系统/RTX30系列显卡——安装gpu版pytorch
  18. 怎样防止恶意刷短信验证?
  19. OPERA-MS:宏基因组二、三代测序混合组装
  20. TfLite: 把pb、h5文件转换为TfLite格式and quantilize

热门文章

  1. Linux学习总结(22)——CentOS7.2安装Nginx
  2. redis怎么修改_面试官问我Redis事务,还问我有哪些实现方式
  3. TypeSrcript如何引入第三方库 如果加d.ts以及async await如何使用 demo,只有代码,文字后续补充...
  4. 如何使用 Python 实现微信消息防撤回
  5. DARPA 想用自动化技术制造出最强的黑客
  6. IOS中JSON数据的解析
  7. 《windows核心编程》–Windows内存体结构(二)
  8. LVS+ldirector实现负载均衡
  9. P4838 P哥破解密码
  10. 更新字典 (Updating a Dictionary,UVa12504)