数学建模-相关性分析及热力图

article/2025/10/15 0:10:15

目录

一、相关性分析

二、相关性分析实例

三、三种相关系数

3.1 Pearson线性相关系数 

3.2 Kendall tau系数

3.3 Spearman相关系数

4、Matlab代码

4.1 Pearson 显著性检验

4.2 Pearson 相关系数矩阵

4.3 Kendalltau相关系数矩阵

4.4 Spearman相关系数矩阵 

5、代码部分解释


 

一、相关性分析

       相关性分析是指对两个或多个具备相关性的变量元素进行分析,从而衡量两个变量因素的相关密切程度。相关性的元素之间需要存在一定的联系或者概率才可以进行相关性分析。相关性分析是很常用的方法。本文介绍三种相关系数,分别是Pearson相关系数(皮尔逊相关系数),Kendall tau 相关系数(肯德尔相关性系数),Spearman rho相关系数(斯皮尔曼秩相关性系数),同时介绍画相关性系数图和显著性检验。

二、相关性分析实例

       下表是一个全球各个国家幸福指数统计的数据,里面有幸福指数得分、经济、家庭、自由等指标,分析它们之间的相关性。

f8ba1b044b3d460684db4cc55ac9e55f.png

三、三种相关系数

3.1 Pearson线性相关系数 

        Pearson 线性相关系数是最常用的线性相关系数。最适用数据的形式:线性数据、连续且符合正态分布、数据间差异不能太大。设有m个对象,n个指标,可以构成数据矩阵 eq?X%3D%28x_%7Bij%7D%29_%7Bm%5Ctimes%20n%7D,假设研究矩阵中第a列和第b列  的相关性,设a,b列的相关系数为eq?rho%28a%2Cb%29

eq?rho%28a%2Cb%29%3D%5Cfrac%7B%5Csum_%7Bi%3D1%7D%5E%7Bm%7D%28x_%7Ba%2Ci%7D-%5Cbar%7Bx_%7Ba%7D%7D%29%28x_%7Bb%2Ci%7D-%5Cbar%7Bx_%7Bb%7D%29%7D%7D%7B%5Csqrt%7B%5Csum_%7Bi%3D1%7D%5E%7Bm%7D%7D%28x_%7Ba%2Ci%7D-%5Cbar%7Bx_%7Ba%7D%7D%29%5E%7B2%7D%5Csum_%7Bj%3D1%7D%5E%7Bm%7D%28x_%7Bb%2Cj%7D-%5Cbar%7Bx_%7Bb%7D%7D%5E%7B2%7D%29%7D

其中m为每列的长度,相关系数的值的范围是从–1到+1。值–1表示完全负相关,而值+1表示完全正相关。值0表示列之间没有相关性。

3.2 Kendall tau系数

0bc0d1f1219b4b039f3d6a589617d185.png

 3.3 Spearman相关系数

        适用于两列变量,具有等级变量性质具有线性关系的数据,能够很好处理序列中相同值和异常值。Spearman 等效于应用于eq?x_%7Ba%7Deq?%5E%7Bx_%7Bb%7D%7D列的秩序的 Pearson 线性相关系数。对于第a列eq?x_%7Ba%7D和第b列eq?x_%7Bb%7D的相关性,设a,b列的相关系数为eq?rho%28a%2Cb%29

eq?rho%28a%2Cb%29%3D1-%5Cfrac%7B6%5Csum%20d%5E%7B2%7D%7D%7Bm%28m%5E%7B2%7D-1%29%7D

其中d为两个列的秩之差,m为每列的长度。

4、Matlab代码

4.1 Pearson 显著性检验

clc;clear;
load('happydata.mat')
%相关性分析
%默认类型为Pearson系数
[xiangguan,p_value]=corr(data);%等效于xiangguan=corr(data,'Type','Pearson');
%x轴和y轴的标签,要和数据的列数对应
index_name={'Score','Economy','Family','Health','Freedom','Generosity','Trust','Residual'};
y_index = index_name;
x_index=index_name;
figure(1)
%字号12,字体宋体,可以随意改变 显示默认配色
H = heatmap(x_index,y_index, p_value, 'FontSize',12, 'FontName','宋体');
H.Title = '皮尔逊相关性分析系数检验矩阵';

b6a6a8c136344bdeb3399c0d02b6f38e.jpeg

         P-value矩阵值小于0.05时说明相关性显著,否则不显著。例如:Economy和Freedom的P-value值很小,相关性显著。Economy和Freedom的P-value值为0.84144大于0.05,相关性不显著,说明它们两者基本不相关。

4.2 Pearson 相关系数矩阵

