SPSS和MATLAB实现【典型相关分析】

2024-08-24 13:20

本文主要是介绍SPSS和MATLAB实现【典型相关分析】,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

        典型相关分析(Canonical Correlation analysis ),是用于研究 两组 变量(每组变量中都可能有多个指标) 之间相关关系的一种多元统计方法。它能够揭示出两组变量之间的内在联系

        我们之前总结的相关性分析,也就是上图中的简单相关分析,用于分析一组变量——也即两两之间的相关性,计算方式就是本科阶段概率论学过的斯皮尔曼相关系数。多变量相关分析则是分析一组具有共同点的变量与某个变量的相关性(多对一)。而今天介绍的典型相关分析,则是多对多,换句话说,即研究两组变量之间的相关性,例如:喜欢骑自行车的群体和喜欢开车的群体有什么关系?喜欢看足球的男生和执着的男生有什么关系?以此类推,具体看下文。


一.引例

假设有下面一张表,我自己用rand函数编的,没什么实际意义:

现在有需求,分析:

  1. 成绩和娱乐时间是否存在某种关系?
  2. 文科主课是否和看书、看外剧时间存在某种关系?

显然,对于这种情况,分别求彼此的相关系数是无法达到要求的——他无法直观说明多个因素的共同作用~

如果是两两比较,那么我们直接计算相关系数即可。因此不过不妨这样考虑:对于问题一来说假设学校更看重数学成绩,而打游戏是最影响学习的存在,那么我们可以计算数学和打游戏时间的相关系数,直接代替了问题一种成绩和娱乐时间的相关系数!

二.理论 

收收味,理工男不能这么随性,上面所表达的意思,如果你在复习考研数学,你可以从下面两个角度,形象地理解:

  • 数学和玩游戏是主要矛盾,因此可以类比计算极限中的抓大头思想:当x趋于无穷,我们只需要看高次方——在这里,我们只需要关注主要矛盾而忽视次要矛盾
  •  语文、数学、英语之间存在线性相关性,因此我们可以用数学直接代表了语文和英语——相当于语文英语两个多余的变量(不改变向量组的秩)。而玩游戏时间也是同理。

从高数和线代这两个不严谨的思考方式来比喻,强调的是:在成绩这一类变量中,选择主要矛盾数学,在不利影响着一类变量中,选择主要矛盾玩游戏时间,计算两者之间的相关性——即可代表成绩和不利影响两类变量之间的相关性——这就是典型相关分析一种通俗的解释!!!

        实际上,虽然上面的例子纯属博主在“胡扯”,严格的理论部分,也是将各个变量看做一个独立的列向量,而这个找所谓主要矛盾(代表)的过程,往往通过该组变量的线性组合。

理论性的部分不用管太多——除非你是相关专业~否则只需要知道这么几个事情:

  • 在每组变量中找出变量的线性组合,使得两组的线性组合之间具有最大的相关系数;
  • 选取和最初挑选的这对线性组合不相关的线性组合,使其配对,并选取相关系数最大的一对; 直到两组变量之间的相关性被提取完毕为止。
  • 被选出的线性组合配对称为典型变量,它们的相关系数称为典型相关系数

三.操作方式

1.SPSS实现

需要注意的是,spss版本应该高于26(不然不能直接用这个功能!)博主用的27代~

安装,导入数据,检查数据类型这都是基本功,这里不再赘述~需要注意所有变量都是【标度】!也就是尺子形状:

导入数据后,点击【分析-相关-典型相关性】

根据前面提到的方式分组!

然后就是分析结果:

这一张表关注后面的显著性~我们要通过它确定典型相关系数的个数。如上,这数据瞎编的没有参考性,假设我们规定P值为0.6(实际上0.05或者0.1)那么只有一个相关系数符合要求!即第一个~

注:

  • p<0.01,说明在99%的置信水平上拒绝原假设:
  • p<0.05,说明在95%的置信水平上拒绝原假设;
  • p<0.10,说明在90%的置信水平上拒绝原假设;
  • p>0.01,说明在99%的置信水平无法拒绝原假设:
  • p>0.05,说明在95%的置信水平上无法拒绝原假设;
  • p>0.10,说明在90%的置信水平上无法拒绝原假设;

然后看这一张表的第一列:写出线性组合:(有几个显著性达标的相关系数就写几组!这里只写一组~)

  • 成绩集合X=-.035*语文+0.277*数学+1.137*英语
  • 不利因素集合Y=0.314*玩游戏+1.154*看书-0.626*看外剧

典型变量每个分量前面的系数代表着重要程度,可结合典型相关系数进行分析。

这一组对应的相关性为0.858~


至于后面的,随便写写就行~

2.MATLAB实现

原理差不多,这里博主直接把数据粘了进去,你也可以用一些别的什么read函数。

这里用到一个新的canoncorr函数~

X =data1; %语数英成绩
Y = data2; %娱乐时间[A,B,r,U,V,stats]=canoncorr(X,Y);%分析结果
%通过返回的stats里面的p值进行,选择第几典型相关对相关系数
%选择p<0.01的部分或者p<0.05

 运行后可以得到一系列答案:

首先看变量r中,即为典型相关系数,各位根据自己选择的显著性水平选择需要保留的个数。可以返回去看看,和SPSS计算的一致!

