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

合集下载

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实现多元的回归实例

Matlab实现多元的回归实例

Matlab 实现多元回归实例(一)一般多元回归一般在生产实践和科学研究中,人们得到了参数(),,n x x x =⋅⋅⋅1和因变量y 的数据,需要求出关系式()y f x =,这时就可以用到回归分析的方法。

如果只考虑f 是线性函数的情形,当自变量只有一个时,即,(),,n x x x =⋅⋅⋅1中n =1时,称为一元线性回归,当自变量有多个时,即,(),,n x x x =⋅⋅⋅1中n ≥2时,称为多元线性回归。

进行线性回归时,有4个基本假定: ① 因变量与自变量之间存在线性关系; ② 残差是独立的; ③ 残差满足方差奇性; ④ 残差满足正态分布。

在Matlab 软件包中有一个做一般多元回归分析的命令regeress ,调用格式如下:[b, bint, r, rint, stats] = regress(y,X,alpha) 或者[b, bint, r, rint, stats] = regress(y,X) 此时,默认alpha = 0.05. 这里,y 是一个1n ⨯的列向量,X 是一个()1n m ⨯+的矩阵,其中第一列是全1向量(这一点对于回归来说很重要,这一个全1列向量对应回归方程的常数项),一般情况下,需要人工造一个全1列向量。

回归方程具有如下形式:011m m y x x λλλε=++⋅⋅⋅++其中,ε是残差。

在返回项[b,bint,r,rint,stats]中, ①01m b λλλ=⋅⋅⋅是回归方程的系数;②int b 是一个2m ⨯矩阵,它的第i 行表示i λ的(1-alpha)置信区间; ③r 是1n ⨯的残差列向量;④int r 是2n ⨯矩阵,它的第i 行表示第i 个残差i r 的(1-alpha)置信区间; 注释:残差与残差区间杠杆图,最好在0点线附近比较均匀的分布,而不呈现一定的规律性,如果是这样,就说明回归分析做得比较理想。

⑤ 一般的,stast 返回4个值:2R 值、F_检验值、阈值f ,与显著性概率相关的p 值(如果这个p 值不存在,则,只输出前3项)。

matlab建立多元线性回归模型并进行显著性检验及预测问题

matlab建立多元线性回归模型并进行显著性检验及预测问题

