数学建模(一)

美赛:建模+编程+写作


层次分析法

层次分析法 AHP讲解

  • 层次分析法主要解决评价类问题——评价类问题用打分解决

权重——权重和为1

表格:指标和指标权重,方案n

关键词:评价指标,评价体系

问题:1. 评价的目标 2. 可选方案 3. 评价指标

问题解决

背景材料搜集:知网,百度学术,谷歌学术,万方,虫部落-快搜(清风推荐);头脑风暴;

分而治之思想:两个两个比较,排列组合问题


矩阵
正互反矩阵(判断矩阵)
一致矩阵:各行(各列)之间成倍数关系的正互反矩阵


一致性检验一致性检验的步骤(计算公式)

1
2
3
1. 一致性指标CI
2. 查找对应的平均随机一致性指标RI
3. 计算一致性比例CR

权重

1
2
3
4
5
1. 一致矩阵计算权重:归一化处理
2. 判断矩阵计算权重:(原理和程序)
方法一:算术平均法求权重;使用每一列的数据来计算权重,得到n组权重,然后算术平均,得到每个元素的权重
方法二:几何平均法求权重;
(重要)方法三:特征值法求求权重;求矩阵的最大特征值以及对应的特征向量;对求出的特征向量进行归一化即可得到权重

  • 层次分析法基本思路和实现
  1. 分析系统中各因素之间的关系,建立系统的递阶层次结构,目标层,准则层,方案层;
    清风推荐作图软件,亿图,Visio,processon
  2. 构造判断矩阵;
    判断矩阵的数据可以自己选择,但所要结合实际,有一定的准确性;
    构造判断矩阵的时候尽量不要构造一致矩阵,构造一个判断矩阵,进行一致性检验,若通不过,继续修改判断矩阵,直到能够通过一致性检验
  3. 由判断矩阵计算被比较元素对于该准则的相对权重,并进行一致性检验
    三种计算权重的方法:三种方法都要使用
    一致性检验:三步走
    一致性检验不通过,需要修改判断矩阵
  4. 计算各层元素对系统目标和合成权重,并进行排序
    使用excel计算

  • 层次分析法的局限性
  1. 决策层不能太多
  2. 决策层中指标的数值已知,层次分析法不具有客观性!

模型拓展部分

  1. 准则层可以有多个;
  2. 准则层的每个元素不一定是对应着方案层的所有元素,可能只是一般部分的元素;
  3. 准则层中的一个元素之对应着他自己的几个方案,反过来讲就是每个方案都只受一个决策层元素影1.响

代码讲解部分

  • matlab基本使用
  1. 分号

  2. 注释
    多行注释:Ctrl+R
    多行取消住宿:Ctrl+T

  3. clear:清除工作区的变量

  4. clc:清空命令行
    clear;clc——“初始化”

  5. disp()输出函数

  6. 向量或矩阵同一行元素用“,”或“ ”隔开
    向量或矩阵的不同行元素用“;”隔开

  7. 字符串合并
    strcat(s1,s2,s3);
    [‘hello’,’world’,’!’]
    [‘hello’ ‘world’ ‘!’]

  8. num2str():数字转换成字符串

  9. input()输入函数
    A=input(‘请输入A的值’):A可以是数,向量,矩阵,字符串

  10. sum()函数

  • 向量(行向量或在列向量):直接求和
  • 矩阵:根据行和列的方向作区分
    • sum(A):按照列求和,得出每一列的和,结果为行向量;
    • sum(A,1):与sum(A)等价;
    • sum(A,2):按照行求和,得出每一行的和,结果为列向量;维度dim,dim=1(默认),表示按照列;dim=2,表示按照行;
    • sum(A(:))=sum(sum(A)):对整个矩阵进行求和;
    • A::将矩阵变成列向量;
  1. 矩阵元素的提取
  • 指定某一行某一列的一个元素:A(1,2)
  • 指定某一行的全部元素:A(1,:),“:”表示取所有元素
  • 指定某一列的全部元素:A(:,1)
  • A([2,5],:) % 只取第二行和第五行(一共2行)
    A(2:5,:) % 取第二行到第五行(一共4行)
    A(2:2:5,:) % 取第二行和第四行 (从2开始,每次递增2个单位,到5结束)
    1:3:10
    A(2:end,:) % 取第二行到最后一行
    A(2:end-1,:) % 取第二行到倒数第二行
  • 全部元素(按列拼接的,最终输出的是一个列向量):A(:)
  1. size(),返回值为行向量,[矩阵的行数,矩阵的列数]
  • size(A,1),返回行数
  • size(A,2),返回列数
  • [r,c] = size(A)
  1. repmat()
    B = repmat(A,m,n):将矩阵A复制m×n块,即把A作为B的元素,B由m×n个A平铺而成。

  2. 矩阵运算

  • inv() 逆矩阵:参考链接1,参考链接2

  • ”号和“/”号代表矩阵之间的乘法与除法(A/B = Ainv(B))

  • 两个形状相同的矩阵对应元素之间的乘除法需要使用“.*”和“./”

  • 乘方:A.^2;A.*A

  1. eig(A),特征值和特征向量
    [V,D]=eig(A)
    求矩阵A的全部特征值,构成对角阵D,并求A的特征向量构成V的列向量。(V的每一列都是D中与之相同列的特征值的特征向量)

  2. find()
    https://www.cnblogs.com/anzhiwu815/p/5907033.html
    ind = find(A):返回向量或者矩阵中不为零的元素的位置索引

  3. 判断符号

  4. if() 判断语句


  • 用程序实现层次分析法
  1. 矩阵的输入;
  2. 用三种方法求得权重;
  3. 对判断矩阵进行一致性检验;
  4. 在excel中,根据程序算出的权重列表,计算得出最优解。

