首页/文章/ 详情

Matlab 多元线性回归实现

3年前浏览3299

image.png

 过冷水诚挚邀请你加入Matlab仿真秀官方交流群进行Matlab学习、问题咨询、 Matlab相关资料下载,群号:927550334 

QQ图片20210424105303.png


过冷水之前给大家讲过统计回归的知识,举得案例只是类似于

图片1.png


    这样的一元线性回归,对于学数值分析的读者来说也只是一个入门的问题,针对于工程实际问题更加不可能是只有一个自变量一个因变量等着你去做统计回归,而是多个自变量一个因变量的问题才是最常见的问题,关于这样的问题一般都是多元线性回归或者多元非线性回归本期过冷水就和大家一起学习一下多元非线性回归的问题。

    所谓的多元线性回归问题如下

图片4.png

求得一组满足面方程的Ci

image.png

得到一个函数:

image.png

在网上搜索“matlab多元详细回归”所能找到的大多如下:

图片5.png

图片6.png


本期过冷水给大家带给大家不一样的回归方法: fitlm函数,使用 fitlm函数可以一次得到统计回归中常见的一些统计指标,非常方便省事

图片7.png

图片8.png    因为网页代码显示缺陷的原因许多读者反映推文代码不全,过冷水为了保证代码的获取完整性已经将代码上传至附件,有需要的可以自行下载,fitlm函数的详细应用详解视频也可通过多元线性回归图链接打开观看。

    上述案例比较简单,过冷水和大家综合学习一个比较复杂的案例,里面涉及到的知识点也比较多,比较考验程序的综合应用情况:

image.png

    有这么一组数据性别(男女)、年龄、体重、吸烟(吸/不吸)、其它指标 sys、 dia 、trial1、trial2、trial3、trial4性爱和烟场似乎各有两种选择。所以把这些字段改为分类字段。性爱和烟场似乎各有两种选择。所以把这些字段改为分类字段。我们来看一下是如何实现分类的:

patients.smoke = categorical(patients.smoke,0:1,{'No','Yes'});
patients.sex = categorical(patients.sex);

    我们的目标是将收缩压建模为病人年龄、体重、性别和吸烟情况的函数。创建一个线性公式,将'sys'作为'年龄','wgt', '性别'和'吸烟'的函数

modelspec = 'sys ~ age   wgt   sex   smoke';
mdl = fitlm(patients,modelspec)

image.png

这样我们就实现了,线性回归关系的函数系数寻找,同时可以绘制残差直方图

untitled1.jpg

plotResiduals(mdl)

分析数据发现存在异常值12,所以需要提出表格中的数据,how do?

outlier = mdl.Residuals.Raw > 12;
find(outlier)
ans =
    84

我们找到了第84行的数据是有问题的,现在需要做剔除

mdl = fitlm(patients,modelspec,'Exclude',84);

    这样我们就得到了新的回归模型,现在是如果我们得到了构建的模型,在具体应用的时候是否需要傻傻的构建方程一个一个变量往里面带入?完全不需。Matlab已经设计好了如何调用回归模型。假设有四个人,年龄分别是25岁、30岁、40岁和65岁,第一个和第三个吸烟。使用mdl1预测他们的sys:

ages = [25;30;40;65];
smoker = {'Yes';'No';'Yes';'No'};
systolicnew = feval(mdl1,ages,smoker)
coefnames = mdl1.CoefficientNames
mdl1.Formula
coefvals = mdl1.Coefficients(:,1).Estimate
  127.8561
  118.3412
  129.4734
  122.1149

    这样一个完整的线性回归问题就得到了完美的解决。通过增补案例为大家演示一下小问题的处理方式,本期分享就这么多,快用过冷水教你的方法去解决你遇到的线性回归问题吧!

图片

        过冷水发表于 仿真秀 平台原创文章,未经授权禁止私自转载,如需转载请需要和作者沟通表明授权声明,未授权文章皆视为侵权行为,必将追责。如果您希望加入Matlab仿真秀官方交流群进行Matlab学习、问题咨询、 Matlab相关资料下载均可加群:927550334。

精品回顾

 matlab绘制农夫过河动态图

分子动力学的原子空间运动轨迹演示编程

过冷水带你用matlab制作演示动画

python批量移动文件&重命名代码分享

过冷水和你分享 matlab读取存储各种文件的方法 文末有独家金曲分享

image.png

附件

50积分多元线性回归案例.rar
MATLAB
著作权归作者所有,欢迎分享,未经许可,不得转载
首次发布时间:2021-05-03
最近编辑:3年前
过冷水
博士 | 讲师 讨论号:927550334
获赞 361粉丝 184文章 107课程 11
点赞
收藏
未登录
还没有评论
课程
培训
服务
行家
VIP会员 学习 福利任务 兑换礼品
下载APP
联系我们
帮助与反馈