4000字三合一!Stata、SPSS、MATLAB实现多元线性回归详解!

参加数学建模的小伙伴要注意了:多元线性回归几乎是所有分析方式里面最核心、最常用、最全面的模型 ,博主本科大致参加了10+次数模,还有一次正大杯市场调研赛,其中获得拿得出手的奖有9次,有5次都用到了多元线性回归------至于没有用到的4次,1次由于题材原因实在用不了任何多元分析的手段,3次是因为初学不太会用,直至达到学以致用的境界,才体会到前者的妙不可言。

其实这玩意没那么复杂,哪怕你数学不好也能学会怎么用,顾名思义:

  • 多元:多个变量、因素,很好理解
  • 线性:一次方程Ax+b,很好理解
  • 回归:研究随机变量之间的关系,概率论的东西

所以多元线性回归,可以通俗、不严谨地理解为将多个自变量和一个因变量建立某种线性关系,由于是线性的,因此可以写出表达式。接下来我们详细来看~

目录

一.理论知识

1.闲谈

2.自变量与因变量

二.模型功能

1.写出线性表达式

2.预测

3.分析变量关联

三.实操步骤

1.Stata实现

2.SPSS实现

3.MATLAB实现

[四. 实际样例分析](#四. 实际样例分析)


一.理论知识

回归分析的任务就是, 通过研究自变量 X 和因变量 Y 的相关关系,尝试去解释 Y 的形成机制,进 而达到通过 X 去预测 Y 的目的。所谓的自变量X,是由一些列因素共同组成的(多个自变量)。

1.闲谈


从小大家就听师长们不断说,努力可以获取成功。从宏观上看这一价值观是没有问题的。随着年龄的增长,理科生逐渐产生了辩证思维, 这时候我们逐渐认识到并不是所有的努力都能归结为狭义上的成功的。

这就是所谓的相关性不等于因果性的概念,所谓的相关只是一个量化的概念,当相关系数很高时,比如0.8,我们可以说努力的情况下80%的概率会成功,但我们不能保证百分百成功~
归根结底,回归分析的是, 努力导致成功的这一概率是多少 ,而这个所谓的概率即努力和成功的相关性, 我们无法研究这个【必然】时,需要研究只是多少程度的【必然】~

2.自变量与因变量

自变量是自己改变的量,因变量是因为自变量改变而改变的量,大家在小学的基础上理解依旧是大差不差的。在回归的角度,所谓的自变量X,即为解释变量,而Y则为被解释变量。回归的任务就是研究解释变量和被解释变量之间的关系~

二.模型功能

1.写出线性表达式

回归分析要去识别并判断: 哪些 X 变量是同 Y 真的相关,哪些不是。 在线性回归中,最终我们可以得到一个Y与多个X之间的线性表达式~

2.预测

预测模型顾名思义就是根据已知预测未知,这玩意没那么高大上的,本质就是将已知的X代入方程计算Y的过程~

3.分析变量关联

去除了那些同Y 不相关的 X变量,那么剩下的,就都是重要的、有用的X变量了~在确定了重要的X变量的前提下,我们还想 赋予不同 X 不同的权重, 也就是不同的回归系数,进而我们可以知道不同变量之间的相对重要性。


纸上得来终觉浅,接下来博主带领大家做一道真题,2022的华数杯C题,这道比较简单,而且博主拿到一等奖还算有资质分享一下经验,2022的国赛C题玻璃那道,涉及到主成分回归------也就是先主成分分析再线性回归,稍微有点超纲,今天不做讲解~

三.实操步骤

看上面的第二问:他提到了8个工艺参数的组合,不难想到这是多变量,立即考虑多元线性回归!!!又说将预测的数据填入表中------是不是这就是博主前文说到的预测功能?这个所谓的结构变量,即为对应的厚度、孔隙率等上述3种~

原数据经过处理后得到上述结果,不过这里博主不想让大家浪费时间去了解这道题目的背景------重在讲方法。因此大家直接看下表就行:其中热风速度、接受距离为自变量,而另外3个为因变量:

|------|------|-------|--------|-----------|
| 热风速度 | 接受距离 | 厚度mm | 孔隙率(%) | 压缩回弹性率(%) |
| 1200 | 30 | 2.725 | 96.17 | 94.59 |
| 1000 | 30 | 2.445 | 95.73 | 90.11 |
| 800 | 35 | 2.365 | 95.58 | 90.2 |
| 800 | 20 | 1.74 | 94 | 90.12 |
| 1200 | 35 | 2.725 | 96.17 | 85.73 |
| 800 | 30 | 1.775 | 94.12 | 88.76 |
| 800 | 35 | 2.015 | 94.82 | 82.19 |
| 1100 | 35 | 2.81 | 96.28 | 91.49 |
| 900 | 20 | 2.02 | 94.83 | 86.21 |
| 1100 | 40 | 3.4 | 96.93 | 82.88 |
| 900 | 35 | 2.75 | 96.7 | 83.05 |
| 900 | 30 | 2.935 | 96.44 | 92.31 |
| 1200 | 25 | 2.96 | 96.47 | 86.47 |
| 1000 | 35 | 3.165 | 96.7 | 89.29 |
| 1100 | 30 | 2.525 | 96.43 | 84.24 |
| 1000 | 20 | 2.06 | 94.93 | 87.12 |
| 900 | 40 | 2.91 | 96.41 | 86.65 |
| 900 | 25 | 2.05 | 94.91 | 82.65 |
| 1200 | 40 | 3.845 | 97.3 | 75.97 |
| 1000 | 40 | 3.425 | 96.95 | 94.33 |
| 1200 | 20 | 2.425 | 95.69 | 84.38 |
| 1100 | 20 | 2.085 | 94.99 | 88.83 |
| 800 | 40 | 2.81 | 96.28 | 83.2 |
| 1100 | 25 | 3.105 | 96.64 | 83.82 |
| 1000 | 25 | 2.115 | 95.06 | 80.98 |

但是大家发现问题了:多元回归的理论中,不是应该是多对一吗?(多个自变量一个因变量)大家说的不错,因此,这里我们实际上是有3个方程:分别建立两个自变量对应三个因变量的方程!

1.Stata实现

博主用的是15SE版本的,如下图:

将保存在Excel中的数据导入Stata:

选择第一个:将第一行的数据导入为变量的名称!!!很重要

导入后右侧可以看到:

大家写论文嘛,可以添油加醋,通过如下代码可以获取相关数据的描述性统计

R 复制代码
 summarize 热风速度 接受距离 厚度mm 孔隙率 压缩回弹性率

(上述均为各位自己的变量名!)

然后通过regress关键字进行回归

R 复制代码
regress 厚度mm 热风速度 接受距离

注意:第一个是因变量,后面全是自变量,用空格分开~得到如下结果:

  • 其中,R方为0.7242,这个本质即为相关系数,大家只需要记住低于0.9/0.8就不太好了,最好不要拟合函数,出现这种情况,需要大家加入平方项或者交叉项,这里先不展开描述~
  • Coef对应的一列,即为线性方程中的系数,cons为常数项,因此上述得到的方程为:

厚度=0.002热风速度+0.053接受距离-1.074

然后题干中不是给了待预测值吗?直接代入方程就能求解!

然后孔隙率和压缩回弹性率也同理,给大家看一下结果:

非常遗憾哈,这几个相关系数R方------也就是大家另一种称呼法,拟合优度,都有点不下不上,竞赛汇总遇到这种0.7/0.8的,到是也能凑合用,不过博主参赛的几次,拟合优度都能达到0.9+,不论是多元线性回归、BP神经网络还是普通拟合,这里先留点悬念,下篇给大家说解决方式~

2.SPSS实现

如果不安装Stata也没关系,这里又更好用的SPSS,还是读入数据:

分析->回归->线性:

选择因变量,自变量:

结果如下:

大家可以返回去看看,和Stata计算的一模一样------当然这是肯定的,如果连算法逻辑都写不明白,IBM肯定要裁掉他们的程序员了哈哈~

至于另外两个就不再赘述,一个道理~

3.MATLAB实现

说来也巧啊,这统计学语言就是比软工的高级语言容易,MATLAB也是用regress命令:

上述x1、x2、y1分别为热风速度、接受距离、厚度,具体代码如下:

Matlab 复制代码
[b,bint,r,rint,stats]=regress(y1,x1,,x2)

b即为系数,这个方法大家了解一下就行,不建议大家用~

四. 实际样例分析

第一次使用是2022年的华数杯,前面的数据不太对,毕竟已经25个月了。。。。如下的当时的获奖论文,大家可以参考~

第二次用是在2022年的国赛,实际上不是多元线性回归而是逻辑回归,不过大致理论一样,只不过结果只能存在0/1罢了。

22国赛中还有上文提到的主成分回归,这里我们叫线性概率模型,一个道理:

说句题外话,如果大家选择C题或者统计大类的题目,如果能用到神经网络、动物优化(鲸鱼、狼群、蚁群优化)等类型的算法,大概率是可以省一保底的。博主当时这篇(也就是大致两年前吧,应该是2022.9.15左右) 用到了BP神经网络、K均值聚类、逻辑回归等,拿到省一但是有机会能拿到国二的------至于为什么是省一而非国二相信参加过的同志都知道原因,不过省一也能接受,就这样吧~

然后就是2022年的亚太赛(冬季),用多元回归研究什么全球温度的分布特征,不过只拿到了二等奖,亚太一等名额太少了~

然后就是2023的美赛,美国著名的那个报纸游戏,因为精力不能全力以赴稿竞赛(懂的都懂)最后也只能拿到M奖,F和O如果不靠场外援助,大概率只有985对口专业的选手有这个正儿八经的实力~

收官战就是2023的正大杯,还是省一(无语了),最搞笑的是我们学校有一队直接就把去年的作品拿出来重写参赛,好像是国二还是国三来着。。。各位选老师的时候一定要慎重, 努力和实力的意义在于你可以击败90%-95%的对手,剩下的5%~10%,看造化和power吧,哈哈。


写在最后:

前面提到了如何解决拟合优度不高的问题,不打算在这篇讲解了,另开一篇~这篇的目的在于让大家从0分到70分------即如何以一个及格水平使用多元回归求解数学建模的问题------好吧,实际上有80分,肯定没这么低~

另外注意的是:各位千万不敢原封不动地照搬我的写法哈 ,不然最后查重可要吃亏,这里放几张图就是给大家看一下大致的书写思路是什么。最近老有后台私信让我出数模的相关东西,估计是快到今年的国赛了各位冲刺呢吧?看了一下比赛是9月5号开始,尽量近期把我力所能及的东西更新完,希望对各位有所帮助~

相关推荐
PieroPc17 分钟前
Python 写的 智慧记 进销存 辅助 程序 导入导出 excel 可打印
开发语言·python·excel
tinker在coding20 分钟前
Coding Caprice - Linked-List 1
算法·leetcode
2401_857439693 小时前
SSM 架构下 Vue 电脑测评系统:为电脑性能评估赋能
开发语言·php
孤亭远见3 小时前
COMSOL with Matlab
matlab
SoraLuna3 小时前
「Mac畅玩鸿蒙与硬件47」UI互动应用篇24 - 虚拟音乐控制台
开发语言·macos·ui·华为·harmonyos
xlsw_3 小时前
java全栈day20--Web后端实战(Mybatis基础2)
java·开发语言·mybatis
Dream_Snowar4 小时前
速通Python 第三节
开发语言·python
XH华5 小时前
初识C语言之二维数组(下)
c语言·算法
南宫生5 小时前
力扣-图论-17【算法学习day.67】
java·学习·算法·leetcode·图论
图南楠5 小时前
simulink离散传递函数得到差分方程并用C语言实现
matlab