相信大家已经熟悉相关分析的思想和应用了。
相关分析是一种研究两个或多个随机变量之间相关关系的统计分析方法。 它侧重于发现变量之间的相关特性,而不是直接预测一个变量由另一个变量决定。相关分析在工农业、水文、气象、社会经济和生物学等领域都有广泛应用。
相关分析研究的是两个或多个处于同等地位的随机变量之间的非确定关系。例如,人的身高和体重之间,空气中的相对湿度与降雨量之间的关系都可以通过相关分析来研究。相关分析并不直接预测一个变量由另一个变量决定,而是揭示变量之间的依存关系。
今天给大家介绍一种不一样的相关分析方法,解决一组变量和另一组变量间的相关关系问题,即典型相关分析。我们分别用SPSS、R语言对前期一直使用的示例数据集进行演示。
典型相关分析(Canonical Correlation Analysis, CCA)是一种用于研究两组变量之间相关关系的多元统计方法。其基本思想是通过找出两组变量中的线性组合,使得这两组线性组合之间的相关系数最大化,从而揭示两组变量之间的内在联系。
基本原理和应用场景
典型相关分析的核心在于找出两组变量中的代表性线性组合。具体来说,它会在每组变量中提取有代表性的综合变量(如U1和V1),这些综合变量是通过原变量的线性组合构成的。通过分析这些综合变量之间的相关关系,可以反映两组变量之间的整体相关性。这种方法不仅保留了原始变量的信息,还简化了数据分析的复杂性,特别适用于处理维度较高或变量之间关系复杂的数据集。
历史背景和最新研究进展
典型相关分析作为一种统计方法,其历史可以追溯到20世纪30年代。尽管它在统计学中已有一定的应用,但在实际应用中,典型相关分析常与其他统计方法结合使用,如主成分分析和因子分析,以进一步探索数据中的潜在结构。近年来,随着大数据和机器学习的发展,典型相关分析在生物信息学、金融分析、市场营销等领域得到了更广泛的应用,成为研究多变量之间复杂关系的重要工具。
我们先用SPSS打开我们熟悉的示例数据集(用的是SPSS27版本,我惯用的SPSS26版本没有找到这个模块)。
SPSS典型相关分析菜单选项:点击菜单栏的【分析】→【相关】→【典型相关性】,这是基于Python插件做的菜单模块,安装SPSS时一定要安装上它的Python程序。
在典型相关性的主对话框,我们可以把指标1、指标2、指标3选入集合1,把指标4、指标5、指标6选入集合2。
点击【选项】可以选择显示成对相关性、载荷、方差比例、系数等统计量。
下面几张图显示的即是典型相关的输出。
首先,需要加载进行典型相关分析所需的R包。可以使用psych包来进行典型相关分析。可以通过以下命令安装并加载该包:
install.packages("psych")
library(psych)
#并读取示例数据
library(readxl) #加载包
data <- read_excel("C:/Users/hyy/Desktop/示例数据.xlsx")
进行典型相关分析:使用psych包中的candisc函数进行典型相关分析。该函数可以计算两组变量之间的典型相关系数和相关矩阵。
我们先进行标准化系数转换并绘图:
install.packages("psych")
library(psych)
data1<-data.frame(scale(data[,3:8]))#标准化系数
data1
plot(data1)
#计算相关系数矩阵并绘图
data2<-data.frame(round(cor(data1),3))#标准化数据后相关系数矩阵
data2 #相关系数矩阵
plot(data2)
#使用"PerformanceAnalytics"包进行散点图美化
install.packages("PerformanceAnalytics")
library(PerformanceAnalytics)
chart.Correlation(data1[c(1:100),c(1:6)],
histogram=TRUE, pch=19)
然后重头戏是使用"CCA"包进行今天的典型相关分析:
#典型相关
install.packages("CCA")
library(CCA)
xx <- data[,3:5]
yy <- data[,6:8]
res.cc<-cc(xx,yy)#计算典型相关变量关系
res.cc
#也可以选择单独提取并查看典型相关分析的统计量
res.cc$cor
res.cc$xcoef
res.cc$ycoef
我们还可以使用比较新的“yacca”包进行典型相关分析。
install.packages("yacca")
library(yacca)
res.cca<-cca(xx,yy)
#并查看典型相关性系教
F.test.cca(res.cca)
plot(res.cca)
#可以对结果进行可视化
#原始变量与典型变量之间的相关性可视化
res.cca$xstructcorrsq
res.cca$ystructcorr
#并进行可视化
helio.plot(res.cca,
x.name="xx",
y.name="yy")
医学统计数据分析分享交流SPSS、R语言、Python、ArcGis、Geoda、GraphPad、数据分析图表制作等心得。承接数据分析,论文修回,医学统计,空间分析,问卷分析业务。若有投稿和数据分析代做需求,可以直接联系我,谢谢!