不理解之处


TOPSIS

TOPSIS 模型讲解

逼近理想解排序法,优劣解距离法
构造计算评分(公式)

  1. 比较对象要大于两个;
  2. 比较的指标是多方面的;
  3. 指标有没有最大值和最小值。

极大型指标(效益型指标)
极小型指标(成本型指标)

统一指标类型:
将所有的指标转换成极大型称为指标正向化

标准化处理,消除量纲的影响

TOPSIS步骤

  1. 将原始矩阵正向化;
    四种指标:极大型指标,极小型指标,中间型指标,区间型指标;
    极小型->极大型指标
1
2
- max-x
- 1/x,(所有的元素都是正数)

中间型->极大型指标

区间型->极大型指标

  1. 正向化矩阵标准化

  2. 计算得分并归一化

模型拓展

评价指标的权重:带权重的TOPSIS
用层次分析法给这m个评价指标确定权重
层次分析法具有主观性,为了修正TOPSIS,我们使用熵权法;

代码部分

  1. load
    加载mat数据文件
  2. 判断是否需要正向化处理
    需要正向化则直接调用正向化的函数(自己声明的函数)
    函数的输出值就是已经正向化的矩阵
    自定义函数,需要放到一个m文件中
    1
    2
    function [输出变量] = 函数名称(输入变量)
    end
  3. 对正向化的矩阵进行标准化
  4. 计算与最大值的距离和最小值的距离,并算出得分
    sort()函数
    向量:sort(A):按照升序排列,sort(A,’descend’):按照降序排列
    矩阵:sort(A)与sort(A,1)等价:按照列排序,sort(A,2):按照行排序;
    magic():幻方矩阵,矩阵的每一列和相等;

数据可视化:excel作图:清风推荐条形图

基于熵权法对TOPSIS模型的修正

熵权法是一种客观赋权的方法
依据的原理:指标的变异程度(方差)越小,所反映的信息也就越少,其对应的权重也应该越低;

信息量的度量——概率
自信息
信息熵

熵权法计算步骤

  1. 判断输入的矩阵中是否存在负数,如果有则要重新标准化到非负区间
    矩阵正向化处理
    矩阵标准化
  2. 计算第j项指标下的第i个样本所占的比重,并将其看作相对熵计算中用到的概率
  3. 计算每个指标的信息熵,
    并计算信息效用值,
    并归一化得到每个指标的熵权

熵权法的代码


灰色关联分析(美赛不用)

模型基本介绍

系统分析和综合评价

系统分析,分析自变量对结果影响大小

数理统计:回归分析,方差分析,主成分分析

灰色关联分析,对数据量的大小和样本的规律性没有要求

灰色关联分析的思想是根据序列曲线几何形状的相似程度来判断其联系是否紧密。曲线越接,相应序列之间的关联度就越大,反之就越小;

应用一:进行系统分析

  1. 画统计图(用Excel),并根据图表做几条简单的分析

  2. 确定分析数列

    1
    2
    母序列(参考数列,母指标):反映系统行为的数据序列->类似于因变量Y(只有一个);
    子序列(比较数列,子指标):影响系统行为的因素所组成的数据序列->类似于自变量X(可以有多个);
  3. 对变量进行预处理(目的:去量纲,缩小变量范围简化计算)
    对母序列和子序列中的每个指标进行预处理:先求出每个指标的均值,在用该指标中的每个元素都除以其均值;

  4. 计算子序列中各个指标与母系列的关联系数(小数点后四位数字)
    两极最小差,两极最大差

​ 计算关联系数

  1. 灰色关联度

  2. 通过比较三那个子序列和母序列的关联度可以得到结论:
    找到灰色关联度最大的那个指标,该子指标对母指标的影响最大;

讨论:

美赛不要用灰色关联分析,美赛用传统的数理分析方法(回归分析,方差分析,主成分分析)

应用二:用于综合评价

(类似于TOPSIS联合熵权法)


模糊综合评价

模糊综合评价概述

  1. 数学归纳法和秃子悖论
    量变引起质变数学上就算模糊的概念

  2. 数学中研究的量的划分

1
2
3
4
5
6
7

- 确定性
- 经典数学(几何,代数)
- 不确定性
- 随机性(概率论,随机过程)
- 灰性(灰色系统)
- 模糊性(模糊数学)
  1. 生活存在的模糊性
    确定性:性别,年龄,身高……
    模糊性:高,帅,白,年轻……

  2. 模糊数学

经典集合和模糊集合的基本概念

  1. 经典集合与特征函数
  • 论域:我们感兴趣的一些对象集合
  1. 模糊集合和隶属函数
  • 隶属函数(分段函数),隶属函数不唯一
  • 隶属度
  • 模糊集合的三种表示方法
1
2
3
4
5
论域U,模糊集合A,隶属度A(xi)

1. 扎德表示法
2. 序偶表示法
3. 向量表示法
  • 模糊集合的分类
    偏小型——隶属函数递减
    中间型——隶属函数先增大后减小
    偏大型——隶属函数递增