figure(2)
% 可以自己定义颜色块
H = heatmap(x_index,y_index, xiangguan, 'FontSize',12, 'FontName','宋体');
H.Title = '皮尔逊相关性分析系数矩阵'; 
yandata=xlsread('颜色图.xlsx');
yandata1=yandata(1:6,:);% 取颜色表的1—6行颜色
color=yandata1/255;
colormap(color)

 c14b5c27eaf84df0bc74b02455dda552.jpeg

 我们可以自定义热力图的颜色,默认热力图颜色是第一张图的蓝色系。建议可以把自己喜欢的颜色保存到一张表里方便以后画图配色,在此导入了一张颜色的表:

9804758c6c1342188a0f5a7d4f3440b4.png

8fe02777edde47da88f220e305e5a80c.png 

 4.3 Kendalltau相关系数矩阵

%  Kendall tau 系数
figure(3)
[xiangguan,~]=corr(data,'Type','Kendall');
H = heatmap(x_index,y_index, xiangguan, 'FontSize',12, 'FontName','宋体');
H.Title = 'Kendall tau 相关系数矩阵'; 
% 自己定义颜色块
yandata=xlsread('颜色图.xlsx');
yandata1=yandata(7:12,:);% 取7—12行颜色
color=yandata1/255;
colormap(color)

de3d532c168246d493af51474c1ba7c3.jpeg

4.4 Spearman相关系数矩阵 

%Spearman系数
figure(4)
[xiangguan,~]=corr(data,'Type','Spearman');
H = heatmap(x_index,y_index, xiangguan, 'FontSize',12, 'FontName','宋体');
H.Title = 'Spearman相关系数矩阵'; 
% 自己定义颜色块
yandata=xlsread('颜色图.xlsx');
yandata1=yandata([8,9,5,23,21],:);% 取指定行颜色
color=yandata1/255;
colormap(color)

ea640852360c41c6a9ce5289d9964417.jpeg

5、代码部分解释

