过冷水诚挚邀请你加入Matlab仿真秀官方交流群进行Matlab学习、问题咨询、 Matlab相关资料下载,群号:927550334
过冷水之前给大家讲过统计回归的知识,举得案例只是类似于
这样的一元线性回归,对于学数值分析的读者来说也只是一个入门的问题,针对于工程实际问题更加不可能是只有一个自变量一个因变量等着你去做统计回归,而是多个自变量一个因变量的问题才是最常见的问题,关于这样的问题一般都是多元线性回归或者多元非线性回归本期过冷水就和大家一起学习一下多元非线性回归的问题。
所谓的多元线性回归问题如下:
求得一组满足面方程的Ci
得到一个函数:
在网上搜索“matlab多元详细回归”所能找到的大多如下:
本期过冷水给大家带给大家不一样的回归方法: fitlm函数,使用 fitlm函数可以一次得到统计回归中常见的一些统计指标,非常方便省事
因为网页代码显示缺陷的原因许多读者反映推文代码不全,过冷水为了保证代码的获取完整性已经将代码上传至附件,有需要的可以自行下载,fitlm函数的详细应用详解视频也可通过多元线性回归图链接打开观看。
上述案例比较简单,过冷水和大家综合学习一个比较复杂的案例,里面涉及到的知识点也比较多,比较考验程序的综合应用情况:
有这么一组数据性别(男女)、年龄、体重、吸烟(吸/不吸)、其它指标 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)
这样我们就实现了,线性回归关系的函数系数寻找,同时可以绘制残差直方图
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读取存储各种文件的方法 文末有独家金曲分享