隶属函数的三种确定方法

  1. 模糊统计法(比赛中用的少,因为需要发问卷,实际研究中应用更多)
    原理:找到多个人对同一个模糊概念进行描述,用隶属频率去定义隶属度

  2. 借助已有的客观尺度(需要有合适的指标,并能收集到数据)

  • 论域
  • 模糊集
  • 隶属度(指标介于0-1至今(归一化处理))
  1. 指派法(根据问题的性质直接套用某些分布作为隶属函数,主观性强)
    博客网站链接:(1条消息) 模糊数学模型(一): 隶属函数、模糊集合的表示方法、模糊关系、模糊矩阵_冷月无声的博客-CSDN博客_常用的模糊函数分布表
## 模糊综合评价应用
  1. 概述
1
2
3
4
5
把论域中的对象对应评语集中一个指定的评语
将方案作为评语集并选择一个最优的方案

模糊综合评价中的三个集合:因素集合(评价指标集);评语集合(评价的结果);权重集(指标的权重)

  1. 一级模糊综合评价模型
    在指标个数较少的考核中,运用一级模糊综合评判,而在问题较为复杂,指标较多时,运用多层次模糊综合评价
    步骤:

  2. 确定因素集。评价角度

  3. 确定评语集。评价值 评价等级

  4. 确定各因素的权重。使用Delphi法(专家调查法):征求专意见后,再反馈给专家,再次征求意见,直到意见的统一;其他方法:无数据:层次分析法;有数据:熵权法。

  5. 确定模糊综合判断矩阵(关键)。

  6. 综合评判。模糊变换。

  7. 多级模糊综合评价模型
    因素中元素较多,我们可以对其进行归类归类后,可以简化我们的计算。
    确定权重的时候,指标越少,越容易判断权重

Excel绘制统计图

美赛:英文写作和作图比建模更重要
一般不直接在图中加标题,把图的标题放在论文中

饼图

  1. 边框无线条
  2. 类别太多:不用饼图而是柱状图
  3. 类别太少:不画饼图
  4. 划分的类别不是全集:加一个“其他”类别
  5. 先排序后画饼图
  6. 复合饼图

柱状图和条形图

  1. 只有一列数据:柱状图
  2. 有两列数据:柱状图
  3. 三类柱状图:普通柱状图,堆积柱状图,百分比柱状图
  4. 换一个角度画图——切换行和列,先排序后作图
  5. 条形图(横折的柱状图):类别特别多的时候,如果要加入数据标签,则应该使用条形图
  6. 双向条形图
  7. 用柱状图可视化回归结果

直方图

  1. 频数分布直方图

  2. 组距对直方图的影响

  3. 频率分布直方图:先用excel计算出频率

折线图

  1. 超长时间序列图
  2. 双坐标轴在折线图
  3. 柱型图顶端的折线图

散点图

  1. 普通散点图
  2. 带标示的散点图

箱线图

插值算法

数据很少的时候,不足以支撑分析的进行,这时候就需要使用数学的方法,模拟产生一些新的但又比较靠谱的值来满足需求。

一维插值问题

  1. 多相式插值:
    拉格朗日插值法
    龙格现象:高次插值会产生龙格现象,即在两端处波动极大,产生明显的震荡。

  2. 分段插值:
    分段线性插值法
    分段二次插值法(分段抛物插值)

  3. 牛顿插值法
    差商
    也存在龙格现象

  4. 埃尔米特插值原理
    分段三次埃尔米特插值
    matab函数:p=pchip(x,y,new_x)

    1
    2
    3
    x:已知的样本点的横坐标;
    y:已知的样本点的纵坐标;
    new_x:要插入处对应的横坐标;
  5. plot()函数

  6. 三次样条插值
    spline(x,y.new_x)

n维数据的插值

插值算法可以用于预测

建模实例

两组数据,第一组数据的时间是:第一周,第二周,第三周……
第二组的数据的时间是:第一周,第三周,第五周……
因此,需要先把第二组的数据使用插值算法扩展到第一周,第二周,第三周……

subplot()函数

拟合算法

拟合算法与插值算法的区别:与插值问题不同,在拟合问题中不需要曲线一定经过给定的点。拟合问题的目标是寻找一个函数(曲线),使得该曲线在某种准则下与所有的数据点最为接近,即曲线拟合的最好(最小化损失函数)。

插值算法:找到的函数经过所有的样本点
拟合算法:误差尽量小

拟合算法讲解

  1. 确定拟合曲线
    最小二乘法

使用matlab求解最小二乘法

1
2
3
4
5
6
7
8
hold on 继续在之前的图形上面来画图形
gird on 显示网格线

% 匿名函数的基本用法。
% handle = @(arglist) anonymous_function
% 其中handle为调用匿名函数时使用的名字。
% arglist为匿名函数的输入参数,可以是一个,也可以是多个,用逗号分隔。
% anonymous_function为匿名函数的表达式。
  1. 评判拟合的好坏
    拟合优度(可决系数)
    量纲会影响SSE
1
2
3
拟合函数要简单
R^2只能用于拟合函数是线性函数的时,拟合结果的评价;
如果有一个线性函数和一个其他函数(例如复杂指数函数),二者比较拟合的好坏时候,直接看SSE即可
  1. 线性函数
    在函数中,参数仅以一次方出现,且不能乘以或除以其他任何参数,并且不能出现参数的复合函数形式

  2. matlab计算拟合优度

曲线拟合工具箱

Curve Fitting Tool

相关性分析

相关系数

皮尔逊相关系数
斯皮尔曼等级相关系数
相关系数可以用来衡量两个变量之间的相关性的大小,根据数据满足的不同条件,我们要选择不同的相关系数进行计算和分析。

总体:所要考察对象的全部的个体叫做总体
样本:从总体中所抽取的一部分个体叫做总体的一个样本。

