参加数学建模的小伙伴要注意了:多元线性回归几乎是所有分析方式里面最核心、最常用、最全面的模型,博主本科大致参加了10+次数模,还有一次正大杯市场调研赛,其中获得拿得出手的奖有9次,有5次都用到了多元线性回归——至于没有用到的4次,1次由于题材原因实在用不了任何多元分析的手段,3次是因为初学不太会用,直至达到学以致用的境界,才体会到前者的妙不可言。
其实这玩意没那么复杂,哪怕你数学不好也能学会怎么用,顾名思义:
- 多元:多个变量、因素,很好理解
- 线性:一次方程Ax+b,很好理解
- 回归:研究随机变量之间的关系,概率论的东西
所以多元线性回归,可以通俗、不严谨地理解为将多个自变量和一个因变量建立某种线性关系,由于是线性的,因此可以写出表达式。接下来我们详细来看~
目录
一.理论知识
1.闲谈
2.自变量与因变量
二.模型功能
1.写出线性表达式
2.预测
3.分析变量关联
三.实操步骤
1.Stata实现
2.SPSS实现
3.MATLAB实现
四. 实际样例分析
一.理论知识
1.闲谈
2.自变量与因变量
二.模型功能
1.写出线性表达式
2.预测
预测模型顾名思义就是根据已知预测未知,这玩意没那么高大上的,本质就是将已知的X代入方程计算Y的过程~
3.分析变量关联
纸上得来终觉浅,接下来博主带领大家做一道真题,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:
选择第一个:将第一行的数据导入为变量的名称!!!很重要
导入后右侧可以看到:
大家写论文嘛,可以添油加醋,通过如下代码可以获取相关数据的描述性统计:
summarize 热风速度 接受距离 厚度mm 孔隙率 压缩回弹性率
(上述均为各位自己的变量名!)
然后通过regress关键字进行回归:
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分别为热风速度、接受距离、厚度,具体代码如下:
[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号开始,尽量近期把我力所能及的东西更新完,希望对各位有所帮助~