Matlab回归分析
- 格式:docx
- 大小:71.13 KB
- 文档页数:12
利用MATLAB进行回归分析一、实验目的:1.了解回归分析的基本原理,掌握MATLAB实现的方法;2. 练习用回归分析解决实际问题。
二、实验内容:题目1社会学家认为犯罪与收入低、失业及人口规模有关,对20个城市的犯罪率y(每10万人中犯罪的人数)与年收入低于5000美元家庭的百分比1x、失业率2x和人口总数3x(千人)进行了调查,结果如下表。
(1)若1x~3x中至多只许选择2个变量,最好的模型是什么?(2)包含3个自变量的模型比上面的模型好吗?确定最终模型。
(3)对最终模型观察残差,有无异常点,若有,剔除后如何。
理论分析与程序设计:为了能够有一个较直观的认识,我们可以先分别作出犯罪率y与年收入低于5000美元家庭的百分比1x、失业率2x和人口总数x(千人)之间关系的散点图,根据大致分布粗略估计各因素造3成的影响大小,再通过逐步回归法确定应该选择哪几个自变量作为模型。
编写程序如下:clc;clear all;y=[11.2 13.4 40.7 5.3 24.8 12.7 20.9 35.7 8.7 9.6 14.5 26.9 15.736.2 18.1 28.9 14.9 25.8 21.7 25.7];%犯罪率(人/十万人)x1=[16.5 20.5 26.3 16.5 19.2 16.5 20.2 21.3 17.2 14.3 18.1 23.1 19.124.7 18.6 24.9 17.9 22.4 20.2 16.9];%低收入家庭百分比x2=[6.2 6.4 9.3 5.3 7.3 5.9 6.4 7.6 4.9 6.4 6.0 7.4 5.8 8.6 6.5 8.36.7 8.6 8.4 6.7];%失业率x3=[587 643 635 692 1248 643 1964 1531 713 749 7895 762 2793 741 625 854 716 921 595 3353];%总人口数(千人)figure(1),plot(x1,y,'*');figure(2),plot(x2,y,'*');figure(3),plot(x3,y,'*');X1=[x1',x2',x3'];stepwise(X1,y)运行结果与结论:犯罪率与低收入散点图犯罪率与失业率散点图犯罪率与人口总数散点图低收入与失业率作为自变量低收入与人口总数作为自变量失业率与人口总数作为自变量在图中可以明显看出前两图的线性程度很好,而第三个图的线性程度较差,从这个角度来说我们应该以失业率和低收入为自变量建立模型。
MATLAB回归分析回归分析是统计学中常用的一种方法,用于建立一个依赖于自变量(独立变量)的因变量(依赖变量)的关系模型。
在MATLAB环境下,回归分析可以实现简单线性回归、多元线性回归以及非线性回归等。
简单线性回归是一种最简单的回归分析方法,它假设自变量和因变量之间存在线性关系。
在MATLAB中,可以通过`polyfit`函数进行简单线性回归分析。
该函数可以拟合一元数据点集和一维多项式,返回回归系数和截距。
例如:```matlabx=[1,2,3,4,5];y=[2,3,4,5,6];p = polyfit(x, y, 1);slope = p(1);intercept = p(2);```上述代码中,`x`是自变量的数据点,`y`是因变量的数据点。
函数`polyfit`的第三个参数指定了回归的阶数,这里是1,即一次线性回归。
返回的`p(1)`和`p(2)`分别是回归系数和截距。
返回的`p`可以通过`polyval`函数进行预测。
例如:```matlabx_new = 6;y_pred = polyval(p, x_new);```多元线性回归是在有多个自变量的情况下进行的回归分析。
在MATLAB中,可以使用`fitlm`函数进行多元线性回归分析。
例如:```matlabx1=[1,2,3,4,5];x2=[2,4,6,8,10];y=[2,5,7,8,10];X=[x1',x2'];model = fitlm(X, y);coefficients = model.Coefficients.Estimate;```上述代码中,`x1`和`x2`是两个自变量的数据点,`y`是因变量的数据点。
通过将两个自变量放在`X`矩阵中,可以利用`fitlm`函数进行多元线性回归分析。
返回值`model`是回归模型对象,可以通过`model.Coefficients.Estimate`获得回归系数。
1、 regress命令用于一元及多元线性回归,本质上是最小二乘法。
在Matlab 2014a中,输入help regress ,会弹出和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)参数解释:B:回归系数,是个向量(“the vector B of regression coefficients in the linear model Y = X*B”)。
BINT:回归系数的区间估计(“a matrix BINT of 95% confidence intervals for B”)。
R:残差(“a vector R of residuals”)。
RINT:置信区间(“a matrix RINT of intervals that can be used to diagnose outliers”)。
STATS:用于检验回归模型的统计量。
有4个数值:●判定系数R^2: 指回归直线对观测值的拟合程度。
R^2的取值范围是[0,1]。
R^2的值越接近1,说明回归直线对观测值的拟合程度越好;反之,R^2的值越接近0,说明回归直线对观测值的拟合程度越差。
●F统计量观测值: F值越大通过检验的可能性就越大F值表示回归模型的方差与残差的比值(残差就是总方差减去回归模型的方差),可以想象F越大表示残差越小,模拟的精度越高(从方差方面考虑).不过只要F的值大于你所需要的显著性检验的临界值就可以了.●检验的p的值: 就是当原假设为真时所得到的样本观察结果或更极端结果出现的概率。
如果P值很小,说明原假设情况的发生的概率很小,而如果出现了,根据小概率原理,我们就有理由拒绝原假设,P值越小,我们拒绝原假设的理由越充分。
Matlab技术回归分析方法简介:回归分析是一种常用的数据分析方法,用于建立变量之间的关系模型。
Matlab是一种功能强大的数值计算软件,提供了丰富的函数和工具包,用于实现回归分析。
本文将介绍几种常见的Matlab技术回归分析方法,并探讨其应用场景和优缺点。
一、线性回归分析:线性回归分析是回归分析的经典方法之一,用于研究变量之间的线性关系。
在Matlab中,可以使用`fitlm`函数来实现线性回归分析。
该函数通过最小二乘法拟合出最优的线性模型,并提供了各种统计指标和图形展示功能。
线性回归分析的应用场景广泛,例如预测销售额、研究市场需求等。
然而,线性回归假设自变量和因变量之间存在线性关系,当数据呈现非线性关系时,线性回归会失效。
为了解决非线性关系的问题,Matlab提供了多种非线性回归分析方法,如多项式回归、指数回归等。
二、多项式回归分析:多项式回归分析是一种常见的非线性回归方法,用于建立多项式模型来描述变量之间的关系。
在Matlab中,可以使用`fitlm`函数中的`polyfit`选项来实现多项式回归分析。
多项式回归在处理非线性关系时具有很好的灵活性。
通过选择不同的多项式次数,可以适应不同程度的非线性关系。
然而,多项式回归容易过拟合,导致模型过于复杂,对新数据的拟合效果不佳。
为了解决过拟合问题,Matlab提供了正则化技术,如岭回归和Lasso回归,可以有效控制模型复杂度。
三、岭回归分析:岭回归是一种正则化技术,通过添加L2正则项来控制模型的复杂度。
在Matlab中,可以使用`fitlm`函数的`Regularization`选项来实现岭回归分析。
岭回归通过限制系数的大小,减少模型的方差,并改善模型的拟合效果。
然而,岭回归不能自动选择最优的正则化参数,需要通过交叉验证等方法进行调优。
四、Lasso回归分析:Lasso回归是另一种常用的正则化技术,通过添加L1正则项来控制模型的复杂度。
在Matlab中,可以使用`fitlm`函数的`Regularization`选项来实现Lasso回归分析。
1、 考察温度x 对产量y 的影响,测得下列10组数据:区间(置信度95%).x=[20:5:65]';Y=[13.2 15.1 16.4 17.1 17.9 18.7 19.6 21.2 22.5 24.3]'; X=[ones(10,1) x]; plot(x,Y,'r*');[b,bint,r,rint,stats]=regress(Y,X); b,bint,stats;rcoplot(r,rint) %残差分析,作残差图结果: b =9.1212 0.2230 bint =8.0211 10.2214 0.1985 0.2476 stats =0.9821 439.8311 0.0000 0.2333即01ˆˆ9.1212,0.2230ββ==;0ˆβ的置信区间为[8.0211,10.2214]1ˆβ的置信区间为[0.1985,0.2476]; 2r =0.9821 , F=439.831, p=0.0000 ,p<0.05, 可知回归模型y=9.1212+0.2230x 成立.将x=42带入得到18.4872.从残差图可以看出,所有数据的残差离零点均较近,且残差的置信区间均包含零点,这说明回归模型y=9.1212+0.2230x能较好的符合原始数据。
2某零件上有一段曲线,为了在程序控制机床上加工这一零件,需要求这段曲线的解析表达式,在曲线横坐标xi处测得纵坐标yi共11对数据如下:求这段曲线的纵坐标y关于横坐标x的二次多项式回归方程。
t=0:2:20;s=[0.6 2.0 4.4 7.5 11.8 17.1 23.3 31.2 39.6 49.7 61.7];T=[ones(11,1) ,t',(t.^2)'];[b,bint,r,rint,stats]=regress(s',T);b,stats;Y=polyconf(p,t,S)plot(t,s,'k+',t,Y,'r') %预测及作图b =1.01050.19710.1403stats =1.0e+04 *0.0001 1.3773 0.0000 0.00002ˆ 1.01050.19710.1403st t =++ 图形为:3混凝土的抗压强度随养护时间的延长而增加,现将一批混凝土作成12个试块,记录了养护试求ˆln ya b x =+型回归方程。
%建立volum.m 文件 function yhat=volum(beta,x); yhat=beta(1)+beta(2)*log(x);%输入x=[2 3 4 5 7 9 12 14 17 21 28 56]; y=[35 42 47 53 59 65 68 73 76 82 86 99]; beta0=[5 1]';[beta,r,J]=nlinfit(x',y','volum',beta0); beta结果: beta =21.0058 19.5285所得回归模型为:21.05819.5285ln y x =+ 画线:plot(x,y,'r-')x=[2 3 4 5 7 9 12 14 17 21 28 56]';u=log(x);u=[ones(12,1) u];y=[35 42 47 53 59 65 68 73 76 82 86 99]'; [b,bint,r,rint,stats]=regress(y,u);b,bint,stats结果为:b =21.005819.5285bint =19.4463 22.565318.8943 20.1627stats =1.0e+03 *0.0010 4.7069 0.0000 0.0009做残差图:rcoplot(r,rint)预测及作图:z=b(1)+b(2)*log(x); plot(x,y,'k+',x,z,'r')1. 设有五个样品,每个只测量了一个指标,分别是1,2,6,8,11,试用最短距离法将它们分类。
(样品间采用绝对值距离。
)clc clear b=[1;2;6;8;11]; d=pdist(b,'cityblock'); D=squareform(d); z=linkage(d); H=dendrogram(z); T=cluster(z,2);结果:各样品之间的绝对距离为:[]1,5,7,10,4,6,9,2,5,3d =距离矩阵01571010469=5402576203109530D ⎡⎤⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎣⎦,样品间的最短距离为: 1 2 13 4 25 7 36 8 4z ⎡⎤⎢⎥⎢⎥=⎢⎥⎢⎥⎣⎦;2.表1是1999 年中国省、自治区的城市规模结构特征的一些数据,试通过聚类分析将这些整理a=[699.7000 1.4371 0.9364 0.7804 10.8800 179.4600 1.8982 1.0006 0.5870 11.7800 111.1300 1.4180 0.6772 0.5158 17.7750 389.6000 1.9182 0.8541 0.5762 26.3200 211.3400 1.7880 1.0798 0.4569 19.7050 259 2.3059 0.3417 0.5076 23.4800923.1900 3.7350 2.0572 0.6208 22.1600整理139.2900 1.8712 0.8858 0.4536 12.6700102.7800 1.2333 0.5326 0.3798 27.3750108.5000 1.7291 0.9325 0.4687 11.1200129.2000 3.2454 1.1935 0.4519 17.0800173.3500 1.0018 0.4296 0.4503 21.2150151.5400 1.4927 0.6775 0.4738 13.9400434.4600 7.1328 2.4413 0.5282 19.1900139.2900 2.3501 0.8360 0.4890 14.2500336.5400 3.5407 1.3863 0.4020 22.195096.1200 1.2288 0.6382 0.5000 14.340045.4300 2.1915 0.8648 0.4136 8.7300365.0100 1.6801 1.1486 0.5720 18.6150146 6.6333 2.3785 0.5359 12.2500136.2200 2.8279 1.2918 0.5984 10.470011.7900 4.1514 1.1798 0.6118 7.3150244.0400 5.1194 1.9682 0.6287 17.8000145.4900 4.7515 1.9366 0.5806 11.650061.3600 8.2695 0.8598 0.8098 7.420047.6000 1.5078 0.9587 0.4843 9.7300128.6700 3.8535 1.6216 0.4901 14.4700];d1=pdist(a); %欧氏距离:d1=pdist(a);,%b中每行之间距离z1=linkage(d1) %作谱系聚类图:H= dendrogram(z1)T=cluster(z1,3) %% 输出分类结果结果为:(1)z1 =8.0000 15.0000 1.652120.0000 24.0000 2.087718.0000 26.0000 2.488011.0000 27.0000 2.765421.0000 28.0000 3.919929.0000 32.0000 6.99263.0000 10.0000 7.167313.0000 33.0000 7.352831.0000 35.0000 8.61252.0000 12.0000 11.29169.0000 34.0000 12.726217.0000 38.0000 12.805125.0000 30.0000 15.50846.0000 23.0000 16.329136.0000 39.0000 18.038837.0000 42.0000 22.99794.0000 19.0000 25.771716.0000 44.0000 28.75595.0000 43.0000 32.850841.0000 46.0000 32.936822.0000 40.0000 33.728847.0000 48.0000 36.136714.0000 45.0000 45.749049.0000 50.0000 77.56761.0000 7.0000 223.789151.0000 52.0000 265.4356(2)输出分类结果:T =133333233333333333333333333表明,若分三类,3是一类,2是一类,其它的是一类。
(3)做谱系聚类图:。