数学建模-相关性分析(Matlab)

news2025/1/14 17:55:06

 注意:代码文件仅供参考,一定不要直接用于自己的数模论文中
国赛对于论文的查重要求非常严格,代码雷同也算作抄袭
如何修改代码避免查重的方法:https://www.bilibili.com/video/av59423231   //清风数学建模

一、基础知识

1.皮尔逊相关系数

连续数据、正态分布、线性关系三者同时满足优先用。

一般处理这种问题:如中学生体测成绩考察相关性
​​​​

 统计描述:

%% 统计描述
MIN = min(Test);  % 每一列的最小值
MAX = max(Test);   % 每一列的最大值
MEAN = mean(Test);  % 每一列的均值
MEDIAN = median(Test);  %每一列的中位数
SKEWNESS = skewness(Test); %每一列的偏度
KURTOSIS = kurtosis(Test);  %每一列的峰度
STD = std(Test);  % 每一列的标准差
RESULT = [MIN;MAX;MEAN;MEDIAN;SKEWNESS;KURTOSIS;STD]  %将这些统计量放到一个矩阵中表示

 excel方法更好:

选中数据(包括中文如引体向上),点击上方数据,点击右边数据分析,描述统计(勾上标志位于第一行)

SPSS最好(附基础操作步骤📕):

1.左上角点击文件,导入原始excel

点击上面分析,描述统计,描述(选中该选的,调调就得图)

2.看图分析:点击上面图形,旧对话框,散点图/点图,点击矩阵散点图,变量全选,生成。

各列之间相关系数:

R = corrcoef(Test)   % 返回test的相关系数矩阵
R = corrcoef(a,b)   % 返回两个随机变量a和b之间的系数

 注意:

 一定要是线性,否则结论不一定成立,例如抛物线。

2.假设性检验(正态分布图)

a:犯第一类错(原假设是对的,我们却认为它是错的)的概率

b=1-a 相信原假设的概率(一般取95%) n(样本数)-2为自由度

检验值t=r*根号下n-2/1-r^2 ,r是相关系数

结合t分布表和matlab:

%% 假设检验部分
x = -4:0.1:4;
y = tpdf(x,28);  %求t分布的概率密度值 28是自由度  
figure(1)
plot(x,y,'-')
grid on  % 在画出的图上加上网格线
hold on  % 保留原来的图,以便继续在上面操作
% matlab可以求出临界值,函数如下
tinv(0.975,28)    %    2.0484
% 这个函数是累积密度函数cdf的反函数
plot([-2.048,-2.048],[0,tpdf(-2.048,28)],'r-')
plot([2.048,2.048],[0,tpdf(2.048,28)],'r-')

 结合最后的t分布表,可以查到自由度为28时候,置信度为0.5(双尾)对应的t为2.0484

更好用:p值判断法

%% 计算p值
x = -4:0.1:4;
y = tpdf(x,28);
figure(2)
plot(x,y,'-')
grid on 
hold on
% 画线段的方法
plot([-3.055,-3.055],[0,tpdf(-3.055,28)],'r-')
plot([3.055,3.055],[0,tpdf(3.055,28)],'r-')
disp('该检验值对应的p值为:')
disp((1-tcdf(3.055,28))*2)  %双侧检验的p值要乘以2

3.055是检验值t,最后一步是求p,这里不再细说。因为spss法最优。

p<0.01说明在99%的置信水平上拒绝原假设。

p>0.01…………相信原假设

0.05,0.10同理

 SPSS法:

把excel表里都弄过去后,原始数据分析,相关,双变量相关性,勾选皮尔逊、双尾、第三个也勾

这时会发现,数据后会带*星号,有一颗两颗的。我们规定:

P < 0.01  % 标记3颗星的位置
(P < 0.05) .* (P > 0.01)  % 标记2颗星的位置
(P < 0.1) .* (P > 0.05) % % 标记1颗星的位置

3.检验数据是否正态分布

1.正态分布JB检验(大样本n>50)

主要是根据偏度(正态分布为0)和峰度(正态分布为3),再结合jbtest函数,同时注意要循环遍历每一列。最后得p值,也是比较0.05决定是否拒绝原假设

% 正态分布的偏度和峰度
x = normrnd(2,3,100,1);   % 生成100*1的随机向量,每个元素是均值为2,标准差为3的正态分布
skewness(x)  %偏度
kurtosis(x)  %峰度
qqplot(x)
    