A和B即上文提到的线性组合的组合系数:

 把线性组合写出来以后各位自圆其说就行,主要关注点还是典型相关系数!

此外还有一个叫stats的结构体变量,大家看看就行,全是数理统计的知识:

  •  Wilks:似然比统计量
  •  df1,df2:自由度
  •  F:统计量
  •  pF:F统计量右边检验概率值
  •  chisq:卡方统计量
  •  pChisq:卡方统计量检验概率值
  •  def:卡方检验自由度

四.实战案例

        怎么说,实际上CCA也就是典型相关分析,不是一个很高端的统计方式。所以博主在本科期间参加的十多次大大小小的数模竞赛,只用过一次典型相关分析,也就是2022年的华数杯,虽然还拿了一等奖。。。不过这个比赛本身含金量有限,而且我们还用了BPNN和模拟退火,大概率不是他的功劳。。。。。


写法如下,看看就行:

看看就好,这不是一个很让人眼前一亮的方式——建议还是用斯皮尔曼相关系数和主成分分析处理类似的题目~

这篇关于SPSS和MATLAB实现【典型相关分析】的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1102592

相关文章

python使用watchdog实现文件资源监控

《python使用watchdog实现文件资源监控》watchdog支持跨平台文件资源监控,可以检测指定文件夹下文件及文件夹变动,下面我们来看看Python如何使用watchdog实现文件资源监控吧... python文件监控库watchdogs简介随着Python在各种应用领域中的广泛使用,其生态环境也

el-select下拉选择缓存的实现

《el-select下拉选择缓存的实现》本文主要介绍了在使用el-select实现下拉选择缓存时遇到的问题及解决方案,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的... 目录项目场景:问题描述解决方案:项目场景:从左侧列表中选取字段填入右侧下拉多选框,用户可以对右侧

Python pyinstaller实现图形化打包工具

《Pythonpyinstaller实现图形化打包工具》:本文主要介绍一个使用PythonPYQT5制作的关于pyinstaller打包工具,代替传统的cmd黑窗口模式打包页面,实现更快捷方便的... 目录1.简介2.运行效果3.相关源码1.简介一个使用python PYQT5制作的关于pyinstall

使用Python实现大文件切片上传及断点续传的方法

《使用Python实现大文件切片上传及断点续传的方法》本文介绍了使用Python实现大文件切片上传及断点续传的方法,包括功能模块划分(获取上传文件接口状态、临时文件夹状态信息、切片上传、切片合并)、整... 目录概要整体架构流程技术细节获取上传文件状态接口获取临时文件夹状态信息接口切片上传功能文件合并功能小

python实现自动登录12306自动抢票功能

《python实现自动登录12306自动抢票功能》随着互联网技术的发展,越来越多的人选择通过网络平台购票,特别是在中国,12306作为官方火车票预订平台,承担了巨大的访问量,对于热门线路或者节假日出行... 目录一、遇到的问题?二、改进三、进阶–展望总结一、遇到的问题?1.url-正确的表头:就是首先ur

C#实现文件读写到SQLite数据库

《C#实现文件读写到SQLite数据库》这篇文章主要为大家详细介绍了使用C#将文件读写到SQLite数据库的几种方法,文中的示例代码讲解详细,感兴趣的小伙伴可以参考一下... 目录1. 使用 BLOB 存储文件2. 存储文件路径3. 分块存储文件《文件读写到SQLite数据库China编程的方法》博客中,介绍了文

Redis主从复制实现原理分析

《Redis主从复制实现原理分析》Redis主从复制通过Sync和CommandPropagate阶段实现数据同步,2.8版本后引入Psync指令,根据复制偏移量进行全量或部分同步,优化了数据传输效率... 目录Redis主DodMIK从复制实现原理实现原理Psync: 2.8版本后总结Redis主从复制实

JAVA利用顺序表实现“杨辉三角”的思路及代码示例

《JAVA利用顺序表实现“杨辉三角”的思路及代码示例》杨辉三角形是中国古代数学的杰出研究成果之一,是我国北宋数学家贾宪于1050年首先发现并使用的,:本文主要介绍JAVA利用顺序表实现杨辉三角的思... 目录一:“杨辉三角”题目链接二:题解代码:三:题解思路:总结一:“杨辉三角”题目链接题目链接:点击这里

基于Python实现PDF动画翻页效果的阅读器

《基于Python实现PDF动画翻页效果的阅读器》在这篇博客中,我们将深入分析一个基于wxPython实现的PDF阅读器程序,该程序支持加载PDF文件并显示页面内容,同时支持页面切换动画效果,文中有详... 目录全部代码代码结构初始化 UI 界面加载 PDF 文件显示 PDF 页面页面切换动画运行效果总结主

SpringBoot实现基于URL和IP的访问频率限制

《SpringBoot实现基于URL和IP的访问频率限制》在现代Web应用中,接口被恶意刷新或暴力请求是一种常见的攻击手段,为了保护系统资源,需要对接口的访问频率进行限制,下面我们就来看看如何使用... 目录1. 引言2. 项目依赖3. 配置 Redis4. 创建拦截器5. 注册拦截器6. 创建控制器8.