Matlab——回归分析
来源:互联网 发布:已知矩阵怎么求行列式 编辑:程序博客网 时间:2024/06/05 21:10
基础知识
- 函数ones(a,b)产生a行b列全1数组,ones(a)产生a行a列全1数组。zeros()同理。
- Y=y’, Y为y的转置矩阵。
- 函数size:获取数组的行数和列数
(1)s=size(A),当只有一个输出参数时,返回一个行向量,该行向量的第一个元素时数组的行数,第二个元素是数组的列数。
(2)[r,c]=size(A),当有两个输出参数时,size函数将数组的行数返回到第一个输出变量,将数组的列数返回到第二个输出变量。
(3)如果在size函数的输入参数中再添加一项,并用1或2为该项赋值,则size将返回数组的行数或列数。其中r=size(A,1)该语句返回的时数组A的行数, c=size(A,2) 该语句返回的时数组A的列数。 - x(i,:)代表第i的所有元素.x(:,i)代表的是第i列的所有元素.x([i:k],:)则代表X的i到k行的所有元素.如果只想单独要第i行和第j行的元素,x([i,j],:)。
1. 一元线性回归
clc, clear all, close allx=[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];Y=y';X=[ones(size(x,2),1),x'];[b, bint, r, rint, s] = regress(Y, X)
注:
在以上回归程序中,使用了回归函数 regress。关于 regress,其用法多样,MATLAB 帮助中关于 regress 的用法,有以下几种:
b = regress(y,X)
[b,bint] = regress(y,X)
[b,bint,r] = regress(y,X)
[b,bint,r,rint] = regress(y,X)
[b,bint,r,rint,stats] = regress(y,X)
[…] = regress(y,X,alpha)
输入 y(因变量,列向量),X(1与自变量组成的矩阵)和(alpha,是显著性水平, 缺省时默认0.05)。
输出b是线性回归的系数(第一个是常数,第二个是一次项系数),bint 是 β0,β1 的置信区间,r 是残差(列向量),rint是残差的置信区间,s包含4个统计量:决定系数 R^2(相关系数为R),F 值,F(1,n-2) 分布大于 F 值的概率 p,剩余方差 s^2 的值。其意义和用法如下:R^2 的值越接近 1,变量的线性相关性越强,说明模型有效;如果满足
则认为变量y与x显著地有线性关系,其中 F1-α(1,n-2) 的值可查F分布表,或直接用 MATLAB 命令 finv(1-α,1, n-2) 计算得到;如果 p<α 表示线性模型可用。这三个值可以相互印证。s^2 的值主要用来比较模型是否有改进,其值越小说明模型精度越高。
简单来说,stats中的值,第一个值越接近1越好;第三个值越小越好,为0最好。
上面程序的输出为:
b = -23.5493 2.7991bint = -35.3165 -11.7822 2.5350 3.0633r = -1.6697 -1.9064 -3.2029 0.7578 -2.0810 3.3600 -1.4727 13.1557 -0.0346 -6.9062rint = -14.1095 10.7701 -14.7237 10.9109 -16.1305 9.7247 -12.5148 14.0304 -15.3118 11.1497 -9.7162 16.4362 -14.9630 12.0176 7.2091 19.1024 -11.9937 11.9245 -14.7576 0.9453s = 0.9868 597.0543 0.0000 31.9768
2. 一元非线性回归
第一步,散点图画出来,观察是类似是什么模型。
第二步,matlab命令行输入 cftool,回车后打开曲线模拟工具箱。将数据填入x,y那里。
第三步,选择想要的曲线拟合函数。
· Custom Equations:用户自定义的函数类型
· Exponential:指数逼近,有2种类型, a*exp(b*x) 、 a*exp(b*x) + c*exp(d*x)
· Fourier:傅立叶逼近,有7种类型,基础型是 a0 + a1*cos(x*w) + b1*sin(x*w)
· Gaussian:高斯逼近,有8种类型,基础型是 a1*exp(-((x-b1)/c1)^2)
· Interpolant:插值逼近,有4种类型,linear、nearest neighbor、cubic spline、shape-preserving
· Polynomial:多形式逼近,有9种类型,linear ~、quadratic ~、cubic ~、4-9th degree ~
· Power:幂逼近,有2种类型,a*x^b 、a*x^b + c
· Rational:有理数逼近,分子、分母共有的类型是linear ~、quadratic ~、cubic ~、4-5th degree ~;此外,分子还包括constant型
· Smoothing Spline:平滑逼近(翻译的不大恰当,不好意思)
· Sum of Sin Functions:正弦曲线逼近,有8种类型,基础型是 a1*sin(b1*x + c1)
· Weibull:只有一种,a*b*x^(b-1)*exp(-a*x^b)
选择好所需的拟合曲线类型及其子类型,并进行相关设置:
——如果是非自定义的类型,根据实际需要点击“Fit options”按钮,设置拟合算法、修改待估计参数的上下限等参数;
——如果选Custom Equations,点击“New”按钮,弹出自定义函数等式窗口,有“Linear Equations线性等式”和“General Equations构造等式”两种标签。
第四步,多次拟合选择个最好的出来。评判标准:
SSE: 255.8 R-square: 0.9868
这里SSE越小越贴近,不过因题而异不一定要特别小。第二个R-square越接近1越好。
第四步,得到你想要的回归方程。
3. 多元回归
这里是一个多元线性回归,应用下面代码之前,应该保证y与每一个x都大概成线性的关系(画散点图)。这里主要描述回归,以上不做赘述。
clear all close allx1=[3.5 5.3 5.1 5.8 4.2 6.0 6.8 5.5 3.1 7.2 4.5 4.9 8.0 6.5 6.5 3.7 6.2 7.0 4.0 4.5 5.9 5.6 4.8 3.9];x2=[9 20 18 33 31 13 25 30 5 47 25 11 23 35 39 21 7 40 35 23 33 27 34 15];x3=[6.1 6.4 7.4 6.7 7.5 5.9 6.0 4.0 5.8 8.3 5.0 6.4 7.6 7.0 5.0 4.0 5.5 7.0 6.0 3.5 4.9 4.3 8.0 5.0];Y=[33.2 40.3 38.7 46.8 41.4 37.5 39.0 40.7 30.1 52.9 38.2 31.8 43.3 44.1 42.5 33.6 34.2 48.0 38.0 35.9 40.4 36.8 45.2 35.1];n=24; m=3;X=[ones(n,1),x1',x2',x3'];[b,bint,r,rint,s]=regress(Y',X,0.05)
这里把regress函数的第三个参数显著值也写出来了,不写的话默认也是0.05。
b = 18.0157 1.0817 0.3212 1.2835bint = 13.9052 22.1262 0.3900 1.7733 0.2440 0.3984 0.6691 1.8979r = 0.6781 1.9129 -0.1119 3.3114 -0.7424 1.2459 -2.1022 1.9650 -0.3193 1.3466 0.8691 -3.2637 -0.5115 -1.1733 -1.4910 -0.2972 0.1702 0.5799 -3.2856 1.1368 -0.8864 -1.4646 0.8032 1.6301rint = -2.7017 4.0580 -1.6203 5.4461 -3.6190 3.3951 0.0498 6.5729 -4.0560 2.5712 -2.1800 4.6717 -5.4947 1.2902 -1.3231 5.2531 -3.5894 2.9507 -1.7678 4.4609 -2.7146 4.4529 -6.4090 -0.1183 -3.6088 2.5859 -4.7040 2.3575 -4.8249 1.8429 -3.7129 3.1185 -3.0504 3.3907 -2.8855 4.0453 -6.2644 -0.3067 -2.1893 4.4630 -4.4002 2.6273 -4.8991 1.9699 -2.4872 4.0937 -1.8351 5.0954s = 0.9106 67.9195 0.0000 3.0719
- Matlab——回归分析
- matlab实现回归分析
- MATLAB回归分析
- Matlab-差值/拟合/回归分析
- 利用matlab做回归分析
- 使用matlab做回归分析
- 利用matlab做回归分析
- ML—逻辑回归算法(MATLAB)
- matlab 多元回归分析的例子
- Matlab教程三:回归分析(拟合)
- Matlab回归分析regress和polyfit
- 机器学习(2)——回归算法: 回归分析
- MatLab建模学习笔记12——Logistic回归模型
- 回归分析——学习资料(更新..........)
- R语言系列—回归分析
- 什么叫“回归”——“回归”名词的由来&&回归与拟合、分类的区别 && 回归分析
- 利用matlab中的函数进行线性回归分析
- Matlab中进行一元线性回归分析的方法
- Hibernate 事务管理器的事务提交
- CleanMyMac 为什么提示 该激活码没有多余激活 请扩展许可证
- 字符串替换空格: 请实现一个函数,把字符串中的每个空格替换成“%20”。例如输入“we are happy.”,则输出“we%20are%20happy.”。
- 如何使用mysql的C接口实现对mysql数据库的增、删、改
- 牛客网《剑指Offer》 二进制中1的个数
- Matlab——回归分析
- Java 8系列之重新认识HashMap
- grep详解
- window线程创建
- java重点 接口的理解
- Python | 数据整合
- CSS布局初体验
- ABAP 中的Screen, Dynpro, PBO, PAI小结
- day15 集合(一)