% 检验第一列数据是否为正态分布
[h,p] = jbtest(Test(:,1),0.05)
[h,p] = jbtest(Test(:,1),0.01)

% 用循环检验所有列的数据
n_c = size(Test,2);  % number of column 数据的列数
H = zeros(1,6);  % 初始化节省时间和消耗
P = zeros(1,6);
for i = 1:n_c
    [h,p] = jbtest(Test(:,i),0.05);
    H(i)=h;
    P(i)=p;
end
disp(H)
disp(P)

h=1拒绝原假设,h为0不能拒绝原假设。p即为p值。 

2.夏皮洛-威尔克检验(小样本 3《n《50)

用SPSS:

分析,描述统计,探索,全选后点 图,勾选含检验的正态图,最后生成正态检验图。

看h,p的方法同上。

3.看图是否拟合(Q-Q图)

qqplot(Test(:,1))

 4.斯皮尔曼spearman相关系数

原理:X和Y两组数据,也有X和Y的等级(一个数所在的一列数按照从小到大排后,这个数所在的位置,若如并列第四,均取4.5)

%% 斯皮尔曼相关系数
X = [3 8 4 7 2]'  % 一定要是列向量哦,一撇'表示求转置
Y = [5 10 9 10 6]'
% 第一种计算方法
1-6*(1+0.25+0.25+1)/5/24

% 第二种计算方法
coeff = corr(X , Y , 'type' , 'Spearman')
% 等价于:
RX = [2 5 3 4 1]
RY = [1 4.5 3 4.5 2]
R = corrcoef(RX,RY)

% 计算矩阵各列的斯皮尔曼相关系数
R = corr(Test, 'type' , 'Spearman')

(Test是591*6中考体测数据)

最后假设检验,也是看p

% 大样本下的假设检验
% 计算检验值
disp(sqrt(590)*0.0301)
% 计算p值
disp((1-normcdf(0.7311))*2) % normcdf用来计算标准正态分布的累积概率密度函数

% 直接给出相关系数和p值
[R,P]=corr(Test, 'type' , 'Spearman')

附录:T分布表

单尾检验0.050.0250.010.0050.00250.0010.0005
双尾检验0.10.050.020.010.0050.0020.001
df
16.313812.706531.819363.6551127.3447318.4930636.0450
22.92004.30266.96469.924714.088722.327631.5989
32.35343.18244.54075.84087.453410.214512.9242
42.13192.77643.74704.60415.59767.17328.6103
52.01502.57063.36504.03224.77345.89346.8688
61.94322.44693.14263.70744.31685.20765.9589
71.89462.36462.99803.49954.02944.78525.4079
81.85952.30602.89653.35543.83254.50085.0414
91.83312.26212.82143.24983.68964.29694.7809
101.81242.22822.76383.16933.58144.14374.5869
111.79592.20102.71813.10583.49664.02474.4369
121.78232.17882.68103.05453.42843.92964.3178
131.77092.16042.65033.01233.37253.85204.2208
141.76132.14482.62452.97683.32573.78744.1404
151.75302.13142.60252.94673.28603.73284.0728
161.74592.11992.58352.92083.25203.68614.0150
171.73962.10982.56692.89833.22243.64583.9651
181.73412.10092.55242.87843.19663.61053.9216
191.72912.09302.53952.86093.17373.57943.8834
201.72472.08602.52802.84543.15343.55183.8495
211.72072.07962.51762.83143.13523.52723.8193
221.71722.07392.50832.81883.11883.50503.7921
231.71392.06862.49982.80733.10403.48503.7676
241.71092.06392.49222.79703.09053.46683.7454
251.70812.05962.48512.78743.07823.45023.7251
261.70562.05552.47862.77873.06693.43503.7067
271.70332.05182.47272.77073.05653.42113.6896
281.70112.04842.46712.76333.04693.40823.6739
291.69912.04522.46202.75643.03803.39623.6594
301.69732.04232.45722.75003.02983.38523.6459
311.69552.03952.45282.74403.02213.37493.6334
321.69392.03692.44872.73853.01503.36533.6218
331.69242.03452.44482.73333.00823.35633.6109
341.69092.03222.44112.72843.00193.34793.6008
351.68962.03012.43772.72382.99613.34003.5912
361.68832.02812.43452.71952.99053.33263.5822
371.68712.02622.43152.71542.98533.32563.5737
381.68592.02442.42862.71152.98033.31903.5657
391.68492.02272.42582.70792.97563.31283.5581
401.68392.02112.42332.70452.97123.30693.5510

 40往后查看http://www.obhrm.net/index.php/T%E5%88%86%E5%B8%83%E8%A1%A8_t_distribution_table

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/143024.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Qt之Json操作demo

