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

相关文章

pandas中位数填充空值的实现示例

《pandas中位数填充空值的实现示例》中位数填充是一种简单而有效的方法,用于填充数据集中缺失的值,本文就来介绍一下pandas中位数填充空值的实现,具有一定的参考价值,感兴趣的可以了解一下... 目录什么是中位数填充?为什么选择中位数填充?示例数据结果分析完整代码总结在数据分析和机器学习过程中,处理缺失数

Golang HashMap实现原理解析

《GolangHashMap实现原理解析》HashMap是一种基于哈希表实现的键值对存储结构,它通过哈希函数将键映射到数组的索引位置,支持高效的插入、查找和删除操作,:本文主要介绍GolangH... 目录HashMap是一种基于哈希表实现的键值对存储结构,它通过哈希函数将键映射到数组的索引位置,支持

Pandas使用AdaBoost进行分类的实现

《Pandas使用AdaBoost进行分类的实现》Pandas和AdaBoost分类算法,可以高效地进行数据预处理和分类任务,本文主要介绍了Pandas使用AdaBoost进行分类的实现,具有一定的参... 目录什么是 AdaBoost?使用 AdaBoost 的步骤安装必要的库步骤一:数据准备步骤二:模型

使用Pandas进行均值填充的实现

《使用Pandas进行均值填充的实现》缺失数据(NaN值)是一个常见的问题,我们可以通过多种方法来处理缺失数据,其中一种常用的方法是均值填充,本文主要介绍了使用Pandas进行均值填充的实现,感兴趣的... 目录什么是均值填充?为什么选择均值填充?均值填充的步骤实际代码示例总结在数据分析和处理过程中,缺失数

Java对象转换的实现方式汇总

《Java对象转换的实现方式汇总》:本文主要介绍Java对象转换的多种实现方式,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录Java对象转换的多种实现方式1. 手动映射(Manual Mapping)2. Builder模式3. 工具类辅助映

Go语言开发实现查询IP信息的MCP服务器

《Go语言开发实现查询IP信息的MCP服务器》随着MCP的快速普及和广泛应用,MCP服务器也层出不穷,本文将详细介绍如何在Go语言中使用go-mcp库来开发一个查询IP信息的MCP... 目录前言mcp-ip-geo 服务器目录结构说明查询 IP 信息功能实现工具实现工具管理查询单个 IP 信息工具的实现服

Python的time模块一些常用功能(各种与时间相关的函数)

《Python的time模块一些常用功能(各种与时间相关的函数)》Python的time模块提供了各种与时间相关的函数,包括获取当前时间、处理时间间隔、执行时间测量等,:本文主要介绍Python的... 目录1. 获取当前时间2. 时间格式化3. 延时执行4. 时间戳运算5. 计算代码执行时间6. 转换为指

SpringBoot基于配置实现短信服务策略的动态切换

《SpringBoot基于配置实现短信服务策略的动态切换》这篇文章主要为大家详细介绍了SpringBoot在接入多个短信服务商(如阿里云、腾讯云、华为云)后,如何根据配置或环境切换使用不同的服务商,需... 目录目标功能示例配置(application.yml)配置类绑定短信发送策略接口示例:阿里云 & 腾

python实现svg图片转换为png和gif

《python实现svg图片转换为png和gif》这篇文章主要为大家详细介绍了python如何实现将svg图片格式转换为png和gif,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录python实现svg图片转换为png和gifpython实现图片格式之间的相互转换延展:基于Py

Python利用ElementTree实现快速解析XML文件

《Python利用ElementTree实现快速解析XML文件》ElementTree是Python标准库的一部分,而且是Python标准库中用于解析和操作XML数据的模块,下面小编就来和大家详细讲讲... 目录一、XML文件解析到底有多重要二、ElementTree快速入门1. 加载XML的两种方式2.