1、heatmap(tbl,xvar,yvar基于表 tbl 创建一个热图。xvar 输入参数指示沿 x 轴显示的表变量。yvar 输入参数指示沿 y 轴显示的表变量。默认颜色基于计数聚合,这种方法计算每对 x 和 y 值一起出现在表中的总次数。

2、heatmap(tbl,xvar,yvar,'ColorVariable',cvar) 使用 cvar 指定的表变量来计算颜色数据。默认的计算方法为均值聚合。

3、heatmap(cdata基于矩阵 cdata 创建一个热图。热图上的每个单元格对应 cdata 中的一个值。使用行向量 r 指定重复方案。例如,repmat(A,[2 3]) 与 repmat(A,2,3) 返回相同的结果。

4、heatmap(xvalues,yvalues,cdata指定沿 x 轴和 y 轴显示的值的标签。

 


http://chatgpt.dhexx.cn/article/oOPV1uWt.shtml

相关文章

R语言基础——简单相关性分析(1)

简单相关性分析(1) 简介1. 协方差和相关系数1.1 协方差1.2 相关系数 2. 相关性分析参考 简介 初次接触相关性分析,在摸索中前进,也顺便将笔记记录下来,未雨绸缪嘛! 简单来说,相关性分析就是衡量…

分类变量、有序变量与数值变量相关性分析方法总结及 R 语言应用

文章目录 一、分类 & 分类相关性分析二、有序 & 有序相关性分析三、数值 & 数值相关性分析四、分类 & 有序相关性分析五、分类 & 数值相关性分析六、有序 & 数值相关性分析 本文全部假设显著性水平为0.05,特殊说明的除外。 一、分类 & …

数据分析方法和思维—相关性分析法

01 写在前面 在数据分析的问题中, 经常会遇见的一种问题就是相关的问题, 比如抖音短视频的产品经理经常要来问留存(是否留下来)和观看时长, 收藏的次数, 转发的次数, 关注的抖音博主数等等是否有相关性, 相关性有多大。 因为只有知道了哪些因素和留存比较…

python相关性分析_python实践统计学中的三大相关性系数,并绘制相关性分析的热力图...

本文首发地址: https://yishuihancheng.blog.csdn.net/article/details/83547648 欢迎关注我的博客【Together_CZ】,我是沂水寒城! 今天我简单地使用了scipy模块进行了统计学中三大相关性分析方法(皮尔森相关性系数、斯皮尔曼相…

数据相关性分析笔记

一、数据相关性的含义 数据类型 数据可以是连续的值,比如声音、图像,称为模拟数据。也可以是离散的,如符号、文字,称为数字数据。(ppt)数值型数据、分类型数据、定序数据。 数据相关性 数据相关性是指数据之间存在某种关系&#…

ArcGIS栅格数据图层空间相关性分析方法

ArcGIS栅格数据图层空间相关性分析方法 也不知道严谨不严谨,先Mark吧欸。 矢量的空间相关分析可以通过Spatial Join以后,导出属性表到EXCEL中,进行相关分析Correlation Analysis.  而两个栅格数据图层直接能不能直接在ArcMap中进行相关分…

IBM SPSS Statistics常用的相关性分析方法

灵活运用IBM SPSS Statistics做数据的统计和分析是每个数据分析师都应该掌握的技能,这款软件为用户提供了全面的数据分析方法,可以解决我们在数据分析过程中遇到的各种难题。 接下来小编就为大家介绍一下SPSS相关性分析的方法。 图1:SPSS软件…

神经网络相关性分析方法,神经网络相关性分析图

1、bp神经网络怎么确定输入与输出是正相关还是负相关? 想了解输入输出关系你可以求协方差,进而求peason相关系数 当然你也可以求spearman 等,看他们的相关度即可,正负就代表是正相关还是负相关,具体值代表相关性度量 …

重剑无锋!15种相关分析算法,总有一款适合你!

相关系数(Correlation coefficient)可用于评估两个变量之间的线性关系,它的值在-1到1之间,-1或1代表完美的负相关和正相关,0表示不存在线性关系。 计算相关系数的方法种类繁多,各有自己的定义以及适用情况…

Keil MDK5中对结构体变量使用结构体成员运算符.后不自动显示结构体成员

MDK5在对结构体变量使用结构体成员运算符.时是会显示结构体成员的,如图所示: 但是有时候使用结构体成员运算符.时并不会出现结构体成员,导致这个问题的原因是没有将自己写的文件添加到工程之中,解决办法如下: 检查是…

【C语言】结构体的创建和使用与结构体内存对齐

结构体创建 前言结构体的声明全局声明特殊声明 结构体变量定义与成员初始化成员类型变量定义匿名结构体变量定义 结构体的自引用结构体成员的访问成员初始化操作符结构体传参 结构体内存对齐对齐数对齐规则 前言 在生活中我们要描述一个人时是不是要知道他的名字、性别、年龄啊…

C语言struct结构体内存

对齐规则: (i)结构体内 成员存储位置 的起始地址为成员自身长度与默认对齐值 中的较小者的整倍数。 (ii)结构体A嵌套在结构体B内,则A在B内存储位置起始地址为 A内成员最长长度 的整数倍。 (iii&…

嵌入式系统开发:C语言中的位结构体

在嵌入式开发中,经常需要表示各种系统状态,位结构体的出现大大方便了我们,尤其是在进行一些硬件层操作和数据通信时。但是在使用位结构体的过程中,是否深入思考一下它的相关属性?是否真正用到它的便利性,来…

keil中,编写结构体成员运算符(.)后不能自动弹出结构体成员

keil中,编写结构体成员运算符(.)后不能自动弹出结构体成员 解决办法: 1、确保源文件里面包含sys.h/stm32f10x.h文件(或者源文件里面的头文件也行) 2、把源文件路径加载到keil里面(魔术棒->C/…

c++中的结构体案例

结构体案例一 案例描述:学生做毕设项目,每名老师有5个学生,总共有3个老师,需求如下: 设计学生和老师的结构体,在老师的结构体中,有老师的姓名和一个存放了5名学生的数组作为成员学生的成员有姓…

C语言:位结构体

位结构体是一种特殊的结构, 在需按位访问一个字节或字的多个位时, 位结构体比按位运算符更加方便。 一、位结构—简介 有些信息在存储时,并不需要占用一个完整的字节, 而只需占几个或一个二进制位。 例如在存放一个开关量时,只有0和1 两种状…

C 语言编程 — 构造数据类型 — 结构体(struct)

目录 文章目录 目录结构体声明一个结构体类型定义一个结构体类型的变量定义一个结构体类型的指针变量结构体的成员结构体的内存分布 结构体 结构体(Structure)是一种由不同类型的数据成员组成的数据类型。通过定义结构体,我们可以将多个不同…

C语言结构体和其他构造数据类型详解

结构体和其他构造数据类型 结构体 “结构”是一种构造类型,它是由若干“成员”组成的。 每一个成员可以是一个基本数据类型或者又是一个构造类型。 结构既然是一种“构造”而成的数据类型,那么说明和使用之前必须先定义它,也就是构造它。 结…

C的实用笔记38——结构体的引入和定义

1.为什么要用结构体? 0、原因:实际开发中,我们需要将不同类型的数据组合成一个整体,这就是结构体。结构体是自创的类型。 1、查找一名学生信息的两种方案:在EXCEL表格和数据库中经常有这种情况,比方说一个…

7.IDA-创建结构体

结构体分类 结构体的一个显著特点在于,结构体中的数据字段是通过名称访问,而不是像数组那样通过索引访问。不好的是,字段名称被编译器转换成了数字偏移量。结果,在反汇编代码清单中,访问结构体字段的方式看起来与使用…