一、JSON简介&#xff1a; JSON(JavaScript Object Notation)是一种轻量级的数据交换格式&#xff0c;使用JavaScript语法来描述数据对象&#xff0c;但是JSON仍然独立于语言和平台。JSON解析器和JSON库支持许多不同的编程语言&#xff0c;被广泛用于Internet上的数据交换格式。…

多线程高级(线程状态、线程池、volatile、原子性、并发工具)

1.线程池 1.1 线程状态介绍 当线程被创建并启动以后&#xff0c;它既不是一启动就进入了执行状态&#xff0c;也不是一直处于执行状态。线程对象在不同的时期有不同的状态。那么Java中的线程存在哪几种状态呢&#xff1f;Java中的线程 状态被定义在了java.lang.Thread.State…

Java程序:jstack

前言 如果有一天&#xff0c;你的Java程序长时间停顿&#xff0c;也许是它病了&#xff0c;需要用jstack拍个片子分析分析&#xff0c;才能诊断具体什么病症&#xff0c;是死锁综合征&#xff0c;还是死循环等其他病症&#xff0c;本文我们一起来学习jstack命令~ jstack 的功能…

阳康后的第一篇博客,先来几道恶心二进制编程题

目录 一、统计二进制中1的个数 二、打印整数二进制的奇数位和偶数位 三、两个整数二进制位不同个数 一、统计二进制中1的个数 这是一道牛客网OJ题&#xff0c;感兴趣的话可以先做一遍再看解析哦 -> 牛客网的OJ链接 注意&#xff1a;上面的牛客网是接口型&#xff0c;不需…

Vagrant管理已存在的虚拟机

起因 某天打开VirtualBox后&#xff0c;发现之前创建的虚拟机都没了&#xff0c;后将虚拟机从本地磁盘又重新导入&#xff0c;但是发现使用 vagrant up 会创建新的虚拟机&#xff0c;而我要用vagrant管理已存在的虚拟机&#xff0c;就是 vagrant up的时候&#xff0c;我需要启动…

MySQL数据库:常用数据类型

一、整形和浮点型 数据类型大小说明对应C类型bit(n)n指定比特位数&#xff0c;默认1位比特位数&#xff0c;n范围1-64&#xff1b;存储数值范围2-2^n-1char[]tinyint1字节signed charsmallint2字节short intint4字节intbigint8字节long long intfloat(m,d)4字节单精度&#xf…

【前端】CSS基础

一、CSS基础 1.1CSS的介绍 CSS&#xff1a;层叠样式表&#xff08;Cascading style sheets&#xff09; CSS作用是什么&#xff1f;&#xff1f; 1.2CSS语法规则 写在哪里&#xff1f; CSS是style标签中&#xff0c;style标签一般写在head标签里面&#xff0c;title标签下…

真的强,又一个开源项目,杀疯了

最近&#xff0c;AI大模型连续火爆出圈&#xff0c;人工智能生成模型&#xff08;AIGC&#xff09;的热度尚未褪去&#xff0c;聊天机器人ChatGPT便引发全网热议&#xff0c;两周吸引百万用户。还有卷趴一半程序员的AlphaCode&#xff0c;生成全新蛋白质的ESM2等&#xff0c;不…

TypeScript,终于在实际项目中用到了泛型。

终于在实际项目中用到了泛型 里程碑式的纪录&#xff0c;终于不是anyScript了&#xff0c;代码写完只有一个any 应用 项目中组件化了这么一个东西 功能描述&#xff1a; 传进去一个数组&#xff0c;有个名&#xff0c;有个key&#xff0c;渲染成上图的div样式点击之后&#…

Triple 协议支持 Java 异常回传的设计与实现