使用样本均值,样本标准差来估计总体的均值和总体的标准差

  1. 总体皮尔逊相关系数
    总体均值与协方差

皮尔逊相关系数可以看成是剔除了两个变量量纲影响,即将x和y标准化后的协方差

  1. 样本皮尔逊相关系数

  2. 皮尔逊相关系数的理解误区
    相关系数只是用来衡量两个便利线性相程度的指标;
    也就是说,你必须确定这两个变量是线性相关的,然后这个相关系数才能告诉你他两个相关程度如何

  3. 需要注意的点

  • 非线性相关也会导致线性相关系数很大
  • 离群点对相关系数的影响很大
  • 如果两个变量的相关系数很大,也不能说明二者相关,可能是受到异常值的影响
  • 相关系数计算结果为0,只能说不是线性相关,不能说不相关
  1. 总结
  • 如果两个变量本身就是线性的关系,那么皮尔逊相关系数绝对值大的就是相关性强,小的就是相关性弱
  • 在不确定两个变量是什么关系的情况下,即使算出皮尔逊相关系数,发现很大,也不能说明两个变量线性相关,甚至不能说明他们相关,我们一定要画出散点图来看才行
  1. 相关性大小

  2. 例题

  • 计算基本统计量,进行描述性统计
  • 法一:使用matlab

法二:使用excel

法三:使用spss
分析-描述统计-描述

  • 画出散点图
    使用excel或SPSS,推荐使用SPSS(图形 - 旧对话框 - 散点图/点图 - 矩阵散点图)

  • 计算皮尔逊相关系数
    matlab:corrcoef()函数

在excel中对相关系数表格进行美化

  • 设置好基本格式
  • 开始-条件格式-色阶
  • 开始-条件格式-色阶-管理规则,梗概最小值,中间值,最大值

假设检验

原假设
置信水平:相信原假设成立的概论Beta
临界值
显著性水平:我们有多大的可能拒绝原假设(Alpha=1-Beta)(犯第一类错误的概率:原假设是正确的我们却认为它错了)

假设检验的步骤

  1. 确定原假设(H_0)和备择假设
  2. 在原假设成立的条件下,根据要检验的量构造一个分布
    标准正态分布,t分布,F分布,卡方分布
  3. 画出这个分布的概率密度图
  4. 给一个置信水平Beta(相信H_0成立的概率)

概率密度函数pdf-f(x)
离散型随机变量
连续型随机变量

累计密度函数cdf-F(x)

皮尔逊相关系数假设检验

p值判断法

皮尔逊相关系数假设检验的条件

  1. 实验数据通常假设是成对的来自于正态分布的总体。
  2. 实验数据之间的差距不能太大。(皮尔逊相关性系数受异常值的影响比较大)
  3. 每组样本之间是独立抽样的。

对数据进行正态分布检验

  1. 正态分布JB检验(大样本,n>30)
    偏度和峰度

matlab:jbtest(x,alpha)
x:不能是矩阵,只能是列向量

  1. Shapiro-wilk检验(小样本,3<=n<=50)
    夏皮洛-威尔克检验
    matlab没有提供相应函数,只能使用SPSS

matlab没有提供相应函数,只能使用SPSS

  1. Q-Q图(数要求据量超级大)——不推荐使用

matlab:qqplot(x)

斯皮尔曼相关系数

两组数的等级差
一个数的等级

斯皮尔曼相关系数使用matlab计算

小样本:
斯皮尔曼等级的相关系数的临界值
样本相关系数r必须大于等于表格中的临界值,才能得出显著的结论

大样本:

两种相关系数的比较

正态分布均值的假设检验

图论

图的概念

图(Graph)
图的顶点集V
图的边集E

图的绘制
法一:https://csacademy.com/app/graph_editor/

法二:matlab
无权重

1
2
3
4
s1 = [1,2,3,4];
t1 = [2,3,1,1];
G1 = graph(s1, t1);
plot(G1)
1
2
% 下面的命令是在画图后不显示坐标
set( gca, 'XTick', [], 'YTick', [] );

有权重

1
2
3
4
5
s = [1,2,3,4];
t = [2,3,1,1];
w = [3,8,9,2];
G = graph(s, t, w);
plot(G)

有向图:digraph()

无向图的权重邻接矩阵

有向图的权重邻接矩阵

迪杰斯特拉算法

https://www.bilibili.com/video/BV1q4411M7r9

迪杰斯特拉算法不能处理带有的权重是负数

贝尔曼-福特算法

改进迪杰斯特拉算法

matlab常用函数

shortpath()

高亮最短路径

1
2
myplot = plot(G, 'EdgeLabel', G.Edges.Weight, 'linewidth', 2);  %首先将图赋给一个变量
highlight(myplot, P, 'EdgeColor', 'r') %对这个变量即我们刚刚绘制的图形进行高亮处理(给边加上r红色)

distances()

返回任意两点的距离矩阵

nearest

找出给定范围内的所有的点

弗洛伊德算法

弗洛伊德算法与迪杰斯特算法或贝尔曼福特算法相比,能够一次性求出任意两点之间的最短路径,后两种算法运行一次只能计算出给定的起点和终点之间的最短路径。
https://www.bilibili.com/video/BV1q4411M7r9
三个循环

