以数据为基础而建立数学模型的方法称为数据建模方法, 包括回归、统计、机器学习、深度学习、灰色预测、主成分分析、神经网络、时间序列分析等方法, 其中最常用的方法还是回归方法

目录

一元线性回归

LinearModel.fit 函数进行线性回归

LinearModel.fit 函数的说明:

regress 函数进行回归

一元非线性回归

多元回归

逐步回归

Logistic 回归


一元线性回归

要确定是线性还是非线性,然后就可以利用对应的回归方法建立它们之间的回归模型

clear;clc;close all;
x=[23.80,27.60,31.60,32.40,33.70,34.90,43.20,52.80,63.80,73.40];
y=[41.4,51.8,61.70,67.90,68.70,77.50,95.90,137.40,155.0,175.0];
%首先用散点图对数据关系进行判断
figure;
plot(x,y,'Or');
title('关系趋势图');
xlabel('职工工资');
ylabel('商品销售额');
hold on;

%最小二乘法
Lxx=sum((x-mean(x)).^2);
Lxy=sum((x-mean(x)).*(y-mean(y)));
a=Lxy/Lxx;
b=mean(y)-mean(x)*a;
y1= a*x+b;
plot(x,y1,'b');
if(b>=0)str=sprintf('该数据的回归函数为y=%fx+%f',a,b);
elsestr=sprintf('该数据的回归函数为y=%fx%f',a,b);
end
disp(str);

最后结果如下图所示:

LinearModel.fit 函数进行线性回归

clear;clc;close all;
x=[23.80,27.60,31.60,32.40,33.70,34.90,43.20,52.80,63.80,73.40];
y=[41.4,51.8,61.70,67.90,68.70,77.50,95.90,137.40,155.0,175.0];
m=LinearModel.fit(x,y);
m.plot();
disp(m);
%函数 LinearModel.fit 输出的内容为典型的线性回归的参数

LinearModel.fit 函数的说明:

m=LinearModel.fit(X,Y)

创建线性回归模型,X、Y是对应数据。注意这里 X 不要加全1的系数。

m.plot

绘制 wlb 回归模型的效果图

regress 函数进行回归

Y=y';
X=[ones(size(x,2),1),x'];
[b,bint,r,rint,s]=regress(Y,X);
disp(b)

具体信息可以参考文档。

b是估计参数,bint是估计参数的置信区间,r是残差项,rint是残差的置信区间,s包含4个统计量:决定系数 R^2(相关系数为R),F 值,F(1,n-2) 分布大于 F 值的概率 p,剩余方差 s^2 的值。

在以上回归程序中,使用了两个回归函数 LinearModel.fit 和 regress。在实际使用中,只要根据自己的需要选用一种就可以了。

一元非线性回归

为了得到 x 与 y 之间的关系,先绘制出它们之间的散点图

clear;clc;close all;
x=[1.5, 4.5, 7.5,10.5,13.5,16.5,19.5,22.5,25.5];
y=[7.0,4.8,3.6,3.1,2.7,2.5,2.4,2.3,2.2];
plot(x,y,'*r');
xlabel('X轴');
ylabel('Y轴');

由该图可以判断它们之间的关系近似为对数关系或指数关系,为此可以利用这两种函数形式进行非线性拟合。

%对数形式非线性回归
m1=@(b,x)b(1)+b(2)*log(x);
nonlinfit1=fitnlm(x,y,m1,[0.01,0.01])
b=nonlinfit1.Coefficients.Estimate;
Y1=b(1,1)+b(2,1)*log(x);
hold on;
plot(x,Y1,'--k');%指数形式非线性回归
m2 = 'y ~ b1*x^b2';
nonlinfit2 = fitnlm(x,y,m2,[0.01;0.01])
b1=nonlinfit2.Coefficients.Estimate(1,1);
b2=nonlinfit2.Coefficients.Estimate(2,1);
Y2=b1*x.^b2;
hold on
plot(x,Y2,'r');

(细节还不太懂。。。)

多元回归

能否应用多元线性回归,最好先通过数据可视化判断他们之间的变化趋势,如果近似满足线性关系,则可以执行利用多元线性回归方法对该问题进行回归。具体步骤如下:

(1)作出因变量 Y 与各自变量的样本散点图

作散点图的目的主要是观察因变量 Y 与各自变量间是否有比较好的线性关系

(2)进行多元线性回归

(3)由结果对模型进行判断

        1)相关系数 R 的评价:本例 R 的绝对值为 0.9542 ,表明线性相关性较强。

        2)F 检验法:当 F > F1-α(m,n-m-1) ,即认为因变量 y 与自变量 x1,x2,...,xm 之间有显著的线性相关关系;否则认为因变量 y 与自变量 x1,x2,...,xm 之间线性相关关系不显著。本例 F=67.919 > F1-0.05( 3,20 ) = 3.10。

        3)p 值检验:若 p < α(α 为预定显著水平),则说明因变量 y 与自变量 x1,x2,...,xm之间显著地有线性相关关系。本例输出结果,p<0.0001,显然满足 p<α=0.05。

