【数学建模】数据处理问题

2023-11-20

一、插值与拟合

常用于数据的补全以及趋势分析

1、插值

总的思想,就是利用函数f (x)若干已知点的函数值,求出适当的特定函数g(x)。这样f(x)其他未知点上的值,就可以用g(x)在这一点的值来近似。这种通过已知求未知的方法称为-----插值。

插值方法有很多,个人感觉样条插值spline最常用吧。。。其他感觉要么复杂要么不靠谱。

对了,二维散乱插值有个方法叫v4,效果不错,拿来用就是了。。。

基本内容:

  • 一维插值
  • 二维有序插值
  • 二维散乱插值

基本语法:

y = interp1(x0,y0,x,'spline');		%一维插值
%x0必须单调;x要落在x0区间范围内;x指的是待求的值

%示例
hours=1:12;
temps=[5 8 9 15 25 29 31 30 22 25 27 24];
h=1:0.1:12;
t=interp1(hours,temps,h,'spline'); 
y = interp2(x0,y0,z0,x,y,'spline');		%二维插值--规则点
%x0,y0必须单调;x,y是一个是行向量一个是列向量;x,y要落在x0,y0区间范围内;(x,y)指的是待求的坐标

%示例
x=1:5;
y=1:3;
temps=[82 81 80 82 84;79 63 61 65 81;84 84 82 85 86];
xi=1:0.2:5;
yi=1:0.2:3;
zi=interp2(x,y,temps,xi',yi,'spline');
y = interp2(x0,y0,z0,x,y,'v4');		%二维插值--散乱点

%示例
x=[129.0  140.0  103.5  88.0  185.5  195.0  105.5 157.5  107.5  77.0  81.0  162.0  162.0  117.5 ];
y=[ 7.5  141.5  23.0  147.0  22.5  137.5  85.5      -6.5  -81  3.0  56.5  -66.5  84.0  -33.5 ];
z=[ 4  8  6  8  6  8  8  9  9  8  8  9  4  9 ];
x1=75:1:200;
y1=-50:1:150;
[x1,y1]=meshgrid(x1,y1);
z1=griddata(x,y,z,x1,y1,'v4');

2、拟合:

总的的说,已知一组已知数据,寻求一个函数y = f (x),使 f (x)在某种准则下与所有数据点最为接近,即曲线拟合得最好。
按照函数的不同,可以将拟合问题进行分类。
感觉多项式拟合比线性最小二乘法实用多了,就合并了吧23333

基本内容:

  • 多项式拟合(合并线性最小二乘法)
  • 指定函数拟合

基本语法:

a=polyfit(x0,y0,m)		%多项式拟合,线性最小二乘法就是使m=1
%m是最高次项系数,a返回m+1维向量(还有一个常数项系数)

%示例:
x=[1 2 3 4 5 6 7 8 9];
y=[9 7 6 3 -1 2 5 7 20];
P=polyfit(x,y,3)
%指定函数拟合---看着头晕,贴一段代码要用直接调参就行
syms t;
x=[0 0.4 1.2 2 2.8 3.6 4.4 5.2 6 7.2 8 9.2 10.4 11.6 12.4 13.6 14.4 15];
y=[1 0.85 0.29 -0.27 -0.53 -0.4 -0.12 0.17 0.28 0.15 -0.03 -0.15 -0.071 0.059 0.08 0.032 -0.015 -0.02];
f=fittype('a*cos(k*t)*exp(w*t)','independent','t','coefficients',{'a','k','w'});	%输入要拟合的函数,以及参数,自变量等,自定义拟合函数
cfun=fit(x',y',f)  %显示拟合后的结果
xi=0:.1:20;
yi=cfun(xi);
plot(x',y','r*',xi,yi,'b--');

区别:
插值一般经过所有数据点,拟合不一定经过所有数据点
插值不一定得到近似函数的表达形式,仅找到未知点对应值。拟合要求得到一个具体的近似函数表达式。
通常建议:数据比较准确,用插值;数据误差较大,用拟合

参考资料:

数学建模之拟合插值方法
数学建模-插值与拟合模型
数学建模常规算法:插值和拟合

二、K-means聚类与高斯混合聚类

常用于数据异常值诊断与剔除。
通过聚类检测离群点,进而进行删除

1、 K-means聚类

2、高斯混合聚类

涉及到聚类的知识,怪复杂的,等学到聚类再写吧。。。

三、主成分分析

常用于多维数据的降维,减少数据的冗余

​主成分分析(PCA), 用于将多个变量通过线性变换以选出较少个数重要变量。

主成分与原始变量之间的关系:

​ (1)主成分保留了原始变量绝大多数信息。

​ (2)主成分的个数大大少于原始变量的数目。

​ (3)每个主成分都是原始变量的线性组合。

​ (4)每个主成分的贡献率不同。

​ (5)各个主成分之间互不相关。

处理步骤:

  1. 数据标准化
  2. 计算相关系数矩阵
  3. 计算特征值与特征向量
  4. 求出贡献率与累计贡献率(一般累计贡献率达到85%即可)
  5. 计算主成分载荷(即线性系数)与主成分得分

代码:

%示例:
da=xlsread('data.xlsx');
%%标准化矩阵 
da=zscore(da);
fprintf('相关系数矩阵:\n') 
std=corrcoef(da)     	 %计算相关系数矩阵 
[vec,val]=eig(std);  	 %求特征值(val)及特征向量(vec) 
newval=diag(val) ;    
[y,i]=sort(newval) ;   	%对特征根进行排序,y 为排序结果,i 为索引 
fprintf('特征根排序:\n')
for   z=1:length(y)     
    newy(z)=y(length(y)+1-z); 
end
fprintf('%g\n',newy)  	%%显示特征根
rate=y/sum(y); 
fprintf('贡献率:\n') 
newrate=newy/sum(newy) 
sumrate=0; 
newi=[]; 
for k=length(y):-1:1     
    sumrate=sumrate+rate(k);     
    newi(length(y)+1-k)=i(k);     
    if sumrate>0.85 		%记下累积贡献率大于85%的特征值的序号放入 newi 中 
        break;     
    end
end       
fprintf('主成分数:%g\n\n',length(newi)); 
for p=1:length(newi)     
    for q=1:length(y)      
        vector2(q,p)=sqrt(newval(newi(p)))*vec(q,newi(p));%%%主成分载荷     
    end
end
fprintf('显示载荷:\n'); 
disp(vector2); %显示载荷 %%%求各主成分得分 
sco=da*vector2; 
csum=sum(sco,2); 
[newcsum,i]=sort(-1*csum); 
[newi,j]=sort(i); 
fprintf('计算得分:\n') %得分矩阵:sco 为各主成分得分;csum 为综合得分;j 为排序结果 
score=[sco,csum,j]

参考资料:
关于主成分分析matlab代码实现的总结
数学建模算法笔记(2)——主成分分析
数学建模之主成分分析matlab
数学建模之主成分分析法

四、方差分析与协方差分析

常用于数据截取与特征选择。通俗的来说,就是判断某个特征对结果对影响是否显著。

1、方差分析

(1)单因素方差分析

维持其他因素保持不变,仅仅对一个因素进行考虑并计算方差,这称为单因素方差分析。

数据集分为均衡数据(各组数据个数相等)与非均衡数据(各组数据个数不等)。

%均衡数据
p=anova1(x)		%p是一个概率;x每一行代表不同样本,每一列代表特征中的不同序号

%示例
x=[162 158 146 150
167 160 154 155
170 164 162 161
175 172 168 180];

p=anova1(x)

求得 p=0.1109>0.05,所以几种工艺制成的灯泡寿命没有显著差异

%非均衡数据
p=anova1(x,group)	%x为向量,从第1组到第r组数据依次排列;roup为与x同长度的向量,标志x中数据的组别(在于x第i组数据相对应的位置出输入整数i)

%示例
x=[1620 1580 1460 1500
1670 1600 1540 1550
1700 1640 1620 1610
1750 1720 1680 1800];
x=[x(1:4),x(16),x(5:8),x(9:11),x(12:15)];
g=[ones(1,5),2*ones(1,4),3*ones(1,3),4*ones(1,4)];
p=anova1(x,g)

求得 0.01<p=0.0331<0.05,所以几种工艺制成的灯泡寿命有显著差异

单因素方差分析结果对应一般如下(单因素显著性水平取0.05):

p值 结果
p<0.01 非常显著
0.01<p<0.05 显著
p>0.05 不显著
(2)双因素方差分析

与单因素方差分析类似,这次我们探究两个因素。对两个因素的实验可能进行一次,或者很多次。

单一观测值:

p=anova2(x)		%x不同列的数据表示单一因素的变化情况,不同行中的数据表示另一因素的变化情况

%示例
x=[58.2 56.2 65.3
49.1 54.1 51.6
60.1 70.9 39.2
75.8 58.2 48.7];
[p,t,st]=anova2(x)

求得p=0.4491 0.7387,均>0.10,表明两个特征不同数据之间的差异对于结果无显著影响。

多观测值:

p=anova2(x,reps)	%如果每一“单元”有不止一个观测值,则用参数reps来表明每个“单元”多个观测值的不同标号,即reps给出重复试验的次数t

%示例
x0=[58.2 52.6 56.2 41.2 65.3 60.8
49.1 42.8 54.1 50.5 51.6 48.4
60.1 58.3 70.9 73.2 39.2 40.7
75.8 71.5 58.2 51.0 48.7 41.4];
x=x0';
[p,t,st]=anova2(x,2)

求得p = 0.0035 0.0260 0.0001,其中第三个参数表明两个特征联合作用下对结果的影响。结果表明,这两个特征的影响均是显著的。

值得注意的是,上式使用转置,保证x的形式如下图所示(需要注意行列分别代表的含义):
目的矩阵
其中,一二维代表特征维,第三维代表样本维。

(3)多因素方差分析

这里用到了正交表的处理方法,我们直接使用anovan函数:

代表图片
其中,特征样本不同的取值用特征水平1,2,3…来替代。

最后,双因素与多因素方差分析结果对应一般如下(双因素与多因素显著性水平取0.10):

p值 结果
p<0.01 非常显著
0.01<p<0.10 显著
p>0.10 不显著

2、协方差分析

对于特定的特征,为了寻找那些样本之间差异较大,运用协方差分析。

在进行完方差分析的基础上,进行协方差分析。

%分析列
COMPARISON = multcompare(st,'alpha',0.05, 'estimate','column')
%分析行
COMPARISON = multcompare(st,'alpha',0.05, 'estimate','row')

之后,便可得到答案。

参考资料:
数学建模常用模型19 :方差分析
数学建模之方差分析

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【数学建模】数据处理问题 的相关文章

  • 如何在 MATLAB 的 for 循环中读取多个图像?

    我已将结果分段放在一个文件夹中 这些需要在 for 循环中读取并在循环中进一步处理 我尝试阅读如下 for i 1 10 file name dir strcat C Users adminp Desktop dinosaurs im im
  • ODE 时间 Matlab 与 R

    如果在 matlab 中使用可变时间步长求解器 例如 ODE45 我会定义输出的时间跨度 即times 0 50 matlab 将返回 0 到 50 之间不同时间步长的结果 然而在 R 中 我似乎必须定义我希望 ODE 返回结果的时间点 即
  • 如何将条形图的 XtickLabels 向左移动?

    我目前正在尝试创建频率直方图 为此 我必须创建一个条形图 条形图之间没有空格 然而 这集中于XTickLabels在酒吧的中间 由于它是一个直方图 我希望数值位于每个条形之间的线上 以便它可以直观地指示间隔 本质上 我需要将所有刻度标签移至
  • 图像堆栈的最大强度投影

    我正在尝试重新创建该功能 max array 3 来自 MatLab 它可以获取 N 个图像的 300x300px 图像堆栈 我在这里说 图像 因为我正在处理图像 实际上这只是一个大的双数组 300x300xN 并创建一个 300x300
  • 如何在Matlab中自定义轮廓线?

    我正在准备一个等高线图 我应该在其中突出显示特定级别的等高线 例如 我的轮廓线值位于 1 和 1 之间 我想突出显示与值 0 相对应的线 我尝试使用以下过程来执行此操作 M c contourf longitude latitude del
  • 在 Excel 中打印 MATLAB 图窗并调整其大小

    我在 MATLAB 中有两个带有手柄的图形hFig1 and hFig2 我想将它们打印到 Excel 中的特定单元格 单元格 E3 和 I3 并将它们重新调整为 2 英寸 x 3 英寸 我尝试过使用 AddPictures对象处理程序和使
  • Matlab:如何显示数组的“真实”值?

    我有一个在脚本中计算的向量 计算后 我将值显示到命令窗口 显示如下 finalResults 1 0e 05 0 0001 0 0 0005 0 0002 0 0001 0 0027 0 0033 0 0001 0 0000 0 0000
  • 两个 y 轴与相同的 x 轴[重复]

    这个问题在这里已经有答案了 可能的重复 在单个图中绘制 4 条曲线 具有 3 个 y 轴 https stackoverflow com questions 1719048 plotting 4 curves in a single plo
  • Matlab - 如果值包含xxx,则删除元胞数组中的行

    在 Matlab 中 如何删除包含变量字符串的元胞数组中的元胞 假设我的元胞数组是 C svnTrunk RadarLib radarlb utilities scatteredInterpolant m C svnTrunk RadarL
  • 在另一列中添加具有特定条件的一列,如 excel 的 sumif

    我有一个像这样的矩阵 A 1 2 2 3 3 4 4 5 5 6 6 8 7 9 8 5 9 4 现在我想添加第二列 条件是如果 limit 0 interval 3 且 limit limit interval 或者换句话说 当第 1 列
  • MATLAB 中的多个捕获组

    我有一个包含数字或字母的字符串a 可能紧随其后的是r or l 在 MATLAB 中 以下正则表达式返回为 gt gt regexp 10r 0 9 a l r match ans 10r 我希望10 and r分开 因为我有两个捕获组 有
  • 不等间隔时间序列的移动平均线

    我有一个证券交易所股票价格的数据集 时间 价格 但数据点之间的间隔并不相等 从 1 到 2 分钟不等 在这种情况下计算移动平均值的最佳实践是什么 如何在Matlab中实现呢 我倾向于认为 点的权重应该取决于自上一个点以来的最后时间间隔 Ma
  • 如何在 Matlab 中对数组应用低通或高通滤波器?

    有没有一种简单的方法可以将低通或高通滤波器应用于 MATLAB 中的数组 我对 MATLAB 的强大功能 或数学的复杂性 有点不知所措 需要一个简单的函数或一些指导 因为我无法从文档或网络搜索中找到答案 看着那 这filter http w
  • Matlab没有优化以下内容吗?

    我有一个很长的向量 1xrv 和一个很长的向量w1xs 和一个矩阵Arxs 它是稀疏的 但维度非常大 我期望 Matlab 对以下内容进行优化 这样我就不会遇到内存问题 A v w 但看起来 Matlab 实际上是在尝试生成完整的v w矩阵
  • 什么是 ANN 中的纪元以及它如何转换为 MATLAB 中的代码?

    我试图理解 并可视化 训练人工神经网络的时代到底是什么 我们有一个包含约 7000 个产品的训练集 其中有 10 个特征 输入 这些产品必须根据这 10 个输入分为 7 个类别 我们的 ANN 有 10 个输入 这些输入进入由 10 个神经
  • Matlab 和 Python 中的优化算法(dog-leg trust-region)

    我正在尝试使用 Matlab 和 Python 中的狗腿信赖域算法求解一组非线性方程 在Matlab中有fsolve https www mathworks com help optim ug fsolve html其中此算法是默认算法 而
  • Matlab:如何更改矩阵的存储方式?从 1x1x3 到 1x3?

    我目前有 val 1 0 7216 val 2 0 7216 val 3 0 7216 但我想要 0 7216 0 716 0 721 我可以做什么样的操作来做到这一点 The reshape函数将在这里解决问题 Arrange the e
  • matlab中类库的全局变量

    我有一些matlab声明的类 我如何声明所有类中都可见的常量 例如 这些常量可以是在所有类的方法中使用的物理常量 首先想到的是使用全局变量 还有更好的办法吗 最好在单独的文件中声明这些常量 包含常量的类是执行此操作的一种很好的干净方法 请参
  • matlab中的正则逻辑回归代码

    我正在尝试正则化 LR 在 matlab 中使用以下公式很简单 成本函数 J theta 1 m sum y i log h x i 1 y i log 1 h x i lambda 2 m sum theta j 梯度 J theta t
  • 如何在 matlab 中创建由多个 3d 图像数据数组组成的数组

    我正在阅读 15 张图片imagedata imread imagename jpg 它的大小总是320 by 320 by 3 如何将数据放入数组中 使用 for for 循环 以便在访问新数组的第一个元素时获得输入的第一个图像的 RGB

随机推荐

  • 升级SQLite数据库

    一 步骤 1 在之前的基础上添加一张Category表 在onCreate 方法中执行建CREATE CATEGORY表语句 2 然后在onUpgrade 中执行两条drop语句 发现数据库表存在 就将已经存在的表格删除 再在onCreat
  • CISSP一次通过指南(文末附福利)

    2017年12月19日 在上海黄浦区汉口路亚洲大厦17层通过了CISSP认证考试 拖拉了一年 终于成绩还算令人满意 为攒人品将自己一年多的复习心得和大家分享 希望能够帮到需要考证的朋友 本文作者 i春秋签约作家 tinyfisher 欢迎与
  • 【JavaWeb】网络原理初识

    网络原理初识 计算机网络的历史 局域网和广域网 网络组件中的重要设备 网络通信基础 基本概念 协议分层 OSI七层模型 TCP IP五层 或四层 模型 封装和分用 发送方 接收方 三层转发和二层转发 计算机网络的历史 计算机最初是为了打仗而
  • python基础之数据类型知识(1)

    注释 注解 解释 说明文字而已 特征 注释只是用于说明的文字不会影响内容本身 作用 1 用于添加说明文字 方便阅读 2 用于调试程序 排查错误 分类 单行注释 多行注释 内容 或者 内容 代码 print hello world print
  • 利用JS实现简单的todoList(记事本)效果

    目录 1 实现效果展示 2 HTML代码 3 CSS代码 4 Javascript代码 该记事本程序利用HTML CSS JavaScript前端三大框架来实现 实现了记事本的添加 已完成和删除待办事项的基本功能 下面是程序实现的全部代码
  • 交通类SCI顶级期刊排名

    大多数期刊还是在IEEE http ieeexplore ieee org 或者ScienceDirect https www sciencedirect com 上面的 如果你是学生的话 可能从你们学校的图书馆可以进到这些网站去下载论文
  • Vue js引用警告 “export ‘default‘ (imported as ‘xxx‘) was not found

    问题原因 ES6 编译器识别问题 如果在public js这样写会有警告export default imported as xxx was not found export const myMixin 解决办法 修改组件中引用js的地方
  • Linux TCP链接查看和调整

    查看Linux的TCP连接数的方法如下 统计80端口连接数 netstat nat grep i 80 wc l 统计httpd协议连接数 ps ef grep httpd wc l 统计已连接上的 状态为 established 的TCP
  • Java终止线程的三种方式

    停止一个线程通常意味着在线程处理任务完成之前停掉正在做的操作 也就是放弃当前的操作 在 Java 中有以下 3 种方法可以终止正在运行的线程 使用退出标志 使线程正常退出 也就是当 run 方法完成后线程中止 使用 stop 方法强行终止线
  • R----dplyr包介绍学习

    dplyr包 plyr包的替代者 专门面对数据框 将ddplyr转变为更易用的接口 gt 来自dplyr包的管道函数 其作用是将前一步的结果直接传参给下一步的函数 从而省略了中间的赋值步骤 可以大量减少内存中的对象 节省内存 可惜的是应用范
  • 【理解springboot自动装配原理】

    理解springboot自动装配原理 最近读了小马哥 mercyblitz Springboot编程思想 核心篇 有了一些心得和感悟 分享给大家 1 官网介绍了激活自动装配的方法 文档提到激活自动化装配的注解 EnableAutoConfi
  • DAS、SAN、NAS存储连接方式详解

    1 直接访问存储DAS Direct Access Storage DAS将存储设备通过SCSI接口或光纤通道直接连接到一台计算机上 代表为磁盘阵列柜RAID 磁盘阵列柜是由多个硬盘按照不同的方式组合成一个大型的磁盘组 利用个别磁盘提供数据
  • Spring的xml文档配置

    1基于XML的注解配置
  • webpack 收集依赖、打包输出精简实现

    文章目录 安装babel插件 读取文件信息 获取当前js文件的依赖关系 广度遍历获取所有依赖图 生成浏览器可执行代码 安装babel插件 由于ES6转ES5中需要用到babel 所以要用到一下插件 npm install babel cor
  • MATLAB-DL6

    MATLAB DL6 步骤 交互式迁移貌似2020a才有 学会用analyze network 命令行式 迁移学习 冻结 freezeWeights createLgraphUsingConnections 数据增强 学习参数 函数大杂烩
  • SQL求解用户连续登录天数

    数据分析面试过程中 一般都逃不掉对SQL的考察 可能是笔试的形式 也可能是面试过程中面试官当场提问 当场在纸上写出 或者简单说一下逻辑 今天 就来分享一道面试中常常被问到的一类SQL问题 连续问题 无论是什么样的场景 只要是 连续 问题 那
  • TCP/IP协议之服务器端——华清远见

    咳咳咳 今天也是认真学习的一天 一 TCP IP协议是什么 TCP协议是一种以固连线为基础的协议 它提供两台计算机之间可靠的数据传送 TCP可以保证从一端数据传至连接的另一端时 数据能够确实送达 TCP协议适合可靠性比较高的场合 就像拨打电
  • 队列的几种实现方式

    队列简介 队列是一种特殊的线性表 特殊之处在于它只允许在表的前端 front 进行删除操作 而在表的后端 rear 进行插入操作 和栈一样 队列是一种操作受限制的线性表 进行插入操作的端称为队尾 进行删除操作的端称为队头 队列是一种最常用的
  • Android10(Q)系统源码编译

    Android10系统编译 一 硬件环境 二 软件环境 三 开始编译 四 遇到问题 一 硬件环境 在ubuntu18 04系统中下载编译android10 Q 源码需要如下条件 1 至少4G内存 小于4G内存编译源码期间的等待将会是很痛苦的
  • 【数学建模】数据处理问题

    一 插值与拟合 常用于数据的补全以及趋势分析 1 插值 总的思想 就是利用函数f x 若干已知点的函数值 求出适当的特定函数g x 这样f x 其他未知点上的值 就可以用g x 在这一点的值来近似 这种通过已知求未知的方法称为 插值 插值方