matlab建立多元线性回归模型并进行显著性检验及预测问题例子;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 9698 99 100 102]'; [b,bint,r,rint,stats]=regress(Y,X) 得结果:b = bint = stats = 即对应于b的置信区间分别为[,]、[,]; r2=, F=, p= p<, 可知回归模型 y=+ 成立. 这个是一元的,如果是多元就增加X的行数!function [beta_hat,Y_hat,stats]=regress(X,Y,alpha)% 多元线性回归(Y=Xβ+ε)MATLAB代码%% 参数说明% X:自变量矩阵,列为自变量,行为观测值% Y:应变量矩阵,同X% alpha:置信度,[0 1]之间的任意数据% beta_hat:回归系数% Y_beata:回归目标值,使用Y-Y_hat来观测回归效果% stats:结构体,具有如下字段% =[fV,fH],F检验相关参数,检验线性回归方程是否显著% fV:F分布值,越大越好,线性回归方程越显著% fH:0或1,0不显著;1显著(好)% =[tH,tV,tW],T检验相关参数和区间估计,检验回归系数β是否与Y有显著线性关系% tV:T分布值,beta_hat(i)绝对值越大,表示Xi对Y显著的线性作用% tH:0或1,0不显著;1显著% tW:区间估计拒绝域,如果beta(i)在对应拒绝区间内,那么否认Xi对Y显著的线性作用% =[T,U,Q,R],回归中使用的重要参数% T:总离差平方和,且满足T=Q+U% U:回归离差平方和% Q:残差平方和% R∈[0 1]:复相关系数,表征回归离差占总离差的百分比,越大越好% 举例说明% 比如要拟合 y=a+b*log(x1)+c*exp(x2)+d*x1*x2,注意一定要将原来方程线化% x1=rand(10,1)*10;% x2=rand(10,1)*10;% Y=5+8*log(x1)+*exp(x2)+*x1.*x2+rand(10,1); % 以上随即生成一组测试数据% X=[ones(10,1) log(x1) exp(x2) x1.*x2]; % 将原来的方表达式化成Y=Xβ,注意最前面的1不要丢了% [beta_hat,Y_hat,stats]=mulregress(X,Y,%% 注意事项% 有可能会出现这样的情况,总的线性回归方程式显著的=1),% 但是所有的回归系数却对Y的线性作用却不显著=0),产生这种现象的原意是% 回归变量之间具有较强的线性相关,但这种线性相关不能采用刚才使用的模型描述,% 所以需要重新选择模型%C=inv(X'*X);Y_mean=mean(Y);% 最小二乘回归分析beta_hat=C*X'*Y; % 回归系数βY_hat=X*beta_hat; % 回归预测% 离差和参数计算Q=(Y-Y_hat)'*(Y-Y_hat); % 残差平方和U=(Y_hat-Y_mean)'*(Y_hat-Y_mean); % 回归离差平方和T=(Y-Y_mean)'*(Y-Y_mean); % 总离差平方和,且满足T=Q+UR=sqrt(U/T); % 复相关系数,表征回归离差占总离差的百分比,越大越好[n,p]=size(X); % p变量个数,n样本个数% 回归显著性检验fV=(U/(p-1))/(Q/(n-p)); % 服从F分布,F的值越大越好fH=fV>finv(alpha,p-1,n-p); % H=1,线性回归方程显著(好);H=0,回归不显著% 回归系数的显著性检验chi2=sqrt(diag(C)*Q/(n-p)); % 服从χ2(n-p)分布tV=beta_hat./chi2; % 服从T分布,绝对值越大线性关系显著tInv=tinv+alpha/2,n-p);tH=abs(tV)>tInv; % H(i)=1,表示Xi对Y显著的线性作用;H(i)=0,Xi 对Y的线性作用不明显% 回归系数区间估计tW=[-chi2,chi2]*tInv; % 接受H0,也就是说如果在beta_hat(i)对应区间中,那么Xi与Y线性作用不明显stats=struct('fTest',[fH,fV],'tTest',[tH,tV,tW],'TUQR',[T,U,Q,R]) ;。