以上三种统计推断方法推断的结果是一致的,说明因变量 y 与自变量之间显著地有线性相关关系,所得线性回归模型可用。s^2 当然越小越好,这主要在模型改进时作为参考。

逐步回归

例题:

Hald 数据是关于水泥生产的数据。某种水泥在凝固时放出的热量 Y(单位:卡/克)与水泥中 4 种化学成品所占的百分比有关:

在生产中测得 12 组数据,见表5,试建立 Y 关于这些因子的“最优”回归方程。

表5 水泥生产的数据

对于例 4 中的问题,可以使用多元线性回归、多元多项式回归,但也可以考虑使用逐步回归。从逐步回归的原理来看,逐步回归是以上两种回归方法的结合,可以自动使得方程的因子设置最合理。对于该问题,逐步回归的代码如下:

X=[7,26,6,60;1,29,15,52;11,56,8,20;11,31,8,47;7,52,6,33;11,55,9,22;3,71,17,6;1,31,22,44;2,54,18,22;21,47,4,26;1,40,23,34;11,66,9,12];   %自变量数据
Y=[78.5,74.3,104.3,87.6,95.9,109.2,102.7,72.5,93.1,115.9,83.8,113.3];  %因变量数据
Stepwise(X,Y,[1,2,3,4],0.05,0.10)% in=[1,2,3,4]表示X1、X2、X3、X4均保留在模型中

Logistic 回归

例题:

Logistic在2020年国赛C题的优秀论文中多次出现,也是类似的银行贷款问题。

企业到金融商业机构贷款,金融商业机构需要对企业进行评估。评估结果为 0 , 1 两种形式,0 表示企业两年后破产,将拒绝贷款,而 1 表示企业 2 年后具备还款能力,可以贷款。在表 6 中,已知前 20 家企业的三项评价指标值和评估结果,试建立模型对其他 5 家企业(企业 21-25)进行评估。

表6 企业还款能力评价表