1
2
3
4
5
6
7
8
9
10
11
12
% 下面开始三个循环
for k=1:n % 中间节点k从1- n 循环
for i=1:n % 起始节点i从1- n 循环
for j=1:n % 终点节点j从1-n 循环
if dist(i,j)>dist(i,k)+dist(k,j) % 如果i,j两个节点间的最短距离大于i和k的最短距离+k和j的最短距离
dist(i,j)=dist(i,k)+dist(k,j); % 那么我们就令这两个较短的距离之和取代i,j两点之间的最短距离
path(i,j)=path(i,k); % 起点为i,终点为j的两个节点之间的最短路径要经过的节点更新为path(i,k)
% 注意,上面一行语句不能写成path(i,j) = k; 这是网上很多地方都容易犯的错误,在PPT11页中会告诉大家为什么不能这么写
end
end
end
end

线性回归分析(没看懂)

常见的回归:线性回归,0-1回归,定序回归,计数回归,生存回归

回归概论

回归的三个关键词
相关性,X,Y

  • 相关性

    1
    2
    区分相关性和因果性
    通过回归分析,判断相关性
  • Y

    1
    Y,因变量
  • X

    1
    X,自变量

回归分析的使命

1
2
3
4
5
6
1. 回归分析要去识别并判断:哪些变量是同Y真的相关,哪些不是。
2. 这些有用的X变量同Y的相关关系是正的还是负的;
3. 赋予不同X不同的权重,也就是不同的回归系数,进而我们可以知道不同变量之间的相对重要性。

简单来说就是
识别重要变量,判断相关性的方向,估计权重(回归系数)

回归分析的分类

数据的分类以及数据的来源

  1. 横截面数据:在某一时间点收集的不同对象的数据
  2. 时间序列数据:对同一对象在不同时间连续观察所取得的数据
  3. 面板数据:横截面数据与时间序列数据综合起来的一种数据资源

资料的获取

一元线性回归

一元线性函数拟合

一元线性回归模型

遗漏变量导致的内生性
如果满足误差项u和所有的自变量x均不相关,则称该回归模型具有外生性

扰动性:包含了所有与y相关,但未添加到回归模型中的变量
如果这些变量和我们已经添加的自变量相关,则存在内生性

内生性的蒙特卡洛模拟

核心解释变量:我们最感兴趣的变量,因此我们特别希望得到对其系数的一致估计。(当样本容量无限增大时,收敛于待估计参数的真值)
控制变量:我们可能对与这些变量本身并无太大兴趣;而之所以把他们放入到回归方程中,只要是为了“控制住”那些被解释变量有影响的遗漏因素

四种模型的解释

取对数:取对数意味着原被解释变量对解释变量的弹性,即百分比的变化而不是数值的变化

特殊的自变量:虚拟变量X
自变量中的定性变量:性别,地域等

交互效应

回归的应用

使用软件Stata

stata中的计算结果不要直接截图,而是复制到excel表格中,并在excel中调整为三线表,然后粘贴到论文中

1
2
3
4
5
6
7
8
9
10
- 定量数据
summarize 变量1 变量2……

- 定性数据
tabulate 变量名
tabulate 变量名,gen(A):gen(A)表示虚拟变量

- 回归
regress y x1 x2 ……
(默认使用的OLS:普通最小二乘估计法)

excel数据透视表:对数据进行交互分析

论文中的问题

  • 数据不要归一化

异方差,多重共线性,逐步回归

分类模型

二分类模型和多分类模型
逻辑回归,Fisher线性判别分析

二元逻辑分类

  1. 使用SPSS对数据进行预处理
    转换-创建虚变量

  2. 建模
    线性概率模型——LPM
    直接用原来的回归模型进行回归。
    内生性问题:看扰动项是否与自变量相关

1
2
1. 内生性问题归导致回归系数估计出来不一致且有偏
2. 预测值y_hat是一个概率,出现y_hat大于1或者y_hat小于0的时候,应该做出合理的处理方法。

连接函数,将解释变量x和被解释变量y连接起来,我们只要保证连接函数是定义在[0,1]上的函数,就能保证y_hat符合概率的要求。

连接函数的取法

1
2
1. 连接函数取为标准正态分布的累计密度函数cdf——problt回归
2. 连接函数取sigmoid函数——logistic回归(使用的更多)

求解方法——因为是非线性模型,使用极大似然估计

  1. 使用SPSS求解逻辑回归
    分析-回归-二元Logistic

因变量:虚变量
协变量:自变量x

分类:协变量->分类协变量,定性变量
保存:概论,组成员
选项:步进概率

  1. 逐步回归的设置
    分析-回归-二元Logistic
    方法:向前,向后
    选项:步进,除去

  2. 假如自变量有分类变量怎么办

    1
    2
    3
    两种解决方法
    - 先创建虚拟变量,然后任意删除一列以排除完全多重共线性的影响;
    - 直接点击分类,然后定义分类协变量,SPSS会自动帮我们生成;(推荐方法)
  3. 解决回归准确率低的问题
    可在logistic回归模型中加入平方项,交互项。
    回归结果:
    虽然预测能力提高了,但容易出现过拟合的现象。

  4. 如何确定合适的模型

    1
    2
    3
    4
    把数据分为分为训练组和测试组,用训练组的世界来估计出模型,在用测试在的数据进行测试。(训练组和测试组为2:8)
    然后比较设置的不同自变量后的模型对于测试组的预测效果。

    (注意:为了消除偶然性的影响,可以对上述步骤多重复几次,最终对每个模型求一个平均的准确率,这个步骤称为交叉验证)

Fisher线性判别分析(LDA)

  1. 超平面
    用超平面将两类样本点分割开

  2. SPSS操作
    分析-分类-判别式

定义范围:0-1
统计:费希尔,未标准化
分类:摘要表
保存:预测组成员,组成员概率

