基于MATLAB的多元非线性回归模型

合集下载

基于MATLAB的多元非线性回归模型

基于MATLAB的多元非线性回归模型

基于MAT LAB 的多元非线性回归模型3董大校(临沧师范高等专科学校,云南临沧6770000)摘 要: MAT LAB 是源于矩阵运算的一种高度集成的计算机语言。

它提供了强大的科学运算、灵活的程序设计流程、高质量的图形可视化与界面设计、便捷的与其他程序和语言接口的功能。

文章充分利用MAT LAB 统计工具箱的优势,通过程序的实现,对多元非线性回归模型的未知参数的估计方法以及对估计后的模型预报做出研究,并以实例验证了该方法的有效性。

关键词: MAT LAB;多元非线性回归;最小二乘法;统计工具箱中图分类号:TP301 文献标识码: A 文章编号: 1007-9793(2009)02-0045-041 预备知识非线性回归最小二乘法拟合的基本原理[1]。

对给定数据(x i ,y i )(i =0,1,…,m ),在取定的函数类Φ中,求p (x )∈Φ,使误差r i =p (x )-y i (i=0,1,…,m )的平方和最小,即∑m i =1r2i =∑m i =0[p (x i )-y i ]2最小,从几何意义上讲,就是寻求与给定点(x i ,y i )(i =0,1,…,m )的距离平方和为最小的曲线y =p (x )(图1)。

函数p (x )称为拟合函数或最小二乘解,求拟合函数p (x )的方法称为曲线拟合的最小二乘法。

2 MAT LAB 非线性曲线拟合命令介绍211nlinfit 函数[2]用nlinfit 函数进行非线性最小二乘数据拟合。

该函数使用高斯—牛顿算法,调用格式如下:●beta =nlinfit (X,y,fun,beta0) 用最小二乘法估计非线性函数系数。

y 为响应值(因变量)矢量。

一般地,为自变量值组成的设计矩阵,每一行对应与y 中的一发个值。

但是,X 可以是fun 参数能接受的任何数组。

fun 参数为一函数,该函数具有下面的形式yhat =myfun (beta,X )其中beta 为系数矢量,X 为设计矩阵。

《计量经济学》与MATLAB编程-第六章多项式回归与非线性回归

《计量经济学》与MATLAB编程-第六章多项式回归与非线性回归