% logistic回归Matlab实现程序%% 数据准备
clc, clear, close all
X0=xlsread('logistic_ex1.xlsx', 'A2:C21'); % 回归模型的输入
Y0=xlsread('logistic_ex1.xlsx', 'D2:D21'); % 回归模型的输出
X1=xlsread('logistic_ex1.xlsx', 'A2:C26'); % 预测数据输入%% logistics函数
GM = fitglm(X0,Y0,'Distribution','binomial');
Y1 = predict(GM,X1);%% 模型的评估
N0 =1:size(Y0,1);
N1= 1:size(Y1,1);
plot(N0', Y0, '-kd');
hold on;
scatter(N1', Y1, 'b')
xlabel('数据点编号');
ylabel('输出值');

参考博客:

https://blog.csdn.net/qq_43575267/article/details/94513202

https://mp.weixin.qq.com/s/OKXa3F3PkmFf1c90-t3AIg

MatLab之回归(脚本)相关推荐

  1. MATLAB逻辑回归实例及代码

    MATLAB逻辑回归实例及代码 逻辑回归基本流程: 注:回归系数W更新公式写错了,应该是减号,错写成加号了. 训练数据(包含训练样本及对应的标签)百度云链接:https://pan.baidu.com ...

  2. 解决matlab打开批量脚本文件[中文乱码]问题

    问题: 在电脑A中matlab创建的脚本程序,拷贝后去电脑B上matlab软件打开,发现脚本文件中的中文注释是乱码的. 原因: 打开同一文件的matlab软件版本不一,matlab编码方式不同,在A上 ...

  3. matlab门槛回归,重磅!这可能是最全的门槛回归汇总了

    原标题:重磅!这可能是最全的门槛回归汇总了 来源 | 计量经济学服务中心综合整理,原文发于2017-12-24 重磅!这可能是最全的门槛回归汇总了 转载请联系 进行回归分析,一般需要研究系数的估计值是 ...

  4. matlab中实时脚本与纯代码脚本

    官方解释:https://ww2.mathworks.cn/help/matlab/matlab_prog/what-is-a-live-script-or-function.html 实时脚本可以将 ...

  5. matlab识别不出linux链接,在Ubuntu上,从matlab调用外部脚本失败_linux_开发99编程知识库...

    我搜索了很多次,但没有解决这个问题. 我使用系统( )/unix ( ) 从matlab调用外部 R 脚本,并找到共享库的mis加载. 我知道在matlab中环境是错误的. 我还尝试在xterm或者g ...

  6. 三轴加速度传感器和六轴惯性传感器_[算法][三轴、六轴、九轴传感器算法分析] 1、分享一个三轴加速计matlab动态可视化脚本...

    一.有啥用 这里用的是LIS3DH三轴加速计,输出为X.Y.Z轴的加速度,通过串口连接电脑,电脑里运行matlab脚本通过串口实时获取数据并做可视化显示. 这里虽然是针对LIS3DH的,其实稍作修改即 ...

  7. matlab中结束脚本运行_疫情当前,生活向前 | MATLAB 一直 Online 等你

    疫情当前,生活向前,希望如期而至的不止是春天,还有疫情过后平安而充实的你 ! MATLAB 连夜帮你整理了我们所有网上的学习资源,为了注定不平凡的你. ◆  ◆  ◆   三大工具,在家开学也不怕[1 ...

  8. matlab中结束脚本运行_matlab学习总结(入门篇)

    更新(2020.3.31):发现MATLAB在网络经济学的仿真模拟方面有很大帮助,主要是构造一个 的方阵来刻画任意两个个体之间的关系. 更新(2017.6.11):最近用matlab完成了随机过程的两 ...

  9. matlab中结束脚本运行_MATLAB脱单指南

    之前发过一篇文章,是关于2019年的小目标,"打浦桥锦鲤". 有留言说,发paper的-- 有留言说,学习python的-- 居然还有好多人留言说,要!脱!单! 公众号的关注者,女 ...

最新文章

  1. memcache windows64 位安装
  2. linux间隔时间执行,科技常识:使用linux命令crontab间隔时间执行其它命令
  3. FIELD-SYMBOLS详解
  4. mnist 数据集的识别源码解析
  5. 数据结构(一)线性表链式存储实现
  6. 看动画学算法之:排序-冒泡排序
  7. 【原创】C#中的抽象类(abstract class)和接口(interface)的比较
  8. 当初怎么就入了VS的坑
  9. [2013.9.4]一个入门级别的破解教程。。。
  10. 编写 Struts2 程序 的三个步骤 手动配置
  11. 【剑指Offer,JS版本】二维数组中的查找
  12. LightOJ 1055 BFS暴力
  13. time 测试一条命令的执行时间
  14. 微信小程序开发教程!
  15. caj打开文件错误验证服务器,CAJ 打开pdf文件错误(无法读取交叉引用表)的解决方法...
  16. 【2020年高被引学者】 孙剑 旷视科技
  17. Java 14:JDK 14进入GA时的所有新功能
  18. [Linux 基础] -- Linux input 子系统要点总结
  19. 解决:禁止访问 (403) CSRF验证失败
  20. 人工智能就业越来越严峻,你还在坚持吗

热门文章

  1. Sketch进阶教程-原型设计入门
  2. 已知二叉树前序遍历是ADCEFGHB,中序遍历是CDFEGHAB,要求画出二叉树的结构或写出后序遍历
  3. 爆款打造之中小卖家如何做到零成本选/测款?(一)
  4. Python之字典查找元素(3种方式)
  5. c#中int类型转换为short类型
  6. 明治乳业“解锁乳酸菌之旅”趣味科普展览限时亮相虹桥南丰城;佛罗伦萨小镇开启10周年狂欢购 | 知消...
  7. CPU 执行程序的秘密,藏在了这 15 张图里
  8. 【PTA Advanced】1148 Werewolf - Simple Version(C++)
  9. iOS:iOS开发系列–打造自己的“美图秀秀”(上)
  10. Mac开机按键汇总以及快捷键!