多分类问题

  1. Fisher线性判别分析解决多分类问题
1
2
3
4
5
6
分析-分类-判别式

定义范围:1-多
统计:费希尔,未标准化
分类:摘要表
保存:预测组成员,组成员概率
  1. 逻辑回归解决多分类问题
    将Sigmoid函数推广为Softmax函数就可以将逻辑回归应用到多分类问题
1
2
3
4
5
6
分析-回归-多元逻辑回归

保存:估算响应概论,预测类别

过拟合问题——使用交叉验证解决,测试组和训练组

聚类模型

聚类是将样本划分为由类似的对象组成的多个类的过程。
分类是已知类别的,聚类是未知的。

K-means聚类算法

算法流程

1
2
3
4
5
6
1. 指定需划分的簇的个数K值(类的个数);
2. 随机地选择K个数据对象作为初始的聚类中心(不一定是我们的样本点);
3. 计算其余的各个数据对象到这K个初始聚类中心的距离,把数据对象规划为到距离它最近的那个中心所处的簇类中;
4. 调整新类并且重新计算出新类的中心;
5. 循环步骤3和步骤4,看中心是否收敛(不变),如果收敛或达到迭代次数则停止循环;
6. 结束。

聚类的结果与聚类中心有关

用流程图代替算法的文字描述能有效避免查重

K-means算法的评价

  • 优点
  1. 算法简单,快速;
  2. 对处理大数据集,该算法三相对高效的。
  • 缺点
  1. 要求用户必须实现给出要生生成的簇的数目K;
  2. 对初值敏感(初始聚类中心);
  3. 对于孤立点数据敏感

K-means++算法

选择初始聚类中心的基本原则是:初始的聚类中心之间互相距离要尽可能的远
K-means++可以解决K-means算法的缺点2和3。

1
2
3
1. 随机选择一个样本作为数据中心;
2. 计算每个样本与当前已有聚类中心的最短距离(即与最近一个聚类中心的距离),这个值越大,表示被选取作为聚类中心的概率较大;最后用轮盘法(依据概率大小进行抽选)选出下一个聚类中心;
3. 重复步骤2,直到选出K个聚类中心。选出初始点后,就继续使用标准额K-means算法了。

SPSS操作

分析-分类-K均值聚类

K-means算法的讨论

  1. 聚类的个数怎么选择?——根据个人经验与感觉

  2. 数据的量纲不一致怎么解决?——标准化(将每个数据先减去其均值再除以标准差)

  • SPSS软件能自动计算
    分析-描述统计-描述,将标准化值另存为变量

系统(层次)聚类

系统聚类的合并算法通过两类数据点间的距离,对最为接近的两类数据点进行合并,并反复迭代这一过程,直到将所有数据点合并成一类,并生成聚类谱系图。

样品与样品之间的常用距离

绝对值距离:网状道路
欧式距离:不使用绝对值距离则一般就使用欧式距离。

类与类之间的距离


聚类方法

  1. 最短距离法

  2. 组间平均连接法(使用得更多)

  3. 组内平均连接法(使用得更多)

  4. 重心法

系统聚类的过程

聚类分析需要注意的问题

  1. 对于一个实际问题根据分类的目的来选取指标,指标选取的不同分类结果一般也不同;
  2. 样品间距离定义的方式不同,聚类结果一般也不同;
  3. 聚类方法的不同,聚类结果一般也不同(尤其是样品特别多的时候)。最好能通过各种方法找出其中的公性。
  4. 要注意指标的量纲,量纲差别太大会导致聚类结果不合理;
  5. 聚类分析的结果可能不令人满意,因为i我们所作的是一个数学的处理,对于结果我们要找到一个合理的解释。

系统(层次)聚类算法流程

  1. 将每个对象看作一类,计算两两之间的最小距离;
  2. 将距离最小的两个类合并成一个新类;
  3. 重新计算新类与所有类之间的距离;
  4. 重复2和3,直到所有类最后合成一类;
  5. 结束
    (自己绘制出流程图——避免查重)

SPSS操作步骤
分析-分类-系统聚类

图:谱系图

肘部法则——确定最优的K值

确定K之后保存聚类结果并画图
只能有两个或三个变量,绘制二维或三维图

DBSCAN算法

具有噪声的基于密度的聚类算法
聚类前不需要预先指定聚类的个数,生成的簇的个数不定

DBCAN算法将数据点分为三类
核心点
边界点
噪声点

使用matlab对算法进行实现

只有两个指标,且做出的散点图有明显的密度差距,这时候用DBSCAN算法,否则使用另外的聚类算法。

时间序列分析

时间序列也称为动态序列,是指将某种现象的指标数值按照时间顺序排列而成的数值序列。
时间序列大致可以分为三大部分:描述过去,分析规律,预测未来
三种模型:季节分解,指数平滑,ARIMA模型
主要使用SPSS软件

基本定义

时间序列数据:对同一对象在不同时间连续观察所得到的数据。
时间序列的组成要素:时间要素,数值要素

时间序列的分类:时期时间序列,时点时间序列
时期序列:数值要素反映现象在一定时期内发展的结果;
时点序列:数值要素反映现象在一定时点上的瞬间水平;

时期序列可加,时点序列不可加

时间序列分解

一般情况下,时间序列的数值变化规律有四种:长期变动趋势,季节变动规律,周期变动规律,不规则变动(随机扰动项)。

  • 长期趋势T:人均收入,新生儿的死亡率;
  • 季节趋势S:周期性:以月份,季度,周为单位
    清风推荐网站:百度指数https://index.baidu.com/v2/index.html#/
  • 循环变动C:以若干年为单位:商业周期,经济周期
  • 不规则变动I:扰动项