第六节 多项式回归5.1 多项式曲线拟合 p = polyfit(x,y,n) [p,S] = polyfit(x,y,n) [p,S,mu] = polyfit(x,y,n)Descriptionp = polyfit(x,y,n) x 、y 为大小相等行或列向量,在是最小二乘意义上,将(x,y)拟合成次数为n 的多项式:1121)(+-++++=n n n p x p x p x p x p n例如: x=1:10;y=[193 226 240 244 257 260 274 297 350 420]; p = polyfit(x,y,3) p =0.9396 -12.9615 63.4777 141.7667y1=p(1)*x.^3+p(2)*x.^2+p(3)*x+p(4);xy[p,S] = polyfit(x,y,n) [p,S] = polyfit(x,y,3) p =0.9396 -12.9615 63.4777 141.7667 S =R: [4x4 double] df: 6normr: 8.0464 S.R ans =1.0e+003 *-1.4066 -0.1570 -0.0180 -0.0022 0 -0.0262 -0.0075 -0.00180 0 -0.0019 -0.00140 0 0 0.0005normr是残差的模,即:norm(y-y1)ans =8.0464[p,S,MU] = polyfit(x,y,n)[p,S,MU] = polyfit(x,y,3)p =26.0768 23.2986 18.6757 255.1312S =R: [4x4 double]df: 6normr: 8.0464MU =5.50003.0277MU是x均值和x的标准差即std(x)S.Rans =5.1959 0.0000 2.7682 0.00000 -3.7926 -0.0000 -2.37310 0 1.1562 0.00000 0 0 -2.0901P它等于:[p,S] = polyfit((x-mean(x))./std(x),y,3)p =26.0768 23.2986 18.6757 255.1312S =R: [4x4 double]df: 6normr: 8.0464>> S.Rans =5.1959 0.0000 2.7682 0.00000 -3.7926 -0.0000 -2.37310 0 1.1562 0.00000 0 0 -2.09015.2 多项式估计y= polyval(p,x)[y,DELT A] = polyval(p,x,S)y= polyval(p,x) 返回给定系数p和变量x值的多项式的预测y = P(1)*x^N + P(2)*x^(N-1) + ... + P(N)*x + P(N+1)x=1:10;y= polyval([3 2],x)y =5 8 11 14 17 20 23 26 29 32[3 2]有两个数,因此为一次多项式,即y=3x+2如:x=1:10;y=[193 226 240 244 257 260 274 297 350 420];p=polyfit(x,3)y1= polyval(p,x)norm(y-y1)ans =8.0464如果是矩阵,则polyval(p,x)为对应x的每一个预测值。

matlab多元非线性回归及显着性分析(实例)

matlab多元非线性回归及显着性分析(实例)

matlab多元非线性回归及显著性分析给各位高手:小弟有一些数据需要回归分析(非线性)及显著性检验(回归模型,次要项,误差及失拟项纯误差,F值和P值),求大侠帮助,给出程序,不胜感激。

模型:DA TA=... %DA TA前三列是影响因子,第四列为响应值[2 130 75 48.61;2 110 75 56.43;2 130 45 61.32;2 110 45 65.28;1 110 45 55.80;1 130 75 45.65;1 110 75 50.91;1 130 45 67.94;1.5 120 60 74.15;1.5 120 60 71.28;1.5 120 60 77.95;1.5 120 60 74.16;1.5 120 60 75.20;1.5 120 85 35.65;1.5 140 60 48.66;1.5 120 30 74.10;1.5 100 60 62.30;0.5 120 60 66.00;2.5 120 60 75.10];回归分析过程:(1)MA TLAB编程步骤1:首先为非线性回归函数编程,程序存盘为user_function.m function y=user_function(beta,x)b0 = beta(1);b1 = beta(2);b2 = beta(3);b3 = beta(4);x0 = x(:,1);x1 = x(:,2);x2 = x(:,3);x3 = x(:,4);y=b0*x0+b1*x1.^2+b2*x2.^2+b3*x3.^2;(2)MA TLAB编程步骤2:编写非线性回归主程序,程序运行时调用函数user_functionx=[1 2 130 75 48.61;1 2 110 75 56.43;1 2 130 45 61.32;1 2 110 45 65.28;1 1 110 45 55.80;1 1 130 75 45.65;1 1 110 75 50.91;1 1 130 45 67.94;1 1.5 120 60 74.15;1 1.5 120 60 71.28;1 1.5 120 60 77.95;1 1.5 120 60 74.16;1 1.5 120 60 75.20;1 1.5 120 85 35.65;1 1.5 140 60 48.66;1 1.5 120 30 74.10;1 1.5 100 60 62.30;1 0.5 120 60 66.00;1 2.5 120 60 75.10]; %%第1列全是1,第6列是指标变量,其余列是自变量xx=x(:,1:5);yy=x(:,5); %%指定响应变量yy和自变量xxbeta0=[0.5 0.4 0.7 0.5]; %%设置初始回归系数(如何确定初值?)[beta_fit,residual] = nlinfit(xx,yy,@user_function,beta0) %%非线性回归结果beta_fit =91.37571.2712-0.0009-0.0049residual =-4.2935-1.0248-9.2044-9.7957-15.4620-3.4398-2.73111.229311.18898.318914.988911.198912.2389-9.5678-9.3704-2.0767-4.83315.58147.0540即y=.3757+1.2712*x1.^2-0.0009*x2.^2-0.0049*x3.^2;。

matlab 多元与非线性回归即拟合问题regress、nlinfit

matlab 多元与非线性回归即拟合问题regress、nlinfit

回归(拟合)自己的总结(20100728)1:学三条命令:polyfit(x,y,n)---拟合成一元幂函数(一元多次) regress(y,x)----可以多元,nlinfit(x,y,’fun ’,beta0) (可用于任何类型的函数,任意多元函数,应用范围最主,最万能的)2:同一个问题,可能这三条命令都可以使用,但结果肯定是不同的,因为拟合的近似结果,没有唯一的标准的答案。

相当于咨询多个专家。

3:回归的操作步骤:(1) 根据图形(实际点),选配一条恰当的函数形式(类型)---需要数学理论与基础和经验。

(并写出该函数表达式的一般形式,含待定系数)(2) 选用某条回归命令求出所有的待定系数所以可以说,回归就是求待定系数的过程(需确定函数的形式)配曲线的一般方法是: (一)先对两个变量x 和y 作n 次试验观察得n i y x ii,...,2,1),,( 画出散点图,散点图(二)根据散点图确定须配曲线的类型. 通常选择的六类曲线如下:(1)双曲线xba y +=1 (2)幂函数曲线y=a bx , 其中x>0,a>0(3)指数曲线y=a bx e 其中参数a>0.(4)倒指数曲线y=a xb e/其中a>0,(5)对数曲线y=a+blogx,x>0(6)S 型曲线x be a y -+=1(三)然后由n 对试验数据确定每一类曲线的未知参数a 和b.一、一元多次拟合polyfit(x,y,n)一元回归polyfit多元回归regress---nlinfit(非线性)二、多元回归分析(其实可以是非线性,它通用性极高)对于多元线性回归模型:e x x y p p ++++=βββ 110设变量12,,,px x x y 的n 组观测值为12(,,,)1,2,,i i ip i x x x y i n= .记 ⎪⎪⎪⎪⎪⎭⎫⎝⎛=np n n p p x x x x x x x x x x 212222111211111,⎪⎪⎪⎪⎪⎭⎫⎝⎛=n y y y y 21,则⎪⎪⎪⎪⎪⎭⎫ ⎝⎛=p ββββ 10 的估计值为排列方式与线性代数中的线性方程组相同()拟合成多元函数---regress 使用格式:左边用b=或[b, bint, r, rint, stats]= 右边用regress(y, x) 或regress(y, x, alpha)---命令中是先y 后x,---须构造好矩阵x(x 中的每列与目标函数的一项对应) ---并且x 要在最前面额外添加全1列/对应于常数项 ---y 必须是列向量---结果是从常数项开始---与polyfit 的不同。

基于MATLAB的多元回归分析模型选取的研究

基于MATLAB的多元回归分析模型选取的研究

基于MATLAB的多元回归分析模型选取的研究本文旨在探讨基于MATLAB的多元回归分析模型的选取方法。

多元回归分析是一种常用的方法,用于研究多个自变量对一个或多个因变量的影响。

1. 研究背景在许多研究领域,我们经常需要了解多个自变量如何同时影响一个因变量。

通过多元回归分析,我们可以建立一个数学模型,从而更好地理解这些关系。

2. 回归模型的选取方法为了选择最合适的多元回归模型,我们可以使用以下方法:2.1. 变量筛选在开始建立回归模型之前,我们需要进行变量筛选。

变量筛选的目的是识别对因变量影响较大的自变量,并排除对模型没有贡献的自变量。

常用的变量筛选方法包括逐步回归,AIC准则和BIC准则等。

2.2. 含变量和交互项的模型在选择模型时,我们还需要考虑是否要包含自变量之间的交互项。

交互项表示不同自变量之间的相互作用,可能对因变量的影响有所改变。

在MATLAB中,我们可以通过添加交互项构建更复杂的回归模型。

2.3. 模型评价和选择在建立多元回归模型之后,我们需要对模型进行评价和选择。

常用的模型评价指标包括决定系数R<sup>2</sup>、调整决定系数R<sup>2</sup><sub>adj</sub>、F统计量和残差分析等。

这些指标可以帮助我们评估模型的拟合程度和预测能力。

3. 基于MATLAB的多元回归分析模型选取实例为了说明以上方法的应用,我们提供一个基于MATLAB的多元回归分析模型选取的实例。

在这个实例中,我们使用了一个包含多个自变量和因变量的数据集。

通过逐步回归和模型评价,我们选择了最佳的多元回归模型,并验证了其预测能力。

4. 结论通过本研究,我们深入探讨了基于MATLAB的多元回归分析模型选取方法。

变量筛选、交互项和模型评价是选择合适模型的关键步骤。

在实际应用中,研究人员应根据研究目的和数据特点灵活运用这些方法,以获得准确且可靠的研究结果。

MATLAB回归分析

MATLAB回归分析

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`获得回归系数。

Matlab多变量回归分析教程

Matlab多变量回归分析教程

本次教程的主要内容包含:一、多元线性回归2#多元线性回归:regress二、多项式回归3#一元多项式:polyfit或者polytool多元二项式:rstool或者rsmdemo三、非线性回归4#非线性回归:nlinfit四、逐步回归5#逐步回归:stepwise一.多元线性回归多元线性回归:确定回归系数的点估计值K b=regress(Y, X )③无的表达式x=2、[b t bint,r,rint,stats]=regress(Y t X,alpha) 求回归系数的点估计和区间估计、并检验回归术®bint表示回归系数的区间估计.②r表示残差③tint表示置信区间④stats表示用于检验回归模型的统计量.有三个数值:相关系数J、F值、与F对应的概率p说明:相关系数*越接近1,说明回归方程越显著;时拒绝HO, F越大,说明回归方程越显著;与F对应的概率p<a时拒绝HO©alpha表示显著性水平(缺省时为0. 05)3、rcoplot(r,rint) 画出残差及.其置信区间具体参见下面的实例演示4、实例演示,函数使用说明(1)输入数据1.>>x=[143 145 146 147 149 150 153 154 155 156 157 158 159 160 162 164]1:2.»X=[ones(16,1) x]:3.»Y=[88 85 88 91 92 93 93 95 96 98 97 96 98 99 100 102]';复制代码(2)回归分析及检验1.>> [b, bi nt,r,rint,stats]=regress(Y,X)2.2. b =4.3.-16.07304.0.71947.8.5.bint =10.6.-33.7071 1.56127.0.6047 0.834013.14.8.r =16.17. 1.20561& -3.233119.-0.952420. 1.328221.0.889522. 1. 170223. -0. 987924. 0. 292725. 0. 573426. 1.854027. 0. 13472& -1.584729. -0. 304030. -0. 023431. -0. 462132. 0. 099233.34.35. rint =36.37. -1.2407 3. 652038. -5. 0622 -1.404039. -3・ 5894 1.684540. -1.2895 3. 945941. -1.8519 3. 630942. -1.5552 3. 895543. -3. 7713 1.795544. -2. 5473 3. 132845. -2.2471 3. 393946. -0. 7540 4.462147. -2. 6814 2. 95084& -4.2188 1. 049449. -3. 0710 2. 463050. -2.7661 2.719351. -3. 1133 2. 189252. -2. 4640 2. 662453.54.55.stats =56.57. 0. 9282 180.9531 0. 0000 1.7437复制代码运行结果解读如下参数回归结果为 ,对应的置信区间分别为[-33. 7017,1.5612]和[0. 6047,0. 834]J二0.9282(越接近于1,回归效果越显著),2180.9531, p=0. 0000,由p<0. 051可知回归模型y=-16. 073+0. 7194x 成立(3)残差分析作残差图1. rcoplot(r,rint)Residual Caw 。

多元回归分析报告matlab

多元回归分析报告matlab

回归分析MATLAB 工具箱一、多元线性回归多元线性回归:p p x x y βββ+++=...110 1、确定回归系数的点估计值: 命令为:b=regress(Y, X ) ①b 表示⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎣⎡=p b βββˆ...ˆˆ10②Y 表示⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡=n Y Y Y Y (2)1③X 表示⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎣⎡=np n n p p x x x x x x x x x X (1)............ (1) (12)12222111211 2、求回归系数的点估计和区间估计、并检验回归模型: 命令为:[b, bint,r,rint,stats]=regress(Y,X,alpha) ①bint 表示回归系数的区间估计. ②r 表示残差. ③rint 表示置信区间.④stats 表示用于检验回归模型的统计量,有三个数值:相关系数r 2、F 值、与F 对应的概率p.说明:相关系数2r 越接近1,说明回归方程越显著;)1,(1-->-k n k F F α时拒绝0H ,F 越大,说明回归方程越显著;与F 对应的概率p α<时拒绝H 0,回归模型成立. ⑤alpha 表示显著性水平(缺省时为0.05)3、画出残差及其置信区间. 命令为:rcoplot(r,rint) 例1.如下程序. 解:(1)输入数据.x=[143 145 146 147 149 150 153 154 155 156 157 158 159 160 162 164]'; X=[ones(16,1) x];Y=[88 85 88 91 92 93 93 95 96 98 97 96 98 99 100 102]'; (2)回归分析及检验.[b,bint,r,rint,stats]=regress(Y,X) b,bint,stats得结果:b = bint =-16.0730 -33.7071 1.5612 0.7194 0.6047 0.8340 stats =0.9282 .9531 0.0000即7194.0ˆ,073.16ˆ10=-=ββ;0ˆβ的置信区间为[-33.7017,1.5612], 1ˆβ的置信区间为[0.6047,0.834]; r 2=0.9282, F=180.9531, p=0.0000,我们知道p<0.05就符合条件, 可知回归模型 y=-16.+0.7194x 成立. (3)残差分析,作残差图. rcoplot(r,rint)从残差图可以看出,除第二个数据外,其余数据的残差离零点均较近,且残差的置信区间均包含零点,这说明回归模型 y=-16.+0.7194x 能较好的符合原始数据,而第二个数据可视为异常点. (4)预测及作图.z=b(1)+b(2)*x plot(x,Y,'k+',x,z,'r')二、多项式回归 (一)一元多项式回归.1、一元多项式回归:1121...+-++++=m m m m a x a x a x a y (1)确定多项式系数的命令:[p,S]=polyfit(x,y,m)说明:x=(x 1,x 2,…,x n ),y=(y 1,y 2,…,y n );p=(a 1,a 2,…,a m+1)是多项式y=a 1x m +a 2x m-1+…+a m x+a m+1的系数;S 是一个矩阵,用来估计预测误差. (2)一元多项式回归命令:polytool(x,y,m) 2、预测和预测误差估计.(1)Y=polyval(p,x)求polyfit 所得的回归多项式在x 处的预测值Y ;(2)[Y,DELTA]=polyconf(p,x,S,alpha)求polyfit 所得的回归多项式在x 处的预测值Y 及预测值的显著性为1-alpha 的置信区间Y ±DELTA ;alpha 缺省时为0.5.例1. 观测物体降落的距离s 与时间t 的关系,得到数据如下表,求s. (关于t 的回归方程2ˆct bt a s++=)解法一:直接作二次多项式回归. t=1/30:1/30:14/30;s=[11.86 15.67 20.60 26.69 33.71 41.93 51.13 61.49 72.90 85.44 99.08 113.77 129.54 146.48]; [p,S]=polyfit(t,s,2) 得回归模型为:1329.98896.652946.489ˆ2++=t t s解法二:化为多元线性回归. t=1/30:1/30:14/30;s=[11.86 15.67 20.60 26.69 33.71 41.93 51.13 61.49 72.90 85.44 99.08 113.77 129.54 146.48];T=[ones(14,1) t' (t.^2)']; [b,bint,r,rint,stats]=regress(s',T);b,stats 得回归模型为:22946.4898896.651329.9ˆt t s++= 预测及作图: Y=polyconf(p,t,S) plot(t,s,'k+',t,Y,'r')(二)多元二项式回归多元二项式回归命令:rstool(x,y,’model ’, alpha)说明:x 表示n ⨯m 矩阵;Y 表示n 维列向量;alpha :显著性水平(缺省时为0.05);model 表示由下列4个模型中选择1个(用字符串输入,缺省时为线性模型):linear(线性):m m x x y βββ+++=Λ110purequadratic(纯二次):∑=++++=nj j jjm m x x x y 12110ββββΛinteraction(交叉):∑≤≠≤++++=mk j k j jkm m x x x x y 1110ββββΛquadratic(完全二次):∑≤≤++++=mk j k j jkm m x x x x y ,1110ββββΛ例1. 设某商品的需求量与消费者的平均收入、商品价格的统计数据如下,建立回归模型,预测平均收入为1000、价格为6时的商品需求量. 需求量 100 75 80 70 50 65 90 100 110 60 收入10006001200500300400130011001300300价格5766875439解法一:选择纯二次模型,即2222211122110x x x x y βββββ++++=.直接用多元二项式回归:x1=[1000 600 1200 500 300 400 1300 1100 1300 300]; x2=[5 7 6 6 8 7 5 4 3 9];y=[100 75 80 70 50 65 90 100 110 60]'; x=[x1' x2'];rstool(x,y,'purequadratic')在左边图形下方的方框中输入1000,右边图形下方的方框中输入6,则画面左边的“Predicted Y ”下方的数据变为88.47981,即预测出平均收入为1000、价格为6时的商品需求量为88.4791.在画面左下方的下拉式菜单中选”all ”, 则beta 、rmse 和residuals 都传送到Matlab 工作区中.在Matlab 工作区中输入命令:beta, rmse 得结果:beta = 110.5313 0.1464 -26.5709 -0.0001 1.8475 rmse = 4.5362故回归模型为:2221218475.10001.05709.261464.05313.110x x x x y +--+=剩余标准差为4.5362, 说明此回归模型的显著性较好.解法二:将2222211122110x x x x y βββββ++++=化为多元线性回归:X=[ones(10,1) x1' x2' (x1.^2)' (x2.^2)']; [b,bint,r,rint,stats]=regress(y,X); b,stats 结果为: b =110.5313 0.1464 -26.5709 -0.0001 1.8475 stats =0.9702 40.6656 0.0005三、非线性回归 1、非线性回归:(1)确定回归系数的命令:[beta,r,J]=nlinfit(x,y,’model ’, beta0)说明:beta 表示估计出的回归系数;r 表示残差;J 表示Jacobian 矩阵;x,y 表示输入数据x 、y 分别为矩阵和n 维列向量,对一元非线性回归,x 为n 维列向量;model 表示是事先用m-文件定义的非线性函数;beta0表示回归系数的初值. (2)非线性回归命令:nlintool(x,y,’model ’, beta0,alpha) 2、预测和预测误差估计:[Y,DELTA]=nlpredci(’model ’, x,beta,r,J)表示nlinfit 或nlintool 所得的回归函数在x 处的预测值Y 及预测值的显著性为1-alpha 的置信区间Y ±DELTA. 例1. 如下程序.解:(1)对将要拟合的非线性模型y=a x b e /,建立m-文件volum.m 如下: function yhat=volum(beta,x) yhat=beta(1)*exp(beta(2)./x); (2)输入数据: x=2:16;y=[6.42 8.20 9.58 9.5 9.7 10 9.93 9.99 10.49 10.59 10.60 10.80 10.60 10.90 10.76];beta0=[8 2]'; (3)求回归系数:[beta,r ,J]=nlinfit(x',y','volum',beta0); beta (4)运行结果:beta =11.6036 -1.0641 即得回归模型为:xey 10641.16036.11-=(5)预测及作图:[YY,delta]=nlpredci('volum',x',beta,r ,J);plot(x,y,'k+',x,YY,'r')四、逐步回归1、逐步回归的命令:stepwise(x,y,inmodel,alpha)n⨯阶矩阵;y表示因变量数据,1⨯n阶矩阵;inmodel表示矩说明:x表示自变量数据,m阵的列数的指标,给出初始模型中包括的子集(缺省时设定为全部自变量);alpha表示显著性水平(缺省时为0.5).2、运行stepwise命令时产生三个图形窗口:Stepwise Plot,Stepwise Table,Stepwise History.在Stepwise Plot窗口,显示出各项的回归系数及其置信区间.(1)Stepwise Table窗口中列出了一个统计表,包括回归系数及其置信区间,以及模型的统计量剩余标准差(RMSE)、相关系数(R-square)、F值、与F对应的概率P.例1. 水泥凝固时放出的热量y与水泥中4种化学成分x1、x2、x3、x4有关,今测得一组数据如下,试用逐步回归法确定一个线性模型.解:(1)数据输入:x1=[7 1 11 11 7 11 3 1 2 21 1 11 10]';x2=[26 29 56 31 52 55 71 31 54 47 40 66 68]';x3=[6 15 8 8 6 9 17 22 18 4 23 9 8]';x4=[60 52 20 47 33 22 6 44 22 26 34 12 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 109.4]'; x=[x1 x2 x3 x4];(2)逐步回归.①先在初始模型中取全部自变量:stepwise(x,y)得图Stepwise Plot 和表Stepwise Table.图Stepwise Plot中四条直线都是虚线,说明模型的显著性不好.从表Stepwise Table中看出变量x3和x4的显著性最差.②在图Stepwise Plot中点击直线3和直线4,移去变量x3和x4.移去变量x3和x4后模型具有显著性虽然剩余标准差(RMSE)没有太大的变化,但是统计量F的值明显增大,因此新的回归模型更好.(3)对变量y和x1、x2作线性回归.X=[ones(13,1) x1 x2];b=regress(y,X)得结果:b =52.57731.46830.6623故最终模型为:y=52.5773+1.4683x1+0.6623x2或这种方法4元二次线性回归clc;clear;y=[1.84099 9.67 23.00 38.12 1.848794 6.22 12.22 19.72 1.848794 5.19 10.09 15.31 ];X1=[60.36558 59.5376 58.89861 58.74706 60.59389 60.36558 59.2 58.2 60.36558 59.97068 59.41918 5 X2=[26.1636 26.35804 26.82438 26.91521 25.90346 25.9636 27.19256 27.42153 26.1636 26.07212 26.27.06063];X3=[0.991227 0.994944 0.981322 0.98374 1.011865 0.991227 1.074772 1.107678 0.991227 0.917904 1 1.1239];X4=[59.37436 58.54265 57.91729 57.69332 59.58203 59.37436 57.76722 57.42355 59.37436 59.05278 57.76687];format short gY=y'X11=[ones(1,length(y));X1;X2;X3;X4]'B1=regress(Y,X11)% 多元一次线性回归[m,n]=size(X11)X22=[];for i=2:nfor j=2:nif i<=jX22=([X22,X11(:,i).*X11(:,j)]);elsecontinueendendendX=[X11,X22];B2=regress(Y,X)% 多元二次线性回归[Y X*B2 Y-X*B2]plot(Y,X11*B1,'o',Y,X*B2,'*')hold on,line([min(y),max(y)],[min(y),max(y)]) axis([min(y) max(y) min(y) max(y)]) legend('一次线性回归','二次线性回归') xlabel('实际值');ylabel('计算值')运行结果:Y =1.8419.672338.121.84886.2212.2219.721.84885.1910.0915.31X11 =1 60.366 26.164 0.99123 59.3741 59.538 26.358 0.99494 58.5431 58.899 26.824 0.98132 57.9171 58.747 26.915 0.98374 57.6931 60.594 25.903 1.0119 59.5821 60.366 25.964 0.99123 59.3741 59.2 27.193 1.0748 57.7671 58.2 27.422 1.1077 57.4241 60.366 26.164 0.99123 59.3741 59.971 26.072 0.9179 59.1 59.419 26.587 1.0604 58.3591 58.891 27.061 1.1239 57.767 B1 =1488.9-4.3582-9.6345-61.514-15.359m =12n =5B2 =3120.4-7129.2-622.23-362.71-105.061388.1120.25.25379.58170.48-796.41ans =1.841 1.8449 -0.0039029.67 9.67 1.0058e-00923 23 1.397e-00938.12 38.12 3.539e-1.8488 1.8488 1.6394e-0096.22 6.227.2643e-12.22 12.22 2.6077e-19.72 19.72 -2.0489e-1.8488 1.8449 0.0039025.19 5.19 1.4529e-00910.09 10.09 1.0803e-00915.31 15.31 4.0978e-由图形可以看出,多元二次线性回归效果非常好,即,相当于Y=3120.4*X1 -7129.2 *X2 + 0*X3 + 0*X4 -622.23*X1*X1 -362.71*X1*X2 -105.06*X1*X3 + 1388 120.25*X2*X2+ .25 *X2*X3+ 379.58*X2*X4 + 170.48*X3*X3+ 0*X3*X4 -796.41*X4*X4。

基于MATLAB的多元非线性回归模型

基于MATLAB的多元非线性回归模型

基于MATLAB的多元非线性回归模型
董大校
【期刊名称】《云南师范大学学报(自然科学版)》
【年(卷),期】2009(029)002
【摘要】MATLAB是源于矩阵运算的一种高度集成的计算机语言.它提供了强大的科学运算、灵活的程序设计流程、高质量的图形可视化与界面设计、便捷的与其他程序和语言接口的功能.文章充分利用MATLAB统计工具箱的优势,通过程序的实现,对多元非线性回归模型的未知参数的估计方法以及对估计后的模型预报做出研究,并以实例验证了该方法的有效性.
【总页数】4页(P45-48)
【作者】董大校
【作者单位】临沧师范高等专科学校,云南,临沧,6770000
【正文语种】中文
【中图分类】TP301
【相关文献】
1.基于多元非线性回归模型的环型中压配电网最大供电能力评估方法 [J], 吴云亮;沈阳武;林超;彭晓涛;孙元章;许良柱
2.基于移动平均线改进的多元非线性回归模型 [J], 李馨旖;周清
3.基于改进多元非线性回归模型的云计算负载预测 [J], 邢运智
4.基于多元非线性回归模型预测磷建筑石膏强度 [J], 吴佳丽;赵志曼;全思臣;曾众;梁祎;栾扬
5.基于多元非线性回归模型的高强混凝土强度预测研究 [J], 甘彬霖;冯旭海;毕经龙;姜浩亮
因版权原因,仅展示原文概要,查看原文内容请购买。

应用matlab进行非线性回归分析

应用matlab进行非线性回归分析

应用MATLAB进行非线性回归分析摘要早在十九世纪,英国生物学家兼统计学家高尔顿在研究父与子身高的遗传问题时,发现子代的平均高度又向中心回归大的意思,使得一段时间内人的身高相对稳定。

之后回归分析的思想渗透到了数理统计的其他分支中。

随着计算机的发展,各种统计软件包的出现,回归分析的应用就越来越广泛。

回归分析处理的是变量与变量间的关系。

有时,回归函数不是自变量的线性函数,但通过变换可以将之化为线性函数,从而利用一元线性回归对其进行分析,这样的问题是非线性回归问题。

下面的第一题:炼钢厂出钢水时用的钢包,在使用过程中由于钢水及炉渣对耐火材料的侵蚀,使其容积不断增大。

要找出钢包的容积用盛满钢水时的质量与相应的实验次数的定量关系表达式,就要用到一元非线性回归分析方法。

首先我们要对数据进行分析,描出数据的散点图,判断两个变量之间可能的函数关系,对题中的非线性函数,参数估计是最常用的“线性化方法”,即通过某种变换,将方程化为一元线性方程的形式,接着我们就要对得到的一些曲线回归方程进行选择,找出到底哪一个才是更好一点的。

此时我们通常可采用两个指标进行选择,第一个是决定系数,第二个是剩余标准差。

进而就得到了我们想要的定量关系表达式。

第二题:给出了某地区1971—2000年的人口数据,对该地区的人口变化进行曲线拟合。

也用到了一元非线性回归的方法。

首先我们也要对数据进行分析,描出数据的散点图,然后用MATLAB编程进行回归分析拟合计算输出利用Logistic模型拟合曲线。

关键词:参数估计,Logistic模型,MATLAB正文一、一元非线性回归分析的求解思路:•求解函数类型并检验。

•求解未知参数。

可化曲线回归为直线回归,用最小二乘法求解;可化曲线回归为多项式回归。

二、回归曲线函数类型的选取和检验1、直接判断法2、作图观察法,与典型曲线比较,确定其属于何种类型,然后检验。

3、直接检验法(适应于待求参数不多的情况)4、表差法(适应于多想式回归,含有常数项多于两个的情况)三、化曲线回归为直线回归问题用直线检验法或表差法检验的曲线回归方程都可以通过变量代换转化为直线回归方程,利用线性回归分析方法可求得相应的参数估计值。

利用Matlab编程计算非线性回归模型

利用Matlab编程计算非线性回归模型

§5. 利用Matlab编程计算非线性回归模型——以Logistic曲线为例1.原始数据下表给出了某地区1971—2000年的人口数据(表1)。

试分别用Matlab和SPSS软件,对该地区的人口变化进行曲线拟合。

表1 某地区人口变化数据年份时间变量t=年份-1970人口y/人1971133 8151972233 9811973334 0041974434 1651975534 2121976634 3271977734 3441978834 4581979934 49819801034 47619811134 48319821234 48819831334 51319841434 49719851534 51119861634 52019871734 50719881834 50919891934 52119902034 51319912134 51519922234 51719932334 51919942434 51919952534 52119962634 5211997 27 34 523 1998 28 34 525 1999 29 34 525 20003034 527根据上表中的数据,做出散点图,见图1。

337003380033900340003410034200343003440034500346001970197219741976197819801982198419861988199019921994199619982000年份人口图1 某地区人口随时间变化的散点图从图1可以看出,人口随时间的变化呈非线性过程,而且存在一个与横坐标轴平行的渐近线,故可以用Logistic 曲线模型进行拟合。

因为Logistic 曲线模型的基本形式为:tbe a y -+=1所以,只要令:t e x yy -='=',1,就可以将其转化为直线模型: x b a y '+='下面,我们分别用Matlab 和SPSS 软件进行回归分析拟合计算。

matlab_多元与非线性回归即拟合问题regressnlinfit

matlab_多元与非线性回归即拟合问题regressnlinfit

回归(拟合)自己的总结(20100728)1:学三条命令:polyfit(x,y,n)---拟合成一元幂函数(一元多次) regress(y,x)----可以多元,nlinfit(x,y,’fun ’,beta0) (可用于任何类型的函数,任意多元函数,应用范围最主,最万能的)2:同一个问题,可能这三条命令都可以使用,但结果肯定是不同的,因为拟合的近似结果,没有唯一的标准的答案。

相当于咨询多个专家。

3:回归的操作步骤:(1) 根据图形(实际点),选配一条恰当的函数形式(类型)---需要数学理论与基础和经验。

(并写出该函数表达式的一般形式,含待定系数)(2) 选用某条回归命令求出所有的待定系数所以可以说,回归就是求待定系数的过程(需确定函数的形式)配曲线的一般方法是: (一)先对两个变量x 和y 作n 次试验观察得n i y x ii,...,2,1),,( 画出散点图,散点图(二)根据散点图确定须配曲线的类型. 通常选择的六类曲线如下:(1)双曲线xb a y +=1 (2)幂函数曲线y=a bx , 其中x>0,a>0(3)指数曲线y=a bx e 其中参数a>0.(4)倒指数曲线y=a xb e/其中a>0,(5)对数曲线y=a+blogx,x>0(6)S 型曲线x be a y -+=1(三)然后由n 对试验数据确定每一类曲线的未知参数a 和b.一、一元多次拟合polyfit(x,y,n)一元回归polyfit多元回归regress---nlinfit(非线性)二、多元回归分析(其实可以是非线性,它通用性极高)对于多元线性回归模型:e x x y p p ++++=βββ 110设变量12,,,p x x x y的n 组观测值为12(,,,)1,2,,i i ip i x x x y i n=.记 ⎪⎪⎪⎪⎪⎭⎫⎝⎛=np n n p p x x x x x x x x x x 212222111211111,⎪⎪⎪⎪⎪⎭⎫⎝⎛=n y y y y 21,则⎪⎪⎪⎪⎪⎭⎫ ⎝⎛=p ββββ 10 的估计值为排列方式与线性代数中的线性方程组相同()拟合成多元函数---regress 使用格式:左边用b=或[b, bint, r, rint, stats]= 右边用regress(y, x) 或regress(y, x, alpha)---命令中是先y 后x,---须构造好矩阵x(x 中的每列与目标函数的一项对应) ---并且x 要在最前面额外添加全1列/对应于常数项 ---y 必须是列向量---结果是从常数项开始---与polyfit 的不同。

用MATLAB求解回归分析课件

用MATLAB求解回归分析课件
感谢观看
用Matlab求解 回归分析课件
目 录
• 回归分析简介 • Matlab基础操作 • 线性回归分析 • 非线性回归分析 • 多元回归分析 • Matlab在回归分析中的应用实例
01
CATALOGUE
回归分析简介
回归分析的定义
回归分析是一种统计学方法,用于研 究自变量和因变量之间的相关关系, 并建立数学模型来预测因变量的值。
显著性检验
对回归模型的显著性进行检验,如F 检验、t检验等。
预测精度评估
使用均方误差、均方根误差等指标评 估模型的预测精度。
可解释性
评估模型的解释性,即模型是否易于 理解,自变量对因变量的影响是否合 理。
06
CATALOGUE
Matlab在回归分析中的应用实例
用Matlab进行线性回归分析的实例
迭代法
对于一些复杂的回归模型,可能 需要使用迭代法进行求解,如梯 度下降法、牛顿法等。
Matlab函数
在Matlab中,可以使用内建的回 归分析函数来求解多元回归模型 ,如 `fitlm`、`fitlm2` 等。
多元回归模型的评估
残差分析
对回归模型的残差进行分析,检查残 差是否满足正态分布、同方差等假设 。
要点一
总结词
要点二
详细描述
多元回归分析是处理多个自变量和因变量之间关系的回归 分析方法,通过Matlab可以方便地进行多元回归分析。
在Matlab中,可以使用`fitlm`函数对一组数据进行多元回 归分析。首先需要准备数据,然后使用`fitlm`函数拟合多 元线性模型,最后通过模型进行预测和评估。
THANKS
使用预测值与实际值之间的误差评估模型的预测 能力,如均方误差、平均绝对误差等指标。

MATLAB 回归分析regress,nlinfit,stepwise函数

MATLAB 回归分析regress,nlinfit,stepwise函数

MATLAB 回归分析regress,nlinfit,stepwise函数matlab回归分析regress,nlinfit,stepwise函数回归分析1.多元线性重回在matlab统计工具箱中使用命令regress()实现多元线性回归,调用格式为b=regress(y,x)或[b,bint,r,rint,statsl=regess(y,x,alpha)其中因变量数据向量y和自变量数据矩阵x按以下排列方式输入对一元线性重回,挑k=1即可。

alpha为显著性水平(缺省时预设为0.05),输入向量b,bint为回归系数估计值和它们的置信区间,r,rint为残差及其置信区间,stats就是用作检验重回模型的统计数据量,存有三个数值,第一个就是r2,其中r就是相关系数,第二个就是f统计数据量值,第三个就是与统计数据量f对应的概率p,当p拒绝h0,回归模型成立。

图画出来残差及其置信区间,用命令rcoplot(r,rint)实例1:已知某湖八年来湖水中cod浓度实测值(y)与影响因素湖区工业产值(x1)、总人口数(x2)、捕鱼量(x3)、降水量(x4)资料,建立污染物y的水质分析模型。

(1)输出数据x1=[1.376,1.375,1.387,1.401,1.412,1.428,1.445,1.477]x2=[0.450,0.475,0.485,0.50 0,0.535,0.545,0.550,0.575]x3=[2.170,2.554,2.676,2.713,2.823,3.088,3.122,3.262]x4=[0.8922,1.1610,0.5346,0.9589,1.0239,1.0499,1.1065,1.1387]y=[5.19,5.30,5.60,5.82,6.00,6.06,6.45,6.95](2)留存数据(以数据文件.mat形式留存,易于以后调用)savedatax1x2x3x4yloaddata(抽出数据)(3)继续执行重回命令x=[ones(8,1),];[b,bint,r,rint,stats]=regress得结果:b=(-16.5283,15.7206,2.0327,-0.2106,-0.1991)’stats=(0.9908,80.9530,0.0022)即为=-16.5283+15.7206xl+2.0327x2-0.2106x3+0.1991x4r2=0.9908,f=80.9530,p=0.00222.非线性重回非线性回归可由命令nlinfit来实现,调用格式为[beta,r,j]=nlinfit(x,y,'model’,beta0)其中,输人数据x,y分别为n×m矩阵和n维列向量,对一元非线性回归,x为n维列向量model是事先用m-文件定义的非线性函数,beta0是回归系数的初值,beta是估计出的回归系数,r是残差,j是jacobian矩阵,它们是估计预测误差需要的数据。

MATLAB实例:多元函数拟合(线性与非线性)

MATLAB实例:多元函数拟合(线性与非线性)

MATLAB实例:多元函数拟合(线性与⾮线性)MATLAB实例:多元函数拟合(线性与⾮线性)作者:凯鲁嘎吉 - 博客园更多请看:之前写过⼀篇博⽂,是。

现在⽤拟合多元函数,实现线性拟合与⾮线性拟合,其中⾮线性拟合要求⾃定义拟合函数。

下⾯给出三种拟合⽅式,第⼀种是多元线性拟合(回归),第⼆三种是多元⾮线性拟合,实际中第⼆三种⽅法是⼀个意思,任选⼀种即可,推荐第⼆种拟合⽅法。

1. MATLAB程序fit_nonlinear_data.mfunction [beta, r]=fit_nonlinear_data(X, Y, choose)% Input: X ⾃变量数据(N, D), Y 因变量(N, 1),choose 1-regress, 2-nlinfit 3-lsqcurvefitif choose==1X1=[ones(length(X(:, 1)), 1), X];[beta, bint, r, rint, states]=regress(Y, X1)% 多元线性回归% y=beta(1)+beta(2)*x1+beta(3)*x2+beta(4)*x3+...% beta—系数估计% bint—系数估计的上下置信界% r—残差% rint—诊断异常值的区间% states—模型统计信息rcoplot(r, rint)saveas(gcf,sprintf('线性曲线拟合_残差图.jpg'),'bmp');elseif choose==2beta0=ones(7, 1);% 初始值的选取可能会导致结果具有较⼤的误差。

[beta, r, J]=nlinfit(X, Y, @myfun, beta0)% ⾮线性回归% beta—系数估计% r—残差% J—雅可⽐矩阵[Ypred,delta]=nlpredci(@myfun, X, beta, r, 'Jacobian', J)% ⾮线性回归预测置信区间% Ypred—预测响应% delta—置信区间半⾓plot(X(:, 1), Y, 'k.', X(:, 1), Ypred, 'r');saveas(gcf,sprintf('⾮线性曲线拟合_1.jpg'),'bmp');elseif choose==3beta0=ones(7, 1);% 初始值的选取可能会导致结果具有较⼤的误差。

MATLAB 回归分析regress,nlinfit,stepwise函数

MATLAB 回归分析regress,nlinfit,stepwise函数

回归分析1.多元线性回归在Matlab统计工具箱中使用命令regress()实现多元线性回归,调用格式为b=regress(y,x)或[b,bint,r,rint,statsl = regess(y,x,alpha)其中因变量数据向量y和自变量数据矩阵x按以下排列方式输入对一元线性回归,取k=1即可。

alpha为显著性水平(缺省时设定为0.05),输出向量b,bint为回归系数估计值和它们的置信区间,r,rint为残差及其置信区间,stats是用于检验回归模型的统计量,有三个数值,第一个是R2,其中R是相关系数,第二个是F统计量值,第三个是与统计量F对应的概率P,当P<α时拒绝H0,回归模型成立。

画出残差及其置信区间,用命令rcoplot(r,rint)实例1:已知某湖八年来湖水中COD浓度实测值(y)与影响因素湖区工业产值(x1)、总人口数(x2)、捕鱼量(x3)、降水量(x4)资料,建立污染物y的水质分析模型。

(1)输入数据x1=[1.376, 1.375, 1.387, 1.401, 1.412, 1.428, 1.445, 1.477]x2=[0.450, 0.475, 0.485, 0.500, 0.535, 0.545, 0.550, 0.575]x3=[2.170 ,2.554, 2.676, 2.713, 2.823, 3.088, 3.122, 3.262]x4=[0.8922, 1.1610 ,0.5346, 0.9589, 1.0239, 1.0499, 1.1065, 1.1387]y=[5.19, 5.30, 5.60,5.82,6.00, 6.06,6.45,6.95](2)保存数据(以数据文件.mat形式保存,便于以后调用)save data x1 x2 x3 x4 yload data (取出数据)(3)执行回归命令x =[ones(8,1),];[b,bint,r,rint,stats] = regress得结果:b = (-16.5283,15.7206,2.0327,-0.2106,-0.1991)’stats = (0.9908,80.9530,0.0022)即= -16.5283 + 15.7206xl + 2.0327x2 - 0.2106x3 + 0.1991x4R2 = 0.9908,F = 80.9530,P = 0.00222.非线性回归非线性回归可由命令nlinfit来实现,调用格式为[beta,r,j] = nlinfit(x,y,'model’,beta0)其中,输人数据x,y分别为n×m矩阵和n维列向量,对一元非线性回归,x 为n维列向量model是事先用m-文件定义的非线性函数,beta0是回归系数的初值,beta是估计出的回归系数,r是残差,j是Jacobian矩阵,它们是估计预测误差需要的数据。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

第29卷第2期2009年3月云南师范大学学报JournalofYunnanNormalUniversityV01.29No.2Mar.2009基于MATLAB的多元非线性回归模型‘董大校(临沧师范高等专科学校,云南临沧6770000)摘要:MATLAB是源于矩阵运算的一种高度集成的计算机语言。

它提供了强大的科学运算、灵活的程序设计流程、高质量的图形可视化与界面设计、便捷的与其他程序和语言接口的功能。

文章充分利用MATLAB统计工具箱的优势,通过程序的实现,对多元非线性回归模型的未知参数的估计方法以及对估计后的模型预报做出研究,并以实例验证了该方法的有效性。

关键词:MATLAB;多元非线性回归;td,--乘法;统计工具箱中图分类号:TP301文献标识码:A文章编号:1007—9793(2009)02—0045—04l预备知识非线性回归最小二乘法拟合的基本原理…。

对给定数据(菇i,Y;)(i=0,l,…,rrt),在取定的函数类西中,求p(x)∈痧,使误差t=p(x)一Y。

(i=0,1,…,m)的平方和最小,即∑#=∑[p(戈i)一,,i]2最小,从几何意义上讲,就是寻求与给定点(菇i,Y;)(i=0,1,…,rn)的距离平方和为最小的曲线Y=p(菇)(图1)。

函数p(x)称为拟合函数或最小二乘解,求拟合函数p(x)的方法称为曲线拟合的最小二乘法。

2MATLAB非线性曲线拟合命令介绍2.1nHnfit函数旧1用nlinfit函数进行非线性最小二乘数据拟合。

该函数使用高斯一牛顿算法,调用格式如下:Qbeta=nlinfit(X,Y,fun,beta0)用最小二乘法估计非线性函数系数。

Y为响应值(因变量)矢量。

一般地,为自变量值组成的设计矩阵,每一行对应与Y中的一发个值。

但是,x可以是fun参数能接受的任何数组。

fun参数为一函数,该函数具有下面的形式yhat=myfun(beta。

X)其中beta为系数矢量,x为设计矩阵。

fun为参数返回一个拟合Y值的yhat矢量。

betaO为包含系数初始值的矢量。

●[beta,r,J]=nlinfit(X,Y,fun,beta0)返回拟合系数(beta)、残差(r)、和雅可比矩阵J,这些参数可以用于nlintool函数,生成预测值的误差估计;或用于nlparci函数生成系数的误差估计。

2.2nlintool函数使用nlintool函数可以对数据进行非线性方程拟合并交互图形显示,其调用格式如下:·收稿日期:2008—10-23作者简介:董大校(1965一),男,云南省临沧市人,副教授,主要从事数学教学科研工作.·46·云南师范大学学报(自然科学版)第29卷●nlinfit(x,y,fun,beta())为一预测图,它提供数据(x,y)的非线性曲线拟合。

它用两条红色曲线来表示预测值的95%置信区间。

be啪为一矢量,包含参数的初值。

fun参数为一函数,该函数具有yhat=myfun(beta,X)的形式:其中beta为系数矢量,x为设计矩阵。

nlintool函数显示一个图形“矢量”,其中的每个图形对应于输入矩阵X的每一列。

响应变量Y为一列矢量,与x的行数相匹配。

●nlintool(x,Y,FUN,beta0,alpha)用图形表示预测值的100(1一alpha)%置信区间。

当x为矩阵时,将为每一列单独生成图形,应变量Y为一列变量,对应于X的行。

alpha()的默认值为0.05生成95%置信区间。

2.3nlpredci函数可利用nlpredci函数计算非线性模型预测值的置信区间,其调用格式如下:●ypred=nlpredci(FUN,inputs,beta,r,J)给定拟合参数(beta)、残差(r)和和雅可比矩阵(J),返回预测响应。

输入是非线性函数中独立变量的数值矩阵。

2.4nlparci函数可利用nlparci函数计算非线性模型中参数估计值的置信区间。

●nlparci(beta,r,J)给定拟合参数(beta)、残差(r)、和解处的雅可比矩阵(J),返回非线性最小二乘参数估计(beta)的95%置信区间ci。

nlparci函数使用nlinfit函数的输出作为输入。

2.5regress函数用regress函数进行多元线性回归。

●[b,bint,r,tint,stats]=regress(y,x,alpha)给出bint和tint的100(1一alpha)%置信区间。

2.6stepwise函数用stepwise函数进行逐步回归,它使用交互环境进行分析。

其调用格式如下:●stepwise(x,Y,inmodel,penter,premove)指定模型的初始状态和要使用的置信区间。

inmodel为长度为x中列数的逻辑矢量。

inmodel指定包含在初始模型中的自变量。

默认时不包含x中的列。

pen—ter指定引入自变量的最大P值,默认时为0.05。

premove指定剔除自变量的最小P值,默认时为0.10。

3实例验证3.1反应动力学模型反应动力学中的Hougen—Watson模型是非线性模型的一个典型例子。

其模型如下:口l·菇2一X3佃5rate2—瓦了■啄-_i而其中:卢。

,届:,…,风为未知参数,石。

,算:和戈,为三个输入变量。

三个输入为氢(hydrogen)、n一戊烷(n—pentane)、异戊烷(isopentane)。

上述模型显然为多元非线性模型。

文件reaction.mat包含了反应的仿真数据。

通过计算可知,反应动力学Hougen—Watson模型中的5个未知参数为卢l=1.2526,/32=0.0628,岛=0.04,/34=0.1124,岛=1.1914最终模型为:mte=ri矿丽西1.2_5i26了‘百x2面-Fx/i1—.1_石911:4瓦ri3.2财政收入预测[31财政收入与国民收入、工农业总产值、人12、就业人12、固定资产投资等因素有关。

采用逐步回归分析构造预测模型。

以财政收入作为因变量Y,自变量为国民收入(鼻。

)、工业总产值(茹:)、农业总产值第2期董大校,等:基于IVIATLAB的多元非线性回归模型·47·(髫,)、总人1:3(茗。

)、就业人口(%)、固定资产投资(‰)。

其样本数n=30,自变量数P=6。

首先编写非线性函数的M函数文件model.m代码。

然后在命令窗El输入由石,、如、奶、扎、≈样本数据构成的矩阵戈和财政收入样本数据Y,取betaO=[0.50—0.03—0.600.Ol一0.020.35];用交互式非线性拟合图形工具来显示,在MATLAB命令窗口中输入如下命令:nlintool(X,Y,,model.betaO,0.01);得到nlint001分析窗口。

由此得到财政收入与各因素之间关系的回归模型l为:y=0.5245xl一0.0293x2—0.631x3+0.0113x4—0.0231x5+0.3652x6(1)对该模型进行多元线性回归检验,输入命令:>>[b,bint,r,tint,stats]=regress(y,x)stats=0.9805301.03050951.5530结果分析:bint为各系数的置信区间。

stats矢量是值分别为相关系数的平方、F值和显著性概率P。

相关系数平方值R2=0.9805,说明模型拟合程度较高。

显著性概率P=0,小于0.05,故拒绝零假设,认为模型1中至少有一个自变量的系数不为零,因而从总体上模型1是有意义Et的。

结果b给出了回归系数的估计值,检查它们的置信区间发现,恐系数的置信区间包含了零点,表明回归变量菇:对变量y的影响不是太显著,因此从模型中移出次变量,对该模型进行逐步回归检验,在MATLAB命令窗口输入并运行命令:>>stepwise(x,Y)除了算。

,省,,石。

外,其他自变量的回归系数置信区间都包含零点,保留z,,戈,,石。

,将其他变量移出回归模型,R—square=0.979645,是指因变量的97.96%可由模型确定,F=417.104远远超过了F检验的临界值,P=0远小于显著性水平,这些说明用包含茗。

,茗,,茁。

的线性模型来描述,,是合适的。

茗。

的回归系数为0.382869,菇3的回归系数为一0.496975,‰的回归系数为0.408624,常数项由Intercep给出,即b=177.07,利用逐步回归得到的回归模型2为:y=0.382869x1—0.496875x3+0.408624x6+177.07(2)由于石,,戈,,x。

对y具有较明显的显著性,用更为精确的拟合曲线来拟合表示茗。

,茗,,‰和y的关系。

做戈。

,舅3,戈6分别对y的散点图,具体步骤在blATLAB命令窗口输入命令:>>xl=x(:,1);x3=x(:,3);x6=x(:,6);>>subplot(1,3,1);plot(xl,Y,7+’;>>subplot【1,3,2);plot(x3,Y,7+,;>>subplot(1,3,3);plot(x6,Y,7+’再做经变换后的散点图,对比其线性效果较好的,得出如下拟合曲线:Y=一71.391+0.473xl;),=1620.46—6.509x3+0.Olx;;y=141.921+1.158x6;在MAnAB命令窗口输入如下命令:>>subplot(1,3,1);>>plot(xl,一71.391+0.473宰xl,’+,;>>subplot(1,3,2);>>plot(X3,1620.46—6.509宰X3+0.01木x3.2,7+’>>subplot(1,3,3);>>plot(x6,141.921+1.158木x6,’+’对应的R—Square分别为0.951,0.887,0.944。

从相关系数的值可以看出,对应的拟合方程的拟合程度较高。

所以,用拟合后的曲线来代替原来的髫,,%,‰,得到如下回归模型3:y=0.181l菇l+3.2342x3—0.005x;+0。

4732x6—597.4372(3)作为对比,在引入交互项,在MATLAB命令窗口输入下面命令:>>xl=x(:,1);x2=x(:,2);x3=x(:,3);x7=x1.宰x2;x8=x1.搴x3;>>xu---[xx7x8];>>stepwise(X,y)加入交互项后,利用逐步回归分析,从运算结果可得R—Square=0.98665,F=461.923,RMSE=27.9283,P=0.0000。

各项参数值较模型(2)、(3)更好,所以,建立模型(4),,=0.845361xl一0.0120252x5+0.0000045x7—0..00057xB即:Y=0.845361xI一0.0120252x5+0.0000045x1菇2—0.00057xl菇3(4)从各统计量的数值看,模型(2)比模型(1)差一点,但模型(2)比模型(1)更为简单,模型(3)较模型·48·云南师范大学学报(自然科学版)第29卷(1)、(2)虽然是非线性的回归模型,但实际上它的拟合效果并不好。

相关文档
最新文档