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实现IP地址和端口状态检测与监控

《使用Python实现IP地址和端口状态检测与监控》在网络运维和服务器管理中,IP地址和端口的可用性监控是保障业务连续性的基础需求,本文将带你用Python从零打造一个高可用IP监控系统,感兴趣的小伙... 目录概述:为什么需要IP监控系统使用步骤说明1. 环境准备2. 系统部署3. 核心功能配置系统效果展

Python实现微信自动锁定工具

《Python实现微信自动锁定工具》在数字化办公时代,微信已成为职场沟通的重要工具,但临时离开时忘记锁屏可能导致敏感信息泄露,下面我们就来看看如何使用Python打造一个微信自动锁定工具吧... 目录引言:当微信隐私遇到自动化守护效果展示核心功能全景图技术亮点深度解析1. 无操作检测引擎2. 微信路径智能获

Python中pywin32 常用窗口操作的实现

《Python中pywin32常用窗口操作的实现》本文主要介绍了Python中pywin32常用窗口操作的实现,pywin32主要的作用是供Python开发者快速调用WindowsAPI的一个... 目录获取窗口句柄获取最前端窗口句柄获取指定坐标处的窗口根据窗口的完整标题匹配获取句柄根据窗口的类别匹配获取句

Maven中引入 springboot 相关依赖的方式(最新推荐)

《Maven中引入springboot相关依赖的方式(最新推荐)》:本文主要介绍Maven中引入springboot相关依赖的方式(最新推荐),本文给大家介绍的非常详细,对大家的学习或工作具有... 目录Maven中引入 springboot 相关依赖的方式1. 不使用版本管理(不推荐)2、使用版本管理(推

在 Spring Boot 中实现异常处理最佳实践

《在SpringBoot中实现异常处理最佳实践》本文介绍如何在SpringBoot中实现异常处理,涵盖核心概念、实现方法、与先前查询的集成、性能分析、常见问题和最佳实践,感兴趣的朋友一起看看吧... 目录一、Spring Boot 异常处理的背景与核心概念1.1 为什么需要异常处理?1.2 Spring B

Python中的Walrus运算符分析示例详解

《Python中的Walrus运算符分析示例详解》Python中的Walrus运算符(:=)是Python3.8引入的一个新特性,允许在表达式中同时赋值和返回值,它的核心作用是减少重复计算,提升代码简... 目录1. 在循环中避免重复计算2. 在条件判断中同时赋值变量3. 在列表推导式或字典推导式中简化逻辑

Python位移操作和位运算的实现示例

《Python位移操作和位运算的实现示例》本文主要介绍了Python位移操作和位运算的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一... 目录1. 位移操作1.1 左移操作 (<<)1.2 右移操作 (>>)注意事项:2. 位运算2.1

如何在 Spring Boot 中实现 FreeMarker 模板

《如何在SpringBoot中实现FreeMarker模板》FreeMarker是一种功能强大、轻量级的模板引擎,用于在Java应用中生成动态文本输出(如HTML、XML、邮件内容等),本文... 目录什么是 FreeMarker 模板?在 Spring Boot 中实现 FreeMarker 模板1. 环

Qt实现网络数据解析的方法总结

《Qt实现网络数据解析的方法总结》在Qt中解析网络数据通常涉及接收原始字节流,并将其转换为有意义的应用层数据,这篇文章为大家介绍了详细步骤和示例,感兴趣的小伙伴可以了解下... 目录1. 网络数据接收2. 缓冲区管理(处理粘包/拆包)3. 常见数据格式解析3.1 jsON解析3.2 XML解析3.3 自定义

SpringMVC 通过ajax 前后端数据交互的实现方法

《SpringMVC通过ajax前后端数据交互的实现方法》:本文主要介绍SpringMVC通过ajax前后端数据交互的实现方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价... 在前端的开发过程中,经常在html页面通过AJAX进行前后端数据的交互,SpringMVC的controll