时间序列分解的结果可能是四种变化规律都有,也可能是只有其中几个;
四种变动与指标数值变动的关系可能是叠加关系,也可能三乘积关系

叠加模型和乘积模型

1
2
如果四种变动之间是相互独立的关系,那么叠加模型表示为:Y=T+S+C+I,
如果四种变动之间存在相互影响关系,那么使用乘积模型:Y=T*S*C*I

SPSS软件使用步骤

  1. SPSS处理时间序列中的缺失值
  • 缺失值发生在时间序列的开头或者结尾,可采用直接删除的方法;
  • 缺失值发生在序列的中间位置,则不能删除,可采用替换缺失值的方法。

替换缺失值的五种方法:

1
2
3
4
5
- 序列平均值法:用整个序列的平均数代替缺失值;
- 邻近点的平均值:用邻近若干个点的平均数来代替缺失值(默认为两个点)
- 邻近点的中位数:
- 线性插值:用邻近两个点的平均数来代替缺失值
- 邻近点的线性趋势:将时期数作为x,时间序列值作为y进行回归,求缺失点的预测值。

SPSS:转换-替换缺失值

  1. SPSS软件定义时间变量
    数据-定义日期和时间

  2. 时间序列图
    分析-时间序列预测-序列图

  3. 季节性分解
    分析-时间序列预测-季节性分解

SPSS statastic 25 没有这个选项??

时间序列分析的步骤

值数平滑方法

专家建模器

Simple模型

名称:简单指数平滑法
适用条件:不含趋势和季节成分
与之类似的ARIMA模型:ARIMA(0,1,1)

只能预测一期的值,这是由于公式所决定的

线性趋势模型

名称:霍特线性趋势模型
使用条件:线性趋势,不含季节成分
与之类似的ARIMA模型:ARIMA(0,2,2)

阻尼趋势模型

名称:阻尼趋势模型
使用条件:线性趋势逐渐减弱且不含季节成分
与之类似的ARIMA模型:ARIMA(1,1,2)

简单季节性模型

名称:简单季节性
适用条件:还有稳定的季节成分,不含趋势
与之类似的ARIMA模型:SARIMA(0,1,1)*(0,1,1)_s

温特加法模型

名称:温特加法模型
适用条件:含有线性趋势和稳定的季节成分
与之类似的ARIMA模型:SARIMA(0,1,0)*(0,1,1)_s

温特乘法模型

名称:温特加法模型
适用条件:含有线性趋势和不稳定的季节成分
与之类似的ARIMA模型:不存在

ARIMA模型

差分自回归移动评价模型
ARIMA(p,d,q)

SARIMA模型

季节性ARIMA模型

实例

建模思路

预测模型

灰色预测模型
神经网络在数据预测中的应用

灰色预测模型

1
2
3
白色系统:系统的信息是完全明确的
灰色系统:系统的部分信息已知,部分信息未知
黑色系统:系统的内部信息是未知的
  1. GM(1,1)模型:Grey Model
    GM(1,1)是使用原始的离散非负数据列,通过一次累加生成削弱随机性的较有规律新的离散数据列,然后通过建立微分方程,得到在离散点处的解经过累计生成的原始数据的近似估计值,从而预测原始数据的后续发展
    GM(1,1),前一个1表示1阶微分方程,后一个1表示只有一个变量

准指数规律检验

1
- 数据具有准指数规律是使用灰色系统建模的理论基础

GM(1,1)模型的评价
检验模型对原始数据的拟合程度(对原始数据还原的效果)。一般有两种检验方法:

  1. 残差检验

  2. 级比偏差检验

什么时候使用灰色预测

  1. 数据是以年份度量的非负数据(如果是月份或者季度数据,则用时间序列模型)
  2. 数据能经过准指数规律的检验(除了前两期外,后面至少90%的期数的光滑比要低于0.5)
  3. 数据的期数较短且和其他数据之间的关联性不强(小与10期,但也不能太短),要是数据期数较长,一般使用传统的时间序列模型比较合适。

GM(1,1)模型代码讲解

大概的步骤

1
2
3
4
5
6
7
8
9
10
11
12
13
14
1. 画出原始数据的时间序列图,并判断原始数据中是否有负数或者其数是否低于4期,如果是的话则报错,否则执行下一步;
2. 对一次累加后的数据进行准指数规律检验,返回两个指标
指标1:光滑比小于0.5的数据占比(一般要大于60%)
指标2:除去前两个时期外,光滑比小于0.5的数据占比(一般大于90%)
并让用户决定输入是否满足准指数规律,满足则输入1,不满足则输入0
3. 如果上一步输入0,则程序停止,输入1则继续下面的步骤
4. 让用户输入需要预测的后续期数,并判断原始数据的期数
4.1 数据期数为4:
分别计算出传统的GM(1,1)、新信息GM(1,1)模型和新陈代谢GM(1,1)模型对于未来期数的预测结果,为了保证结果的稳健性,对三个结果求平均值作为预测值
4.2 数据期数为5,6,7:
取最后两期作为实验组,前面n-2期为训练组;用训练组的数据分别训练三种GM(1,1)模型,并将训练出来的模型分别用于预测实验组的两期数据;利用实验组两期数据的真实数据和预测出来的两期数据,分别计算出三个模型的SSE;选择最小的模型作为我们建模的模型;
4.3 数据期数大于7:
取最后三组作为试验组,其他的过程和4.2相同
5. 输出并绘制图形显示预测结果,并进行残差检验和级比残差检验

