7月25日MATLAB学习记录
2020-07-26 11:08
141 查看
一、一元线性回归
先放上一元线性回归方程的参数公式
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.7 67.9 68.7 77.5 95.9 137.4 155.0 175.0]; plot(x,y,'r*'); %做散点图 xlabel('x(职工工资总额)','fontsize',12); %横坐标名 ylabel('y(商品零售总额)','fontsize',12); %纵坐标名 参数3位设置标签字体大小 set(gca,'linewidth',2); %设置各轴线宽度 %采用最小二乘拟合 Lxx=sum((x-mean(x)).^2); Lxy=sum((x-mean(x)).*(y-mean(y)));%mean为求平均数函数 b1=Lxy/Lxx; b0=mean(y)-b1*mean(x); y1=b1*x+b0; hold on;%保持原图并接受此后绘制的新的曲线,叠加绘图 plot(x,y1,'linewidth',2);%参数4为设置线宽 m2=LinearModel.fit(x,y) %采用LinearModel.fit函数线性回归 %用regress函数回归 Y=y'; X=[ones(size(x,2),1),x']; [b,bint,r,rint,s]=regress(Y,X);%Y为因变量的列向量,X为1列和x列向量组成的矩阵
执行结果:
LinearModel.fit函数
regress函数
至于具体返回的参数究竟有什么含义还在学习中
知识点:一元线性回归公式,plot函数的简单使用,set设置轴线,x(y)label设置标签,hold on、hold off的作用,两种回归函数,LinearModel.fit,regress。
二、一元非线性回归(此处暂指幂对函数)
先上练习代码
clc;clear; x=[1.5,4.5,7.5,10.5,13.5,16.5,19.5,22.5,25.5]; y=[7,4.8,3.6,3.1,2.7,2.5,2.4,2.3,2.2]; plot(x,y,'*');%作散点图 set(gca,'linewidth',2);%设轴线 xlabel('销售额x/万元','fontsize',2); ylabel('流通费率y/万元','fontsize',2);%设xy标签 %对数形式非线性回归 m1=@(b,x)b(1)+b(2)*log(x);%@表示匿名函数 nonlinfit1=fitnlm(x,y,m1,[0.01;0.01])%参数1为自变量,参数二为因变量,参数三为要拟合的函数模型,参数4为初值 b=nonlinfit1.Coefficients.Estimate;%取出估计参数 Y1=b(1)+b(2)*log(x); hold on plot(x,Y1,'--k','linewidth',2);%k为黑色,双横杠为虚线,单横杠为折线,做出拟合曲线 %指数形式非线性回归 m2=@(b,x)b(1)*x.^b(2);%也可写成m2='y~b1*x^b2' nonlinfit2=fitnlm(x,y,m2,[1;1]) b=nonlinfit2.Coefficients.Estimate; Y2=b(1)*x.^b(2); hold on plot(x,Y2,'r','linewidth',2) legend('原始数据','a+b*log(x)','a*x^b')%添加图例
对数形式回归结果
指数形式回归结果
一个重要参数R-Squared为拟合的决定系数,该值越大,拟合越优,故采取指数形式拟合
知识点:
1.@的使用
①匿名函数
匿名函数是函数句柄的一种特殊用法,这里所得到的函数句柄变量不指向特定的函数(即不指向函数M文件中的函数名),而是指向一个函数表达式(具体表达式)。
语法如下:
变量名=@(输入参数列表)运算表达式;
如:
m=@(x,y)x+2*y c=m(1,2)
执行结果为5
②函数句柄
语法如下:
变量名= @ 函数名;
@的作用就是将一个函数的函数句柄赋值给等号左边的变量。在调用函数时就可以调用该句柄,可以实现同样的功能。
如:
%定义函数b function y = b(x1,x2) y=x1+2*x2; end %通过函数句柄调用 g=@b; g(1,3)
2.fitnlm函数的使用
3.fitnlm求得的模型的参数的调用:xxx(模型变量).Coefficients.Estimate
4.决定系数R-Squared
5.图例的添加:legend
其他参数的具体含义将在后期进一步学习
相关文章推荐
- MatLab-LaTeX联动学习记录
- matlab的学习记录1
- matlab学习中遇到的一些语句(记录下来)
- MATLAB学习笔记 函数记录(一)
- matlab的车牌识别——根据easyprr学习记录(一)
- 学习记录 复杂网络MATLAB工具箱
- MATLAB学习过程常用命令记录(作图)
- MATLAB学习过程常用命令记录(函数)
- MATLAB基础学习记录
- MATLAB_视频处理学习记录_01
- matlab 学习记录
- 记录在学习ML过程中,在MATLAB中集成LibSVM时遇到的问题
- C++调用CUDA(基于VS2015) matlab调用CUDA 以及matlab调用C++ 学习记录
- MATLAB学习记录
- 学习记录 初学MATLAB
- 2011-08-17 matlab学习记录
- 菜鸟的MATLAB学习记录
- MATLAB小笔记——矩阵的使用(记录学习)
- 开始学习Matlab,一点一滴记录自己的所学 仅供个人参考Matlab(1)
- 开始学习Matlab,一点一滴记录自己的所学 仅供自己参考Matlab(2)