列举清风数学建模基本模型。
本人学习清风数学建模时的一些笔记,由于时间久远,很多图片都不小心删掉了。观感可能有点差。
网站推荐
- 虫部落,用来搜索:https://search.chongbuluo.com/
算法
一、层次分析法
评价类问题,选择哪种方案最好、哪位运动员或者员工表现的更优秀
局限性:决策层不能太多、数据不能是已知的
使用清风的代码,代码在ccfx_Learn.m,使用matlab,最后会给出一列结果
首先画图
分析过程如下:
步骤:
- 层次结构模型的构建
- 判断矩阵
- 层次但排序及其一致性检验
- 层次总排序及其一致性检验
构建层次评价模型
确认目标层、准则层、方案层
如果有多层则依次类推
构造判断矩阵
首先使用Santy的1-9标度方法给出
然后构造出判断矩阵:
层次单排序与一致性检验
- 层次单排序
层次单排序是指针对上一层某元素将本层中所有元素两两评比,并开展层次排序, 进行重要顺序的排列,具体计算可依据判断矩阵 A 进行,计算中确保其能够符合 AW= 的特征根和特征向量条件。在此,A 的最大特征根为λmax,对应λmax的正规化的特征向量为 W, 为 W 的分量,其指的是权值,与其相应元素单排序对应。 利用判断矩阵计算各因素 对目标层的权重(权系数)。
权重向量(W)与最大特征(λmax)的计算步骤(方根法或者和法)如下表所示:
- 求解最大特征根与CI值
-
根据CI、RI值求解CR值,判断一致性是否通过
当 C.R.<0.1 时,表明判断矩阵 A 的一致性程度被认为在容许的范围内,此时可 用 A 的特征向量开展权向量计算;若 C.R.≥0.1, 则应考虑对判断矩阵 A 进行修正。
层次总排序与一致性检验
计算某一层次所有因素对于最高层(目标层)相对重要性的权值,称为层次总排 序。该过程是从最高层次向最低层次依次进行:
层次总排序的一致性比率为:
二、TOPSIS法
Technique for Order Preference by Similarity to Ideal Solution
优劣解距离法
常用的综合评价方法,其能充分利用原始数据的信息,其结果能精确地反映各评价方案之间的差距。
先将原始数据矩阵统一指标类型(一般正向化处理)得到正向化的矩阵,再对正向化的矩阵进行标准化处理以消除各指标量纲的影响,并找到有限方案中的最优方案和最劣方案,然后分别计算各评价对象与最优方案和最劣方案间的距离,获得各评价对象与最优方案的相对接近程度,以此作为评价优劣的依据。
topsis.m
将原始矩阵正向化
正向矩阵标准化
消除不同指标量纲的影响
计算得分并归一化
三、插值法
code.m
四、拟合
matlab求解最小二× code1.m
matlab拟合工具箱 Curve Fitting
评价拟合好坏
拟合优度(可决系数)R方
总体平方和SST
误差平方和SSE
回归平方和SSR
SST = SSE+SSR
拟合优度R² = SSR/SST = (SST - SSE)/SST = 1 - SSE/SST
R²越接近1,误差平方和越接近0,拟合越好。但只能用于拟合函数是线性函数时,拟合结果的评价。
非线性函数直接看SSE评价拟合好坏
线性函数指对参数线性(x平方也是线性):在函数中,参数仅以一次方出现,且不能乘以或除以其他任何的参数,并不能出现参数的复合函数形式
五、相关系数
皮尔逊pearson相关系数和斯皮尔曼spearman等级相关系数
用来衡量两个变量之间的相关性的大小
这里的相关系数只是用来衡量两个变量线性相关程度的指标;也就是说,你必须先确认这两个变量是线性相关的,然后这个相关系数才能告诉你他俩相关程度如何
MATLAB code.m
如果两个变量本身就是线性的关系,那么皮尔逊相关系数绝对值大的就是相关性强,小的就是相关性弱
在不确定两个变量是什么关系的情况下,即使算出皮尔逊相关系数,发现很大,也不能说明那两个变量线性相关,甚至不能说他们相关,我们一定要画出散点图来看才行
以下都是皮尔逊
容易忽视的点
- 非线性相关也会导致线性相关系数很大
- 离群点对相关系数的影响很大
- 如果两个变量的相关系数很大也不能说明两者相关
- 相关系数计算结果为0,只能说不是线性相关,但说不定会有更复杂的相关关系(非线性相关)
描述性统计
EXCEL的数据分析工具:数据->数据分析->描述统计
SPSS:分析->描述统计->描述,选项->
对皮尔逊相关系数进行假设检验
- 提出原假设H0和备择假设H1
- 在原假设条件下,利用要检验的量构造出一个符合某一分布的统计量
- 将要检验的量代入统计量中,得到一个特定的检验值
- 给定一个置信水平,给出检验统计量的接受域和拒绝域
- 查看落在拒绝域还是接受域,拒绝域:拒绝原假设,显著不为0
p值判断法:
p<0.01,说明在99%的置信水平上拒绝原假设
p<0.05,说明在95%的置信水平上拒绝原假设
p<0.10,说明在90%的置信水平上拒绝原假设
计算各列之间的相关系数以及p值
皮尔逊相关系数假设检验的条件
第一, 实验数据通常假设是成对的来自于正态分布的总体。 因为我们在求皮尔逊相关性系数以后,通常还会用t检验之类的方法来进行皮尔逊相关性系数检验,而t检验是基于数据呈正态分布的假设的。
第二, 实验数据之间的差距不能太大。 皮尔逊相关性系数受异常值的影响比较大。
第三:每组样本之间是独立抽样的。 构造t统计量时需要用到。
检验数据是否是正态分布
雅克‐贝拉检验(Jarque‐Bera test)
使用matlab
大样本 n>30
H0:服从正态分布 H1:不服从正态分布
MATLAB中进行JB检验的语法: [h,p] = jbtest(x,alpha)当输出h等于1时,表示拒绝原假设; h等于0则代表不能拒绝原假设。alpha就是显著性水平,一般取0.05,此时置信水平为1‐0.05=0.95 x就是我们要检验的随机变量,注意这里的x只能是向量
p与0.05比较 p<0.05拒绝原假设 p>0.05不能拒绝原假设
Shapiro‐wilk夏皮洛‐威尔克检验
使用SPSS: 分析->描述统计->探索->图->含检验的正态图
小样本 3<=n<=50
H0:服从正态分布 H1:不服从正态分布
Q-Q图
在统计学中, Q‐Q图(Q代表分位数Quantile)是一种通过比较两个概率分布的分位数对这两个概率分布进行比较的概率图方法。首先选定分位数的对应概率区间集合,在此概率区间上,点(x,y)对应于第一个分布的一个分位数x和第二个分布在和x相同概率区间上相同的分位数。这里,我们选择正态分布和要检验的随机变量,并对其做出QQ图,可想而知,如果要检验的随机变量是正态分布,那么QQ图就是一条直线。
要利用Q‐Q图鉴别样本数据是否近似于正态分布,只需看Q‐Q图上的点是否近似地在一条直线附近。(要求数据量非常大)
以下都是斯皮尔曼
斯皮尔曼相关系数
MATLAB中计算
假设检验
小样本 n<=30 查临界值表
大样本 p检验
斯皮尔曼相关系数和皮尔逊选择
1.连续数据,正态分布,线性关系,用pearson相关系数是最恰当,当然用spearman相关系数也可以, 就是效率没有pearson相关系数高。
2.上述任一条件不满足,就用spearman相关系数,不能用pearson相关系数。
3.两个定序数据之间也用spearman相关系数,不能用pearson相关系数。
六、典型相关分析
研究两组变量(每组变量中都可能有多个指标)之间相关关系的一种多元统计方法。它能够揭示出两组变量之间的内在联系
把多个变量与多个变量之间的相关化为两个具有代表性的变量之间的相关
首先在每组变量中找出变量的线性组合,使得两组的线性组合之间具有最大的相关系数;然后选取和最初挑选的这对线性组合不相关的线性组合,使其配对,并选取相关系数最大的一对;如此继续下去,直到两组变量之间的相关性被提取完毕为止。被选出的线性组合配对称为典型变量,它们的相关系数称为典型相关系数。典型相关系数度量了这两组变量之间联系的强度
-
数据的分布有假设: 两组数据服从联合正态分布。
-
首先要对两组变量的相关性进行检验(构造似然比统计量 ) p值小于0.05(0.1)表示在95%(90%)的置信水平下拒绝原假设,即认为两组变量有关
-
确定典型相关变量的个数(直接看典型相关系数对应的P值即可)
-
利用标准化后的典型相关变量分析问题
-
进行典型载荷分析
-
计算前 r个典型变量对样本总方差的贡献
SPSS:
1. 导入数据
1. 检验数据类型,全部设置为标度
1. 分析->相关->典型相关性
1. 集合1 集合2放数据
1. 导出分析结果:文件->导出->设置保持位置
1. 对结果进行分析
典型相关性 表格最后一列显著性,按显著性选择1、2、3,然后查看集合1 、2标准化典型相关系数,选择1、2、3列中的数据,然后写出一个式子
选择性分析典型载荷和方差解释程度
具体看清风讲义上的图片
七、多元线性回归分析
线性回归、 0‐1回归、定序回归、计数回归和生存回归,其划分的依据是因变量Y的类型
三个关键词:
-
相关性
-
Y
1)经济学家研究经济增长的决定因素,那么Y可以选取GDP增长率(连续数值型变量)。
(2) P2P公司要研究借款人是否能按时还款,那么Y可以设计成一个二值变量, Y=0时代表可以还款, Y=1时代表不能还款(0‐1型变量)。
(3)消费者调查得到的数据(1表示非常不喜欢, 2表示有点不喜欢, 3表示一般般, 4表示有点喜欢, 5表示非常喜欢) (定序变量)。
(4)管理学中RFM模型: F代表一定时间内,客户到访的次数,次数其实就是一个非负的整数。 (计数变量)
(5)研究产品寿命、企业寿命甚至是人的寿命(这种数据往往不能精确的观测,例如现在要研究吸烟对于寿命的影响,如果选取的样本中老王60岁,现在还活的非常好,我们不可能等到他去世了再做研究,那怎么办呢?直接记他的寿命为60+,那这种数据就是截断的数据) (生存变量)
- X
回归分析三个使命:
1. 识别重要变量
1. 判断相关性方向
1. 估计权重(回归系数)
回归分析分类:
类型 | 模型 | Y的特点 | 例子 |
---|---|---|---|
线性回归 | OLS、 GLS(最小二乘) | 连续数值型变量 | GDP、产量、收入 |
0‐1回归 | logistic回归 | 二值变量(0‐1) | 是否违约、是否得病 |
定序回归 | probit定序回归 | 定序变量 | 等级评定(优良差) |
计数回归 | 泊松回归(泊松分布) | 计数变量 | 每分钟车流量 |
生存回归 | Cox等比例风险回归 | 生存变量(截断数据) | 企业、产品的寿命 |
数据分类:
- 横截面数据: 在某一时点收集的不同对象的数据。
1)我们自己发放问卷得到的数据(2)全国各省份2018年GDP的数据(3)大一新生今年体测的得到的数据
- 时间序列数据: 对同一对象在不同时间连续观察所取得的数据
1)从出生到现在,你的体重的数据(每年生日称一次)。(2)中国历年来GDP的数据。(3)在某地方每隔一小时测得的温度数据
- 面板数据: 横截面数据与时间序列数据综合起来的一种数据资源
2008‐2018年,我国各省份GDP的数据
不同数据类型的处理方法:
数据类型 | 常见建模方法 |
---|---|
横截面数据 | 多元线性回归 |
时间序列数据 | 移动平均、指数平滑、 ARIMA、 GARCH、 VAR、协积 |
面板数据 | 固定效应和随机效应、静态面板和动态面板 |
回归系数的解释:
常数:没现实意义
系数k:在保持其他变量不变的情况下,x每增加一个单位,该产品的平均y增加k
引入新的自变量后,对回归系数的影响非常大
原因:遗漏变量导致的内生性
如果满足误差项u和所有的自变量x均不相关,则称该模型具有外生性(如果相关,则存在内生性,内生性会导致回归系数预测不准确,不满足无偏和一致性)
误差项u包含所有与y相关但未添加到回归模型中的变量,如果这些变量和我们已添加的自变量相关,则存在内生性
核心解释变量: 我们最感兴趣的变量,因此我们特别希望得到对其系数的一致估计(当样本容量无限增大时,收敛于待估计参数的真值 )。控制变量:
我们可能对于这些变量本身并无太大兴趣;而之所以把它们也放入回归方程,主要是为了 “控制住” 那些对被解释变量有影响的遗漏因素。
在实际应用中,我们只要保证核心解释变量与𝝁不相关即可。
取对数
1)与市场价值相关的,例如,价格、销售额、工资等都可以取对数;
(2)以年度量的变量,如受教育年限、工作经历等通常不取对数;
(3)比例变量,如失业率、参与率等,两者均可;
(4)变量取值必须是非负数,如果包含0,则可以对y取对数ln(1+y);
取对数的好处: (1)减弱数据的异方差性(2)如果变量本身不符合正态分布,取了对数后可能渐近服从正态分布(3)模型形式的需要,让模型具有经济学意义。
四类模型回归系数的解释
-
一元线性回归: 𝑦 = 𝑎 + 𝑏𝑥 + 𝜇, x每增加1个单位, y平均变化b个单位
-
双对数模型: 𝑙𝑛𝑦 = 𝑎 + 𝑏𝑙𝑛𝑥 + 𝜇, x每增加1%, y平均变化b%
-
半对数模型:𝑦 = 𝑎 + 𝑏𝑙𝑛𝑥 + 𝜇, x每增加1%, y平均变化b/100个单位;
-
半对数模型: 𝑙𝑛𝑦 = 𝑎 + 𝑏𝑥 + 𝜇, x每增加1个单位, y平均变化(100b)%
虚拟变量的解释
多分类的虚拟变量设置
为了避免完全多重共线性的影响,引入虚拟变量的个数一般是分类数减1
STATA
数据的描述性统计
-
定量数据 sum 变量1 变量2 … 变量n
-
定性数据
tab 变量名, gen(A)
返回对应这个变量的频率分布表,并生成对应的虚拟变量(以A开头)
回归
reg y x1 x2 … xk
默认使用OLS:最小二乘估计法
加入虚拟变量回归,Stata会自动检测数据的完全多重共线性问题
拟合优度较低:
1)回归分为解释型回归和预测型回归。预测型回归一般才会更看重𝑅2。解释型回归更多的关注模型整体显著性以及自变量的统计显著性和经济意义显著性即可。
(2)可以对模型进行调整,例如对数据取对数或者平方后再进行回归。
(3)数据中可能有存在异常值或者数据的分布极度不均匀
补充:关于拟合优度和调整后的拟合优度:
我们引入的自变量越多,拟合优度会变大。但我们倾向于使用调整后的拟合优度,如果新引入的自变量对SSE的减少程度特别少,那么调整后的拟合优度反而会减小。
标准化回归系数
对数据进行标准化,就是将原始数据减去它的均数后,再除以该变量的标准差,计算得到新的变量值,新变量构成的回归方程称为标准化回归方程,回归后相应可得到标准化回归系数。
标准化系数的绝对值越大,说明对因变量的影响就越大(只关注显著的回归系数哦)
Stata标准化回归命令:reg y x1 x2 … xk, beta
扰动项要满足的条件
之前都默认扰动项是球形扰动项。
球型扰动项:满足“同方差”和“无自相关”两个条件。
横截面数据容易出现异方差的问题;
时间序列数据容易出现自相关的问题
异方差
如果扰动项存在异方差:
1) OLS估计出来的回归系数是无偏、一致的。
2 假设检验无法使用(构造的统计量失效了)。
3) OLS估计量不再是最优线性无偏估计量(BLUE)
怎么解决异方差:
(1)使用OLS + 稳健的标准误
(2)广义最小二乘估计法GLS原理:方差较小的数据包含的信息较多,我们可以给予信息量大的数据更大的权重(即方差较小的数据给予更大的权重
检验异方差:
在回归结束后运行命令: rvfplot (画残差与拟合值的散点图) rvpplot x (画残差与自变量x的散点图)
1.y:残差,x:拟合值
当数据不在一个值附近,其余值越大越散乱则异方差大
2.y:残差,x:自变量x
当呈下滑趋势且变化大则异方差大
拟合值出现负数的原因:数据分布不均匀
有75%的奶粉品牌的评价量小于1109,评价量超过17000的只有10%不到,而样本均值却达到了15800。这说明评价量的分布极度不平衡,大多数个体的评价量都较小。从右图中也直观的说明了绝大部分品牌的评价量都较小这一特征
异方差的假设检验:
- BP检验
Stata(在回归结束后): estat hettest ,rhs iid
原假设:扰动项不存在异方差
看图 Prob > chi2 = ?(这里就是p值)
P值小于0.05,说明在95%的置信水平下拒绝原假设,即我们认为扰动项存在异方差
怀特检验的特例。优点在于其建设性,可以帮助确认异方差的具体形式
- 怀特检验
原假设:不存在异方差
可以检验任何形式的异方差(包括平方项与交叉项)。但如果H0被拒绝,怀特检验并不提供有关异方差具体形式的信息
(回归结束后)estat imtest, white
看图 Prob > chi2 = ?(这里就是p值)
如果P值很小,表明你的模型很可能存在异方差性,可能需要采取一些措施(如使用异方差性稳健的标准误)来调整模型
异方差处理:
1)使用OLS + 稳健的标准误
如果发现存在异方差,一 种处理方法是,仍然进行OLS 回归,但使用稳健标准误。这是最简单,也是目前通用的方法。只要样本容量较大,即使在异方差的情况下,若使用稳健标准误,则所 有参数估计、假设检验均可照常进行。换言之,只要使用了稳健标准误,就可以与异方差“和平共处”了。
(2)广义最小二乘法GLS
原理:方差较大的数据包含的信息较少,我们可以给予信息量大的数据(即方差较小的数据更大的权重)
缺点:我们不知道扰动项真实的协方差矩阵,因此我们只能用样本数据来估计,这样得到的结果不稳健,存在偶然性。
Stock and Watson (2011)推荐,在大多数情况下应该使用“OLS + 稳健标准误”
stata:
regress y x1 x2 … xk, r
看图:第二列Robust Std. Err.
多重共线性
症状:整个回归方程R²大,F检验显著,但单个系数的t检验不显著,或系数估计值不合理甚至相反。
检验多重共线性:
方差膨胀因子VIF
VIFm越大,第m个变量和其他变量的相关性越大。如果最大的VIF>10,则认为回归方程存在严重的多重共线性
Stata计算各变量VIF:(回归结束后)
estat vif
处理方法:
(1)如果不关心具体的回归系数,而只关心整个方程预测被解释变量的能力,则通常可以 不必理会多重共线性(假设你的整个方程是显著的)。这是因为,多重共线性的主要后果是使得对单个变量的贡献估计不准,但所有变量的整体效应仍可以较准确地估计。
(2)如果关心具体的回归系数,但多重共线性并不影响所关心变量的显著性,那么也可以不必理会。即使在有方差膨胀的情况下,这些系数依然显著;
如果没有多重共线性,则只会更加显著。
(3) 如果多重共线性影响到所关心变量的显著性,则需要增大样本容量,剔除导致严重共线性的变量(不要轻易删除哦,因为可能会有内生性的影响),或对模型设定进行修改
逐步回归分析
向前逐步回归Forward selection:
将自变量逐个引入模型,每引入一个自变量后都要进行检验,显著时才加入回归模型。
(缺点:随着以后其他自变量的引入,原来显著的自变量也可能又变为不显著了,但是,并没有将其及时从回归方程中剔除掉。 )
向后逐步回归Backward elimination: 与向前逐步回归相反,先将所有变量均放入模型,之后尝试将其中一个自变量从模型中剔除,看整个模型解释因变量的变异是否有显著变化,之后将最没有解释力的那个自变量剔除;此过程不断迭代,直到没有自变量符合剔除的条件。(缺点:一开始把全部变量都引入回归方程,这样计算量比较大。若对一些不重要的变量,一开始就不引入,这样就可以减少一些计算。当然这个缺点随着现在计算机的能力的提升,已经变得不算问题了)
Stata:
向前逐步回归Forward selection:
stepwise regress y x1 x2 … xk, pe(#1)
pe(#1) specifies the significance level for addition to the model; terms with p<#1 are eligible for addition(显著才加入模型中)
向后逐步回归Backward elimination:
stepwise regress y x1 x2 … xk, pr(#2)
pr(#2) specifies the significance level for removal from the model; terms with p>= #2 are eligible for removal(不显著就剔除出模型)
(1) x1 x2 … xk之间不能有完全多重共线性(和regress不同)
(2)可以在后面再加参数b和r,即标准化回归系数或稳健标准误
逐步回归说明:
(1)向前逐步回归和向后逐步回归的结果可能不同。
(2)不要轻易使用逐步回归分析,因为剔除了自变量后很有可能会产生新的问题,例如内生性问题。
八、图论
(略)
九、分类模型
数据预处理:生成虚拟变量
SPSS:转换->创建虚变量->创建主效应虚变量->根名称
逻辑回归logistic regression
对于因变量为分类变量的情况,我们可以使用逻辑回归进行处理。把y看成事件发生的概率,y≥0.5表示发生;y<0.5表示不发生
线性概率模型(Linear Probability Model,简记LPM )
两点分布(伯努利分布)
由于后者有解析表达式(而标准正态分布的cdf没有),所以计算logistic模型比probit模型更为方便。
如果y_hat>=0.5,则认为其预测的y=1;否则认为其预测的y=0
SPSS求解逻辑回归:
分析->回归->二元Logistic…->因变量fruit_name=apple[isapple]->协变量(其他的)->保存->预测值->概率、组成员✔
预测成功率:看分类表,正确百分比
逻辑回归系数表:看图,方程中的变量,看B列的值,代入y_hat = exp(这里是:常量+B列和对应的元素相乘,组成的回归方程)/(1+exp(和分母上面的式子一样))
如果y_hat>0/5,则认为预测的是苹果,否则是橙子
逐步回归的设置
在上面的SPSS步骤中,加入:方法->选择输入->选项->步进概率->修改进入和除去
向前(向后)逐步回归可选择的统计量有所区别。进入(或者除去)自变量的显著性水平可以自己调节
如果有分类变量:
两种方法(1)先创建虚拟变量,然后删除任意一列以排除完全多重共线性的影响; (2)直接点击分类,然后定义分类协变量,Spss会自动帮我们生成。
(如果没有生成虚拟变量这个选项,则说明SPSS没有安装到默认位置)
预测结果差:在logistic回归模型中加入平方项,交互项等
转换->计算变量->然后在框框里填目标变量名称及数字表达式->确定
虽然预测能力提高了,但是容易发生过拟合的现象。
对于样本数据的预测非常好,但是对于样本外的数据的预测效果可能会很差。
如何确定合适的模型?
把数据分为训练组和测试组,用训练组的数据来估计出模型,再用测试组的数据来进行测试。(训练组和测试组的比例一般设置为80%和20%)
注意:为了消除偶然性的影响,可以对上述步骤多重复几次,最终对每个模型求一个平均的准确率,这个步骤称为交叉验证。
Fisher线性判别分析
LDA(Linear Discriminant Analysis)是一种经典的线性判别方法,又称Fisher判别分析。该方法思想比较简单:给定训练集样例,设法将样例投影到一维的直线上,使得同类样例的投影点尽可能接近和密集,异类投影点尽可能远离
核心问题:找到线性系数向量 w
SPSS操作:分析->分类->判别式->分组变量->定义范围,填写最小值最大值->保存->预测组成员,组成员概率->统计->只✔费希尔,未标准化->分类->只✔所有组相等,显示摘要表
结果分析:
-
典则判别函数系数:即线性系数向量w
-
分类函数系数:
贝叶斯判别函数系数表,将样品的各参数带入2个贝叶斯判别函数,比较得出的函数值,哪个函数值较大就将该样品归于哪一类。
- 数据表中,Dis_1是预测类别,Dis1_1是属于0的概率,Dis2_1是属于1的概率
多分类问题
Fisher判别分析可用于多分类
SPSS:定义范围的时候最大值改一下
Logistic回归也可用于多分类
SPSS:分析->回归->多元Logistic…->统计->勾分类表->保存->勾估算相应概率、预测类别
要将几个自变量放到协变量中
补充:Spss中因子和协变量的区别因子指分类型变量,例如性别、学历等协变量指连续型变量,例如面积、重量等。
如果遇到警告,说明数据中自变量之间存在多重共线性,或者样本中某些类别的观测值较少。
由于我们使用多元逻辑回归是出于分类的目的,因此我们重点因关注分类预测的准确度,这个警告可以忽略。
结果看表:分类
还有更厉害的分类模型:决策树、随机森林、SVM
十、聚类模型
分类是已知类别的,聚类未知
K-means聚类算法
K-means聚类的算法流程:
一、指定需要划分的簇[cù]的个数K值(类的个数);二、随机地选择K个数据对象作为初始的聚类中心(不一定要是我们的样本点);
三、计算其余的各个数据对象到这K个初始聚类中心的距离,把数据对象划归到距离它最近的那个中心所处在的簇类中;
四、调整新类并且重新计算出新类的中心;
五、循环步骤三和四,看中心是否收敛(不变),如果收敛或达到迭代次数则停止循环;
六、结束
K-means算法的评价:
优点:
(1)算法简单、快速。
(2)对处理大数据集,该算法是相对高效率的。
缺点:
(1)要求用户必须事先给出要生成的簇的数目K。
(2)对初值敏感。
(3)对于孤立点数据敏感。
K-means++算法可解决2和3这两个缺点
K-means++算法
k-means++算法选择初始聚类中心的基本原则是:
初始的聚类中心之间的相互距离要尽可能的远。
算法描述如下:
(只对K-means算法“初始化K个聚类中心” 这一步进行了优化)
步骤一:随机选取一个样本作为第一个聚类中心;
步骤二:计算每个样本与当前已有聚类中心的最短距离(即与最近一个聚类中心的距离),这个值越大,表示被选取作为聚类中心的概率较大;最后,用轮盘法(依据概率大小来进行抽选)选出下一个聚类中心;
步骤三:重复步骤二,直到选出K个聚类中心。选出初始点后,就继续使用标准的K-means算法了。
SPSS操作:分析->分类->K-均值聚类->保存->聚类成员、与聚类中心的距离->选项->勾:初始聚类中心、每个个案的聚类信息、成列排除个案
默认使用的就是K-means++算法
排除量纲影响:先减均值再除以标准差
SPSS:分析->描述统计->描述->✔将标准值另存为变量
系统(层次)聚类
系统聚类的合并算法通过计算两类数据点间的距离,对最为接近的两类数据点进行组合,并反复迭代这一过程,直到将所有数据点合成一类,并生成聚类谱系图
系统(层次)聚类的算法流程:
一、将每个对象看作一类,计算两两之间的最小距离;
二、将距离最小的两个类合并成一个新类;
三、重新计算新类与所有类之间的距离;
四、重复二三两步,直到所有类最后合并成一类;
五、结束。
SPSS:分析->分类->系统聚类->选变量、个案标注依据、勾个案、统计、图->图:谱系图、全部聚类、垂直->方法:聚类方法:组间链接、区间:平方欧式距离、标准化:如果量纲不同勾选Z得分
用图形估计聚类数量:肘部法则
看图:集中计划,找“系数”列,把它粘贴到excel表格,插入散点图。
根据图来进行解释:
(1)根据聚合系数折线图可知,当类别数为5时,折线的下降趋势趋缓,故可将类别数设定为5.
(2)从图中可以看出, K值从1到5时,畸变程度变化最大。超过5以后,畸变程度变化显著降低。因此肘部就是 K=5,故可将类别数设定为5.(当然,K=3也可以解释)
确定K后保存聚类结果并画图
SPSS:保存->单个解:改成k,重新聚类一次
聚类结束后画图,图形->图表构建器->图库->散点图/点图->组/点ID->勾点ID标签->拖拽
DBSCAN算法
DBSCAN(Density-based spatial clustering of applications with noise)是Martin Ester, Hans-PeterKriegel等人于1996年提出的一种基于密度的聚类方法,聚类前不需要预先指定聚类的个数,生成的簇的个数不定(和数据有关)。该算法利用基于密度的聚类的概念,即要求聚类空间中的一定区域内所包含对象(点或其他空间对象)的数目不小于某一给定阈值。该方法能在具有噪声的空间数据库中发现任意形状的簇,可将密度足够大的相邻区域连接,能有效处理异常数据。
DBSCAN算法将数据点分为三类:
• 核心点:在半径Eps内含有不少于MinPts数目的点
• 边界点:在半径Eps内点的数量小于MinPts,但是落在核心点的邻域内
• 噪音点:既不是核心点也不是边界点的点
优点:
- 基于密度定义,能处理任意形状和大小的簇;
- 可在聚类的同时发现异常点;
- 与K-means比较起来,不需要输入要划分的聚类个数。
缺点:
- 对输入参数ε和Minpts敏感,确定参数困难;
- 由于DBSCAN算法中,变量ε和Minpts是全局唯一的,当聚类的密度不均匀时,聚类距离相差很大时,聚类质量差;
- 当数据量大时,计算密度单元的计算复杂度大。
我的建议:
只有两个指标,且你做出散点图后发现数据表现得很“DBSCAN”,这时候你再用DBSCAN进行聚类。其他情况下,全部使用系统聚类吧。K-means也可以用,不过用了的话你论文上可写的东西比较少。
十一、时间序列分析
季节分解、指数平滑方法和ARIMA模型
时间序列数据: 对同一对象在不同时间连续观察所取得的数据
时间序列也称动态序列,是指将某种现象的指标数值按照时间顺序排列而成的数值序列。
时间序列由两个组成要素构成:
1、第一个要素是时间要素;
年、季度、月、周、日、小时、分钟、秒
2、第二个要素是数值要素。
时间序列根据时间和数值性质的不同,可以分为时期时间序列和时点时间序列。
时期序列中,数值要素反映现象在一定时期内发展的结果;时点序列中,数值要素反映现象在一定时点上的瞬间水平。
时期序列可加,时点序列不可加。
时期序列中的观测值反映现象在一段时期内发展过程的总量,不同时期的观测值可以相加,相加结果表明现象在更长一段时间内的活动总量; 而时点序列中的观测值反映现象在某一瞬间上所达到的水平,不同时期的观测值不能相加,相加结果没有实际意义
时间序列分解
长期变动趋势
季节变动规律
周期变动规律
不规则变动(随机扰动项)
一个时间序列往往是以上四类变化形式的叠加
- 长期趋势 T
长期趋势(Secular trend,T)指的是统计指标在相当长的一段时间内,受到长期趋势影响因素的影响,表现出持续上升或持续下降的趋势,通常用字母T表示。例如,随着国家经济的发展,人均收入将逐渐提升;随着医学水平的提高,新生儿死亡率在不断下降。
- 季节趋势 S
季节趋势(Seasonal Variation,S)是指由于季节的转变使得指标数值发生周期性变动。这里的季节是广义的,一般以月、季、周为时间单位,不能以年作单位。例如雪糕和棉衣的销量都会随着季节气温的变化而周期变化;每年的长假(五一、十一、春节)都会引起出行人数的大量增加
- 循环变动 C
循环变动( Cyclical Variation,C)与季节变动的周期不同,循环变动通常以若干年为周期,在曲线图上表现为波浪式的周期变动。这种周期变动的特征表现为增加和减少交替出现,但是并不具严格规则的周期性连续变动。最典型的周期案例就是市场经济的商业周期和的整个国家的经济周期
- 不规则变动 I
不规则变动( Irregular Variation,I)是由某些随机因素导致的数值变化,这些因素的作用是不可预知和没有规律性的,可以视为由于众多偶然因素对时间序列造成的影响(在回归中又被称为扰动项)
四种变动与指标数值最终变动的关系可能是叠加关系,也可能是乘积关系
叠加模型和乘积模型
(1)如果四种变动之间是相互独立的关系,那么叠加模型可以表示为: Y = T + S + C + I
(2)如果四种变动之间存在相互影响关系,那么应该使用乘积模型: Y = T ×S× C ×I
(1)数据具有年内的周期性时才能使用时间序列分解,例如数据是月份数据(周期为12)、季度数据(周期为4) ,如果是年份数据则不行。
(2)在具体的时间序列图上,如果随着时间的推移,序列的季节波动变得越来越大,则反映各种变动之间的关系发生变化,建议使用乘积模型;反之,如果时间序列图的波动保持恒定,则可以直接使用叠加模型;当然,如果不存在季节波动,则两种分解均可以
SPSS处理时间序列中的缺失值
-
缺失值发生在时间序列的开头或者尾部,可采用直接删除的方法;
-
缺失值发生在序列的中间位置,则不能删除(删除后原有的时间序列会错位),可采用替换缺失值的方法
转换->替换缺失值->新变量:要修补缺失值的变量->名称:修补后的变量名称->方法:指定替换的方法
替换缺失值的五种方法
- 序列平均值
用整个序列的平均数代替缺失值
- 临近点的平均值
用相邻若干个点的平均数来替换缺失值(默认为两个点)
- 临近点的中位数
用相邻若干个点的中位数来替换缺失值(默认为两个点)
- 线性插值
用相邻两个点的平均数来替换缺失值
- 邻近点的线性趋势
将时期数作为x,时间序列值作为y进行回归,求缺失点的预测值
SPSS定义时间变量:数据-> 定义日期和时间->选择格式
时序图:分析->时间序列预测->序列图
销量有向上的趋势,且第二季度的销量明显高于其他季度,因此数据表现出很强的季节性。随着时间变化,销量数据的季节波动变化不大,因此可使用加法分解模型
季节分解
分析->时间序列预测->季节性分解->变量->移动平均值权重:周期是奇数:所有点相等;周期是偶数:端点按0.5加权
表:对销量数据进行加法分解得到的季节因子
注意: 加法季节因子的和为0
周期 | 季节因子 |
---|---|
1 | 6.805 |
2 | 20.930 |
3 | ‐8.008 |
4 | ‐19.727 |
第一二季度的季节因子为正,第三四季度的季节因子为负,这说明该产品一二季度的平均销量要高于三四季度,且第二季度的平均销量要高于全年平均水平20.930件,第四季度的平均销量要低于全年平均水平19.727件
如果采用乘法分解,那么乘法季节因子的积为1;第二季度的季节因子为1.206,则表示第二季度的平均销量是全年平均销量的1.206倍。
时间序列分析的具体步骤:
-
作时间序列图;
-
判断时间序列包含的变动成分
-
时间序列分解(有周期性且包含长期趋势、季节变动或循环变动)
-
建立时间序列分析模型
-
预测未来的指标数值。
建立时间序列分析模型
专家建模器。专家建模器会自动查找每个相依序列的最佳拟合模型。如果指定了自变量(预测)变量,则专家建模器为ARIMA模型中的内容选择那些与该相依序列具有统计显著关系的模型。适当时,使用差分和/或平方根或自然对数转换对模型变量进行转换。缺省情况下,专家建模器既考虑指数平滑法模型也考虑ARIMA模型。
但是,您可以将专家建模器限制为仅搜索ARIMA模型或仅搜索指数平滑法模型。还可以指定自动检测离群值。
指数平滑模型
Simple模型
名称 | 适用条件 | 与之类似的ARIMA模型 |
---|---|---|
简单指数平滑法 | 不含趋势和季节成分 | ARIMA(0,1,1) |
简单指数平滑法预测只能预测一期
线性趋势模型 linear trend
名称 | 适用条件 | 与之类似的ARIMA模型 |
---|---|---|
霍特线性趋势模型 | 线性趋势、不含季节成分 | ARIMA(0,2,2) |
Holt 在1957年把简单的指数平滑模型进行了延伸,能够预测包含趋势的数据,该方法包含一个预测方程和两个平滑方程(一个用于水平,另一个用于趋势)
https://otexts.com/fpp2/holt.html
阻尼趋势模型 Damped trend
名称 | 适用条件 | 与之类似的ARIMA模型 |
---|---|---|
阻尼趋势模型 | 线性趋势逐渐减弱且不含季节成分 | ARIMA(1,1,2) |
经验表明, Holt的线性趋势模型倾向于对未来预测值过高,特别是对于长期预测。 Gardner 和 McKenzie (1985)在霍特的模型基础上引入了一种阻尼效应,用来缓解较高的线性趋势
https://otexts.com/fpp2/holt.html
简单季节性
名称 | 适用条件 | 与之类似的ARIMA模型 |
---|---|---|
简单季节性 | 含有稳定的季节成分、不含趋势 | SARIMA(0,1,1)×(0,1,1)s |
https://otexts.com/fpp2/taxonomy.html
温特加法模型Winters’ additive
名称 | 适用条件 | 与之类似的ARIMA模型 |
---|---|---|
温特加法模型 | 含有线性趋势和稳定的季节成分 | SARIMA(0,1,0)×(0,1,1)s |
https://otexts.com/fpp2/holt‐winters.html
温特乘法模型
名称 | 适用条件 | 与之类似的ARIMA模型 |
---|---|---|
温特乘法模型 | 含有线性趋势和不稳定的季节成分 | 不存在 |
https://otexts.com/fpp2/holt‐winters.html
一元时间序列分析的模型
时间序列的平稳性stationary series
时间序列 x t x_{t} xt满足:
1. 均值为固定常数
1. 方差存在且为常数
1. 协方差只和间隔s有关,与t无关
则称序列为协方差平稳 又称弱平稳
若平稳时间序列均值为0,协方差为0,则称为白噪声序列 white noise
差分方程:将某个时间序列变量表示为该变量的滞后项、时间和其他变量的函数,这样的一个函数方程被称为差分方程
差分方程的齐次部分: 只包含该变量自身和它的滞后项的式子
SPSS:1)处理数据的缺失值问题、生成时间变量并画出时间序列图; (2)数据是否为季度数据或者月份数据(至少有两个完整的周期,即两年),如果是的话则要观察图形中是否存在季节性波动。(3)根据时间序列图大致判断数据是否为平稳序列(数据围绕着均值上下波动,无趋势和季节性) (4)打开Spss,分析‐‐时间序列预测—创建传统模型(高版本的Spss可能才有这个功能哦,我用的是24版本,安装包可以在第5讲的课件压缩包里面下载),看看Spss专家建模器得出的最优的模型类型。(5)如果最后的结果是ARIMA(p,0,q)模型,那么我们就可以画出时间序列的样本ACF和PACF图形进行分析;如果得到的是ARIMA(p,1,q)模型,我们可以先对数据进行1阶差分后再用ACF和PACF图形分析;如果得到的结果与季节性相关,那么我们可以考虑使用时间序列分解。
additive
名称 | 适用条件 | 与之类似的ARIMA模型 |
---|---|---|
温特加法模型 | 含有线性趋势和稳定的季节成分 | SARIMA(0,1,0)×(0,1,1)s |
https://otexts.com/fpp2/holt‐winters.html
温特乘法模型
名称 | 适用条件 | 与之类似的ARIMA模型 |
---|---|---|
温特乘法模型 | 含有线性趋势和不稳定的季节成分 | 不存在 |
https://otexts.com/fpp2/holt‐winters.html
一元时间序列分析的模型
时间序列的平稳性stationary series
时间序列 x t x_{t} xt满足:
1. 均值为固定常数
1. 方差存在且为常数
1. 协方差只和间隔s有关,与t无关
则称序列为协方差平稳 又称弱平稳
若平稳时间序列均值为0,协方差为0,则称为白噪声序列 white noise
差分方程:将某个时间序列变量表示为该变量的滞后项、时间和其他变量的函数,这样的一个函数方程被称为差分方程
差分方程的齐次部分: 只包含该变量自身和它的滞后项的式子
SPSS:1)处理数据的缺失值问题、生成时间变量并画出时间序列图; (2)数据是否为季度数据或者月份数据(至少有两个完整的周期,即两年),如果是的话则要观察图形中是否存在季节性波动。(3)根据时间序列图大致判断数据是否为平稳序列(数据围绕着均值上下波动,无趋势和季节性) (4)打开Spss,分析‐‐时间序列预测—创建传统模型(高版本的Spss可能才有这个功能哦,我用的是24版本,安装包可以在第5讲的课件压缩包里面下载),看看Spss专家建模器得出的最优的模型类型。(5)如果最后的结果是ARIMA(p,0,q)模型,那么我们就可以画出时间序列的样本ACF和PACF图形进行分析;如果得到的是ARIMA(p,1,q)模型,我们可以先对数据进行1阶差分后再用ACF和PACF图形分析;如果得到的结果与季节性相关,那么我们可以考虑使用时间序列分解。