多元回归分析报告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 180.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.073+0.7194x 成立. (3)残差分析,作残差图. rcoplot(r,rint)从残差图可以看出,除第二个数据外,其余数据的残差离零点均较近,且残差的置信区间均包含零点,这说明回归模型 y=-16.073+0.7194x 能较好的符合原始数据,而第二个数据可视为异常点.(4)预测及作图.z=b(1)+b(2)*xplot(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解法一:直接作二次多项式回归. 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时的商品需求量. 需求量 10075 80 70 50 65 90 100 110 60收入 1000 600 1200500 300 400 1300 1100 1300 300 价格 5 7 6 6 8 7 5 4 3 9解法一:选择纯二次模型,即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.00011.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)说明:x 表示自变量数据,m n ⨯阶矩阵;y 表示因变量数据,1⨯n 阶矩阵;inmodel 表示矩阵的列数的指标,给出初始模型中包括的子集(缺省时设定为全部自变量);alpha 表示显著性水平(缺省时为0.5).2、运行stepwise 命令时产生三个图形窗口:Stepwise Plot,Stepwise Table,StepwiseHistory.在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 58. X2=[26.1636 26.35804 26.82438 26.91521 25.90346 25.9636 27.19256 27.42153 26.1636 26.07212 26.5872 X3=[0.991227 0.994944 0.981322 0.98374 1.011865 0.991227 1.074772 1.107678 0.991227 0.917904 1.06043 X4=[59.37436 58.54265 57.91729 57.69332 59.58203 59.37436 57.76722 57.42355 59.37436 59.05278 58.3587format 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.0531 59.419 26.587 1.0604 58.3591 58.891 27.061 1.1239 57.767B1 =1488.9-4.3582-9.6345-61.514-15.359m =12n =5B2 =3120.4-7129.2-622.23-362.71-105.061388.1120.25199.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-0101.8488 1.8488 1.6394e-0096.22 6.227.2643e-01012.22 12.22 2.6077e-01019.72 19.72 -2.0489e-0101.8488 1.8449 0.0039025.19 5.19 1.4529e-00910.09 10.09 1.0803e-00915.31 15.31 4.0978e-010由图形可以看出,多元二次线性回归效果非常好,即,相当于Y=3120.4*X1 -7129.2 *X2 + 0*X3+ 0*X4 -622.23*X1*X1 -362.71*X1*X2 -105.06*X1*X3 + 1388.1*X1*X4 +120.25*X2*X2+ 199.25 *X2*X3+ 379.58*X2*X4 + 170.48*X3*X3+ 0*X3*X4 -796.4。

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建立多元线性回归模型并进行显著性检验及预测问题

matlab建立多元线性回归模型并进行显著性检验及预测问题matlab建立多元线性回归模型并进行显著性检验及预测问题例子;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]'; [b,bint,r,rint,stats]=regress(Y,X) 得结果:b = bint = -16.0730 -33.7071 1.5612 0.7194 0.6047 0.8340 stats = 0.9282 180.9531 0.0000 即对应于b的置信区间分别为[-33.7017,1.5612]、[0.6047,0.834]; r2=0.9282, F=180.9531, p=0.0000 p<0.05, 可知回归模型 y=-16.073+0.7194x 成立. 这个是一元的,如果是多元就增加X的行数!function [beta_hat,Y_hat,stats]=regress(X,Y,alpha)% 多元线性回归(Y=Xβ+ε)MATLAB代码%% 参数说明% X:自变量矩阵,列为自变量,行为观测值% Y:应变量矩阵,同X% alpha:置信度,[0 1]之间的任意数据% beta_hat:回归系数% Y_beata:回归目标值,使用Y-Y_hat来观测回归效果% stats:结构体,具有如下字段% stats.fTest=[fV,fH],F检验相关参数,检验线性回归方程是否显著% fV:F分布值,越大越好,线性回归方程越显著% fH:0或1,0不显著;1显著(好)% stats.tTest=[tH,tV,tW],T检验相关参数和区间估计,检验回归系数β是否与Y有显著线性关系% tV:T分布值,beta_hat(i)绝对值越大,表示Xi对Y显著的线性作用% tH:0或1,0不显著;1显著% tW:区间估计拒绝域,如果beta(i)在对应拒绝区间内,那么否认Xi对Y显著的线性作用% stats.TUQR=[T,U,Q,R],回归中使用的重要参数% T:总离差平方和,且满足T=Q+U% U:回归离差平方和% Q:残差平方和% R∈[0 1]:复相关系数,表征回归离差占总离差的百分比,越大越好% 举例说明% 比如要拟合y=a+b*log(x1)+c*exp(x2)+d*x1*x2,注意一定要将原来方程线化% x1=rand(10,1)*10;% x2=rand(10,1)*10;% Y=5+8*log(x1)+5.623*exp(x2)+1.2*x1.*x2+rand(10,1); % 以上随即生成一组测试数据% X=[ones(10,1) log(x1) exp(x2) x1.*x2]; % 将原来的方表达式化成Y=Xβ,注意最前面的1不要丢了% [beta_hat,Y_hat,stats]=mulregress(X,Y,0.99)%% 注意事项% 有可能会出现这样的情况,总的线性回归方程式显著的(stats.fH=1),% 但是所有的回归系数却对Y的线性作用却不显著(stats.tF=0),产生这种现象的原意是% 回归变量之间具有较强的线性相关,但这种线性相关不能采用刚才使用的模型描述,% 所以需要重新选择模型%C=inv(X'*X);Y_mean=mean(Y);% 最小二乘回归分析beta_hat=C*X'*Y; % 回归系数βY_hat=X*beta_hat; % 回归预测% 离差和参数计算Q=(Y-Y_hat)'*(Y-Y_hat); % 残差平方和U=(Y_hat-Y_mean)'*(Y_hat-Y_mean); % 回归离差平方和T=(Y-Y_mean)'*(Y-Y_mean); % 总离差平方和,且满足T=Q+U R=sqrt(U/T); % 复相关系数,表征回归离差占总离差的百分比,越大越好[n,p]=size(X); % p变量个数,n样本个数% 回归显著性检验fV=(U/(p-1))/(Q/(n-p)); % 服从F分布,F的值越大越好fH=fV>finv(alpha,p-1,n-p); % H=1,线性回归方程显著(好);H=0,回归不显著% 回归系数的显著性检验chi2=sqrt(diag(C)*Q/(n-p)); % 服从χ2(n-p)分布tV=beta_hat./chi2; % 服从T分布,绝对值越大线性关系显著tInv=tinv(0.5+alpha/2,n-p);tH=abs(tV)>tInv; % H(i)=1,表示Xi对Y显著的线性作用;H(i)=0,Xi对Y 的线性作用不明显% 回归系数区间估计tW=[-chi2,chi2]*tInv; % 接受H0,也就是说如果在beta_hat(i)对应区间中,那么Xi与Y线性作用不明显stats=struct('fT est',[fH,fV],'tTest',[tH,tV,tW],'TUQR',[T,U,Q,R]);。

多元回归分析报告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实例:多元函数拟合(线性与⾮线性)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进行非线性回归分析

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

•求解未知参数。

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

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

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

MATLAB多元回归

MATLAB多元回归

概述根据图形(实际点),选配一条恰当的函数形式(类型)---需要数学理论与基础和经验。

(并写出该函数表达式的一般形式,含待定系数)------选用某条回归命令求出所有的待定系数。

所以可以说,回归就是求待定系数的过程(需确定函数的形式)1、[b,bint,r,rint,s]=regress(y,X,alpha)或者regress(y, x)输入y :因变量(列向量)X:自变量组成的矩阵,并且x要在最前面额外添加全1列/对应于常数项alpha:显著性水平(缺省时定位0.05,即置信水平95%,alpha不影响b,只影响bint(区间估计)。

它越小,即置信度越高,则bint范围越大。

显著水平越高,则区间就越小)输出:b:多元线性回归方程的各个系数(含常数项,第一项为常数项)bint:b的置信区间(回归系数的区间估计)r:残差(列向量) rint:r的置信区间stats: 用于检验回归模型的统计量,有四个数值:相关系数r2、F值、与F对应的概率p和残差的方差(前两个越大越好,后两个越小越好)2、rcplot(r.rint)残差分析,作残差图如下图:matlab<wbr>多元线性回归每条线长度表示的是置信区间,小圆圈代表残差点。

残差图中红色线条表示异常点,应剔除再次进行绘图从残差图可以看出,除第二个和第十个数据外,其余数据的残差离零点均较近,且残差的置信区间均包含零点,这说明回归模型能较好的符合原始数据,而这两个数据可视为异常点(而剔除)3、实例分析如线性回归模型y =b0+b1X1+b2X2+b3X3+e回归系数b0-b3,由数据估计,e是随机误差y=b0+b1X1+b2X2+b3X3+b4X4+b5X5+b6X6+e1y=[144 215 138 145 162 142 170 124 158 154 162 150 140 110 128 130 135 114 116 124 136 142 120 120 160 158 144 130 125 175];x1=[39 47 45 47 65 46 67 42 67 56 64 56 59 34 42 48 45 18 20 19 36 50 39 21 44 53 63 29 25 69]; x2=[24.2 31.1 22.6 24.0 25.9 25.1 29.5 19.7 27.2 19.3 28.0 25.8 27.3 20.1 21.7 22.2 27.4 18.8 22.6 21.5 25.0 26.2 23.5 20.3 27.1 28.6 28.3 22.0 25.3 27.4];x3=[0 1 0 1 1 0 1 0 1 0 1 0 0 0 0 1 0 0 0 ...0 0 1 0 0 1 1 0 1 0 1];X=[ones(16,1), x1',x2',x3'];%ones(16,1) 添加常数列[b,bint,r,rint,stats]=regress(y',X);b,bint,statsrcoplot(r,rint)4、检验怎么对多元线性回归模型的回归系数β做t检验和F检验?进行多元线性回归统计数F, t 测验的小程序:clear,clcx=rand(50,10);y=rand(50,1); % example[n,k]=size(x);X=[ones(n,1),x];%构建结构阵X,A=X'*X; %求算信息阵A,C=inv(A); %求算信息阵的逆阵,b=X\y, % 求算回归统计数向量,其中第一行为回归截距a,RSS=y'*y-b'*X'*y, %求算离回归平方和,MSe=RSS/(n-k-1),%求算离回归方差,Up=b.*b./diag(C);%求算偏回归平方和,其中第一行是a与0差异的偏平方和,F=Up/MSe,%F测验,其中第一行为a与0差异的F值,sb=sqrt(MSe*diag(C)); %求算回归统计数标准误,t=b./sb, % 回归统计数的t 测验,其中第一行为a与0差异的t测验值。

Matlab回归分析:详解+实例

Matlab回归分析:详解+实例
回归分析 —从姚明女儿的身高谈起
姚明女儿的身高
问 建立父母身高和女儿身高的模型 题 姚明2.26米,叶莉1.90米,预测姚明女儿身高
女孩身高y(cm) 156 172 162 158 164 166 160 155 174 165
父母平均身高 x(cm)
158.5
170.5
166
163.5
166
168.5 165.5
自变量X:用来解释Y的变量,通常有多个。
Y:薪资收入 X:学历、年龄、性别...
注意:(1)自变量可以是定量数据,也可以是定
性数据,它不决定回归模型的类型,决定回归模型 类型的是因变量;
(2)确定自变量的方法可以头脑风暴,但同时也 要看数据的可获得性,有时候可能头脑风暴想的很 好,但是没办法获取这个指标的数据也是不行的, 所以自变量的选取往往看一个数据的可获取性。
1 n
(x0 x)2 Lxx
小结
1.回归分析的任务 研究变量之间的相关关系
2.线性回归的步骤
(1) 推测回归函数; (3) 估计未知参数; (5) 预测.
(2) 建立回归模型; (4) 进行假设检验;
MATLAB中回归分析的实现
多元线性回归
1.确定回归系数的点估计值,用命令:
b=regress(Y,X)
女孩身高y(cm) 156 172 162 158 164 166 160 155 174 165
父母平均身高 x(cm)
158.5
170.5
166
163.5
166
168.5 165.5
159
180.5
169
基本模型
y 0 1x
y ~女孩身高
0, 1 ~回归系数

matlab多元非线性回归

matlab多元非线性回归

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

相当于咨询多个专家。

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

(并写出该函数表达式的一般形式,含待定系数)------选用某条回归命令求出所有的待定系数。

所以可以说,回归就是求待定系数的过程(需确定函数的形式)一、回归命令一元多次拟合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_多元与非线性回归即拟合问题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 回归分析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矩阵,它们是估计预测误差需要的数据。

(研究生 数理统计)多元线性回归及显著性检验Matlab程序(完美版)

(研究生 数理统计)多元线性回归及显著性检验Matlab程序(完美版)

多元线性回归及显著性检验Matlab程序(完美版)(一)一、说明:1、本程序是研究生教材《数理统计》(杨虎、刘琼、钟波编著)例4.4.1(P133)的Matlab编程解答程序。

教材上的例题只做了回归方程显著性分析和一次回归系数显著性分析(剔除x1后没有再检验x2和x3)。

2、本程序在以上的基础之上,还分别检验了x2和x3,并且计算精度更高。

3、本程序可根据用户的需要,在输入不同的显著性水平α之下得到相应的解答。

4、本程序移植性强,对于其他数据,只需要改变excel中的数据即可。

5、本程序输出的可读性强,整洁美观。

二、数据入下(将数据存入excel表格,文件名为jc_p133_example.xls。

注意数据是按x1,三、完整程序如下:%----------------------------by ggihhimm----------------------------%《数理统计》杨虎、刘琼、钟波编著例4.4.1 多元线性回归及显著性检验完整解答% 输入需要的显著水平α(默认α=0.02),计算出不同结果(见运行结果)% 该程序也适合其他维数的数据分析(只需改变excel表格中的数据即可)%----------------------------by ggihhimm----------------------------clear;clc;data=xlsread('jc_p133_example.xls','sheet1');xi=data(:,1:end-1);[n,k]=size(data);k=k-1;index_of_xi_array=ones(1,k);X=[ones(n,1) xi];Y=data(:,end);fprintf('第1次计算结果:\r')beta_mao=((X'*X)\X'*Y)';fmt_str0='';for i0=1:k+1fmt_str0=[fmt_str0 'β' num2str(i0-1) ' = %0.4f\r'];endfprintf(fmt_str0,beta_mao)fprintf('\r')%%检验回归方程的显著性x_ba=mean(xi);y_ba=mean(Y);St_square=sum(Y.^2)-n*y_ba^2;lxy=sum((xi-ones(n,1)*x_ba).*((Y-y_ba)*ones(1,k)));Sr_square=sum(beta_mao(2:end).*lxy);Se_square=St_square-Sr_square;c_flag=Sr_square/Se_square;F_alpha=input('>>>>>>请输入您要求的显著性水平(0<α<1)α= ');while ~(isscalar(F_alpha) && F_alpha<1 && F_alpha>0)F_alpha=input('您的输入有误,请重新输入一个大于0,小于1的数,α= ');endF_fenweidian=finv(1-F_alpha,k,n-k-1);c=k/(n-k-1)*F_fenweidian;if c_flag>cfprintf(['\r--------------------回归方程显著性检验(H0:β1=β2=...=βk=0)' ...'--------------------\r经过计算:拒绝H0,原假设不成立。

(研究生 数理统计)多元线性回归及显著性检验Matlab程序(完美版)

(研究生 数理统计)多元线性回归及显著性检验Matlab程序(完美版)

多元线性回归及【2 】明显性磨练Matlab程序(完善版)一.解释:1.本程序是研讨生教材《数理统计》(杨虎.刘琼.钟波编著)例4.4.1(P133)的Matlab编程解答程序.教材上的例题只做了回归方程明显性剖析和一次回归系数明显性剖析(剔除x1后没有再磨练x2和x3).2.本程序在以上的基本之上,还分离磨练了x2和x3,并且盘算精度更高.3.本程序可依据用户的须要,在输入不同的明显性程度α之下得到响应的解答.4.本程序移植性强,对于其他数据,只须要转变excel中的数据即可.5.本程序输出的可读性强,整洁美不雅.二.数据入下(将数据存入excel表格,文件名为jc_p133_example.xls.留意数据是按x1,x2,…,xk,y如许来列来存储.若不是3个变量,则响应增减数据列就行.):三.完全程序如下:%----------------------------by ggihhimm---------------------------- %《数理统计》杨虎.刘琼.钟波编著例4.4.1 多元线性回归及明显性磨练完全解答% 输入须要的明显程度α(默认α=0.02),盘算出不同成果(见运行成果)% 该程序也合适其他维数的数据剖析(只需转变excel表格中的数据即可)%----------------------------by ggihhimm---------------------------- clear;clc;data=xlsread('jc_p133_example.xls','sheet1');xi=data(:,1:end-1);[n,k]=size(data);k=k-1;index_of_xi_array=ones(1,k);X=[ones(n,1) xi];Y=data(:,end);fprintf('第1次盘算成果:\r')beta_mao=((X'*X)\X'*Y)';fmt_str0='';for i0=1:k+1fmt_str0=[fmt_str0 'β' num2str(i0-1) ' = %0.4f\r'];endfprintf(fmt_str0,beta_mao)fprintf('\r')%%磨练回归方程的明显性x_ba=mean(xi);y_ba=mean(Y);St_square=sum(Y.^2)-n*y_ba^2;lxy=sum((xi-ones(n,1)*x_ba).*((Y-y_ba)*ones(1,k)));Sr_square=sum(beta_mao(2:end).*lxy);Se_square=St_square-Sr_square;c_flag=Sr_square/Se_square;F_alpha=input('>>>>>>请输入您请求的明显性程度(0<α<1)α= ');while ~(isscalar(F_alpha) && F_alpha<1 && F_alpha>0)F_alpha=input('您的输入有误,请从新输入一个大于0,小于1的数,α= '); endF_fenweidian=finv(1-F_alpha,k,n-k-1);c=k/(n-k-1)*F_fenweidian;if c_flag>cfprintf(['\r--------------------回归方程明显性磨练(H0:β1=β2=...=βk=0)' ... '--------------------\r经由盘算:谢绝H0,原假设不成立.'])elsefprintf(['\r--------------------回归方程明显性磨练(H0:β1=β2=...=βk=0)' ... '--------------------\r经由盘算:接收H0,原假设成立.'])end%%磨练回归系数的明显性(轮回磨练,直到OK,得出最后成果)fprintf(['\r\r-----------------回归系数明显性磨练(分离对β1.β2.....βk进行)' ... '------------------'])flag_go_on=1;num_of_loop=0;while flag_go_oncij=inv(X'*X);cii=diag(cij);F_fenweidian_1=finv(1-F_alpha,1,n-k-1);ci=sqrt(cii(2:end)*Se_square*F_fenweidian_1/(n-k-1));format_str='%15.4f';for ii=1:k-1format_str=[format_str '%13.4f'];endfprintf(['\r第%d次磨练:\rcii: ' format_str '%13.4f\r ci: ' ...format_str '\rβi:' format_str '%13.4f'],num_of_loop+1,cii,ci,beta_mao)if ~all(abs(beta_mao(2:end))>ci')flag_go_on=1;beta_1tok=beta_mao;beta_1tok(1)=[];fi_xin=beta_1tok.^2./cii(1:end-1)';min_fi=min(fi_xin);beta_index=find(fi_xin==min_fi)+1;fprintf('\rx%d对y的线性影响最不明显(|β%d|=%0.4f ).删除x%d,进行第%d次盘算:',...beta_index-1+num_of_loop,beta_index-1+num_of_loop,...abs(beta_mao(beta_index)),beta_index-1+num_of_loop,...beta_index-1+num_of_loop+1)elsefmt_str2='x%d';index_of_xi=find(index_of_xi_array);for i2=1:length(find(index_of_xi))-1fmt_str2=[fmt_str2 '.x%d'];endfprintf(['\r\r经由磨练,残剩所有变量:' ...fmt_str2 '对y的线性影响均明显.磨练停止.\r'],index_of_xi)flag_go_on=0;endif flag_go_onnum_of_loop=num_of_loop+1;k=k-1;if ~kfprintf('\r\r警告:经由过程一一对所有变量做明显性磨练,已剔除所有变量!'); break;endbeta_mao=beta_mao-beta_mao(beta_index)/cii(beta_index)*cij(beta_index,:);beta_mao(beta_index)=[];fmt_str1='';for i1=2:k+1fmt_str1=[fmt_str1 'β' num2str(i1-1+num_of_loop) ' = %0.4f\r'];endfprintf(['\rβ0 = %0.4f\r' fmt_str1],beta_mao)X(:,beta_index)=[];index_of_xi_array(beta_index-1+num_of_loop-1)=0;xi=X(:,2:end);x_ba=mean(xi);lxy=sum((xi-ones(n,1)*x_ba).*((Y-y_ba)*ones(1,k)));Sr_square=sum(beta_mao(2:end).*lxy);Se_square=St_square-Sr_square;endend四.运行成果如下(分离为α=0.01和α=0.02的运行成果):第1次盘算成果:β0 = 0.7344β1 = 0.1585β2 = 0.1063β3 = 0.0357>>>>>>请输入您请求的明显性程度(0<α<1)α= 0.01-----------------------------------α = 0.0100-------------------------------------------------------回归方程明显性磨练(H0:β1=β2=...=βk=0)-------------------- 经由盘算:谢绝H0,原假设不成立.-----------------回归系数明显性磨练(分离对β1.β2.....βk进行)------------------ 第1次磨练:cii: 1.1355 0.0055 0.0021 0.0002ci: 0.1622 0.1006 0.0284βi: 0.7344 0.1585 0.1063 0.0357x1对y的线性影响最不明显( |β1|=0.1585 ).删除x1,进行第2次盘算:β0 = 2.5302β2 = 0.0231β3 = 0.0362第2次磨练:cii: 0.4274 0.0006 0.0002ci: 0.0569 0.0302βi: 2.5302 0.0231 0.0362x2对y的线性影响最不明显( |β2|=0.0231 ).删除x2,进行第3次盘算:β0 = 2.6615β3 = 0.0391第3次磨练:cii: 0.4079 0.0002ci: 0.0294βi: 2.6615 0.0391经由磨练,残剩所有变量:x3对y的线性影响均明显.磨练停止.第1次盘算成果:β0 = 0.7344β1 = 0.1585β2 = 0.1063β3 = 0.0357>>>>>>请输入您请求的明显性程度(0<α<1)α= 0.02-----------------------------------α = 0.0200-------------------------------------------------------回归方程明显性磨练(H0:β1=β2=...=βk=0)-------------------- 经由盘算:谢绝H0,原假设不成立.-----------------回归系数明显性磨练(分离对β1.β2.....βk进行)------------------ 第1次磨练:cii: 1.1355 0.0055 0.0021 0.0002ci: 0.1455 0.0902 0.0255βi: 0.7344 0.1585 0.1063 0.0357经由磨练,残剩所有变量:x1.x2.x3对y的线性影响均明显.磨练停止.。

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

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 6
2.30;
0.5 120 60 66.00;
2.5 120 60 75.10];
回归分析过程:
(1)MATLAB编程步骤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)MATLAB编程步骤2:编写非线性回归主程序,程序运行时调用函数user_function
x=[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和自变量xx
beta0=[0.5 0.4 0.7 0.5]; %%设置初始回归系数(如何确定初值?)
[beta_fit,residual] = nlinfit(xx,yy,@user_function,beta0) %%非线性回归
结果
beta_fit =
91.3757
1.2712
-0.0009
-0.0049
residual =
-4.2935
-1.0248
-9.2044
-9.7957
-15.4620
-3.4398
-2.7311
1.2293
11.1889
8.3189
14.9889
11.1989
12.2389
-9.5678
-9.3704
-2.0767
-4.8331
5.5814
7.0540

y=.3757+1.2712*x1.^2-0.0009*x2.^2-0.0049*x3.^2;
matlab中nlinfit函数非线性拟合的使用方法如下:例1。

相关文档
最新文档