BP神经网络预测

基本概念:
训练集(Training Set):用于模型拟合的数据样本
验证集(Validation Set):是模型训练过程中单独留出的样本集,它可以用于调整模型的超参数和用于对模型的能力进学校初步评估。在神经网络中,我们用验证数据集取寻找最优的网络深度,或者反向传播算法的停止点或者在神经网络中选择隐藏层神经元的数量;
测试集(Testing Set):用来评估模型的泛化能力。不能作为调参、选择特征等算法相关的选择的依据。

使用matlab的BP神经网络

APP-Neural Net Fitting

三种训练网络

Matlab三维图形绘制

matlab绘制三维图形

1
2
3
4
5
6
7
8
9
10
11
12
mesh函数:绘制出某一区间内完整的网格图
1. mesh(X,Y,Z):X是n维向量,Y是n维向量,Z是m*n矩阵
2. mesh(Z):Z是m*n矩阵
3. mesh(X,Y,Z):X,Y,Z是m*n矩阵

meshgrid函数:快速生成网格所需要的数据

meshc函数:绘制曲面的等高线

meshz函数:绘制曲面的底座

alpha函数:设置透明度
1
2
3
4
surf函数:绘制出在某一区间内完整的曲面图
mesh是绘制出彩色的线,surf是绘制出彩色的面

subplot:在同一个figure中绘制不同的图
1
2
3
4
5
contour函数:绘制等高线

contourf函数:画出来等高线有颜色填充

contour3函数:三维等高线,等高线不再投影到x-y屏幕
1
2
3
4
5
6
7
8
9
10
11
符号函数的三维图形绘制

plot3函数:三维空间下的折线图

fplot3函数:

fmesh函数:绘制三维网格线图

fsurf函数:绘制三维网格面图

fcontour函数:绘制等高线图
1
2
3
4
三维隐函数图形绘制
fimplicit
fimplicit3

1
新建实时脚本:方便复习代码和命令

Matlab 符号运算

Matlab定义符号变量和简单的运算

  1. 简单符号变量的创建

    1
    2
    syms x
    syms a b c
  2. 符号方程的创建

    1
    2
    3
    4
    5
    % 法1
    syms a x
    y=a*x+x^2
    % 法2
    y=str2sym('a*x+x^2')
  3. 符号矩阵

  4. 简单运算

  5. 符号表达式的整理

    1
    2
    3
    4
    5
    6
    7
    化简:simplify(y)
    因式分解:factor(y)
    多项式展开:expand(y)
    多项式合并:collect()
    计算分子与分母:numden(符号变量)
    把double类型的变量转化为符号变量:sym(double类型的变量)
    让结果显示的更加自然:mupad:2020版本不能用了,可以建立一个实时脚本,然后把要看的内容复制到实时脚本,然后运行就行了

符号函数求导和差分的计算

  1. 一元函数求导

    1
    2
    3
    4
    syms x
    y=x^4+5*x+2
    diff(y) 一阶导数
    diff(y,2) 二阶导数
  2. 多元函数求导

    1
    2
    3
    4
    5
    diff(y,x,2)
    diff(y,x)
    diff(y,z)
    diff(y,x,z)
    diff(y,z,x)
  3. 差分
    如果diff函数的作用对象不是符号函数,而是矩阵的时候,那么对应的功能是求差分

不定积分和定积分的计算

  1. 不定积分
    int(y,x)
    计算结果不会给我们加上常数C
    计算1/x的不定积分,结果不会加上绝对值

  2. 定积分
    int(y,x,下限,上限)

  3. 数值积分——近似积分
    数值积分,用于求定积分的近似值。在数值分析中,数值积分是计算定积分数值的方法和理论。在数学分析中,给定函数的定积分的计算不总是可行的。许多定积分不能用已知的积分公式得到精确值。
    数值积分是利用黎曼积分等数学定义,用数值逼近的方法近似计算给定的定积分值。借助于电子计算设备,数值积分可以快速而有效地计算复杂的积分
    函数y需要写成函数句柄的形式,使用点乘和点除

integral(y,下限,上限)

求解方程和方程组

  1. solve函数
    注意周期函数求解的时候需要加上条件,才能得到所有的解

  2. vpasolve函数
    求指定区间上的解
    vpasolve(y,x,[0 1])

  3. fsolve函数

微分方程模型

常微分方程+偏微分方程

对常微分方程进行建模

基本概念

微分方程的建立:利用专业知识+套用现有的模型(改进)

使用Matlab求微分方程的解析解

解析解:给出解的具体表达式
matlab函数:dsolve(‘方程1’,’方程2’,……,’方程n’,’初始条件’,’自变量’)
注意

1
2
3
4
5
6
1. 英文引号,单引号
2. 在表达方程时候,用字母D表示微分,D2,D3表示二阶和三阶微分,后面跟的是要求的解的因变量。eg:y-Dy-D2y=x
3. 自变量可以自己指定,不写则默认以t为自变量
4. 初始值可以不给,不给则求出来的是通解
5. 如果有多个微分方程,那么计算的实际上是微分方程组
6. 如果微分方程形式比较复杂,往往是得不到解析解的
1
2
latex(x)
转换成latex代码,复制到Axmath能转换成数学公式

使用Matlab求微分方程的数值解

更新15第5部分


数学建模(一)
https://cosmicdusty.cc/post/Mathematics/MathematicalModeling_1/
作者
Murphy
发布于
2022年1月27日
许可协议