作者&#xff1a;陈景明 背景 在一些业务场景&#xff0c;往往需要自定义异常来满足特定的业务&#xff0c;主流用法是在catch里抛出异常&#xff0c;例如&#xff1a; public void deal() {try{//doSomething ...} catch(IGreeterException e) {...throw e;} }或者通过…

Python面向对象(九)

python学习之旅(九) &#x1f44d;查看更多可以关注查看首页或点击下方专栏目录 一.什么是面向对象 万物皆对象 现实世界的事物都有属性和行为,可在程序中抽离为类来描述现实世界的事物属性和行为。 使用类充当程序内现实事物的“设计图纸”&#xff0c;基于图纸(类)生产实体…

10. 正则表达式匹配

题目链接&#xff1a;https://leetcode.cn/problems/regular-expression-matching/从暴力递归到动态规划&#xff0c;对于状态转移方程不容易推导出来的可以先从递归进行尝试各种策略&#xff0c;最后再从暴力递归转为动态规划&#xff0c;这种尝试方式容易求解dp初始值以及dp更…

数据结构-考研难点代码突破 (图关键路径完全解析(流程+代码) - C++代码)

考研在关键路径上的考察以流程为主 文章目录1. AOE网2. 关键路径问题解决流程C代码1. AOE网 首先区分AOV网&#xff1a; AOV网∶若用DAG 图&#xff08;有向无环图&#xff09;表示一个工程&#xff0c;其顶点表示活动&#xff0c;用有向边<Vi&#xff0c;Vj>表示活动 V…

【ESP32+freeRTOS学习笔记-(五)队列Queue】

目录1、什么是队列Queue2、队列的多任务特性2.1 多任务的访问&#xff1a;2.2 队列读取阻塞&#xff1a;2.3 写队列阻塞&#xff1a;2.4 阻塞于多个队列&#xff1a;3、队列的使用3.1 创建队列--The xQueueCreate() API3.2 写入队列3.3 从队列中接收数据3.4 删除队列4、队列集4…

ReactDOM.render在react源码中执行之后发生了什么?

ReactDOM.render 通常是如下图使用&#xff0c;在提供的 container 里渲染一个 React 元素&#xff0c;并返回对该组件的引用&#xff08;或者针对无状态组件返回 null&#xff09;。本文主要是将ReactDOM.render的执行流程在后续文章中会对创建更新的细节进行分析&#xff0c…

MATLAB-plot3/ezplot3三维绘图

&#xff08;1&#xff09; plot3是三维绘图的基本函数&#xff0c;调用格式如下。1、plot3( X,Y,Z):绘制简单的三维曲线&#xff0c;当X、Y、Z是长度相同的向量时&#xff0c;plot3命令将绘制以向量X、Y、Z为(x, y,z)坐标值的三维曲线;当X、Y、Z是mn矩阵时,plot3命令将绘制m条…

Android 虚拟分区详解(四) 编译开关

Android Virtual A/B 系统简称 VAB,我将其称为虚拟分区。 本系列文章基于 Android R(11) 进行分析,如果没有特别说明,均基于代码版本 android-11.0.0_r46 请已经购买《Android 虚拟分区》专栏的朋友加我 wx 进 "虚拟分区专栏 VIP 答疑"群,作为本专栏文章的附加服…

(6)元对象系统与信号与槽机制

1. 元对象系统 元对象系统是一个基于标准C的扩展&#xff0c;为Qt提供了信号与槽机制、实时类型信息、动态属性系统。 什么是元对象 在计算机科学中&#xff0c;元对象是这样一个东西&#xff1a;它可以操纵、创建、描述、或执行其他对象。元对象描述的对象称为基对象。元对象可…

记一次搭建备库,使用连接串主库无法连接到备库

主库使用连接串连接备库失败 SQL> conn sys/oracleorcldg as sysdba ERROR: ORA-12528: TNS:listener: all appropriate instances are blocking new connections 备库已经建立了静态监听 # listener.ora Network Configuration File: /u01/app/oracle/product/11.2.0/db_1/…

安全寒假第一堂课

一、状态码 200 – 服务器成功返回网页 404 – 请求的网页不存在 503 – 服务器超时 1xx&#xff08;临时响应&#xff09; 表示临时响应并需要请求者继续执行操作的状态码。 100&#xff08;继续&#xff09; 请求者应当继续提出请求。服务器返回此代码表示已收到请求的第一…